跳到主要内容

两条曲线分叉 — 反复评估时怎么不骗自己

这一章讲三件事: 怎么一眼看出模型是训得不够还是训过头了; 训过头了有哪几件武器可用、它们各自在干什么; 以及前十章那些零碎的规矩,合起来是一条什么样的流程。 它在全书链条里的位置: 第 03 章教过「一次评估怎么做才不骗自己」——立基准、分三份数据。 这一章管的是反复评估: 你会改模型、再训、再看,循环几十次。 在这个循环里骗自己的方式,和只评估一次时完全不同。 这也是全书方法论的收口:第 12 章之后就是新模型结构了。

1. 先看现象:训练损失一路降,可模型在变差

先要有个任务。书换回第 10 章那份耶拿气象数据,定了一个具体的问题1:

拿此刻之前十天的 14 项气象指标,预测 24 小时之后的气温。

样例是怎么造出来的?这里有个第 10 章没讲的细节2:

原始数据:每 10 分钟一行,共 14 列

① 往回数 10 天,但**每 6 行才取 1 行**(也就是每小时取一个点)
→ 10 天 × 24 小时 = 240 个时间点
② 把这 240 行叠起来 → 一个 [240, 14] 的二维张量,这就是**一个样例的特征**
③ 答案在哪?从最后那一行再往后数 144 行(24 小时),取那一行的气温列

于是一批样例的形状是 [批尺寸, 240, 14] —— **三维**

图说:为什么每 6 行才取 1 行?两个理由。
一是全取的话数据量是现在的 6 倍,模型和训练时间都要涨;
二是**相邻 10 分钟的气压值几乎一样,信息是冗余的**。

⚠ 这是全书第一次出现「序列」形状的输入。 前十章里,一个样例要么是一排数、 要么是一张图,没有哪个横跨过多个时间点这一点这一章先按下不表——但它是第 12 章的全部起因。

因为特征是二维的,而密集层只吃一维,所以这一章的模型都要先扁平化: [240, 14] 拉成 [3360]书在这里插了一句很关键的提醒: 这个扁平化动作会舍弃原数据里的排序信息3记住这句话,第 12 章要用。

病人一号:训完还是很糟

先上最简单的模型:扁平化 + 一个单元的密集层,也就是第 03 章那种线性回归4

训练曲线和验证曲线一起往下走,然后一起停在 0.9 附近,再训也不动了

这个 0.9 怎么读?气温列被标准化过,要乘回它的标准差 8.476 摄氏度:
8.476 × 0.9 ≈ 7.6 摄氏度

图说:平均差 7.6 度的天气预报,没有任何人会用。
而且再训一百轮也还是这个数 —— **这不是训得不够,是这个模型根本表示不了。**

这叫欠拟合。

病人二号:训练很漂亮,验证在走坏

按第 04 章的老办法加容量:插一个 32 单元的 ReLU 隐藏层5

▲ 损失

0.9│╲
│ ╲
│ ╲
0.35│ ╲___________________╱───── 验证损失:降了两轮就掉头往上爬
│ ╲ ╱
0.2│ ╲______________╱ 训练损失:一路降到 0.2 就不动了

└──────────────────────────────▶ 轮次(共 20)

训练损失 0.2 → 8.476 × 0.2 ≈ 1.7 摄氏度
验证损失 0.35 → 8.476 × 0.35 ≈ 3.0 摄氏度

图说:训练损失比上一个模型好了将近四分之三 —— 看起来大成功。
可验证损失只在前两轮下降,之后**掉头往上**。

这叫过拟合。

2. 承重节:判据是两条线的走势,不是某一个数

这一节是本章的地基。上面那两个病例,你如果只看一个数字,一个都诊断不出来。

三种走势,三个诊断

书把它画成了一张图,这就是这一章最该带走的东西6:

① 欠拟合 ② 过拟合 ③ 刚好
▲ ▲ ▲
│╲ │╲ │╲
│ ╲___________ 验证 │ ╲ ╱────── 验证 │ ╲
│ ╲___________ 训练 │ ╲___╱ │ ╲______ 验证
│ 两条都停在高位 │ ╲______ 训练 │ ╲______ 训练
└──────────────▶ └──────────────▶ └──────────────▶
两条都不理想 训练很低,验证掉头往上 两条一起降、贴在一起

图说:诊断靠的是**两条线的相对走势**,不是某一条线的绝对高度。
① 里两条线贴得很近 —— 可它们贴在一个很糟的位置上。
② 里训练那条很漂亮 —— 可你要交付的是验证那条。

书对「刚好」补了一句很重要的相对性: 「足够低」是相对的。 将来出现更好的模型类型,能把损失压得更低, 那么今天这个「刚好」就要被重新判为欠拟合——再拿新模型去治,治完再防它过拟合6

两种病的成因和治法,方向正好相反

欠拟合过拟合
现象两条线都停在高位训练线很低,验证线掉头往上
成因容量不够——这个模型根本表示不了这种关系容量太大——模型开始记住训练集里的细枝末节
治法加容量:加层、加宽、加轮次减有效容量:正则化

注意「容量」这个词是第 04 章的。 那一章说加容量的代价是可解释性; 这一章告诉你还有第二笔代价:过拟合。

3. 最主要的那味药:在损失里加一项

这一节回答:「减有效容量」具体是怎么做的。

先看它长什么样

第 04 章说过损失是「模型答得离答案差多远」。正则化做的事是往这个损失上再加一项7:

原来: 损失 = 平均绝对误差(真值, 预测值)

现在: 损失 = 平均绝对误差(真值, 预测值) + l2Rate × l2(核)
└──── 和预测有关 ────┘ └── 和预测完全无关 ──┘
只和权重本身的大小有关

图说:第二项根本不看模型答得对不对,它只嫌权重太大。

那个 l2(核) 是什么?就是所有权重值的平方和。 书给了一个能验算的小例子8:

假设某一层的核形状是 [2, 2],值是 [[0.1, 0.2], [-0.3, -0.4]]

l2(核) = 0.1² + 0.2² + (−0.3)² + (−0.4)²
= 0.01 + 0.04 + 0.09 + 0.16
= 0.3

图说:平方和永远是正的,而且权重越大它涨得越快。
把它加进损失里,就等于给「权重太大」这件事罚款。

l2Rate 是罚款的力度,默认是 1e-3它是一个超参数(第 04 章那种,由你定、训练不改), 可以拿去做超参数优化9

两个目标在打架,而这正是重点

现在训练要同时干两件事:让预测更准,和让权重更小这两件事通常是冲突的——权重压小了,预测多半会差一点。

l2Rate 就是这场拉锯的天平:它越大,训练越倾向于压小权重,哪怕预测因此变差9

效果:两条线重新贴住

书拿同一个 MLP,只给隐藏层加了正则化(输出层没加),重训一遍10:

加之前(第 1 节那张图): 训练 0.2,验证 0.35 且往上翘 —— 两条线走势完全不同
加之后: 两条线的走势不再分道扬镳,重新贴在一起

书的原话是:模型不再「沉迷于」学习仅在训练集中存在的那些奇特模式。

图说:注意只有第一个密集层加了正则化,第二个没加 —— 书说这已经足够。

而且这一次你能亲眼看见它起作用

这是这一章和第 10 章接得最好的地方。 tfjs-vis 有一个调用能把某一层的权重画成直方图, 顺带列出权重的名字、形状、参数个数、最小值最大值,以及有多少个零和多少个 NaN (最后这一项是调试利器)11

没加正则化的那一版: ▁▂▃▅▇▅▃▂▁ 分布很宽
加了正则化的那一版: ▁▃▇▃▁ 分布明显变窄

图说:这就是正则化在做的事的可视化证据 —— 最小值和最大值那一行也证实了同一件事。
⚠ 两张图的横轴刻度不同,别被形状骗了,要看数。

为什么权重小了就不容易过拟合

书给的解释是奥卡姆剃刀的算法版12:

权重大的时候,模型倾向于去拟合输入特征里的细节; 权重小的时候,模型会忽略这些细节。极端情况下权重是零,那个特征就被完全无视了。 L2 正则化逼着模型更「功利」地学:除非某个大权重带来的准确率提升, 比它交的罚款还多,否则不许要。

4. 一整排武器

L2 只是其中一件。书给了一张表,这是这一章的工具箱13:

武器它在干什么主要的旋钮
L2 正则化权重的平方和,把权重推小罚款力度
L1 正则化权重绝对值之和。同样推小,但它更容易把权重推成正好是零(也就是让权重变得稀疏)罚款力度
L1 + L2两种罚款的加权和两个力度
dropout训练时随机把一部分输出置零,推断时不做。打断那些纯属巧合的关联 —— 用 Hinton 的话说,避免神经元「相互勾结」丢弃率
批标准化训练时算出这一批输入的均值和标准差,把输入拉回「平均 0、浮动 1」再往下传若干
早停法验证损失连续几轮不再变好,就停多小的变化算「没变好」;能忍几轮

dropout 的机制第 06 章已经讲透了(那个银行柜员的故事),这里不重讲。 书自己也说:第 4 章已经讨论过它为何有效,此处不再赘述14。 顺带说一句:dropout 版和 L2 版在这个气温任务上的结果非常接近14

那到底该用哪个? 书给的答案很实在,只有两条13:

  1. 抄。 找一个类似问题上成熟的做法,照搬它的选择;
  2. 把「用哪个」本身当成一个超参数,拿第 04 章那套办法去搜。

5. 主走查:同一份气象数据,三个模型

这一章的每个承重机制,在这条走查上各占一步。数字全部来自书里,除最后两步另行注明。

发生了什么具体的数 / 状态
1造一个样例往回十天、每小时取一个点 → [240, 14];答案是 144 行之后那一行的气温
2扁平化成 [3360] 喂进模型这一步把 240 个时刻的先后顺序丢掉了
3模型一:线性回归(扁平化 + 1 个单元)训练和验证损失一起停在 0.9
4换算成能读的单位8.476 × 0.9 ≈ 7.6 摄氏度——没人会用这样的天气预报
5诊断两条线都高 → 欠拟合;成因是容量不够,再训一百轮也没用
6模型二:加一个 32 单元的 ReLU 隐藏层训练损失 0.2(1.7 摄氏度),看起来大成功
7但看验证曲线0.35(3.0 摄氏度),而且只降了两轮就掉头往上
8诊断训练低、验证升 → 过拟合
9模型三:同样的结构,给隐藏层的核加 L2 正则化两条曲线的走势重新贴到一起
10打开权重直方图对照加了正则化的那一版,权重分布明显变窄,最大最小值也证实了
11⚠ 但「贴住」不等于「有用」:那两条线贴在什么水平上?约 0.29 —— 书这一章只给了曲线、没印出这个数,它出现在下一章15
12所以这一章的模型到底算不算好?这一章回答不了第 12 章开头会拿一行代码来回答它

第 11、12 步是这一章最容易被漏掉的一级台阶,所以单独说清楚:

第 03 章那条纪律在这里还没用上。 你把两条曲线治得服服帖帖, 可你还没有拿它去和任何一个笨办法比过。 下一章开口第一件事就是:「24 小时后的气温 = 现在的气温」,一行代码,平均绝对误差 0.2903。 和 0.29 打了个平手。 也就是说,这一章辛辛苦苦治好的这个模型,等于白训。

这一句现在写下来,是为了让你出门时不要以为模型已经修好了。

6. 前十章收口:一条八步的流程

这一节把前面所有零碎的规矩排成一条线。 书自己的说法是: 这是各类监督式学习任务共通的通用流程16

第 1 步:先问该不该用机器学习

这是最容易被跳过、也最省钱的一步。 书举的反例极好记:你确实能训出一个「看两个整数的文本、预测它们的和」的模型 (书里真有这个示例),但这绝不是最高效可靠的解法——CPU 上一次加法就够了17

第 2 步:定义问题,并把两个隐含假设摆到台面上

要回答两个问题:手上有什么数据?这是哪一类任务(二分类 / 多分类 / 回归 / 其他)?

但书真正强调的是这一步底下压着的两个假设18:

假设一:输出**能**由输入预测出来 —— 输入里含有足够的信息
假设二:数据**足够多** —— 多到能让模型学出那个对应关系

⚠ 这两条在你造出一个能用的模型之前,都只是假设。

书的反例:拿股票的历史价格预测它未来的价格。
就算你收集了一个巨大的、有标签的数据集,**这也不代表历史价格里含有关于未来价格的信息**。

还有一类问题书专门点名了:概念漂移。 输入和输出的关系本身会随时间改变。 例子是服装推荐:人的着装偏好每年都在变, 去年在验证集上表现优异的模型,今年就未必19可行的对策只有一个:不断用最新数据重训。 这和第 09 章那句「偏斜不可避免」是同一件事。

第 3 步:定一个能可靠反映成败的指标

简单任务用准确率、精确率、召回率、AUC 就够(第 05 章)。 但很多时候要用领域相关的指标——书举的例子是客户留存率和销售量, 因为它们更能反映商业上的成功20

第 4 步:设计评估方案

三份数据,分布一致、互不重叠(第 03 章那套)。 这一步书加了一条前面没讲过的21:

预测时序数据时,验证集和测试集的数据必须来自训练集时段之后的时间段。

这条和第 09 章那个「打乱窗口要够大」看起来是相反的要求,其实是同一件事: 你的评估数据,必须和你上线后要面对的数据来自同一种情形。 时序任务里,上线后你永远是拿过去预测未来——所以评估也必须这么摆。

书还提醒了一句很工程的话:数据预处理的代码应该有测试覆盖,以免出 bug21这一条在第 20 章会展开。

第 5 步:向量化和标准化

把数据变成张量,并且22:

  • 值要缩到较小且居中的范围,比如 [-1, 1][0, 1];
  • 不同特征量纲不同时,做 z 分数标准化(第 03 章那道手续)。

第 6 步:做出一个能超过常识基准的模型

第 03 章那条纪律在这里正式进了流程。 书给的基准例子有两个: 回归任务里直接预测平均值;时间序列里直接拿上一个数据点当预测23

这一步同时要做三个决定,而它们全在第 05 章那张配方表里:

决定怎么定
最后一层的激活函数按任务类型:回归不加、二分类 sigmoid、多分类 softmax
损失函数同上:均方误差 / 二元交叉熵 / 分类交叉熵
优化器和学习率通常要靠超参数优化;但绝大多数情况下,先用 rmsprop 和它的默认学习率起步

第 7 步:刻意把模型做到过拟合

这一步最反直觉,而且它是整条流程的关键。

书的推理是这样的24:

你要找的是「欠拟合和过拟合之间那个平衡点」。
可是 —— **只有先跨过这个点,你才知道它在哪里。**

所以:故意往上加,直到验证准确率开始变坏为止。
加更多层 / 把每层加宽 / 训更多轮

图说:这一步的产物不是一个能用的模型,**是一个坐标** ——
你现在知道容量的临界点在哪儿了。

怎么知道跨过去了?看第 2 节那张图的第 ② 种走势。

第 8 步:往回加正则化,并调超参数

这是最花时间的一步。 循环:改模型 → 训 → 在验证集上看 → 再改25

可以试:不同丢弃率的 dropout、L1 和 L2、微调层数、调每层单元数。

而这一步藏着这一章最后一个「怎么骗自己」:

你是根据验证集的表现来选模型的,所以选来选去,超参数会被你调得对验证集过度优化。 这就是为什么必须留一份测试集,而且超参数调优期间一个字都不许碰它。25

这正是第 03 章那个漏洞的完整版: 第 03 章说「测试集被你拿来做过选择就不干净了」, 这一章告诉你,验证集也会被训脏——只是脏得慢一些,所以你需要第三份数据。

7. 作者的判断与证据

书里给了证据的:

  • 线性回归在这个任务上欠拟合。 有数:0.9,折合 7.6 摄氏度4
  • 加隐藏层会过拟合。 有数:训练 0.2、验证 0.35 且回升5
  • L2 正则化让权重分布变窄。 有直方图和最小最大值两处证据11
  • dropout 版和 L2 版结果接近。 书说可以在示例的界面里自己选来验14

属于作者判断、书里没给证据的:

  • 奥卡姆剃刀那个解释。 书用的措辞是「可以借助……直观地理解这一点」—— 它是一个说法,不是一个证明12
  • 「先刻意过拟合,再往回加正则化」这条顺序。 这是行业经验,书没有做对照实验24
  • 「绝大部分情况下用 rmsprop 和默认学习率起步」。 经验默认值23
  • 「足够低是相对的」那一段。 这是一个关于领域进展的判断6

判断(我们的,不是书里的): 这一章真正的贡献不是那几味药,是把「怎么看」和「怎么治」分开。 前十章的每一次「模型变好了」都是拿一个数字说的;这一章第一次说:一个数字不够, 你要看的是两条线的相对走势。 这个转变一旦发生,你回头看第 02 章那个 「训 10 轮 0.318、200 轮 0.0488」,就会立刻想问「那验证集上呢」——而书当时没有验证集。 如果错,会错在: 如果你的数据量大到几乎不可能过拟合(比如第 08 章那种无限生成的), 那么这一章的一半内容对你不适用——但另一半(通用流程)仍然适用。

8. 边界与局限

  • 那条通用流程在这里只有八步,还不完整。 书自己说第 12 章会再加两步 (评估与部署)26——在我们的拆解里,那是第 20、21 章。
  • 这一章的模型全部对顺序无感。 扁平化那一步把 240 个时刻的先后完全抹掉了, 而书在这里只提了一句、没有深究。第 12 章会证明这件事有多严重。
  • 正则化那张武器表只讲透了 L2。 L1、批标准化、早停各只有一句描述加一个接口名; 批标准化的机制全书没有讲过(第 01 章列过名字)。
  • 没有讲怎么定 l2Rate 只说默认 1e-3、它是超参数。
  • 本章没有和常识基准比过。 这是这一章最大的缺口,而它由下一章补上
  • 书没有给「什么时候该停止调参」的判据。 第 8 步说「直到足够接近理想状态」, 但「足够」是多少,没有答案。

9. 可带走的

  1. 诊断靠两条线的走势,不是某一个数字: 两条都高 = 欠拟合;训练低而验证掉头往上 = 过拟合;两条一起降并贴在一起 = 刚好;
  2. 「刚好」是相对的。 出现更好的模型类型之后,今天的「刚好」会被重判为欠拟合;
  3. 欠拟合加容量,过拟合减有效容量。 方向正好相反,所以诊断错了就会越治越糟;
  4. L2 正则化 = 在损失里加上「所有权重的平方和 × 一个力度」。 [[0.1, 0.2], [-0.3, -0.4]] 的平方和是 0.3;力度默认 1e-3,是个超参数;
  5. 加完能亲眼看见:把权重画成直方图,分布明显变窄;
  6. 为什么有用:权重大就会去拟合细节,权重小就会忽略细节。 除非某个大权重带来的收益超过它交的罚款,否则不许要;
  7. 武器不止一件: L1(更容易把权重推成零)、L1+L2、dropout(第 06 章讲过)、 批标准化、早停。选哪个:抄类似问题的做法,或者把它当超参数一起搜;
  8. 通用流程八步,最反直觉的是第 7 步:先刻意做到过拟合。 因为只有跨过那个临界点,你才知道它在哪儿;
  9. 第 1 步是「该不该用机器学习」。 能训出一个预测两数之和的模型,不代表该这么干;
  10. 第 8 步藏着最后一个陷阱:验证集也会被你训脏。 你按验证集的表现选模型,选久了超参数就对验证集过度优化了—— 所以测试集必须留到最后,调参期间一个字都不许碰。

10. 原文地图

主题原书章原文位置
气温预测任务的定义第 8 章text/20-ch08.txt:21(搜「24小时内的气温变化」)
样例怎么造:每 6 行取 1、240 步、延时 144 行第 8 章text/20-ch08.txt:25(搜「timeSteps = 240」) · text/20-ch08.txt:27(搜「舍弃5/6的数据」)
三维特征张量;首次出现序列数据第 8 章text/20-ch08.txt:31(搜「三维的」)
扁平化会舍弃时序信息第 8 章text/20-ch08.txt:92(搜「舍弃原数据中的排序信息」)
训练过程可视化:visor、fitCallbacks第 8 章text/20-ch08.txt:72(搜「fitCallbacks」) · text/20-ch08.txt:80(搜「visor界面」)
线性回归欠拟合:0.9 → 7.6 摄氏度第 8 章text/20-ch08.txt:108(搜「8.476」) · text/20-ch08.txt:116(搜「7.6摄氏度」)
欠拟合的成因与对策第 8 章text/20-ch08.txt:120(搜「欠缺对特征和目标之间关系的表示容量」)
MLP 过拟合:训练 0.2、验证 0.35 回升第 8 章text/20-ch08.txt:147(搜「1.7摄氏度」) · text/20-ch08.txt:149(搜「缓慢上升」)
L2 正则化:多出的那一项、平方和算例、力度第 8 章text/20-ch08.txt:167(搜「l2Rate」) · text/20-ch08.txt:172(搜「0.3」) · text/20-ch08.txt:175(搜「1e-3」)
加了正则化后两条线重新贴住第 8 章text/20-ch08.txt:177(搜「沉迷于」)
权重分布直方图与 tfvis.show.layer第 8 章text/20-ch08.txt:191(搜「NaN的参数数量」) · text/20-ch08.txt:195(搜「分布范围窄得多」)
奥卡姆剃刀第 8 章text/20-ch08.txt:197(搜「奥卡姆剃刀」)
应对过拟合的武器表 8-1第 8 章text/20-ch08.txt:201(搜「应对过拟合的常用方法概览」)
dropout 不重讲第 8 章text/20-ch08.txt:199(搜「此处不再赘述」)
三种损失曲线模式;「足够低是相对的」第 8 章text/20-ch08.txt:259(搜「快速辨别」)
通用流程第 1 步:该不该用机器学习第 8 章text/20-ch08.txt:269(搜「addition-rnn」)
第 2 步:两个隐含假设;股票反例;概念漂移第 8 章text/20-ch08.txt:279(搜「假设输出可以根据输入预测得到」) · text/20-ch08.txt:283(搜「股票的历史价格」) · text/20-ch08.txt:285(搜「概念漂移」)
第 3 步:领域相关指标第 8 章text/20-ch08.txt:287(搜「客户留存率」)
第 4 步:时序数据的验证集必须在训练集时段之后第 8 章text/20-ch08.txt:289(搜「训练集数据采样时间段之后」)
第 5 步:向量化与缩放范围第 8 章text/20-ch08.txt:293(搜「较小且居中的范围」)
第 6 步:超越常识基准;三个决定第 8 章text/20-ch08.txt:299(搜「常识性的基准」) · text/20-ch08.txt:303(搜「最后一层的激活函数」) · text/20-ch08.txt:307(搜「rmsprop优化器」)
第 7 步:刻意过拟合找临界点第 8 章text/20-ch08.txt:309(搜「刚好过拟合训练集」) · text/20-ch08.txt:313(搜「添加更多层」)
第 8 步:加正则化、调参、别对验证集过拟合第 8 章text/20-ch08.txt:321(搜「最花时间的」) · text/20-ch08.txt:331(搜「为验证集过度优化」)
第 12 章还会再加两步第 8 章text/20-ch08.txt:333(搜「评估步骤和部署步骤」)

Footnotes

  1. 出处:「第 8 章 欠拟合、过拟合,以及机器学习的通用流程」第 21 段(text/20-ch08.txt:21,搜「24小时内的气温变化」)。

  2. 出处:「第 8 章」第 25~29 段与图 8-1 说明(text/20-ch08.txt:25,搜「timeSteps = 240」;text/20-ch08.txt:27,搜「舍弃5/6的数据」)。

  3. 出处:「第 8 章」第 92 段(text/20-ch08.txt:92,搜「舍弃原数据中的排序信息」)。原文用的是「值得特别注意的一点」这个措辞。

  4. 出处:「第 8 章」第 108 与 116 段(text/20-ch08.txt:108,搜「8.476」;text/20-ch08.txt:116,搜「7.6摄氏度」)。8.476 摄氏度是气温那一列的标准差,用来把标准化后的损失换算回真实温度。 2

  5. 出处:「第 8 章」第 143~153 段(text/20-ch08.txt:147,搜「1.7摄氏度」;text/20-ch08.txt:149,搜「缓慢上升」)。 2

  6. 出处:「第 8 章」第 259 段与图 8-6 说明,第 259 段(text/20-ch08.txt:259,搜「快速辨别」)。「足够低是相对的」那一段也在第 259 段(搜「相对的」)。 2 3

  7. 出处:「第 8 章」第 162~168 段(text/20-ch08.txt:167,搜「l2Rate」)。原文点明这一项「和模型的预测值无关,它仅和被正则化的核的值有关」。

  8. 出处:「第 8 章」第 170~173 段(text/20-ch08.txt:172,搜「0.3」)。

  9. 出处:「第 8 章」第 175 段(text/20-ch08.txt:175,搜「1e-3」)。原文说明这两个目标「通常是互相冲突的」,l2Rate 用来量化它们的相对重要性。 2

  10. 出处:「第 8 章」第 177 段(text/20-ch08.txt:177,搜「沉迷于」)。原文明确说只有第一个密集层有正则化器,「但事实证明,这已足以应对训练中的过拟合」。

  11. 出处:「第 8 章」代码清单 8-4 与第 191~195 段(text/20-ch08.txt:191,搜「NaN的参数数量」;text/20-ch08.txt:195,搜「分布范围窄得多」)。原文提醒两张图「轴的尺度不同」。 2

  12. 出处:「第 8 章」第 197 段(text/20-ch08.txt:197,搜「奥卡姆剃刀」)。原文用的措辞是「可以借助奥卡姆剃刀原理直观地理解这一点」。 2

  13. 出处:「第 8 章」表 8-1,第 201~257 段(text/20-ch08.txt:201,搜「应对过拟合的常用方法概览」)。选哪个的两条建议见第 199 段(text/20-ch08.txt:199,搜「借鉴类似场景中的成熟模型」)。 2

  14. 出处:「第 8 章」第 199 段(text/20-ch08.txt:199,搜「此处不再赘述」)。原文:dropout 版 MLP 和 L2 版 MLP「训练结果非常接近」。 2 3

  15. 出处:「第 9 章 针对序列和文本的深度学习」第 62 段(text/21-ch09.txt:62,搜「大致相等」)。原文说常识基准的 0.290331「和第 8 章 MLP 模型得到的最佳结果大致相等,甚至还要稍微好一点」。第 8 章本身只给了曲线,没有印出正则化版 MLP 的验证损失数值;0.29 这个量级是从下一章这句话反推的,本章据此说明。

  16. 出处:「第 8 章」第 267 段(text/20-ch08.txt:267,搜「机器学习的通用流程」)。

  17. 出处:「第 8 章」第 269 段(text/20-ch08.txt:269,搜「addition-rnn」)。

  18. 出处:「第 8 章」第 279~283 段(text/20-ch08.txt:279,搜「假设输出可以根据输入预测得到」;text/20-ch08.txt:283,搜「股票的历史价格」)。

  19. 出处:「第 8 章」第 285 段(text/20-ch08.txt:285,搜「概念漂移」)。

  20. 出处:「第 8 章」第 287 段(text/20-ch08.txt:287,搜「客户留存率」)。

  21. 出处:「第 8 章」第 289 段(text/20-ch08.txt:289,搜「训练集数据采样时间段之后」)。同段末尾要求给数据预处理代码加测试覆盖。 2

  22. 出处:「第 8 章」第 291~295 段(text/20-ch08.txt:293,搜「较小且居中的范围」)。

  23. 出处:「第 8 章」第 299~307 段(text/20-ch08.txt:299,搜「常识性的基准」;text/20-ch08.txt:307,搜「rmsprop优化器」)。 2

  24. 出处:「第 8 章」第 309~319 段(text/20-ch08.txt:309,搜「刚好过拟合训练集」;text/20-ch08.txt:313,搜「添加更多层」)。原文:「但只有先跨过平衡的临界点,才能找到这个临界点在哪里。」 2

  25. 出处:「第 8 章」第 321~331 段(text/20-ch08.txt:321,搜「最花时间的」;text/20-ch08.txt:331,搜「为验证集过度优化」)。 2

  26. 出处:「第 8 章」第 333 段(text/20-ch08.txt:333,搜「评估步骤和部署步骤」)。