Skip to content

引言

1969 年,Minsky 和 Papert 宣称多层感知机「无法有效训练」。17 年后,David Rumelhart、Geoffrey Hinton 和 Ronald Williams 在《Nature》上发表了一篇论文,证明他们错了。

反向传播算法让训练多层神经网络成为可能——这是神经网络发展史上最重要的里程碑之一。


多层网络的困境

为什么多层网络这么难训练?

单层感知机的学习很简单——知道输入和预期输出,直接调整权重。但多层网络有一个致命问题:

输入层     隐藏层      输出层
 x₁ ──→ [神经元] ──→ [神经元] ──→ ŷ
 x₂ ──→ [神经元] ──→ [神经元]
         [神经元]

问题:我们知道最终输出应该是什么,
     但不知道隐藏层的每个神经元应该输出什么。

类比:你知道产品不合格,
     但不知道是哪条产线、哪个工人的问题。
     → 怎么分配「责任」?

梯度下降:优化的基本方法

在理解反向传播之前,先理解它依赖的核心工具。

直觉

想象你蒙着眼站在山顶,要走到谷底:
  策略:用脚感受哪个方向最陡,向那个方向走一步

损失函数 L(w) = 衡量当前权重下的预测误差
梯度 ∇L = 损失函数在每个方向上的变化率
更新规则:w ← w - η × ∇L

η = 学习率(步长)

反向传播:用链式法则分配「责任」

核心思想

反向传播利用链式法则高效计算多层网络中每个权重的梯度——从输出层开始,将误差信号「反向传播」到每一层。

算法步骤:

第一步:前向传播(Forward Pass)
  输入数据 → 逐层计算 → 得到预测输出

第二步:计算损失
  比较预测与真实标签

第三步:反向传播(Backward Pass)
  从输出层开始 → 利用链式法则逐层反向计算梯度
  把误差的「责任」分配给每一层的每个权重

第四步:更新权重
  用梯度下降更新每一层的权重

为什么叫「反向」?

前向传播(计算输出):
  输入 → 隐藏层1 → 隐藏层2 → 输出 → 损失
  ══════════════════════════════════►

反向传播(计算梯度):
  ◄══════════════════════════════════
  梯度 ← ∂L/∂隐藏层2 ← ∂L/∂隐藏层1 ← ∂L/∂输入

信号从输出往回传——所以叫「反向」传播

Werbos (1974):被埋没 12 年的发现

PW1947-
Paul Werbos
哈佛大学博士
"1974 年在博士论文中首次将反向传播应用于神经网络,但论文几乎无人引用。"

Werbos 在 1974 年的博士论文中就提出了将反向传播用于神经网络。但在当时的学术氛围下:

为什么被忽视了 12 年?
  ├── 1974 年 = 第一次 AI 寒冬深处
  ├── 学术界的主流是符号 AI,对神经网络毫无兴趣
  ├── 没有足够的计算能力验证大规模网络
  └── 论文发表在非主流渠道,没有引起注意

→ 一个好的发现 + 错误的时代 = 被埋没

Hinton 等人 (1986):让世界重新看见

1986 年,Rumelhart、Hinton 和 Williams 在《Nature》上发表了 《Learning representations by back-propagating errors》

GH1947-
Geoffrey Hinton
多伦多大学教授,后来被称为「深度学习之父」
"我花了 30 年证明神经网络是正确方向。大多数人觉得我疯了。"

为什么这次成功了?

1. 发表在《Nature》——顶级期刊的影响力
2. 时机更好——专家系统的局限正在暴露,人们开始寻找替代方案
3. 配套实验——论文展示了多层网络能学到有意义的内部表示
4. PDP 研究组的系统性工作——不是单打独斗

关键洞察:多层网络不只是堆叠感知机
           它能自动学习数据的「内部表示」
           → 这比手工设计特征强大得多

激活函数:从 step 到 ReLU

反向传播需要可微分的激活函数——这是感知机的 step 函数被替换的根本原因:

激活函数公式微分问题
Stepf(x) = 1 if x≥0不可微无法用反向传播
Sigmoidf(x) = 1/(1+e⁻ˣ)可微深层梯度消失
Tanhf(x) = (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ)可微深层梯度消失
ReLUf(x) = max(0,x)可微(大部分)计算快,缓解梯度消失

本节小结

概念要点
多层网络困境不知道隐藏层应该输出什么
梯度下降向损失减少最快的方向走
反向传播用链式法则从输出到输入逐层计算梯度
Werbos (1974)首次提出,但被寒冬埋没了 12 年
Hinton 等 (1986)在 Nature 发表,重新点燃了神经网络研究
激活函数必须可微分,从 step 演变为 ReLU

思考题

  1. 反向传播被发明了两次(1974 和 1986),这说明一个好的发现被接受需要哪些条件?
  2. 梯度下降只找到局部最优,为什么在实践中仍然如此有效?
  3. Hinton 在几乎没人支持的情况下坚持了 30 年。这种坚持是科学的必要品质还是固执?

延伸阅读

  • Rumelhart, Hinton, Williams, Learning representations by back-propagating errors, Nature, 1986