跳到主要内容

深度学习(把大量简单计算单元叠成多层网络)— 计算图、反向传播与定制结构

这一章讲三件事: 深度网络凭什么在图像、语音、语言上全面赢; 训练它的误差信号怎么从输出一路传回每个权重; 以及为图像和序列定制的两种结构(卷积、循环)各省了什么。 读完你会拿到第 16 章(语言模型)直接引用的全部机制。为图像定制的叫卷积(整图共享一组小模板、每个模板只看一小块)网络,为序列定制的叫循环网络——两者都会讲到。

1. 这一章讲什么

书里的定义先立住:深度学习是「假设具有复杂代数电路的形式、 连接强度可调整」的一组技术;「深度」指电路多层——从输入到输出的 计算路径包含较多步骤。它与真实神经元的相似性「仅停留于表面」1

它为什么赢?书里的答案出人意料地几何:看计算路径。 线性回归从输入到输出只有一步(乘权重、相加),且每个输入独立影响输出—— 只能表达线性边界;决策树可以有长路径,但任何一棵树对多数输入都走得短; 深度网络对所有输入都走长路径,且路径上输入彼此纠缠—— 复杂概念因此可以被表达2

2. 顶层全景

单元:aj = g(Σ wi,j·ai) g=激活函数,必须非线性
万能近似定理:两层(非线性+线性)即可逼近任意连续函数

网络=计算图(数据流图);权重=「音量控制旋钮」
hw(x) = g⁽²⁾(W⁽²⁾g⁽¹⁾(W⁽¹⁾x))

学习:损失(交叉熵/负对数似然)对权重的梯度
链式法则 → 感知误差 Δ 逐层回传 = 反向传播
g′≈0 → 梯度消失(ReLU 解药);自动微分免手工推导

两种定制结构:
卷积网络(图像):局部连接+参数共享+池化;残差连接加深
循环网络(序列):隐藏状态跨时间步;LSTM 用门与加法记忆

泛化与省标签:批量归一化/权重衰减/dropout;自编码器/GAN;预训练迁移

3. 核心原理

3.1 主走查:两个权重的梯度,逐数算出来

主走查用书里那个最小网络(图 21-3):2 个输入、隐藏层(夹在输入与输出之间的计算层)2 个单元(3、4)、 输出单元 5;激活 g,平方误差损失 L2,真实值 y、预测 ŷ。 要回答的问题只有两个:∂L/∂w3,5 与 ∂L/∂w1,3 各是多少?3

输出权重 w3,5(单元 3 → 输出 5):
∂L/∂w3,5 = 2(ŷ−y) · g′(in5) · a3
= Δ5 · a3 其中 Δ5 ≡ 2(ŷ−y)g′(in5) 是单元 5 的「感知误差」

隐藏权重 w1,3(输入 1 → 单元 3):链式法则多乘一环
∂L/∂w1,3 = Δ5 · w3,5 · g′(in3) · x1
= Δ3 · x1 其中 Δ3 = Δ5·w3,5·g′(in3)

读法:Δ5 是「输出错了多少」;这个误差沿着连接往回走—— 乘上路径上的权重 w3,5、再乘上局部斜率 g′(in3),就成了单元 3 的误差 Δ3。 每个权重的梯度=「它的源头误差 × 它路过的激活值」。 这就是反向传播一词的全部含义:输出误差通过网络回传4

两个必须记住的工程事实:

  • 梯度消失:g′ 因子在不活跃区接近 0(sigmoid/tanh)或恒为 0(ReLU 负半区), 深层网络的误差信号会一路衰减到没有5

  • 不用手推:所有梯度由自动微分(反向模式+动态规划)系统计算; 换网络结构、换激活函数(每个计算单元的非线性弯折)都不必重推公式。

    这直接解锁了端到端(整条流水线一体训练)的学习方式: 机器翻译系统可以由几个可训练的子系统组成,设计者只需对结构有个模糊概念6

(把「训练」说清楚:训练就是从数据里自动调那些可调的数,而不是手写它们。)

3.2 表达与输出层:激活函数与 softmax

激活函数的候选:sigmoid、ReLU(max(0,x))、softplus(光滑版,导数恰是 sigmoid)、 tanh。非线性是底线——没有它,再深的网络也等价于一层线性变换7万能近似定理给出理论底气:一层非线性+一层线性的两层网络, 就能以任意精度(想要多接近就能多接近)逼近任何连续函数——本质上是一个可学习的查找表8

输出端按任务选头:布尔分类用 sigmoid;多分类用 softmax—— 它把任意分数向量压成和为 1 的概率,且「放大差异」: 输入〈5,2,0,−2〉输出〈0.946,0.047,0.006,0.001〉;softmax 是可微的 max9。 损失函数主流是交叉熵/负对数似然(第 13 章的最大似然在这换了个名字); 回归用线性输出层+平方误差(等价于高斯似然的最大化)10。 输入端的规矩:类别属性用独热编码——Type 的 Thai=3、Burger=4 若按整数喂, 网络会误以为它们在数值上相邻11

3.3 卷积网络:为图像省参数的三招

一张百万像素 RGB 图,若第一个隐藏层全连接(两两之间都有连线),仅第一层就有 (3·10^6)²≈9 万亿个权重——训练数据和计算预算都吃不消12。 卷积网络的三招:

  1. 局部连接:每个隐藏单元只看图像的一小块(邻接性被保住,权重数骤降);
  2. 参数共享:同一组核权重扫过全图(平移不变:猫在左上和右下都认得);
  3. 池化(小邻域内取最大或平均)/下采样。

工程实现里卷积就是张量(多维数组)运算:小邻域内取最大/平均,让表示对微小位移稳健13

为什么这样设计是对的?书里用 MNIST 手写数字讲透:单个像素几乎不带信息 (数字 8 中心的暗像素在每个样本里位置都略有不同),但局部模式带—— 0/6/8/9 有环,1/2/3/5/7 有尾端,4/8 有交叉;模式的空间关系更带14。 于是现代视觉的核心原则成型:先在小邻域里造模式检测器, 再在「模式的模式」上造更高层检测器——卷积+ReLU 就是一层 局部模式检测器,层层叠加,感受野逐层扩大,模式从边、角长到眼睛、脸15。 层太深训不动的问题由残差(把每层输出直接加回输入的直连)网络(ResNet)解决:每层学「增量」, 恒等连接让梯度有直达通道16

工程侧的泛化工具箱:归一化(把每小份样本的数值拉回统一范围)、权重衰减、 暂退 dropout(训练时随机删单元,强迫冗余表示)17。 书里还有一句罕见的诚实:为什么某些结构在某些问题上更好, 人们几乎还没有理解;实验者靠的是像厨师一样的直觉18

3.4 序列:RNN(循环网络)与 LSTM

文本和时序有一个共同约束:上下文(前后相关的内容)重要且长度不定。

前馈(信息只单向流动、不回头)网络用固定窗口, 遇到「him 指的是 Eduardo 还是 Miguel」这种跨全句的指代就不够用。

RNN——循环神经网络——把隐藏状态 z_t 从上一时刻传到下一时刻,理论上能记住任意远的信息, 参数量还与序列长度无关(O(1) 的权重矩阵)19

但沿时间反向传播时,梯度同样会消失/爆炸,长期记忆(跨很多步保存的信息)存不住20

LSTM 的解法是给网络加一条「传送带」:记忆单元 c_t 加法更新 (而不是每步乘权重矩阵),梯度不再随时间连乘衰减;三个门 (遗忘 f/输入 i/输出 o)都是 sigmoid 输出,控制信息的擦除、写入与读出21。 书里的定位:「LSTM 是 RNN 最早的实用形式之一」,在语音识别(把声音转成文字)、手写识别、 机器翻译上表现极好——第 16 章的序列到序列模型就踩在它上面22

3.5 少标签的路:无监督与迁移

书里先摆事实:监督深度学习要的标签量远超人类(孩子看一张长颈鹿图就够, CNN(卷积神经网络)要几千张);有些任务因此完全做不了23。两条减负路线:

  • 自编码器:一半是编码器(把输入压小的 f)。

  • 另一半是解码器(负责还原的 g),训练目标 x≈g(f(x));变分自编码器给隐空间加概率结构。

  • GAN(生成对抗网络):让生成器与判别器互相博弈。

  • 共同产物是可用的隐空间:书里展示了 z 空间的向量运算—— 「戴眼镜的男人」−「男人」+「女人」=「戴眼镜的女人」24

  • 迁移学习:从公开大数据集(或已预训练(先在大数据上练好)的模型,如 RoBERTa)出发, 用少量领域数据再调一调——第 16 章的「预训练+再调」范式、第 17 章的 sim-to-real 都属于这一族25

4. 作者的判断与证据

  • (书内定理) 万能近似定理(两层网络逼近任意连续函数); softmax 可微且 sigmoid 是其 d=2 特例89
  • (书内观察) 「深度且窄优于浅且宽(权重总数固定)」—— 书里如实注明这是实验现象,机制仍在研究中26
  • (作者的坦白) 深度学习成功的「真正原因尚未完全明晰」; 结构选择的直觉「像厨师调食谱」1827。这两句是全书对深度学习 最诚实的定位。
  • (作者的立场) 神经网络与生物大脑的相似「仅停留于表面」—— 命名是历史遗产,不是机制承诺1

5. 边界与局限

  • 训练成本与标签需求:对标签依赖「甚至超过宇宙所能提供」的任务, 纯监督路线死路23
  • 深度网络的可解释性弱:隐层可能学出「对人类难以理解但输出正确」的表示28
  • 梯度消失在极深网络中复发(ReLU 只是缓解,残差是绕行)。
  • 本章只讲监督+自监督(用数据自己给自己出题的预训练);强化学习与深度结合(DQN、AlphaGo)留给第 15 章。

6. 可带走的

  1. 比较模型的新维度:计算路径长度 × 输入交互度——深度网络的赢面在这张 2×2 里。
  2. 反向传播一句话:误差按连接权重往回分摊,每层乘自己的局部斜率
  3. 看到深层网络训不动,按顺序查:激活函数(换 ReLU)→ 归一化 → 残差。
  4. softmax 的「放大差异」与温度采样是同一族工具——多分类的默认头。
  5. 图像三招(局部连接/共享/池化)的本质:把对称性写进结构,参数就省下来
  6. 序列记忆的难题在「连乘」;LSTM 用加法传送带绕开它。
  7. 隐空间的向量运算(戴眼镜男−男+女)是生成模型最直观的验收测试。

7. 原文地图

主题原书章原文位置
定义与电路隐喻21 开篇text/10-fm.txt:24064(搜「复杂代数电路」) · text/10-fm.txt:3104(搜「表面」)
计算路径视角21 开篇text/10-fm.txt:24066(搜「计算路径」) · text/10-fm.txt:24080(搜「基本思想」)
单元与偏置21.1.1text/10-fm.txt:24108(搜「加权和」)
万能近似定理21.1.1text/10-fm.txt:24122(搜「万能近似」)
激活函数表21.1.1text/10-fm.txt:24131(搜「ReLU」) · text/10-fm.txt:24140(搜「单调不减」)
音量旋钮21.1.1text/10-fm.txt:24156(搜「音量控制旋钮」)
感知误差与反向传播21.1.2text/10-fm.txt:24199(搜「感知误差」) · text/10-fm.txt:24206(搜「反向传播」)
梯度消失21.1.2text/10-fm.txt:24212(搜「梯度消失」)
自动微分/端到端21.1.2text/10-fm.txt:24219(搜「自动微分」) · text/10-fm.txt:24225(搜「端到端」)
独热编码21.2.1text/10-fm.txt:24255(搜「独热编码」)
softmax 例子21.2.2text/10-fm.txt:24302(搜「0.946」)
交叉熵/KL21.2.2text/10-fm.txt:24280(搜「交叉熵」)
隐藏层=表示/深窄优于浅宽21.2.3text/10-fm.txt:24331(搜「中间表示」) · text/10-fm.txt:24339(搜「较深且相对较窄」,或搜「较深」)
厨师直觉21.2.3text/10-fm.txt:20044(搜「厨师」)
9 万亿权重21.3text/10-fm.txt:24353(搜「9 万亿」)
局部连接一箭双雕21.3text/10-fm.txt:24355(搜「一举两得」)
MNIST 局部模式21.3text/10-fm.txt:28813(搜「数字 0、6、8 和 9 中存在」) · text/10-fm.txt:28815(搜「空间关系」)
模式的模式25.4.2text/10-fm.txt:28817(搜「核心原则」)
池化21.3.1text/10-fm.txt:24432(搜「池化」)
残差网络21.3.3text/10-fm.txt:24483(搜「残差网络」)
批量归一化21.4.2text/10-fm.txt:24600(搜「批量归一化」)
dropout21.5.4text/10-fm.txt:24728(搜「暂退」)
RNN 展开与共享权重21.6text/10-fm.txt:24761(搜「循环神经网络」)
LSTM 门与公式21.6.2text/10-fm.txt:24825(搜「长短期记忆(long short-term memory」) · text/10-fm.txt:24832(搜「遗忘门」) · text/10-fm.txt:24852(搜「实用形式」)
孩子一张图 vs 几千张21.7text/10-fm.txt:24859(搜「长颈鹿」)
自编码器21.7.1text/10-fm.txt:24915(搜「自编码器」) · text/10-fm.txt:24932(搜「变分」)
z 空间向量运算21.7.1text/10-fm.txt:24887(搜「戴眼镜」)
迁移/RoBERTa 预训练21.7.2text/10-fm.txt:25043(搜「RoBERTa」)

Footnotes

  1. 出处:「深度学习」第 24064 段(text/10-fm.txt:24064,搜「复杂代数电路」)与 第 3104 段(text/10-fm.txt:3104,搜「表面」)。 2

  2. 出处:「深度学习」第 24066 段(text/10-fm.txt:24066,搜「计算路径」)与 第 24080 段(text/10-fm.txt:24080,搜「基本思想」)。

  3. 出处:「深度学习」第 24184 段(text/10-fm.txt:24184,搜「平方损失」)与 第 13584 段(text/10-fm.txt:13584,搜「链式法则」)。

  4. 出处:「深度学习」第 24199 段(text/10-fm.txt:24199,搜「感知误差」)与 第 24206 段(text/10-fm.txt:24206,搜「反向传播」)。

  5. 出处:「深度学习」第 24212 段(text/10-fm.txt:24212,搜「梯度消失」)。

  6. 出处:「深度学习」第 24219 段(text/10-fm.txt:24219,搜「自动微分」)与 第 24225 段(text/10-fm.txt:24225,搜「端到端」)。

  7. 出处:「深度学习」第 24120 段(text/10-fm.txt:24120,搜「非线性」)。

  8. 出处:「深度学习」第 24122 段(text/10-fm.txt:24122,搜「万能近似」)。 2

  9. 出处:「深度学习」第 24302 段(text/10-fm.txt:24302,搜「0.946」)。 2

  10. 出处:「深度学习」第 24271 段(text/10-fm.txt:24271,搜「负对数似然」)与 第 24306 段(text/10-fm.txt:24306,搜「线性输出层」)。

  11. 出处:「深度学习」第 24255 段(text/10-fm.txt:24255,搜「独热编码」)。

  12. 出处:「深度学习」第 24353 段(text/10-fm.txt:24353,搜「9 万亿个」)。

  13. 出处:「深度学习」第 24355 段(text/10-fm.txt:24355,搜「一举两得」)与 第 24432 段(text/10-fm.txt:24432,搜「池化」)。

  14. 出处:「计算机视觉」第 28813 段(text/10-fm.txt:28813,搜「数字 0、6、8 和 9 中存在」)。

  15. 出处:「计算机视觉」第 28817 段(text/10-fm.txt:28817,搜「核心原则」)与 第 28828 段(text/10-fm.txt:28828,搜「模式的模式」)。

  16. 出处:「深度学习」第 24483 段(text/10-fm.txt:24483,搜「残差网络」)。

  17. 出处:「深度学习」第 24600 段(text/10-fm.txt:24600,搜「批量归一化」)与 第 24728 段(text/10-fm.txt:24728,搜「暂退」)。

  18. 出处:「深度学习」第 20044 段(text/10-fm.txt:20044,搜「厨师」)。 2

  19. 出处:「深度学习」第 925 段(text/10-fm.txt:925,搜「窗口」)与 第 24761 段(text/10-fm.txt:24761,搜「循环神经网络」)。

  20. 出处:「深度学习」第 24825 段(text/10-fm.txt:24825,搜「长短期记忆(long short-term memory」)。

  21. 出处:「深度学习」第 24826 段(text/10-fm.txt:24826,搜「记忆单元」)与 第 24832 段(text/10-fm.txt:24832,搜「遗忘门」)。

  22. 出处:「深度学习」第 24852 段(text/10-fm.txt:24852,搜「实用形式」)。

  23. 出处:「深度学习」第 24862 段(text/10-fm.txt:24862,搜「宇宙」)。 2

  24. 出处:「深度学习」第 24887 段(text/10-fm.txt:24887,搜「戴眼镜」)。

  25. 出处:「深度学习」第 25043 段(text/10-fm.txt:25043,搜「RoBERTa」)。

  26. 出处:「深度学习」第 24339 段(text/10-fm.txt:24339,搜「较深且相对较窄」)。

  27. 出处:「深度学习」第 24072 段(text/10-fm.txt:24072,搜「尚未完全明晰」)。

  28. 出处:「深度学习」第 24334 段(text/10-fm.txt:24334,搜「难以理解」)。