跳到主要内容

表格写不下,所以要一个能学的函数 — 你真正需要的那部分深度学习

这一章讲三件事: 前四章的办法为什么突然不能用了; 顶上来的那个东西长什么样、凭什么调得动;以及这一章哪几样后面根本用不上。

它在全书链条里的位置:换零件的那一步。 前四章那条论证一个字都不会作废 —— 换掉的只是「存价值的那张表」。 这一章不需要任何深度学习基础;书里也说,已经熟悉深度学习的人可以直接跳过原书第 1 章1

一句提醒:这一章是原书的第 1 章,我们把它挪到了这里。 理由很简单:第 03、04 章讲的全是表格法,一个神经网络都用不上; 挪到「表格装不下了」之后,它才有出场的理由。

顶层全景:一张 4×4 的小图,走到一次参数更新

这一章从头到尾只用一个例子:一张 4×4 的彩色小图,一路走到「某个可调的数被挪了一丁点」。

4×4 的图,红绿蓝三个通道
│ ① 用一个 3×3×3 的小模板在图上滑一遍(第 9 节:卷积)

2×2 的一张新图:1.4 / −0.3 / 0.8 / 0.2
│ ② 负数一律压成 0(第 4 节:激活函数) → 1.4 / 0 / 0.8 / 0.2
│ ③ 这 2×2 里只留最大的那个(第 9 节:池化) → 1.4

一个数:1.4
│ ④ 乘上权重、加上偏置(第 2 节:一层是什么) → 两个分数 2.9 和 −1.1
│ ⑤ 把分数换成两个加起来等于 1 的数(第 4 节:softmax)→ 0.982 和 0.018

它说:「第一类的可能性 98.2%」——**而正确答案是第二类。**
│ ⑥ 错得有多离谱,压成一个数(第 5 节:交叉熵)→ 损失 4.02
│ ⑦ 从这个 4.02 出发,一层层往回算「每个可调的数该往哪边挪」(第 6 节:反向传播)
│ ⑧ 照算出来的方向挪一丁点(第 7 节:学习率与 Adam)→ 某个权重从 2.0 变成 1.9863

下一张图,从头再来一遍。

图说:这就是本章的主走查,每一节都回到它的某一步。
第 3 节解释「为什么第 ② 步非有不可」,第 8 节解释「训练时第 ④ 步还会被随机关掉一半」。
(4×4 的图、3×3×3 的模板、输出是 2×2 —— 这几样是书里 1.8 节的例子;
**其余所有数字都是为演示编的,不是真实数值。**)

1. 前四章的办法,到这里为止

这一节回答:为什么必须换零件?

先看现象:把账算一遍

第 03、04 章的每一个算法,做的都是同一件事:给每个局面(或每个局面-动作对)留一格,反复往里填数。

那格子有多少个?

第 03 章那张学生的一天 6 个局面 → 6 格,一张纸就画完了
雅达利游戏的一帧画面 84×84 个点、每点 256 级灰度
→ 可能的画面数是 256 的 7056 次方
围棋 约 10 的 170 次方个局面

作为参照:整个可观测宇宙的原子数,大约是 10 的 80 次方。

图说:围棋的局面数比宇宙里的原子数还多九十个数量级。
★ 这不是「慢」,是根本写不下。★
(10 的 170 次方是书里的[^2];84×84 与 256 级灰度取自书里 DQN 的预处理[^3];
10 的 80 次方是**补充(不在书里,来自通用知识)**的参照物。)

书里对这件事的说法很克制: 传统的查找表方法**「每个状态需要有一条记录,而每个状态-动作对也需要一条记录」, 所以它的可扩展性「有待提升」;而且表里的值「需要一个一个地更新」, 对内存和计算量的需求「可能是巨大的」**2

书里还点了一件很容易被忽略的事:表格法还要求人事先把状态整理成合适的数据结构2 —— 也就是说,连「用哪些量来描述一个局面」都得人来定。

出路只有一条:别记表了,改成算

要的东西是这样一个玩意儿:

吃进一个局面,吐出一个数(这个局面值多少); 而且它得能从数据里自己调出来,不要人手工设计。

这个东西就是神经网络。这一章讲的就是它。

但这一章只讲够用的那部分

原书这一章的内容比后面真正要用的多,所以我们做了取舍,而且把账摊在明处。

这一章有十节。第 2 到第 8 节讲的是「任何一个网络都少不了的东西」—— 后面每一章都在用。第 9、10 节各讲一种专门的结构:一种吃画面(第 07 章直接要用), 一种吃「一个接一个来」的数据(第 20 章会说什么时候非用它不可)。

原书这一章里还有几样,后面十五章一次都没用到 —— 我们不讲, 清单放在本章末尾的「边界与局限」里,免得你现在就要背一堆用不上的名字。

2. 一层是什么:一堆权重乘输入,再加一个数

这一节走主走查的第 ④ 步。

先看现象:一个简单的决定

书里的例子很家常:几个学生要决定今天去不去踢球。 这个决定看三件事3:

场地费用 x1 天气 x2 去球场要多久 x3
│ │ │
× w1 × w2 × w3 ← 每件事有多要紧,由这三个数决定
└─────────────┴──────────────┘

加起来,得到一个分数 z ——分数越高越该去踢

图说:这三个 w 就叫**权重**。
书里说:如果天气对大家比较重要,那么它对应的权重绝对值就大;
**而某个学生有钱、根本不在乎场地费,那么费用那一项的权重就是 0** ——
权重为 0 的输入,对结果完全没有影响。[^4]

这就是一层网络。 书里管这种只有输入和输出两层的结构叫感知器3

再加一个数:偏置

书里接着加了一样东西:一个和输入无关的常数,叫偏置4

它有什么用? 书里给了一个非常具体的回答。

假设规则是「分数为正就去踢球,否则不去」。那么「去」和「不去」的分界线, 就是让分数正好等于 0 的那条线。 这条线书里叫决策边界4

没有偏置(b = 0): 这条分界线**必须穿过原点**
——而如果所有数据点都挤在一侧,这条线怎么转都分不开[^5]

有偏置: 分界线可以平移到任何位置

图说:偏置的全部作用就是「把这条线挪开原点」。
书里在两个输入时画的是一条线,三个输入时就是一个平面(书里叫超平面)。[^5]

走查第 ④ 步:两个分数怎么来的

上一步交给我们一个数:1.4
这一层有两个输出(对应两个类别),权重是 2.0 和 −1.0,偏置是 0.1 和 0.3:

第一个分数 = 2.0 × 1.4 + 0.1 = **2.9**
第二个分数 = −1.0 × 1.4 + 0.3 = **−1.1**

(这几个数是**为演示编的**,不是真实数值。)

书里管「上一层每个数都连到下一层每个数」的这种层叫全连接层,也叫密集层5

3. 为什么非要有非线性:不加它,叠多少层都塌回一层

这一节回答主走查第 ② 步的存在理由,而这是整章最关键的一处。

先看现象:一个一层网络做不到的事

书里挑了一个小到不能再小的例子:两个二进制输入,输出 1 或 0 的几种逻辑运算6

「与」:两个都是 1 才输出 1 ← 一层网络画一条线就能分开
「或」:至少一个是 1 就输出 1 ← 一层网络也能
「或非」「与非」 ← 一层网络也能
──────────────────────────────────────────────────────
**「异或」:两个不一样时输出 1** ← ★ 一层网络画不出这条线,怎么画都不行 ★

图说:书里的原话是「XOR 或 XNOR 的决策边界是不可能被找到的」。[^7]

这不是网络太小的问题。 一层网络能画的永远是一条直线(或一个平面), 而异或的两类点在平面上是交叉排布的 —— 一条直线分不开。

中间加一层,能干什么

书里给的解法很漂亮:在输入和输出之间再插一层。 这种夹在中间、从网络外面看不到的层 就叫隐藏层(名字的来历很朴素:一般没办法从外面直接接触到它们7)。

它干的事是:先把输入换到一个新的坐标系里,在新坐标系里,那些点就能被一条直线分开了。

具体做法是:中间那一层先算出「或」和「与非」两个量; 在「或 / 与非」这个新坐标系里,再用一条算「与」的直线,就把两类点分开了8

书里管这个新的坐标系叫特征空间,并说这个例子「说明了怎么通过特征的学习来改善一个模型的学习能力」8

★ 这就是「学表示」的最小例子:网络的中间层不是在算答案,是在换一个更好用的坐标系。★

但光叠层还不够 —— 必须有一样东西

这里有一个陷阱:如果每一层都只是「乘权重、加偏置」,那叠一百层也白搭。

为什么? 因为「乘一个数再加一个数」这种运算叠两次,还是「乘一个数再加一个数」。 一百层塌回一层,和一层网络一模一样。

书里把这件事说成:矩阵的加减乘除都是线性运算,而线性模型的学习能力有限 —— 比如它连一个余弦**(那条上下起伏的波浪线)函数都不能轻易估算; 而大多数真实问题都不可能被简单地映射到一个线性变换,所以非线性至关重要**9

「非线性」的意思就是:不是「乘一个数再加一个数」那种规规矩矩的关系。 往每一层的输出上套一个不那么规矩的函数,层与层就不会塌在一起了。

那个函数叫激活函数,它就是主走查的第 ② 步。

顺带一句:层数多不等于更强

书里在这里给了一条很有意思的定理和一句很实在的话7:

  • 通用近似定理说:只要一层隐藏层、配上合适的激活函数、神经元足够多, 就能逼近相当广一类的函数;
  • 但书里紧接着说:这样的网络「可能会非常难以训练或者容易过拟合」, 所以实际上一般的深度网络都会用几层隐藏层来降低训练难度7

「深」的理由不是「表达能力不够」,是「好不好训」。 这一条到第 20 章还会再见到一次 —— 那里会告诉你,强化学习里超过 5 层的网络都不常见。

4. 激活函数:三个够用的,和一个必须知道的毛病

这一节走主走查的第 ② 和第 ⑤ 步。

书里介绍了四个,而后面真正用得上的是三个10:

名字干什么用在哪
sigmoid把任何数压到 0 和 1 之间常放在最后一层,输出一个「有多大可能」的数
tanh压到 −1 和 1 之间隐藏层可以用;输出层用它,是因为动作值域常常是 −1 到 1(第 20 章会强调)
ReLU负数一律变 0,正数原样通过今天隐藏层的默认选择
softmax(先把每个分数放大,再各自除以总和)把一组分数变成一组加起来等于 1 的数只用在最后一层11

ReLU 凭什么成了默认:两个理由

第一个理由是它便宜。 书里说得很直白:实现 ReLU 只需要把数值和 0 比一下; 而 sigmoid 和 tanh 里都要算指数(把一个固定的数连乘若干次,结果涨得极快), 在大型网络中会更难计算12

第二个理由要紧得多,而且是这一节的重点。

那个必须知道的毛病:梯度消失

先看现象: 网络很深的时候,靠近输入那几层的参数几乎不动,模型训不起来。

书里给的解释是一条完整的因果链13:

用 sigmoid 时,某一层输出的数接近 0 或接近 1
↓ 那么这一层「输出对输入有多敏感」这个量就非常小
↓ 而往回传的时候,每经过一层就要乘一次这个小数
↓ 越靠近输入,乘的次数越多,这个量就越小
⟹ 靠近输入的参数几乎收不到任何修改信号 —— **这就是梯度消失**

★ 而 ReLU 在正区间上「输出对输入的敏感度」恒等于 1,乘多少次都不会缩水。★
书里明说:**这就是现在的深度模型往往在隐藏层中使用 ReLU 而不再使用 sigmoid 的原因。**[^14]

书里也给了 ReLU 的补丁: 负半边全变 0,负数那边的信息就丢了; Leaky ReLU 让负半边保留一个很小的斜率,PReLU 干脆把这个斜率也当成可以学的参数14书里很坦率地说:「目前我们还没有具体的证据表明 ReLU、Leaky ReLU 或 PReLU 哪个是最好的」14

走查第 ⑤ 步:softmax 把两个分数变成两个概率

上一步的两个分数:2.9 和 −1.1

softmax 的做法是:先把每个分数放进指数函数,再各自除以它们的和[^12]
e^2.9 ≈ 18.17 e^(−1.1) ≈ 0.33 和 ≈ 18.50
18.17 / 18.50 = **0.982** 0.33 / 18.50 = **0.018**

↑ 两个数都非负、加起来正好是 1 —— 它说「第一类的可能性 98.2%」。
(这几个数是**为演示编的**;做法是书里的。)

5. 损失:错得有多离谱,压成一个数

这一节走主走查的第 ⑥ 步,并交代一个到第 10 章会换一种用途回来的词。

先看现象

上一步网络说「第一类 98.2%」。而正确答案是第二类。它错得有多离谱?

要让网络自己改,先得把「错多少」变成一个数。 干这件事的那个函数就叫损失函数: 它拿网络给出的答案和正确答案一比,算出一个表示「差多少」的数15

书里的原话是,它是「计算网络输出的预测值和目标值之间的损失值或者代价大小」的一种度量方式, 而这个数就是优化参数的目标15

分类任务用哪一个:交叉熵

书里从另一个概念引出它:KL 散度,用来衡量两个分布有多像16

「分布」在这里就是「各个类别各占多大可能」的一张清单。 我们手上有两张: 一张是真实答案(第二类是 100%,其余是 0),一张是网络给的(0.982 和 0.018)。 KL 散度量的就是这两张清单差多远。

书里给了它的两条性质,和一步很关键的化简16:

  • 它非负,而且只有两个分布完全一样时才等于 0;
  • 它的第一项和网络无关 —— 把这一项去掉,剩下的那个量就叫交叉熵;
  • 于是:通过网络去最小化交叉熵,就等同于最小化 KL 散度16

那「熵」本身是什么

这个词到第 10 章会以完全不同的用途回来,所以现在把它讲清楚。

熵量的是「有多不确定」。 一张清单如果说「第一类 100%,其余 0」,那它一点都不含糊 —— 熵是 0; 如果说「两类各 50%」,那它最含糊 —— 熵最大。

在这一节里,交叉熵是拿来当损失用的:「你给的清单离正确答案有多远」。 到第 10 章,同一个「熵」会被当成一个要最大化的东西:「别太早认死一个动作,保持不确定」。 同一个量,一次当罚,一次当奖。

走查第 ⑥ 步:损失是多少

正确答案是第二类,而网络给第二类的可能性是 0.018。

多类别分类的交叉熵,落到实处就一句话:**取「正确那一类被给了多大可能」的负对数**。
损失 = −ln(0.018) ≈ **4.02**

↑ 对照一下:如果网络给第二类 0.99,损失就是 −ln(0.99) ≈ 0.01。
**答对时损失接近 0,答错得越离谱损失越大。**
(这几个数是**为演示编的**;交叉熵的形式是书里的。)

书里还给了另外几种损失: 回归任务常用均方误差(把每个差平方后平均), 以及平均绝对误差;并点出一处实用的区别 —— 均方误差处处可导,而平均绝对误差在 0 点不可导17「把每个数平方后加起来再开方」正是第 04 章说过的另一种范数。

6. 梯度与反向传播:几百万个数怎么一起调

这一节走主走查的第 ⑦ 步,而它是「学习」这两个字的全部含义。

先看现象:最暴力的办法为什么不行

要让损失最小,最直接的想法是解方程:找出让「损失对每个参数的变化率都等于 0」的那组参数。

书里说这在实际中很难实现,因为深度神经网络参数很多、非常复杂18

于是改成一步一步挪 —— 这套办法就叫梯度下降

当前参数 → 算出「往哪边挪一丁点会让损失变小」 → 朝那个方向挪一小步 → 再算一次

图说:「往哪边挪一丁点会变好」这个量就叫**梯度**;
一小步挪多远,由一个叫**学习率**的数控制。[^19]

书里给了一句很重要的坦白: 这样挪下去,最后落到的往往是一个局部最小值,而不是全局最小值 —— 但是因为深度网络的表示能力很强,这些局部最小值通常会很接近全局最小值,损失值足够小19

那梯度怎么算:反向传播

难点在于:一个深层网络里,前面某个权重要经过好多层才影响到最后的损失。

书里给的办法叫反向传播,而它的关键是一个中间量:「损失对这一层输出有多敏感」20

损失 4.02
│ 先算出「损失对最后一层输出有多敏感」

最后一层 ──→ 有了这个,就能算出这一层每个权重该往哪边挪
│ 再往前一层传:乘上「这一层输出对前一层输出有多敏感」

倒数第二层 ──→ 同样算出它的权重该往哪边挪

▼ ……一路传到第一层

图说:每往前一层,只要多做一次乘法。这一步一步往回乘的规矩,数学上叫**链式法则**。
★ 关键在于代价:反向走一遍的开销,只比正向算一遍多一个不大的常数倍。★
**这就是「几百万个参数能一起调」在算力上成立的全部原因。**

走查第 ⑦、⑧ 步:一个权重被挪了多少

损失 4.02,网络给的两个可能性是 0.982 与 0.018,正确答案是第二类。

softmax 配交叉熵有一个特别干净的结果:
「损失对两个分数的敏感度」= 网络给的可能性 − 正确答案
= [0.982 − 0, 0.018 − 1] = [**+0.982**, **−0.982**]

再往前一层(那一层的输入是 1.4):
「损失对第一个权重的敏感度」= 0.982 × 1.4 = **1.375**

最后照学习率 0.01 挪一步:
第一个权重 ← 2.0 − 0.01 × 1.375 = **1.9863**

↑ 挪了 0.0137。**方向是对的:它把「第一类」的分数压低了一点点,
因为正确答案是第二类。**
(这几个数是**为演示编的**;更新的形式与链式法则是书里的。)

7. 怎么训得动:一次喂多少、一步挪多远、以及让它自己调

这一节讲主走查第 ⑧ 步的三个旋钮,对应原书 1.6 节。

先看现象:每一步都翻一遍全部数据,太慢

上一节那个「算一次梯度」,严格说要把训练集里所有样本都过一遍。 书里说得很实在:数据集很有可能会很大,这么算会变得十分低效21

第一个旋钮:每次只拿一小撮

做法朴素:每次随机抽一小撮样本来算梯度,不用全部。 这一小撮样本书里叫一个批量(完整的说法是「小批量」)。

而一个批量里装几个样本,这个数就叫批大小22

这带来一个很实在的性质: 算出来的梯度不再是准确的,而是带噪的 —— 但它便宜得多,而且更新次数多了以后,小批量能覆盖整个训练集22

注意这里又是第 04 章那根轴:拿一点偏和噪,换速度。

第二个旋钮:一步挪多远

一步挪多远,由一个叫学习率的数决定。书里把它的两头说清楚了23:

学习率会怎样
太大可能根本找不到最小值 —— 一步跨过去,损失反而变大
太小找得到,但收敛速度十分缓慢

书里紧接着承认:「如何决定学习率是一个很困难的过程」23

第三个旋钮:让它自己调 —— Adam

既然人调不好,就让算法自己调。这类做法叫自适应学习率,而其中最常见的是 Adam24

它的原理书里给了一句话:参数收到一个较小的梯度时,算法就转到一个更大的步长; 反之如果梯度过大,就给出一个较小的步长24

具体靠两样东西:

是什么起什么作用
一阶动量最近这些梯度的滑动平均记住「大方向」,抹掉小批量带来的抖动
二阶动量最近这些梯度平方的滑动平均记住「这个方向一直很陡还是一直很平」,用来决定步长

书里给了默认值:两个动量的遗忘因子分别是 0.9 和 0.99924这两个数在几乎所有代码里都原样出现,记一下不亏。

这三个旋钮到第 20 章会以另一种面目回来 —— 那里会告诉你强化学习里怎么设它们, 以及**「照论文的超参数**(这类要你事先定死、不由训练自己学出来的数,统称超参数)抄」为什么是个坏习惯。

8. 怎么别练过头:四道防线

这一节讲原书 1.7 节,而它有一条到第 20 章会被推翻的常识。

先看现象

你的网络在训练数据上错得越来越少 —— 可换一批没见过的数据,它就不行了。

书里给的定义很干脆:一个被过度优化了的模型会有很小的训练集误差,但有很大的测试集误差, 这种现象就是过拟合25

它的反面是欠拟合:训练集和测试集上都错得多。 书里说欠拟合「很容易解决」——换一个更大的模型就行;而「解决过拟合会更加棘手」25

书里还给了最朴素的一招和它的代价:用更多的训练数据。 「但这不是一个万能药,因为数据的获取和标注(请人把正确答案一条条写上去)都需要代价」25

防线一:权重衰减 —— 给「参数太大」记一笔罚款

做法:在损失后面加一项,专门惩罚「参数的绝对值大」26

为什么有用? 书里用图上那条上下乱摆的曲线解释: 参数的绝对值小了,模型的上下摇摆幅度就会减小,反而更贴合数据26

书里给了两种罚法,并点出一处很实用的区别27:

罚法罚的是什么一个副作用
L1每个参数的绝对值更容易把参数直接压成 0 —— 相当于模型偷偷做了一次特征筛选,把不重要的输入的权重设成 0
L2每个参数的平方把参数普遍压小,但不容易压到正好 0

书里给的理由很具体:深度网络的参数绝对值通常小于 1,而一个小于 1 的数的绝对值大于它的平方, 所以 L1 给出的罚更重27

防线二:Dropout —— 训练时随机关掉一部分

先看它治什么病。 书里说:神经元数量很多时会出现共适应 —— 神经元之间互相依赖,一旦有一个失效,依赖它的可能全都失效,整个网络瘫痪28

做法:训练过程中,把隐藏层的输出按一定比例随机设成 0。28

某一次训练:第 2、5、7 个神经元的输出被强行设成 0
下一次训练:换成第 1、3、8 个被设成 0

书里给的解释很妙:**这其实是在训练很多个不同的小网络,而它们共用同一套参数。**[^29]
★ 测试的时候不能用 Dropout,全部打开 —— 相当于所有小网络一起给出结果。★[^29]

书里在这里留了一句很诚实的话: 关于 Dropout 的理论证明,在原始论文里是没有的; 后来才有一些新的结果28

防线三:批标准化 —— 把一批数据的尺度拉齐

做法:在网络中间插一层,把这一批输入的平均值拉到 0、方差拉到 129

它的主要目的书里说是提高训练的稳定性; 而它顺带还有正则化(这一节讲的这一整类手段的统称:故意给训练添点麻烦, 换来「换一批没见过的数据也照样管用」)的作用。

书里给的理由是:每一批的样本是随机的,按这一批算出来的平均值和方差就带着随机性, 而这份随机让网络变得更鲁棒(鲁棒的意思是:输入或环境有点变化,结果也不会垮)29

★ 这一样东西到第 17 章会有一个强化学习专用的替代品 ★ —— 理由是强化学习的一批样本里各条数据关系很近,按批统计并不合适。

防线四(书里顺带提的):早停与数据增强

早停: 在验证集上满足某个条件时就停止训练,不再往下练30; 数据增强: 把已有数据做各种变换(翻转、裁剪等)造出更多样本30

一条到第 20 章会被推翻的常识

「网络够大就一定能把训练数据背下来」—— 这是监督学习里的常识,书里也是这么讲的。

但第 20 章会明说:在深度强化学习里,这条可能不成立 —— 把网络做大,结果可能只是慢慢收敛,甚至发散在这里先记一笔,那里会兑现。

9. 卷积:同一个小模板,在整张图上滑一遍

这一节走主走查的第 ①、③ 步,是第 07 章直接要用的东西。

先看现象:全连接吃不下一张图

一张 84×84 的灰度画面有 7056 个数。 如果第一层是全连接、有 1000 个输出, 光这一层就要 700 万个权重。 而这才第一层。

更要命的是:全连接层认死了位置。 猫在图片左上角学会了,挪到右下角它又不认识了。

做法:一个小模板,在整张图上滑

书里的做法是:卷积层的神经元只和局部有连接,并不是和前一层的所有神经元都有连接31; 而卷积核里的那些数其实就是权重,它们在算每个输出的时候被重复使用32

这两句话是卷积的全部,它们各有一个名字:

名字意思换来什么
局部连接每个输出只看输入里的一小块不必给每个像素配一个权重
参数共享同一个模板在整张图上反复用参数少得多,而且换个位置照样认得出

书里给的结论:正因为卷积核被重复使用,「在输入和输出大小类似的情况下, 卷积层比全连接层所需要的参数更少」32

书里还说明了每个卷积核在做什么:不同的神经元可能负责不同的任务, 比如处理边缘、颜色和角度31

输出多大:一个能背下来的公式

书里给了输出尺寸的算法:(输入边长 − 模板边长 + 2 × 边缘填充) ÷ 步长,再加 133

其中「步长」是模板每次滑多远,「边缘填充」是在图周围补几圈 0 —— 补 0 是为了让边缘的数值也被好好考虑在内33

走查第 ① 步:左上角那个数怎么来的(这是书里的例子)

输入:4×4 的图,三个通道(红绿蓝)
模板:3×3×3(高 × 宽 × 输入通道),步长 1,不补 0
输出边长 = (4 − 3 + 0) ÷ 1 + 1 = **2** —— 所以输出是 2×2[^35]

算左上角那一个数:
把模板的红色那层,和图左上角 3×3 的红色部分,对应位置相乘再全部加起来 → 1.2
绿色那层同理 → −0.5
蓝色那层同理 → 0.6
三个通道的结果加起来,再加上偏置 0.1 → **1.4**

★ 书里的原话:先算输入图片和卷积核的点乘得到三个值,这三个值的和就是左上角的数值。★[^35]
(4×4、3×3×3、步长 1、输出 2×2 是书里的;**1.2 / −0.5 / 0.6 / 0.1 / 1.4 是为演示编的**。)

走查第 ③ 步:池化把 2×2 压成 1 个数

池化利用的性质是:图片相邻的像素长得像,所以可以只留一个代表34

四个输出格子经过 ReLU 之后:1.4 / 0 / 0.8 / 0.2

最大值池化 → 取里面最大的:**1.4**
平均值池化 → 取平均:(1.4+0+0.8+0.2)/4 = 0.6

书里说池化的好处是**明显减少输出大小、提高之后各层的计算效率** ——
「在一个卷积层以后会有数以百计的通道,在输出被传递给全连接层之前,
使用池化层来减小输出大小会减小计算量」。[^36]
(这几个数是**为演示编的**;两种池化和这条理由是书里的。)

卷积层、池化层、全连接层,书里说这三样就是这类网络的核心构建部分35第 07 章那个能玩雅达利的网络,正是三个卷积层加两个全连接层。

10. 循环网络与 LSTM:把过去带到现在

这一节讲最后一样零件,而它到第 20 章会变成一条硬忠告。

先看现象:序列数据不是图

图可以用一个网格加一堆数来表示。而一句话、一串股价,是一个接一个来的元素。 书里说这类数据的重要特点是:这一串元素之间会互相影响; 而对这种影响建模**「相当具有挑战性,尤其是当这一串序列非常长的时候」**36

做法:一个会被反复调用的单元,外加一个隐状态

循环网络的核心是一个会被反复调用的小结构,书里管它叫单元** —— 一个单元就是网络里自成一块、可以整体重复使用的小零件。** 它内部维护一个隐状态,用来记录序列里已经出现过的信息37

第 1 个元素 ┐
├→ [单元] → 隐状态 1 ┐
┘ ├→ [同一个单元] → 隐状态 2 ┐
第 2 个元素 ────────────────────┘ ├→ ……
第 3 个元素 ─────────────────────────────────────────────────┘

图说:★ 每一步用的是同一个单元、同一组权重 ★ —— 和卷积一样,这也是参数共享。[^39]
所以它能吃任意长度的输入,就像卷积能吃任意大小的图。

书里给了一个很好的对照来说明参数共享为什么必要: 「深度学习从 2010 年开始受到追捧」和「从 2010 年开始,深度学习受到追捧」 这两句话意思相同、语序不同 —— 网络必须能认出这一点37

它的两个毛病

第一,梯度会爆炸或消失。 因为同一组权重被反复乘, 这个权重的特征值大于 1 就会梯度爆炸(学习完全失效),小于 1 就会梯度消失(没法有效优化)38

第二,它记不住太远的事。 书里的例子很好懂39:

「我是中国人,我的母语是 ____」 → 简单单元很容易答对
「我是中国人,我去英国读书,后来在法国工作,我的母语是 ____」
→ **隐状态被更新了太多次,它答不出来了**

LSTM:一条信息高速路,加三道门

做法上,LSTM 的单元多带了一个状态,书里叫单元状态。 书里把它形容成一条「信息高速路」:它贯穿整个序列,而且只经过很简单的计算 —— 所以信息能比较便捷地穿越整个序列,长期记忆因此保得住40

另外三样东西叫门,书里给的机制说得很清楚: 用 sigmoid 来控制信息是被遗忘还是被叠加 —— 因为它的输出在 0 和 1 之间; 输出 1 时对应的信息被完整保留,输出 0 时完全丢失40

三道门分别是遗忘门、输入门和输出门41

书里还提了另一种简化的单元(GRU),并坦白:哪种更优目前没有定论41

另起一处走查:一句话在 LSTM 里走三步

上面主走查那张图是空间数据,循环网络吃的是序列,所以这里另起一处,只走三步:

输入:「我 / 是 / 中国人」

第 1 步 「我」进来,隐状态从全 0 变成 h1;单元状态记下 [说话人=我]
第 2 步 「是」进来。遗忘门输出 0.95 → 单元状态里的 [说话人=我] 基本原样留着;
输入门输出 0.10 → 「是」这个词几乎没往里加什么
第 3 步 「中国人」进来。输入门输出 0.90 → [国籍=中国] 被写进单元状态;
遗忘门仍输出 0.95 → 前面那条也还在
⟹ 走到「我的母语是 ___」时,单元状态里 [国籍=中国] 还在,所以答得出来。

(**这三个门的数字是为演示编的**;单元状态是信息高速路、门用 sigmoid 控制取舍,
以及这个中文例句,都是书里的。)

★ 第 20 章会告诉你什么时候在强化学习里非用它不可:环境不完全可观测、 或者你定义的状态不满足马尔可夫性的时候 —— 而那和第 01 章「单帧看不出球速」是同一件事。★

作者的判断与证据

书里给了推导、定理或明确机制的:

  • 梯度消失的完整因果链(sigmoid 的敏感度在两头趋近 0 → 逐层相乘 → 越靠近输入越小), 以及 ReLU 在正区间敏感度恒为 1 因此没有这个问题13;
  • 通用近似定理(一层隐藏层加合适的激活函数、足够多神经元,可以逼近相当广一类的函数), 书里给了三条文献7;
  • L1 比 L2 罚得重的具体理由(深度网络参数绝对值通常小于 1,而小于 1 的数的绝对值大于其平方)27;
  • 卷积输出尺寸的公式,以及 4×4 图配 3×3×3 模板输出 2×2 的具体计算3342;
  • 循环网络梯度爆炸/消失的条件(反复相乘的那个权重的特征值大于 1 还是小于 1)38

作者的坦白与未定论:

  • 「目前我们还没有具体的证据表明 ReLU、Leaky ReLU 或 PReLU 哪个是最好的」14;
  • 「关于 Dropout 的理论证明在原始的论文里是没有的」28;
  • GRU 与 LSTM 哪种更优「无定论」41;
  • 「如何决定学习率是一个很困难的过程」23;
  • 梯度下降落到的往往是局部最小值,而「通常会很接近全局最小值」这一句 书里引的是一本教科书,不是自己的证明19

判断(我们的,不是书里的): 这一章在全书里的真实作用, 不是「教会你深度学习」,而是「交代清楚被换掉的那个零件长什么样」。 前四章的每一条推理 —— 贝尔曼方程、评估与改进的来回、偏差与方差那根轴 —— 在换零件之后一个字都不用改。 真正变的只有两件事: ① 你不再能一格一格地精确更新;② 改一个局面会连带改一片。 第 06 章整章讲的就是第 ② 件事的后果。 如果错,会错在: 如果某类方法根本不需要「给每个局面存一个数」 (比如直接学「该怎么做」而完全不估价值,第 08 章那条线的最朴素版本), 那么这一章的动机对它就不完全适用 —— 它换零件的理由是别的(要处理连续动作)。

边界与局限

  • 原书这一章是入门性质的,深度有限。 通用近似定理只给结论、 反向传播只给一个多层感知器的例子、L1 与 L2 的区别靠一张几何图 —— 想要严格的推导得去看它引用的那两本书1;
  • 书里的代码全部基于一个特定框架,而那个框架在 2021 年之后基本停更(见总纲第 1 节), 所以我们这一章一行代码都不讲;
  • 这一章没有讲初始化。 而第 20 章会明说:在深度强化学习里,初始化很重要 —— 它决定了最初能探索到什么,进而决定了后来学到的是哪些样本;
  • 书里讲的全部是监督学习的常识,而其中至少两条到强化学习里会失效: 「网络够大就能过拟合」(第 20 章会推翻), 「批标准化好用」(第 17 章会换成另一种)。

可带走的

全章那条走查,一行写完: 4×4 的三通道小图 → 3×3×3 的模板滑一遍,左上角算出 1.4 → ReLU 把负数压成 0 → 2×2 里取最大留下 1.4 → 乘权重加偏置得到两个分数 2.9 / −1.1 → softmax 变成 0.982 / 0.018 → 正确答案是第二类,交叉熵算出损失 4.02 → 反向传播算出「第一个权重的敏感度是 1.375」 → 按学习率 0.01 挪一步,它从 2.0 变成 1.9863(4×4、3×3×3、输出 2×2 是书里的;其余数字全是为演示编的。)

  1. 表格法死在规模上:围棋约 10 的 170 次方个局面,而宇宙的原子数才 10 的 80 次方;
  2. 一层网络 = 一堆权重乘输入,再加一个偏置。 权重为 0 的输入完全不起作用;
  3. 偏置的全部作用是「让分界线不必穿过原点」;
  4. 不加非线性,叠一百层等于一层 —— 异或就是一层网络画不出分界线的最小例子;
  5. 中间层不是在算答案,是在换一个更好用的坐标系(书里叫特征空间);
  6. 「深」的理由不是表达能力不够,是好不好训 —— 一层隐藏层理论上就够宽了;
  7. ReLU 成为默认是因为便宜 + 不梯度消失;而三种 ReLU 变体谁最好,书里说没有证据;
  8. softmax 只放在最后一层,把一组分数变成加起来等于 1 的一组数;
  9. 交叉熵 = KL 散度去掉一项,最小化它等于最小化 KL 散度;
  10. 「熵」量的是有多不确定 —— 这一章当罚,第 10 章会当奖;
  11. 反向传播的关键不是它算得对,是它算得便宜:反向一遍只比正向多一个不大的常数倍;
  12. 小批量拿噪声换速度 —— 又是第 04 章那根轴;
  13. Adam 的两个动量:一个记大方向,一个记这条方向陡不陡,默认 0.9 与 0.999;
  14. 过拟合难治、欠拟合好治(换个更大的模型就行);
  15. Dropout 等于在训练很多共用参数的小网络,测试时全部打开一起投票 —— 而它的理论证明在原始论文里是没有的;
  16. 卷积的两个性质:局部连接 + 参数共享。 前者省参数,后者让它换个位置照样认得;
  17. 循环网络靠一个隐状态把过去带到现在,而它记不住太远;LSTM 用一条信息高速路加三道门解决;
  18. 这一章有两条监督学习的常识,在强化学习里会失效 —— 第 17、20 章各推翻一条。

原文地图

主题原书章原文位置
熟悉深度学习可跳过、推荐的两本书第1章 深度学习入门text/05-ch01.txt:8(搜「可以从第 2 章开始阅读」)
表格法写不下、围棋的局面数第2章 强化学习入门text/06-ch02.txt:1637(搜「围棋游戏中有约」) · text/06-ch02.txt:1639(搜「可扩展性」) · text/06-ch02.txt:1641(搜「人为指定」)
84×84 灰度、堆四帧第4章 深度Q网络text/08-ch04-4-q.txt:180(搜「84 × 84 的」) · text/08-ch04-4-q.txt:181(搜「堆叠了最近 4 帧」)
踢足球例子、权重、感知器第1章 深度学习入门text/05-ch01.txt:76(搜「网络权重」) · text/05-ch01.txt:79(搜「不在乎足球场的费用」) · text/05-ch01.txt:79(搜「感知器」)
偏置与决策边界第1章 深度学习入门text/05-ch01.txt:88(搜「额外的标量」) · text/05-ch01.txt:109(搜「必须穿过坐标系的原点」) · text/05-ch01.txt:116(搜「超平面」)
隐藏层、通用近似定理第1章 深度学习入门text/05-ch01.txt:168(搜「隐藏」) · text/05-ch01.txt:171(搜「通用近似定理」) · text/05-ch01.txt:174(搜「难以训练」)
异或画不出分界线第1章 深度学习入门text/05-ch01.txt:194(搜「不可能被找到的」)
用一层隐藏层解异或、特征空间第1章 深度学习入门text/05-ch01.txt:210(搜「OR 和 NAND」) · text/05-ch01.txt:212(搜「特征空间」)
非线性为什么必要第1章 深度学习入门text/05-ch01.txt:223(搜「余弦函数」) · text/05-ch01.txt:224(搜「非线性在深度神经网络里至关重要」)
四个激活函数第1章 深度学习入门text/05-ch01.txt:230(搜「控制在了 0 和 1 之间」) · text/05-ch01.txt:238(搜「tanh」) · text/05-ch01.txt:249(搜「整流线性单元」) · text/05-ch01.txt:289(搜「只在最后的输出层」)
ReLU 便宜、Leaky ReLU 与 PReLU第1章 深度学习入门text/05-ch01.txt:262(搜「指数函数在大型」) · text/05-ch01.txt:279(搜「没有具体的证据」)
梯度消失与 ReLU 的对照第1章 深度学习入门text/05-ch01.txt:488(搜「梯度消失」) · text/05-ch01.txt:492(搜「不再使用 sigmoid」)
损失函数的定义第1章 深度学习入门text/05-ch01.txt:295(搜「计算误差」)
KL 散度到交叉熵第1章 深度学习入门text/05-ch01.txt:308(搜「非负的指标」) · text/05-ch01.txt:313(搜「等同于最小化」)
均方误差与平均绝对误差第1章 深度学习入门text/05-ch01.txt:390(搜「无法求导」)
暴力解不可行、梯度下降、学习率第1章 深度学习入门text/05-ch01.txt:400(搜「最暴力的方法」) · text/05-ch01.txt:407(搜「控制步长幅度」)
局部最小值通常接近全局第1章 深度学习入门text/05-ch01.txt:481(搜「局部最小值通常」)
反向传播与中间量第1章 深度学习入门text/05-ch01.txt:417(搜「反向传播」) · text/05-ch01.txt:435(搜「链式法则」)
小批量与批大小第1章 深度学习入门text/05-ch01.txt:503(搜「十分低效」) · text/05-ch01.txt:508(搜「小批量」) · text/05-ch01.txt:518(搜「覆盖整个训练集」)
学习率两头、Adam 与两个动量第1章 深度学习入门text/05-ch01.txt:530(搜「学习率过大」) · text/05-ch01.txt:532(搜「很困难的过程」) · text/05-ch01.txt:537(搜「二阶动量」) · text/05-ch01.txt:539(搜「0.999」)
过拟合与欠拟合第1章 深度学习入门text/05-ch01.txt:601(搜「很大的测试集误差」) · text/05-ch01.txt:610(搜「更加棘手」)
权重衰减、L1 与 L2第1章 深度学习入门text/05-ch01.txt:614(搜「权重衰减」) · text/05-ch01.txt:616(搜「摇摆幅度」) · text/05-ch01.txt:629(搜「更大的惩戒」)
Dropout、共适应、没有理论证明第1章 深度学习入门text/05-ch01.txt:647(搜「共适应」) · text/05-ch01.txt:650(搜「随机设为 0」) · text/05-ch01.txt:656(搜「共用参数」) · text/05-ch01.txt:660(搜「是没有的」)
批标准化第1章 深度学习入门text/05-ch01.txt:665(搜「批标准化」) · text/05-ch01.txt:672(搜「提升正则化的作用」) · text/05-ch01.txt:675(搜「鲁棒」)
早停与数据增强第1章 深度学习入门text/05-ch01.txt:678(搜「早停」)
局部连接、参数共享、卷积核在做什么第1章 深度学习入门text/05-ch01.txt:709(搜「边缘、颜色和角度」) · text/05-ch01.txt:750(搜「参数共享」) · text/05-ch01.txt:755(搜「所需要的参数更少」)
输出尺寸公式、步长与填充第1章 深度学习入门text/05-ch01.txt:718(搜「步长」) · text/05-ch01.txt:720(搜「填充零」)
4×4 图与 3×3×3 卷积核的走查第1章 深度学习入门text/05-ch01.txt:736(搜「4 × 4」) · text/05-ch01.txt:740(搜「左上角的数值」)
池化及其好处第1章 深度学习入门text/05-ch01.txt:741(搜「下取样」) · text/05-ch01.txt:744(搜「减少输出大小」) · text/05-ch01.txt:747(搜「核心构建部分」)
序列数据、循环单元与隐状态第1章 深度学习入门text/05-ch01.txt:789(搜「互相影响」) · text/05-ch01.txt:799(搜「循环单元」) · text/05-ch01.txt:795(搜「深度学习从 2010 年开始受到追捧」)
梯度爆炸与消失的条件第1章 深度学习入门text/05-ch01.txt:813(搜「梯度爆炸」)
遗忘问题的中文例句第1章 深度学习入门text/05-ch01.txt:818(搜「我是中国人」)
LSTM 的单元状态与门第1章 深度学习入门text/05-ch01.txt:825(搜「单元状态」) · text/05-ch01.txt:827(搜「信息高速路」) · text/05-ch01.txt:830(搜「基于门」) · text/05-ch01.txt:835(搜「遗忘门」)

Footnotes

  1. 出处:「第1章 深度学习入门」第 8 段(text/05-ch01.txt:8,搜「可以从第 2 章开始阅读」)。原书在同一处推荐了两本更深入的教科书。 2

  2. 出处:「第2章 强化学习入门」第 1637 段(text/06-ch02.txt:1637,搜「围棋游戏中有约」)、第 1639 段(text/06-ch02.txt:1639,搜「可扩展性」)与第 1641 段(text/06-ch02.txt:1641,搜「人为指定」)。注意转码陷阱:原文那个数字在提取出来的文本里显示成连在一起的 10170,上标丢了,实际是 10 的 170 次方。 2

  3. 出处:「第1章 深度学习入门」第 76 段(text/05-ch01.txt:76,搜「网络权重」)、第 79 段(text/05-ch01.txt:79,搜「不在乎足球场的费用」)与第 79 段(text/05-ch01.txt:79,搜「感知器」)。原书列的三个输入是场地费用、天气、去球场的时间。 2

  4. 出处:「第1章 深度学习入门」第 88 段(text/05-ch01.txt:88,搜「额外的标量」)、第 109 段(text/05-ch01.txt:109,搜「必须穿过坐标系的原点」)与第 116 段(text/05-ch01.txt:116,搜「超平面」)。原文还给了没有偏置时分界线不合适的具体理由:数据点都在这个边界的一侧。 2

  5. 出处:「第1章 深度学习入门」第 169 段(text/05-ch01.txt:169,搜「全连接层」)。附录 C 的中英对照表给的官方译名是「密集层,亦称全连接层」。

  6. 出处:「第1章 深度学习入门」第 194 段(text/05-ch01.txt:194,搜「不可能被找到的」)。原文对照了六种逻辑运算:与、或、或非、与非能被单层感知器分开,异或与同或不能。

  7. 出处:「第1章 深度学习入门」第 168 段(text/05-ch01.txt:168,搜「隐藏」)、第 171 段(text/05-ch01.txt:171,搜「通用近似定理」)与第 174 段(text/05-ch01.txt:174,搜「难以训练」)。定理的准确说法用的是「博莱尔可测函数」,书里给了三条文献。 2 3 4

  8. 出处:「第1章 深度学习入门」第 210 段(text/05-ch01.txt:210,搜「OR 和 NAND」)与第 212 段(text/05-ch01.txt:212,搜「特征空间」)。原文的说法是:先把输入转换到一个新的空间,在这个转换过的空间里那些点就可以被一条估算「与」的平面分开。 2

  9. 出处:「第1章 深度学习入门」第 223 段(text/05-ch01.txt:223,搜「余弦函数」)与第 224 段(text/05-ch01.txt:224,搜「非线性在深度神经网络里至关重要」)。

  10. 出处:「第1章 深度学习入门」第 230 段(text/05-ch01.txt:230,搜「控制在了 0 和 1 之间」)、第 238 段(text/05-ch01.txt:238,搜「tanh」)与第 249 段(text/05-ch01.txt:249,搜「整流线性单元」)。原书还留了一句:激活函数的设计至今仍是一个活跃的研究方向。

  11. 出处:「第1章 深度学习入门」第 289 段(text/05-ch01.txt:289,搜「只在最后的输出层」)。原文写明它先算指数、再各自除以总和,得到的每个值非负且加起来为 1。

  12. 出处:「第1章 深度学习入门」第 262 段(text/05-ch01.txt:262,搜「指数函数在大型」)。原书还给了第二条理由:ReLU 由两段直线组成、接近线性,因此更容易被优化。

  13. 出处:「第1章 深度学习入门」第 488 段(text/05-ch01.txt:488,搜「梯度消失」)与第 492 段(text/05-ch01.txt:492,搜「不再使用 sigmoid」)。 2

  14. 出处:「第1章 深度学习入门」第 279 段(text/05-ch01.txt:279,搜「没有具体的证据」)。原文还说明 Leaky ReLU 用一个较小的正数控制负半边的斜率,使来自负区间的信息也能保留。 2 3

  15. 出处:「第1章 深度学习入门」第 295 段(text/05-ch01.txt:295,搜「计算误差」)。 2

  16. 出处:「第1章 深度学习入门」第 308 段(text/05-ch01.txt:308,搜「非负的指标」)与第 313 段(text/05-ch01.txt:313,搜「等同于最小化」)。原文的化简理由是:KL 散度的第一项和网络给出的那个分布无关,所以可以移除。 2 3

  17. 出处:「第1章 深度学习入门」第 390 段(text/05-ch01.txt:390,搜「无法求导」)。原书把这几种损失放在同一节里,并用「范式」来统称这类量法。

  18. 出处:「第1章 深度学习入门」第 400 段(text/05-ch01.txt:400,搜「最暴力的方法」)与第 407 段(text/05-ch01.txt:407,搜「控制步长幅度」)。

  19. 出处:「第1章 深度学习入门」第 481 段(text/05-ch01.txt:481,搜「局部最小值通常」)。这一句书里引的是一本教科书,不是自己的证明。 2

  20. 出处:「第1章 深度学习入门」第 417 段(text/05-ch01.txt:417,搜「反向传播」)与第 435 段(text/05-ch01.txt:435,搜「链式法则」)。原书用一个中间量表示「损失对这一层输出的偏导数」,并从输出层逐层往回算。

  21. 出处:「第1章 深度学习入门」第 503 段(text/05-ch01.txt:503,搜「十分低效」)。

  22. 出处:「第1章 深度学习入门」第 508 段(text/05-ch01.txt:508,搜「小批量」)与第 518 段(text/05-ch01.txt:518,搜「覆盖整个训练集」)。 2

  23. 出处:「第1章 深度学习入门」第 530 段(text/05-ch01.txt:530,搜「学习率过大」)与第 532 段(text/05-ch01.txt:532,搜「很困难的过程」)。 2 3

  24. 出处:「第1章 深度学习入门」第 537 段(text/05-ch01.txt:537,搜「二阶动量」)与第 539 段(text/05-ch01.txt:539,搜「0.999」)。原书把这两个数称为「梯度的遗忘因子」,并列出了另外两个同类算法。 2 3

  25. 出处:「第1章 深度学习入门」第 601 段(text/05-ch01.txt:601,搜「很大的测试集误差」)与第 610 段(text/05-ch01.txt:610,搜「更加棘手」)。 2 3

  26. 出处:「第1章 深度学习入门」第 614 段(text/05-ch01.txt:614,搜「权重衰减」)与第 616 段(text/05-ch01.txt:616,搜「摇摆幅度」)。 2

  27. 出处:「第1章 深度学习入门」第 629 段(text/05-ch01.txt:629,搜「更大的惩戒」)。原书还用一张几何图对照了两者:L1 的等值线是正方形,交点更容易落在顶点上,所以更容易把某个参数压成 0。 2 3

  28. 出处:「第1章 深度学习入门」第 647 段(text/05-ch01.txt:647,搜「共适应」)、第 650 段(text/05-ch01.txt:650,搜「随机设为 0」)、第 656 段(text/05-ch01.txt:656,搜「共用参数」)与第 660 段(text/05-ch01.txt:660,搜「是没有的」)。原书写明测试时不使用 Dropout,并把这件事和集成学习联系起来。 2 3 4

  29. 出处:「第1章 深度学习入门」第 665 段(text/05-ch01.txt:665,搜「批标准化」)、第 672 段(text/05-ch01.txt:672,搜「提升正则化的作用」)与第 675 段(text/05-ch01.txt:675,搜「鲁棒」)。 2

  30. 出处:「第1章 深度学习入门」第 678 段(text/05-ch01.txt:678,搜「早停」)。 2

  31. 出处:「第1章 深度学习入门」第 709 段(text/05-ch01.txt:709,搜「边缘、颜色和角度」)。原文同一处写明:卷积层的神经元只和局部有连接,并不是和前一层的所有单元都有连接。 2

  32. 出处:「第1章 深度学习入门」第 750 段(text/05-ch01.txt:750,搜「参数共享」)与第 755 段(text/05-ch01.txt:755,搜「所需要的参数更少」)。原文的解释是:卷积核本身就是权重,它们在算输出时被重复使用。 2

  33. 出处:「第1章 深度学习入门」第 718 段(text/05-ch01.txt:718,搜「步长」)与第 720 段(text/05-ch01.txt:720,搜「填充零」)。 2 3

  34. 出处:「第1章 深度学习入门」第 741 段(text/05-ch01.txt:741,搜「下取样」)与第 744 段(text/05-ch01.txt:744,搜「减少输出大小」)。原书给的例子是在一个 4×4 输入上、步长为 2 时的最大值池化与平均值池化。

  35. 出处:「第1章 深度学习入门」第 747 段(text/05-ch01.txt:747,搜「核心构建部分」)。

  36. 出处:「第1章 深度学习入门」第 789 段(text/05-ch01.txt:789,搜「互相影响」)。原书举的两个序列数据的例子是文本和股票价格。

  37. 出处:「第1章 深度学习入门」第 799 段(text/05-ch01.txt:799,搜「循环单元」)与第 795 段(text/05-ch01.txt:795,搜「深度学习从 2010 年开始受到追捧」)。 2

  38. 出处:「第1章 深度学习入门」第 813 段(text/05-ch01.txt:813,搜「梯度爆炸」)。原文的说法是:由于那个权重会被反复计算,循环网络实际上构建了一个很深的计算图。 2

  39. 出处:「第1章 深度学习入门」第 818 段(text/05-ch01.txt:818,搜「我是中国人」)。

  40. 出处:「第1章 深度学习入门」第 825 段(text/05-ch01.txt:825,搜「单元状态」)、第 827 段(text/05-ch01.txt:827,搜「信息高速路」)与第 830 段(text/05-ch01.txt:830,搜「基于门」)。 2

  41. 出处:「第1章 深度学习入门」第 835 段(text/05-ch01.txt:835,搜「遗忘门」)。GRU 与「哪种更优无定论」见同一节稍后处。 2 3

  42. 出处:「第1章 深度学习入门」第 736 段(text/05-ch01.txt:736,搜「4 × 4」)与第 740 段(text/05-ch01.txt:740,搜「左上角的数值」)。原书给的设定是步长 1、边缘填充 0,按公式算出输出高宽为 2,输出深度为 1(因为只有一个卷积核)。