多层感知机 MLP · 看见隐藏特征,再检查一次学习

看见隐藏层如何学会分类

从数据到特征,再到一条决策边界。先预测,再用实际训练验证。

浏览器中实际训练的微型 MLP
参数怎么起作用

标签与特征

标签由人工规则生成;不是真实传感器诊断。

结构与激活

隐藏节点组合非线性特征;数量影响可表达的边界。

导数 1−a²:越接近两端,局部梯度越弱。

学习率与重新开始

每个样本按 −η×梯度更新;步子大可能更快,也可能失稳。

改变问题、结构、激活、学习率或种子会取消旧过程并重置模型。重新开始保留当前配置;重置实验恢复默认;换一组数据增加种子。

可复现对照

种子 42;默认 2→3→2→1;学习率 0.08。

同一模型,两种观察方式 · 切换时暂停,保留进度
SGD · 每轮 120 个训练样本
轮数 0训练损失 —验证正确率 —

01 / 数据

○ 类别 0 □ 类别 1
实心训练;空心验证。点击训练点选样本。

02 / 特征如何组合

每个节点内都是同一输入平面的实际响应

正权重 负权重(虚线);线宽随 |w| 增大(≥4 封顶)。点标记所选样本。

隐藏激活 −1(蓝)→0(白)→1(棕)。

03 / 决策边界

0
P(类别 1)1

虚线为 P(1)=0.5。范围固定 −1.2 至 1.2,特征均无量纲。

隐藏节点

节点图由当前模型实际计算;特征不是现实语义。此处选择不会更新参数。“逐步检查”明确开启当前参数的新快照。

回看训练证据

SGD:每个训练样本一次前向、反向和更新。1 epoch = 120 个训练样本各用一次;验证点不更新参数。

epoch / 参数更新次数0 / 0
训练损失—
验证损失 / 正确率—
当前所选样本—

训练与验证的证据

蓝实线:训练;棕虚线:验证。纵轴自动范围并标明实际数值。验证集用于本实验比较,不称为独立测试集。

辅助对照:所有隐藏节点的特征图

与网络内同一份实际计算。tanh 蓝(−1)→白(0)→棕(+1),ReLU 白(0)→棕(本图注明的最大值)。

辅助核对:全部节点、连接、梯度和更新量

主图已经展示当前操作;这里集中列出所有参数。推理不求梯度;未到达的相位显示“待计算”;最终提交前的变化标为预计。

节点和偏置
节点zadL/da局部导数δb 旧值Δbb 新值
连接权重
连接上游 awa×wdL/dwΔww 新值
理解这些图:公式、常见误解与可尝试的反例

多层感知机(Multilayer Perceptron, MLP)由全连接层和非线性激活组成。单个节点 z=Σwa+b,a=f(z)。输出 sigmoid 把 z 变为类别 1 概率 p。交叉熵 L=−y ln p−(1−y) ln(1−p):只保留正确类别的负对数概率。

反向传播(Backpropagation)逐段使用链式法则:一个量通过多个支路影响损失时,先把各支路贡献相加。隐藏节点 dL/da=Σ下游w×δ;再乘本节点的激活导数,得到 δ=dL/dz。连接梯度 δ×上游激活,偏置梯度 δ。正梯度意味着该参数局部增大会提高损失,下降时应减小它。

节点激活不是可独立更新的参数。“希望 a↑/↓”只是损失对这个中间量的局部方向,真正改动的是权重和偏置。输入梯度也不修改读数。一次样本更新不保证全体数据损失降低。

  1. 走一轮推理,为什么每个旧→新参数都没有变化?
  2. 在反向图中找到一个正梯度和一个负梯度;分别核对更新箭头。
  3. 只去掉隐藏层,XOR 为什么很难被一条直线分开?
  4. ReLU 某节点 z<0 时导数是 0,会对其输入权重产生怎样的影响?