第三代神经网络:深度网络(基础篇)
📘

第三代神经网络:深度网络(基础篇)

第 1/3 篇

◍ MT5 里跑得动的三代深度网络

在 MT5 指标生态里,第三代神经网络(深度网络)并不是实验室玩具。2016 年 1 月 11 日上架的一个深度网络指标,至今页面浏览 21 678、评论 165,说明实盘圈有人长期拿来验证。 外汇与贵金属波动高、滑点大,深度网络拟合历史容易过拟合,实盘前务必用 MT5 策略测试器做样本外回测。 打开 MT5 终端,把这类指标拖到 XAUUSD 的 M15 图,观察隐藏层输出对拐点滞后的反应,比只看信号箭头更有用。

神经网与深度学习的实验地图

这篇技术序列把内容拆成了三块硬骨头:先铺第二代神经网络与深度学习的理论骨架,再走一遍 R 语言实测,最后落到 MT5 指标与 EA 的工程实现。 理论部分覆盖 MLP、Jordan、Elman、RBF、DLVQ、Hopfield 等六类网络,以及误差纠正、Boltzmann、Hebb、竞争学习四种训练规则;深度学习侧重点在自动编码器、受限玻尔兹曼机与堆栈式结构。 实验环节给了一组可直接搬进 MT5 的预处理因子清单:ADX(14)、aroon(14)、CCI(14)、chaikin 波动率、CMO(14)、MACD、OsMA、RSI(14)、stoch(14,3,3)、SMI(13,2,25,9)、Yang-Zhang 波动率(96)——共 11 个输入预测器,做分类前还需做清除、训练/测试切分与类别平衡。 落地章节会讲清怎么在 MT5 里训练保存模型、装命令包,以及从特征工程角度提质量的路子。外汇与贵金属波动剧烈,任何模型信号都只是概率倾向,实盘前务必在策略测试器跑通样本外验证。

「先说清楚我们要验证什么」

这一节把整篇的落脚点定下来了:用深度神经网络做分类任务,而不是去堆砌那些外行看不懂的矩阵运算。重点在于拿真实行情数据做定量和比较,去证实或证伪深度网络在交易场景里的理论优势,而不是停在纸面推导。 具体落地形态是一个指标加一个 EA,按客户端/服务器架构跑:客户端负责采集和展示,服务器侧承载模型推理。这样拆开之后,你开 MT5 就能分别挂指标看信号、挂 EA 跑执行,两边通过约定协议通信。 需要提醒的是,外汇与贵金属杠杆交易高风险,深度模型在历史样本上表现好不代表未来概率优势必然延续。读这篇前你最好已经摸过神经网络的前向传播、激活函数这些基本概念,否则后面代码层的逐行拆解会跟不上。

◍ 二代神经网络的结构与训练底牌

第二代神经网络在图像类任务里能覆盖回归、分类、聚类、压缩、缺失恢复、联想记忆和优化等方向,但本文只取「分类」这一支来落地。 按连接形态分,无反馈环的网络信息处理是单向的,信号逐层穿过、每层触点数与层数相等;一旦存在反馈环,动态变成循环网络,可能死循环且按图灵停机问题结论,没有算法能通用判定它能否进入平衡。表 1 里把无反馈/有反馈交叉「监督/无监督」列清了:多层感知器走函数逼近与分类,竞争网络做压缩与特征分离;循环感知器管时间序列预测,Hopfield 负责联想存储与优化。 具体架构上,MLP 是最基础的前馈全连接;Jordan 与 Elman 同属循环网,区别在承接层信号来源——Jordan 承接层数量必须等于输入层,Elman 承接层数量等于隐含层且不直接反馈,因此 Elman 加减隐含神经元更灵活。RBF 用 Gaussian 径向对称隐层,仅一层就能逼近任意非线性函数,学习速度比反向传播快,但弱外推、输入维度一大就低效。Hopfield 收敛到能量局部极小,可作内容寻址存储,但经典版内存只占约 15% 神经元(N 个神经元存约 0.15N 图像),且移位旋转后认不出,多留作理论模型。 训练三模式为有监督、无监督、混合。纠错规则拿目标与预测误差直接调权;Boltzmann 类比热力学调概率分布;Hebb 看双侧神经元同激活来加权;竞争性学习「赢家通吃」只修获胜神经元权值。反向传播把输出误差沿信号反方向扩散,逐神经元分累计误差,最速下降按比例改权——但它可能掉进局部极小值,多次复跑决策一致才倾向说明到了较优解。 实盘接这套模型前先认清两道坎:维数灾难让层数与输入维度一涨,复杂度与训练时间指数级走,外汇贵金属这种高波动多变量场景尤甚;传统网络还解释不了自己怎么解的题,内部表示几乎不可分析,真要上 MT5 跑分类先把输入降维再谈。

深度学习怎么用少量数据啃下复杂信号

第三代神经网络靠深度学习把老一代的瓶颈撕开了一道口子。和八九十年代那种靠海量标注数据硬喂的第二代网络不同,新架构先在无标签大数组里逐层抽结构,再用少量格式化样本做有监督微调,样本需求直接降一个量级。

  • 年是分水岭:Hinton 团队用有限化学分子数据在 Merk 赞助赛里拿第一,同年的 ImageNet 识别系统用 140 万张图、16,000 节点把精度做到 15.8%;瑞士交通信号识别项目里神经网络分辨 50,000 张图达 99.46%,压过人脑平均的 98.84%。这些数字说明深度模型在某些感知任务上已不是“更准一点”,而是能长出对输入的理解雏形。

自动编码器(AE)走的是压缩复原路线:开放层神经元数少于输入维度,强迫网络学 h(x)=x 的逼近。Bengio 等 2007 年发现隐含节点“过剩”的非线性 AE 在一致性误差表达上反而更好;Vincent 等 2008 年又搞出降噪 AE,故意把输入置 0 再复原。受限玻尔兹曼机(RBM)则靠对比差分 CD-k 训练,Hinton 2002 年提出,CD-1 单次采样就够用。 堆起来用才见威力。SAE 或 SRBM 先做无监督逐层训练,再把权重灌进普通 MLP 做有监督微调,Hinton 称这能把隐含层权重直接放全局最小附近,微调极快。外汇与贵金属行情属高噪声多维度序列,用这类结构做特征预训练前务必用小样本先跑通重建误差,实盘信号误判风险极高。

「用 R 搭深度网络跑一遍 EURUSD 分类」

把深度学习真正跑起来,最省事的路径是 R + RStudio。R 本身是 1996 年奥克兰大学基于 S 语言衍生出的 GNU 开源统计环境,在学术圈几乎是标准配置,光是 TTR、caret、deepnet 这几个包就能覆盖从指标计算到网络训练的全链路,而且新想法从公开到出 R 包通常不超过两周。 实验选了 deepnet 包做 DN SAE 模型,没用 Matlab 桥接方案。输入集由 11 个指标(ADX、aroon、CCI、chaikinVolatility、CMO、MACD、OsMA、RSI、stoch、SMI、Yang-Zhang 波动率)算出 17 个预测因子,目标变量用通道宽度 37 的 ZigZag 转成的 0/1 信号,样本取自 15 分钟 EURUSD 共 4000 根柱。 数据清洗后矩阵少了 43 根柱,再用 caret 的 upSample 把两类样本调平衡(差异超 15% 才修正),按 8:10 分层随机拆成训练集和测试集。输入用 preProcess 规范到 [-1,1],这一步的参数只从训练集算、再套用到测试集。 建了一个 (17,100,100,100,1) 的四层网络,SAE 预训练加反向传播两步走,numepochs 默认 3、三层各 100 神经元,整轮训练耗时约 13 秒。在最近 500 根柱(约一周)上出信号,资金曲线没看点差和滑点,和理想 ZigZag 信号比还有差距,但结构已经能跑通。 两个辅助函数值得直接抄进你的 R 环境:Estimation() 算 Err/Accuracy,Testing() 画资金曲线。改 hidden、learningrate、activationfun 这几个形参就能肉眼看参数敏感度,不用碰遗传算法优化也能先摸一遍边界。外汇和贵金属杠杆高,这套信号实盘前必须自己加滑点重算。

常见问题

可以,用轻量结构和少量隐藏层就能在本地跑通,先从小样本分类验证再扩容。
二代网靠固定结构拟合,深度网能用少量数据啃复杂非线性,实测分类边界更稳。
小布可替你调度实验地图、标注信号并生成可读结论,你只需核对样本和参数。
准备归一化的价格动量与波动率序列,按时间切训练集和测试集即可起步。
看测试集准确率明显低于训练集就是过拟合,加 dropout 或减层可缓解。