神经网络变得轻松(第四十三部分):无需奖励函数精通技能·综合运用
📘

神经网络变得轻松(第四十三部分):无需奖励函数精通技能·综合运用

第 3/3 篇

用未见过的数据逼出模型真实水平

模型在 EURUSD 的 H1 周期上,用 2023 年前四个月历史数据完成训练。训练里暴露出一个和奖励机制挂钩的非指示性错误,会让奖励数值无限膨胀,但整条链路被调度器与鉴别器兜住了,没脱轨。 训练还有个反直觉点:调度器挑什么计划,跟代理者具体执行哪个动作没有直接绑定。它更多是在定「决策风格」,真正落子靠代理者按当前状态和被选技能自行决定。 测试集取了 2023 年 5 月前两周、紧贴训练区间但完全没进过训练的样本。这样新旧数据节奏连续,可比性不掉链子。EA 用的是改过的 DIAYN\Test.mq5,只动了数据准备算法和模型调用顺序,附件有完整代码。 跑下来 240 根柱线内成交 119 笔,胜率近 55%,盈利因子 1.61、恢复因子 3.21,整体小额盈利。调度器把各技能用量铺得均匀,代理者全程贪婪式选当前最划算的动作与技能。外汇/贵金属这类品种高杠杆、跳空频繁,此结果仅代表那段样本的表现,换周期或换年份可能明显漂移,上 MT5 自测前先压小仓位。

「调度器均匀分配暴露了决策短板」

这套 DIAYN 框架不绑定具体任务,而是让模型在 EURUSD 的 H1 周期上先练出一堆「技能」。训练数据只用了 2023 年前四个月,样本外测试放到没见过的行情里跑,盈利因子 1.61、恢复因子 3.21,说明模型多少摸到了可盈利的边,但绝对谈不上稳。 训练里有个反直觉现象:调度器选哪个技能、和执行什么动作之间,没有直接耦合关系。也就是说模型不是被「指使」着下单,而是靠内在多样性自发探索。但调度器最终均匀摊开了所有技能的使用频次,这反而点出真问题——光有技能池不够,得有一层有效的决策规则去挑时机。 外汇和贵金属这类高杠杆品种,样本外小额盈利随时可能被一段妖行吞掉。下一步该做的不是加数据,而是把调度逻辑从「均匀撒网」改成按波动状态加权,才有可能把 1.61 的盈利因子往上推。

◍ 延伸阅读的技术脉络

这一节列的是本系列前文与关联算法的出处,方便你顺着脉络去翻原作者的实现思路。从多样性无奖励学习,到优势演员-评价者,再到内在好奇心、关系强化学习,基本是把无显式奖励下的探索类方法串了一遍。 具体可追的编号有:第二十九、三十五至四十二部分,其中第三十八部分讲凭预测分歧做自监督探索,第四十一部分是分层模型,第四十二部分讨论模型拖延的成因与解法。开 MT5 跑这类 EA 前,建议先读三十八与四十二,这两篇直接关系采样效率和训练卡死的高发点。 外汇与贵金属品种波动受宏观事件驱动,用上述强化学习模块做信号生成属于高实验性,回测与实盘偏差可能很大,仅作技术验证用途。

随包附带的七个文件

这套 LSTM 多元预测方案不是只给个思路,作者把可运行素材打进了一个 260.74 KB 的 MQL5.zip 里,解压后能看到七类文件各管一段。 最底层是 Trajectory.mqh 和 FQF.mqh 两个类库,负责定义系统状态结构和完全参数化模型的工作调度;再往上是 NeuroNet.mqh 配合 NeuroNet.cl 的 OpenCL 代码库,专门用来搭神经网络和跑异构计算。 落到 MT5 里真正跑起来的是三个 EA:Research.mq5 收集样本、Study.mq5 训练模型、Test.mq5 做模型测试,三者串起来才是一套完整闭环。 外汇和贵金属波动剧烈、杠杆风险高,直接挂这些 EA 前建议先开 MT5 用自有历史数据跑一遍 Test.mq5,确认回测曲线和你的品种特性对得上再谈实盘。

常见问题

把训练时完全没用过的行情样本喂给模型,看它在陌生数据上的决策准确率;若暴跌明显,说明只是过拟合,真实水平不行。
均匀曝光会暴露决策短板:若各类行情命中率差很多,说明模型没真正掌握少数类行情,需要针对性补数据重训。
小布可接入你的模型文件,自动划分未见过的数据做验证,并列出哪类行情命中率低,省去手写调度脚本。
先开主训练脚本看调用逻辑,其余是数据预处理、调度器、评估模块;按文件名里的 train / eval / util 顺序读最顺。
建议先吃透无奖励函数的策略梯度思路,再去看在线学习里的样本回放机制,不然直接上综合调用容易卡壳。