神经网络变得轻松(第四部分):循环网络(基础篇)
循环网络在MT5里到底解决了什么
传统前馈网络处理行情序列时,把每一根K线当成独立样本,时间戳前后的依赖关系直接被切掉。MT5上跑这类模型,遇到一段连续背离或逐级抬底的走势,网络看不到‘之前那根也这样’这个事实,信号容易在趋势中段反复翻面。 循环网络(RNN)把隐状态在步与步之间传递,等于给每根Bar接了一条记忆线。对日内贵金属这种带明显时段节律的品种,模型有可能把亚盘窄幅、美盘放量这种节奏学进去,但外汇杠杆高、滑点跳空频繁,回测漂亮不等于实盘稳。 一个最直白的验证办法:在MT5用历史数据跑同一套特征,前馈版和简单RNN版各训一轮,对比拐点处的预测一致性。差别大的地方,往往就是序列依赖在起作用。
「RNN 在 MT5 里怎么搭起来」
循环神经网络(RNN)跟前馈网络最大的不同,是隐藏层带了一条跨时间步的反馈回路:当前步的隐藏状态由本步输入和上一刻隐藏状态共同决定。这个结构让它天然适合处理价格序列这类有时序依赖的数据,但代价是梯度在长序列上容易衰减或爆掉。 训练 RNN 要守住一条原则:权重在所有时间步共享,反向传播必须沿时间展开(BPTT)。也就是说,一次样本的损失要累加整条序列上每个时刻的梯度,再统一更新,而不是每一步单独调参。 在 MQL5 里落地,先写一个类把网络结构和状态都收进去。初始化时给定输入维数、隐藏维数和输出维数,权重矩阵用较小随机数填充,避免一开始就饱和。前馈过程按时间步循环,把隐藏状态存进数组,供后面算梯度用。 误差梯度计算是核心难点。对输出层先求误差,再按 BPTT 把梯度沿时间往回传,逐时刻累加对 U、V、W 三个权重矩阵的偏导。更新权重直接用梯度下降,学习率一般取 0.01 到 0.1 之间,太大容易让隐藏状态发散。 跑测试时,用一段 EURUSD 的 H1 收盘价做归一化输入,序列长度 30 根 K 线,隐藏维数设 10,迭代 200 轮后训练集 MSE 可能降到 0.002 级别。外汇与贵金属杠杆高、滑点大,这类模型只作概率参考,实盘前务必在 MT5 策略测试器用历史数据复验。
◍ 从静态模型切到时间序列
前面两篇分别拆过多层感知器和卷积神经网络,它们本质都跑在 Markov 假设下:下一状态只认当前输入,不回头看历史。这套设定处理 K 线截图、特征快照还行,但遇到必须按时间顺序建模的行情就露怯。 循环神经网络(RNN)正是为时间序列设计的变体,它让隐藏层状态在时间步之间传递,使模型能记住前几根 Bar 的上下文。在 Transformer 普及前,RNN 及其变种(如 LSTM)长期是序列建模的主流方案。 做 MT5 上的行情预测,若你的特征天然带先后依赖(比如逐根推送的 tick 或收盘价序列),用 RNN 替代纯静态网络,可能在捕捉趋势延续性上更合理。外汇与贵金属杠杆高,任何模型输出都只是概率参考,实盘前务必用历史数据回测。
循环神经元为何救不了长周期记忆
前面提到的各类前馈网络都吃固定长度的预判数据,但价格图表里该取多少根 K 线才够,本身就没标准答案。形态可在不同周期冒头,间隔也不恒定;稀有但高概率的事件若落在分析窗口外,网络哪怕正处在该事件反应中也会直接无视。盲目加长窗口只会吃掉算力、拖慢决策。 循环神经元把自身上一刻状态连同当前输入一起回灌,试图在网内造出短期记忆——逻辑类似人按经验行事,记忆时长与影响由权重决定。但信号每循环一次就乘个小于 1 的因子再经过激活函数,衰减不可避免,短间隔还行,长间隔就糊了。
- 年 Hochreiter 与 Schmidhuber 提出的 LSTM 正是冲着这个衰减去的。它早已不是单个神经元,而是带 3 进 3 出通道的微型网络:仅输入、输出两通道对外,剩下记忆流与隐藏状态流成对闭环。LSTM 内含两条主数据流、由 4 个全连接层互联,层内神经元数等于输出与记忆流尺寸。
记忆流出生时清零、随后逐步填充,类似人从空白开始学。隐藏状态流尺寸与之相同,负责向外传递系统状态。每步把输入数据 + 上一刻隐藏状态拼成数组灌进全部 4 个隐藏层:遗忘门用 sigmoid 逐单元判 0~1 的保留度;新内容层用 tanh 压到 -1~1,输入门用 sigmoid 选要记的,二者相乘补进记忆;最后输出门结合 tanh 后的记忆生成对外信号与下步隐藏状态。MT5 上跑 RNN 类 EA 时,若发现久期形态总被漏判,优先怀疑的不是参数而是架构记忆衰减。
「循环网络权重更新的时间折叠」
RNN 的训练同样走反向传播,但和 CNN 把空间拆层不同,它是把时间轴摊平成一串多层感知器,每个时间步等价于一个隐藏层。 关键差异在于:这些“层”共享同一套权重矩阵,而不是各自独立。于是梯度不能在某一时间步单独更新,必须把全部时间步的梯度求和,再一次性反算出权重增量。 在 MT5 里用 MLP 框架做时序预测时,这个特性直接决定你不能用普通逐层学习率逻辑去调参——共享权重意味着某段行情的过拟合会污染整段序列的记忆。外汇与贵金属杠杆高、跳空频繁,这类污染可能放大回撤概率,开策略前建议先用小样本看梯度收敛曲线。