主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 机器学习 神经网络

本页实验台

  1. 感知机
  2. 万能逼近
  3. 反向传播
  4. 训练过程
LAB 01

感知机

线性可分时收敛,异或问题上永远震荡

当前错分样本数—
状态—
权重 (w₀, w₁, w₂)—
已更新次数—
感知机的更新规则只有一句话:分错了就把权重往这个样本的方向推一点。在线性可分的数据上,这个朴素规则有一个漂亮的定理保证:它一定在有限步内停下来,而且步数只跟数据的间隔有关,跟维度无关。把数据换成"几乎可分":只要有一个点越界,错分数就再也回不到 0,权重会一直被那几个点来回拉扯。再换成"异或"——这就是 1969 年那本书里的例子。感知机在它上面永远震荡,因为根本不存在能分开异或的直线。当时这个结论直接导致了神经网络研究的第一次寒冬。解决办法后来证明很简单:加一层。一层隐藏层就能把异或变成线性可分的问题——这正是下一个实验台的内容。
LAB 02

万能逼近

加隐层神经元,看叠加的「台阶」逐步逼近任意曲线

均方误差—
隐藏单元数—
参数个数—
H 从 1 加到 40,误差降了多少倍—
万能逼近定理说的是:一层足够宽的隐藏层可以任意逼近连续函数。这句话常被当成"神经网络什么都能学",但它其实只保证了存在性,既没说要多宽,也没说能不能训练出来。把 H 从 1 加到 40,看淡色的那些曲线——那是每个隐藏单元各自的贡献。用 ReLU 时它们是一根根折线,叠加起来就是分段线性逼近,这和你用尺子去描一条曲线是同一回事;用 sigmoid 时它们是一个个平滑的台阶。换成折线 |x| 再看:ReLU 的误差是 2.3×10⁻⁴,sigmoid 是 5.1×10⁻³,差了 20 倍——因为 |x| 本身就是两段折线,ReLU 两个单元就能精确表示它。换成"尖峰",两者都很吃力(5.6×10⁻² 与 1.1×10⁻¹):尖峰既不是折线也不是台阶,谁都要堆很多个单元去凑。再看最后那个读数(H 从 1 加到 40 误差降了多少倍):同样是逼近阶跃,ReLU 降了 25 倍而 sigmoid 只降了 1.4 倍——后者在 H=1 时就已经接近它能做到的上限,加宽不再有用。激活函数的选择不是玄学,它决定了你的"基函数"长什么样;基函数和目标对不上时,加宽度换来的收益会迅速见顶。
LAB 03

反向传播

小网络逐层显示前向值与回传梯度

网络输出 / 目标—
损失—
第一层的梯度量级—
最后一层 / 第一层—
右下那张柱状图是这一页的重点:每一层权重梯度的量级(对数刻度)。用 sigmoid、层数给到 6 以上,你会看到柱子从右往左一级级矮下去,差出好几个数量级——这就是梯度消失。原因在链式法则里写得明明白白:反向传播时每经过一层,梯度都要乘上该层激活函数的导数,而 sigmoid 的导数最大只有 0.25,乘上十层就是 0.25¹⁰ ≈ 10⁻⁶。前面的层几乎收不到信号,也就几乎学不动。换成 tanh(导数最大为 1)会好一些,换成 ReLU(正区间导数恒为 1)好得多——这就是 2012 年之后 ReLU 几乎一统天下的直接原因。再调一下初始权重的尺度(层数固定在 8):尺度 0.3 时 sigmoid 的首尾梯度差到 10¹⁰ 倍,衰减得更狠;拉到 3.0 反而好一些(差 3.8×10³),因为大权重能部分抵消小导数。但权重再大就会把 sigmoid 推进饱和区,导数重新趋近 0,又绕回消失。两头都是坑,中间那条窄路正是初始化要瞄准的地方。现代网络里的 Xavier/He 初始化、批归一化、残差连接,解决的都是同一个问题:让信号在深度方向上不放大也不衰减。
LAB 04

训练过程

损失曲面上的下降轨迹、学习率与批大小的影响

训练损失—
训练准确率—
测试准确率—
步数—
先把学习率拉到最左边,再慢慢往右推,观察损失曲线。这个只有一层隐藏层的小网络损失面相当温和:学习率从 10⁻⁴ 一路拉到 1 都不会发散,只是越大越快(月牙数据上,滑杆 100 跑 1200 步只有 63.6% 准确率,滑杆 1000 能到 100%)。别把这个结论带到深网络上。层数一多,可用的学习率区间常常只有一个数量级宽,越界就直接发散——上一个实验台里梯度差着几个数量级的那张图,就是原因。批大小是另一个旋钮,但它的作用方向容易被误解。把批大小设成 1,损失曲线会抖得很厉害——每一步只看一个样本,梯度噪声很大;设成 200(全量),曲线变得非常光滑。但光滑不等于更好:那些噪声有时反而帮模型跳出糟糕的局部区域,而且小批量每步便宜得多。实践中通常先按显存定一个批大小,再按"批大小翻倍、学习率也翻倍"的经验去配学习率。最后对比三种优化器。SGD 老实但慢;加动量后在狭长的谷里明显更快;Adam 给每个参数自适应步长,通常前期下降最快,但它对超参不敏感这件事也让人容易忘了检查学习率——很多"Adam 训不动"的情形,换个学习率就好了。

这一页想说的

把这一页的四个实验连起来看,神经网络的故事其实很朴素:感知机说明了一层不够,万能逼近说明了两层就够(理论上),反向传播说明了深了以后信号会衰减,训练过程说明了即使梯度算对了,也还有一堆工程问题要解决。今天深度学习的绝大部分技术进展——ReLU、残差、归一化、自适应优化器——解决的都是第三和第四个问题,而不是第二个。换句话说,难的从来不是"能不能表示",而是"能不能训出来"。

接着看

← 返回模块 ← 返回探索专题