神经网络变得轻松(第十部分):多目击者关注(基础篇)
📘

神经网络变得轻松(第十部分):多目击者关注(基础篇)

第 1/3 篇

「让多个模型一起盯着同一根 K 线」

把单一神经网络换成多模型并行观察,是降低单点误判的一种务实做法。原文作者在 2021 年 3 月 16 日发布的这一节,在 MetaTrader 5 社区获得了 2447 次浏览,说明多模型协同思路在实战交易者里有稳定关注度。 所谓多目击者,本质是同一时间窗口喂给若干结构不同的网络,各自输出倾向,再按置信度做加权。外汇与贵金属波动受新闻与流动性扰动大,单一网络容易在突变段过拟合,多模型投票能压低极端错误概率,但绝不消除风险。 在 MT5 里验证这条路径最直接的动作:开一个 EURUSD 的 M15 图表,加载两个输入层维度不同的信号网络,对比它们在同一根收盘 K 线上的多空输出分歧。

◍ 先看清这套注意力模块的骨架

这一节把后续要落地的多目击者注意力(Multi-Witness Attention)整体结构摊开,方便你在 MT5 里对照建文件。 核心拆成四块:数学定义、位置编码、具体实现、测试验证。实现里又分五步——消密钥张量、写注意力类、前馈、反馈、改神经网络基类。 目录里还列了结束语与参考,以及随文附带的 EQ(Expert Advisor)程序。你开 MT5 时,建议先按 4.1 到 4.5 的顺序建类,再跑第 5 节测试,否则基类没改完直接挂 EA 会报空指针。 外汇与贵金属杠杆高、滑点随机,任何新模块上线前先用策略测试器跑历史数据,实盘信号仅作概率参考。

多目击者关注是什么

上一节我们跑通了单头自关注机制,但在真实行情序列里,单一权重矩阵往往只能捕捉一种相关模式。现代网络常用的做法是多目击者关注(multi-head attention):同时并行启动若干条自关注线程,每条线程用不同的权重去扫描同一段价格序列。 这些并行线程各自算出一套关注分布,拼接后再投影回原维度。思路上,不同头可能分别盯着短期波动、跨周期背离、或成交密度,理论上比单头更能拉开序列元素间的隐藏联系。 我们接下来要在 MT5 里复现这套多头结构,并和之前第八部分那版单头自关注做效果对照。外汇与贵金属波动受消息面驱动明显,属于高风险品种,对照结论仅代表样本内概率倾向,不能直接外推实盘。

「多头注意力里的多个观察者」

自注意力算法内部依赖三组训练得到的权重矩阵 Wq、Wk、Wv,分别算出 Query、Key、Value。前两者决定序列元素之间的配对强度,Value 才携带被分析元素真正的上下文信息。 真实行情里单看一个视角很容易误判,同一段价格走势用不同周期或不同特征投影,结论可能完全相反。为此 Transformer 引入多头注意力:并行跑多条自注意力线程,每条线程用不同的 Wq/Wk/Wv 权重,相当于多个观察者各自给出见解。 各线程输出先拼成一个长张量,再乘一个训练出来的 W0 矩阵得到最终结果。这个结构在编码器和解码器里直接替换掉单一自注意力模块,MT5 上若想验证,可先打印不同头对同根 K 线的注意力分布,看分歧有多大。

◍ 自注意力里的矩阵乘法能省就省

自注意力核心公式写成 Attention(Q,K,V)=softmax(QKᵀ/√d)V,其中 Q、K、V 分别是查询、键、值张量,d 是键向量维度。底层实现里 Q=X1·Wq、K=X2·Wk,Wq 和 Wk 为对应权重矩阵。 利用矩阵结合律可先把 Wq 与 Wk 乘起来,得到的中间矩阵不依赖输入序列,对同一自注意力块的所有迭代保持不变(直到参数更新前)。一次性算好它,后续直接用,能砍掉重复运算。 进一步想只训一个矩阵替掉两个,未必总能减负。假设输入向量长 100,单矩阵就是 10000 元素;若把 Wq、Wk 降维 10 倍,各为 100×10 即 1000 元素,两个加起来才 2000。外汇与贵金属模型训练属高风险实验,维度压缩要权衡网络性能与输出质量,不能盲目。

位置编码怎么塞进烛条向量

处理时间序列时,序列元素之间的距离不能忽略。Transformer 里所有元素共用同一矩阵,但彼此影响的强度高度依赖时间间隔,所以必须给每个元素注入位置信息。 原版方案不用级联而用加法:对维度为 d 的烛条向量,按位置 pos 和向量内序号 i,偶数维套正弦、奇数维套余弦。这样每个位置拿到唯一编码,相邻步长恒定,且确定、可泛化到任意长度。 为什么是加不是拼?级联会撑大维度、拖慢迭代;加法在定位整根烛条的同时,也标定了向量内部每个分量的位置,模型能顺带学组件级依赖。 失真方面无需过虑:网络从训练起就把‘编码后数据’当原生输入,不拆开看位置和实体。同是十字星,第 2 根与第 20 根在带编码视角下是两种信号,按训练权重分别处理。外汇与贵金属波动剧烈,此类模型仅辅助概率判断,实盘前请在 MT5 用历史数据验证编码尺度。

常见问题

多目击者关注让不同子模型从各自角度提取烛条特征,可能缓解单一视角偏差;实际效果需在历史数据上回测验证,不能默认更准。
可对查询、键、值矩阵做低秩分解或分块计算,减少浮点运算量;在终端上跑时优先调小隐藏维度再观察延迟。
小布可把多目击者模块的输出聚合成一张注意力热力图,你打开对应品种页即可一眼看出哪些烛条被多个观察者共同关注。
位置编码通常加在特征向量末端或做拼接,仅标记时序顺序;只要不做归一化混淆,原有OHLC含义倾向保留。
常见从2到8头起步,头数过多在小样本上可能过拟合;建议按品种波动频率逐步加头并看验证集误差曲线。