数据科学与机器学习 神经网络(第 01 部分):前馈神经网络解密·进阶篇
(2/3)· 越过概念惊艳期,看清 MLP 里隐藏层、权重和 RELU 到底在算什么
前馈网络为什么只走一条道
前馈神经网络和带反向传播的模型不同,数据从输入到输出只沿单一方向流动,中间不存在误差回传修正权重的环节。它可以是单隐藏层,也能堆出多个隐藏层,结构深浅由任务复杂度决定。 从结构图看,最前面是输入层,但它只是承接外部特征的入口,本身不做任何运算。真正加权求和与激活发生在后续的隐藏层与输出层,所以别把输入层当成计算起点。 在 MT5 里用 MQL5 搭这类网络做行情分类时,记住它没有反馈通路:一旦权重在离线训练定下,实盘推理就是纯前向矩阵乘法,延迟低但无法在线自适应,外汇与贵金属波动突变时容易滞后,属高风险用法。
◍ 拆开第二个隐藏层节点看运算
隐藏层才是神经网络真正干活的地方,输入层只负责把行情特征喂进去,输出层只是把结果翻译出来。想弄明白黑盒里发生了什么,直接盯第二个隐藏层节点最直观。 这个节点的前向过程分三步:先对输入向量和对应权重做点积,再把点积结果叠加上偏置(乖离率项),最后送进激活函数得到该节点输出。这三步在 MT5 自带的神经网络示例里都能逐行对应。 以常见的 5 输入节点为例,若权重数组为 {0.12, -0.34, 0.08, 0.55, -0.21} 且偏置为 0.03,输入行情标准化向量与权重点积后加偏置,再经 tanh 激活,输出就被压到 (-1,1) 区间。外汇与贵金属波动剧烈,这类标准化输入若训练样本不足,隐藏层极易过拟合,实盘信号失效概率偏高。
「乖离率怎么让回归线更贴数据」
乖离率本质是在线性回归的基准上做上下偏移量,让预测线主动去贴近样本点,作用和线性回归方程里的截距项一致。它不改变斜率,只平移整条拟合线。 在单隐藏节点 MLP 等价于线性回归的那一节里,能看到这个偏移量实际就是网络拟合出的 bias 项,喂进去的特征不变,调它就能整体抬压预测带。 乖离率不是越大越好。偏移过头会让线脱离主分布,在 MT5 里把同一段 EURUSD H1 数据跑两遍,偏移 0 与偏移 30 点,后者残差平方和往往反而升高,贵金属杠杆高、跳空多,乱偏更容易放大误判概率。
权重在神经网络里到底管什么
权重本质上就是那组待解方程的待定系数,每个输入乘上对应权重再求和,才得到网络的输出。某个权重为负,意味着它对应的输入会压制输出;为正则推高输出,这是前向传播里最直白的数理关系。 在 MT5 用神经网模型做行情分类时,网络一开始不是凭空算的:它会先用随机或固定方式初始化一整套权重。随后在训练集上反复迭代,按误差回传调整这些系数,直到筛选出在该数据集上损失较低的数值组合。 需要提醒的是,这套筛选只保证在历史样本上拟合较优,换到实时外汇或贵金属行情里,权重的泛化能力可能打折,杠杆品种的高波动会放大误判风险。
◍ 神经网络里的激活函数到底干嘛用
激活函数本质就是一个数学映射:吃一个数值进去,吐一个数值出来,用来打破线性叠加,否则多层网络等价于单层。 实际工程里常用的就四类:Relu、Sigmoid、TanH、Softmax。网上不少文章在根本不需要非线性的地方硬套激活函数,纯属误导,选错类型会让梯度消失或输出尺度失控。 Relu 在隐藏层用得最多,负区直接归零;Sigmoid 把值压到 (0,1),适合二分类输出;TanH 输出在 (-1,1),均值更靠近 0;Softmax 把一组数变成概率分布,多分类末端才用。开 MT5 接 Python 环境跑模型前,先确认每层用的哪类,别照抄demo。
「ReLU 为什么成了默认激活函数」
整流线性单元(ReLU)在神经网络里基本是默认选项。逻辑极简:输入小于 0 就返回 0,否则原样返回。这种分段线性让正向计算没有指数运算,编码和解读输出都轻巧。 它最实在的好处是缓解梯度消失。Sigmoid 和 TanH 在两端饱和,反向传播时梯度趋近 0;ReLU 在正区间梯度恒为 1,深层网络更容易拿到有效梯度。 输出域是 [0, +∞),没有上界。做回归类预测时比有界激活更顺手,但也意味着要注意数值尺度,别让某层激活值一路累积到爆。 下面这段 MT5 可直接粘进类里验证,z 传负数看是否压成 0,传正数看是否透传。
class="type">class="kw">double CNeuralNets::Relu(class="type">class="kw">double z) { if (z < class="num">0) class="kw">return(class="num">0); else class="kw">return(z); }