跳到主要内容

0.8 的 30 次方约等于千分之一 — 让梯度传得动的那一整套配套件

这一章讲三件事: 为什么反向传播发表之后,这一行还等了二十多年; 让深层网络「训得起来」的那几根支柱(初始化、规范化、残差); 以及让它「训得别太像训练集」的那一套手法(正则化)。

它在全书链条里的位置: 前面三章给了你三种网络, 这一章回答「它们凭什么能被训出来」。第 05 章留下的「梯度消失有多快、 有多少种治法」,在这里兑现。

1. 那三十年到底卡在哪

先讲一个略带残酷的事实:让误差一层层倒推回去的算法,1986 年就发表了。 离它真正引爆,还要再等二十多年1

这段时间里发生了什么?理论上,有了倒推算法,「有多深就能训多深」。 现实是:哪怕三四层的网络,训起来也常常信号消失、数值发散, 要么干脆什么都学不到。同一时期,另一路线(第 04 章那一柜子老办法) 理论漂亮、效果稳定、要的数据和算力都更友好—— 学术会议上神经网络的论文越来越少, 甚至出现过「投稿带 neural network 字样会扣分」的传闻2

但有几个人没有走开。 辛顿留在多伦多,靠一份从 1987 年起就不算大的经费 继续这条路;杨立昆在贝尔实验室推卷积网络;本吉奥在蒙特利尔做语言模型。 三人常常通信、互评文章、互推学生—— 在主流抛弃这个方向的年代,这个小圈子是它活下去的关键3

转机不是某一项惊天动地的发明,而是一串零件陆续到位: 2006 年,辛顿用逐层预训练第一次让七八层的网络稳定训出来, 「深度学习」这个名字重新成为旗帜4; 2010 年有人提出一种让每层信号不大不小的初始化方法; 2011 年,第 05 章那个「负的归零」的开关被用进深层网络5—— 然后才是 2012 年那场你已经知道的胜利。

这一章的每一件工具,都是从某次具体的失败里挣出来的解药。 理解这一点,后面的清单就不是一堆玄学咒语。

2. 走查:同一个 30 层网络,训三遍

这一章的主走查:搭一个 30 层的网络,什么都不加,先训一遍。

第 03 章说过,往回传的信号每穿一层都要乘一次。 下面这组乘子是书里给的: 如果每层平均乘 0.8, 30 层之后只剩 0.8³⁰ ≈ 0.001——前面的层几乎收不到任何更新信号, 网络像「只有最后几层在学」;如果每层平均乘 1.2, 30 层后变成 1.2³⁰ ≈ 237——数值迅速爆炸, 严重时电脑冷冰冰回你一句「不是一个数字」6

第一遍(裸训):
信号从第 30 层往回传 → ×0.8 → ×0.8 → ……(乘 30 次)→ 到第 1 层只剩 0.001
现象:训练损失几乎不动,或者突然变成 NaN

这张图看的是第一遍的结局:不是学得慢,是信号物理上传不到。

第二遍,先装两根支柱:合理的初始值 + 规范化。 初始值按「让每一层输出的波动既不放 大也不缩小」的原则给(第 3 节); 每两三层之间插一次规范化,把中间结果的数值尺度按回正常范围(第 4、5 节)。 这一遍,信号终于能走完全程了——但走得磕磕绊绊:损失上蹿下跳, 在最优点附近来回乱跳。

第三遍,再装三件:残差的加号(第 06 章那个)、 一个带惯性和自适应步长的优化器(第 7 节)、 一套「先热身再慢慢降温」的学习率计划(第 8 节)。 这一遍,30 层稳稳训完。

三遍的差别不在网络结构——结构一层没改。 差别全在那一圈配套件。这一章剩下的部分,就是把这三遍里装上去的东西一件件讲清。

3. 初始值:全零是最差的起点

训练开始前,所有参数都得先有个值。这件事看着是小事,实则是第一道生死关。

两个常见误区,书里各给了一句判词7:

  1. 全部设成零。 同一层的神经元会收到相同的输入、产生相同的梯度, 训练中始终一模一样——它们永远学不出不同的特征, 这一层等于只有一个神经元;
  2. 给得太大或太小。 太大,信号一层层放大直到爆炸; 太小,一层层衰减直到归零。网络从第一步就进了坏状态。

现代初始化方法的核心思想一句话:让每一层输出的波动幅度大致保持稳定。 两个经典方案各配一种开关:2010 年的那款适合 S 形开关; 2015 年的那款专为「负的归零」设计——那个开关会把一半输入截成零, 等效于把波动减半,所以初始值要相应放大来补偿8

今天的框架默认替你做好了。但训练一旦不稳定,初始值永远是第一批要排查的对象9

4. 批(一次同时喂进来的一小叠样本)规范化:沿着一列求统计

初始值只管开头。批量(一次喂一小叠的正式叫法)规范化要治的病,训练一旦开始就发作: 前面层的参数一更新,后面层收到的数据分布就变了—— 每一层都像在追一个一直移动的目标10

2015 年提出的批量规范化,做法朴素到让人意外: 把一小批样本的激活值摆成一张「行 = 样本、列 = 神经元」的表, 沿着一列(同一个神经元、跨所有样本)算出均值和波动, 把这列数值拉回标准范围;再配两个可学的小参数, 允许网络在必要时恢复一些分布特性11

效果立竿见影。书里给了一组对照:原本训 20 层就开始掉点的网络, 加上它能稳稳推到 50 层;原本只敢用万分之一量级学习率的任务, 有时可以提高到百分之一量级,训练速度大幅提高12第 06 章那个 152 层的 ResNet 能顺利训出来,它是幕后功臣之一13

它还带来一个意外的好处:每个样本被规范化时参考的是同一批里的其他样本, 相当于引入了一点轻微噪声——第 9 节你会知道,这种「轻微捣乱」 恰恰是让模型不背题的机制之一。

5. 层规范化:沿着一行求统计

批量规范化有一根软肋:它要跨样本算统计。 批量太小时均值不稳;句子有长有短时, 「同一个位置、跨所有句子」这个统计根本不好算14

层规范化走了另一条路:沿着一行(同一个样本、跨它的所有神经元) 求统计,每个样本独立处理,完全不依赖批量大小15

一批样本的激活,摆成一张表:

神经元1 神经元2 神经元3 …
样本1 ■■■■■■■■■■■■■■■■■■■■ ← 层规范化:沿这一行求统计
样本2 ■■■■■■■■■■■■■■■■■■■■
样本3 ■■■■■■■■■■■■■■■■■■■■

批量规范化:沿这一列求统计

这张图看的是两者唯一的差别:一个跨样本,一个不跨。 就这一点差别,决定了各自的疆界:卷积网络时代主导的是批量规范化; 句子长短不一、批量又小的序列任务里,主导的是层规范化—— 从 BERT、GPT(两代著名的预训练模型)到今天的大模型,用的都是它或它的简化版16

那个简化版也有个简化版叫均方根规范化。它砍掉了「把均值移到零」那一步, 只按整体尺度做缩放,计算更省17补充(不在书里,依据我们的 frontier 书架): 这个简化版在真实代码里只有两行—— 算一个均方,再按它的平方根缩回去,整个前向过程里没有任何减均值的操作18

三种规范化名字不同,做的是同一件事: 不让网络内部的数值尺度乱跑,让后面的层看到稳定的输入。

6. 残差流:一条永远在线的主干道

第 06 章的加号,在这里有第二个身份,而且比第一个更重要。

把那个加号贯穿到整个网络,网络就不再是「前一层算完交给后一层」的串行流水线—— 旁边多了一条从头到尾的主干道,现在常被称为残差流。 书里给的图景很形象:每一层把这条流当作可读可写的公共白板, 先读出当前状态,算出自己的小修正,再写回流里。 流本身永远在线,层只是沿途给它写增量19

输入 ════════════════════════════════════════ 输出
↑ ↑ ↑
读出 读出 读出
层1 写回 + 层2 写回 + 层3 写回 +
每一层只在主干道上加一个小修正

这张图看的是残差流:主干道一路畅通,所有层都是挂在路边的读写器。

它带来两个后果。第一,梯度沿着主干道一路回传,不必层层连乘—— 第 2 节那个 0.8³⁰ 的噩梦就这么被拆掉了。 第二,每一层的任务降级成「在已有表示上学一个小修正」,学习负担大减20

还有第三个身份,书里特意留了伏笔: 在研究「模型内部到底在想什么」时, 这条流被看成整个模型的共享内存——每一层把自己想说的话写上去, 后面的层再读出来用。这个视角让研究者第一次能追踪大模型内部的信息流动21。 (这件事第 26 章还会再碰到。)

7. 优化器:从「看脚下」到「带惯性、看刻度」

第 03 章的梯度下降是最朴素的走法:每步看一眼脚下的坡,往下挪一点。 真实训练里它有两个毛病,对应两次升级。

毛病一:在狭长谷底里来回震荡。 垂直谷底的方向坡度大,参数左右乱摆; 沿谷底真正该走的方向,步子反而慢。解法叫动量: 既看当前这一步的坡,也保留一部分之前几步的走向—— 来回震荡的方向,历史会互相抵消,摆幅被压下去; 长期一致的方向,速度越滚越大,越走越快22。 一个常用的记忆长度是保留九成历史。

毛病二:不同参数的坡度尺度差得离谱。 对所有参数用同一个步长, 有的方向步子太大来回跳,有的方向几乎不动。 2014 年的 Adam 把两件事合起来做:一边像动量那样估计坡的方向, 一边估计最近坡度的大小,给每个参数单独定步长23

工程里有一句经验话:不知道用什么优化器,就先用 Adam 或 AdamW24。 AdamW 名字里多出的那个 W,是第 9 节要讲的权重衰减—— 它的改进很朴素:把「根据坡度往下降」和「把参数轻轻往零拉」两件事分开做, 互不干扰,所以在大模型训练里成了默认选择25

但别以为新的永远最好。 书里特意留了半句: 在卷积网络时代的视觉训练里,带惯性的朴素走法常常最终成绩更好; 大模型训练里,AdamW 才几乎是默认。 优化器没有抽象优劣,只有和任务配不配26

8. 学习率调度:先热身,再慢慢降温

第 03 章说过,学习率是「一步迈多大」,是最重要的那个旋钮。 这一节补的是:真实训练里它根本不是一个常数,而是一张开卷就定好的时间表。

时间表的第一段叫预热:刚起步时,参数还是随机数, 整台机器还没站稳,一上来就大步走,很容易一步跨进再也回不来的坏区域。 所以前几百到几千步,学习率从很小慢慢升到目标值—— 就像运动员先热身再冲刺27

第二段叫衰减:训练后期,参数已经接近好区域, 步子太大会在谷底附近来回跳、跳不进去。 所以让学习率按计划慢慢降下来,常见的是一条平滑的余弦(先快后慢、没有突拐的降法)曲线28

补充(不在书里,依据我们的 frontier 书架): 这套时间表在真实训练配置里长这样—— nanoGPT 的默认配置写着:预热 2000 步,之后沿余弦曲线降到峰值的约十分之一29。 同一份配置里还有第 12 节要讲的另两件:梯度裁剪开着(上限 1.0), 数字格式用更省空间的那种30

书里还有一句值钱的经验:训练完全不动,先怀疑学习率; 训练剧烈震荡,也先怀疑学习率31。很多看似深奥的问题,查到最后只是它没设对。

9. 正则化:把尖谷磨成宽谷

前三节管的是「训得起来」。从这一节起管另一件事:训得别太像训练集。

先接受一件拧巴的事:优化和泛化(在没见过的数据上依然好使)其实在互相作对。 优化器的本职是把训练集上的损失压到最低; 但压得越低,往往意味着模型把训练集的每个细节连噪声称都背下来了。 训练损失接近零,常常不是好消息,而是过拟合的预兆32

正则化的统一思路一句话:别让模型舒舒服服收敛(一步步稳定逼近解)到那个最尖的最低点, 故意在训练里加各种干扰,逼它退而求其次,找一个「宽敞」的解33

损失 │ ╲ ╱ 损失 │ ╲────╱
│ ╲ ╱ │ ╲ ╱
│ ╲╱ ← 尖锐最优 │ ╲________╱ ← 平坦最优
│ 数据稍偏一点,损失飙升 │ 数据稍偏一点,损失几乎不变
参数 参数

这张图看的是正则化全部手法共同的目标:把解从左边那种尖谷,推向右边那种宽谷。 研究者观察到的经验规律是:较平坦的最低点往往比尖锐的泛化更好—— 参数抖一点、数据偏一点,预测依然稳健34

最常用的第一种干扰是权重衰减:在损失上额外加一笔「参数越大罚得越多」, 让模型没法靠极端参数强行拟合噪声,偏好更平滑、更保守的函数35

第二种是暂退法,想法非常特别。书里引了辛顿自己的比方: 银行柜员隔三差五被调岗,员工想串通作案都凑不齐人,银行反而更稳健。 做法也一样:训练时随机让一部分神经元暂时退出, 迫使网络不许依赖某几个神经元「抱团配合」—— 任何一个单元下一步都可能缺席,所以它得学出更冗余、更抗揍的表示36。 今天的大模型预训练里它常常被干脆关掉: 数据多到模型根本背不完,过拟合一时排不上主要矛盾37

10. 数据端的三招

最根本的正则化在数据端:让模型见到更多有效数据。

数据增强是把已有样本做「意思不变、样子变」的变换: 图像可以随机裁剪、翻转、调色,同一只猫以十几个变体出现—— 模型被迫关注「猫就是猫」,而不是死记某一张图的像素。 从本质上看,这是在把人的先验注入训练:告诉模型哪些变化不该改变答案38

提前停止最朴素:训练时一直盯着验证集, 验证误差不再改善就叫停,回滚到最好的那版参数。 它几乎没有额外成本,却常常立竿见影—— 它真正做的是拒绝让模型继续背那些对泛化无益的细节39

标签平滑改的是答案本身:分类的标准答案是「正确类 100%、其他 0%」, 它把这个目标软化成「正确类 90%,剩下 10% 均分」。 相当于告诉模型:世界不总是非黑即白,标注本身也不是绝对真理。 训练损失会稍高一点,泛化反而更好40

正则化不是越多越好。 书里给的顺序是: 先开基础配置(权重衰减、盯着验证集),不够再加数据增强, 再不行才考虑暂退法、标签平滑,或者干脆缩小模型41优先用最便宜、最不破坏优化的方式控制过拟合。

11. 训练不正常时的排查顺序

真正上手时,比一百个技巧值钱的是一份固定清单。 书里给的顺序是42:

① 先查数据:范围异常?有 NaN?标签错位?
② 再查损失与实现:输出维度对?损失的输入格式对?
③ 然后学习率:先减一个数量级试试
④ 接着初始化与规范化
⑤ 最后才怀疑模型结构本身

这张图看的是排查顺序:从最便宜、最常见的病因查起,架构排在最后。

这个顺序不是随意排的。真实工程里,最常见的训练失败几乎从来与「理论不够先进」无关, 十有八九是基础环节的小错误。

清单之外还有一个很管用的小测试:先只给模型几十到几百个样本, 故意让它往死里背。如果连这一小撮都背不下来,说明问题在更底层—— 标签读错、损失写反、信号根本没传到某些层。 复杂诊断之前,先确认神经信号真的能走通43

顺手记一个下一节要用的词:精度——数值用几位来表示;位数越少,算得越快、占得越省。

12. 工程现实:精度、梯度裁剪与混合精度(把大部分计算换成短位数)

最后两件,书里放在「工程现实」名下—— 没有它们,很多模型根本装不进显存(显卡板载的高速存储)、训不到底。

梯度裁剪像给优化器拴一根安全绳: 这一步的梯度如果太大,就按比例把它缩到允许范围内—— 方向大致还在,但不许一脚踩到悬崖外面44补充(不在书里,依据我们的 frontier 书架): 真实实现里这个「缩短」 不是用 if 判断做的,而是算出缩放系数后直接和一个上限取最小值—— 少一次判断,就少一次显卡和主机之间昂贵的同步45

混合精度训练是另一项标配:只在关键位置保留最厚的账本, 其余不影响结果的地方改用更省空间的数字格式记账。 显存占用大幅下降、吞吐(单位时间处理的量)成倍提升—— 没有它,很多大模型根本装不进显存46

两件都不是细节。第 15 章你会看到,千卡量级的训练连续跑几十天, 靠的就是这一层工程现实托底。

13. 作者的判断与证据

有证据的部分。 0.8³⁰ 和 1.2³⁰ 是算术;初始化的两个方案、 两种规范化的算法、Adam 的构成,都是论文里的内容; 「20 层到 50 层」「学习率提高两个量级」是批量规范化原论文报告的效果; 排查顺序是这一行的通行实践。

要分开看的三处:

  1. 「平坦的解泛化更好」。 书里自己标注这是「广泛的经验规律」, 有实验支持但反例也存在。它是个有用的直觉,不是定理。
  2. 「过参数化的模型为什么不严重过拟合」是悬案。 书里明说这桩悬案至今没结案, 只有一个候选解释:「梯度下降不是中立的,它天然倾向找到平坦、简单的解」47读的时候把它当「当前最好的猜测」,不是结论。
  3. 七条经验法则48。书里自称「不是定理,却往往比定理更常在真实工作里救命」。 它们的分量来自无数次试错后的共识,不是证明。

判断(我们的,不是书里的):这一章最该带走的不是任何一件工具,是第 1 节那个时间差。 核心算法 1986 年就有了,引爆却等了二十多年—— 这一行的瓶颈,常常不是「想不想得到」,而是「配不配得齐」。 今天读新闻时看到「某某新架构」,先问一句:它缺的那圈配套件,现在齐了吗? 如果错,会错在: 这个读法低估了算法突破本身的价值。 注意力和残差连接这种级别的想法,不是「迟早会有的配套件」; 配套件决定想法什么时候兑现,但想法本身决定有什么可兑现。

14. 边界与局限

  • 每个工具都只讲了「治什么病、什么思路」,没讲数学细节。 两个初始化方案的具体公式、Adam 的偏差校正,这一版一律不展开。

  • 批量规范化和层规范化的效果数字来自原论文。 你手上的任务未必复现同样幅度。

  • 「小模型上调好超参数(训练前人为设定的设置,如学习率)、再把结论搬到大模型」只提了一句。 这是大模型时代的工程前沿, 远不完美,书里也明说它「比直接在大模型上撞运气理性得多」而已49

  • 训练曲线怎么读,书里给了原则没给图册。 「看几分钟曲线就猜出病因」 靠的是经验积累,这一章给不了捷径。

  • 过拟合与优化的纠缠没有理论解。 第 13 节那桩悬案,书里照实写了「没结案」。

15. 可带走的

  1. 核心算法早就有了,等的是配套件。 瓶颈常常是配齐,不是想到。
  2. 0.8³⁰≈0.001,1.2³⁰≈237。 深网络的生死,先是连乘的算术问题。
  3. 初始值的原则:让每层的波动不放大也不缩小。 全零是最差的起点——同层神经元会永远一模一样。
  4. 批量规范化沿一列(跨样本),层规范化沿一行(不跨样本)。 这一点差别决定各自疆界。
  5. 残差流是公共白板:流永远在线,层只写增量。 它还是理解模型内部的坐标系。
  6. 优化器没有抽象优劣。 不知道用什么就先 AdamW;视觉老任务里带惯性的朴素走法常常更稳。
  7. 学习率是一张时间表:先热身,再慢慢降温。 训练不动或剧烈震荡,都先怀疑它。
  8. 正则化的全部手法都在做一件事:把尖谷磨成宽谷。
  9. 排查顺序:先数据,再实现,再学习率,再初始化,最后才怀疑架构。 连几百个样本都背不下,问题在底层。
  10. 梯度裁剪和混合精度不是细节。 没有它们,大模型装不进显存、训不到底。

16. 原文地图

主题原书章原文位置
反向传播 1986 与低谷第4章 把网络训好的艺术text/05-ch04.txt:32(搜「1986 年就发表」) · :48(搜「neural network」)
三位坚持者第4章 把网络训好的艺术text/05-ch04.txt:51(搜「三位坚持者」)
2006 重启第4章 把网络训好的艺术text/05-ch04.txt:64(搜「深度信念网络」)
0.8³⁰ 与 1.2³⁰第4章 把网络训好的艺术text/05-ch04.txt:142(搜「指数级缩小」)
初始化的两个误区第4章 把网络训好的艺术text/05-ch04.txt:278(搜「始终一模一样」)
两个初始化方案第4章 把网络训好的艺术text/05-ch04.txt:282(搜「Xavier 初始化」) · :284(搜「He 初始化」)
批量规范化第4章 把网络训好的艺术text/05-ch04.txt:309(搜「批量规范化」) · :314(搜「稳稳推到 50 层」) · :319(搜「幕后功臣」)
层规范化与均方根规范化第4章 把网络训好的艺术text/05-ch04.txt:324(搜「层规范化」) · :333(搜「均方根规范化」)
行列对照图第4章 把网络训好的艺术text/05-ch04.txt:355(搜「沿这一列求统计」)
残差流第4章 把网络训好的艺术text/05-ch04.txt:367(搜「残差流(Residual Stream)」) · :386(搜「共享内存」)
动量第4章 把网络训好的艺术text/05-ch04.txt:194(搜「借用了物理直觉」)
Adam 与 AdamW第4章 把网络训好的艺术text/05-ch04.txt:215(搜「Adaptive Moment Estimation」) · :230(搜「就先用 Adam 或 AdamW」) · :236(搜「带动量的 SGD」)
预热与衰减第4章 把网络训好的艺术text/05-ch04.txt:262(搜「运动员热身」) · :264(搜「余弦退火」)
先怀疑学习率第4章 把网络训好的艺术text/05-ch04.txt:266(搜「先怀疑学习率」)
优化与泛化作对第4章 把网络训好的艺术text/05-ch04.txt:395(搜「互相作对」)
尖谷与宽谷第4章 把网络训好的艺术text/05-ch04.txt:405(搜「打磨成一片宽阔平坦」)
权重衰减与暂退法第4章 把网络训好的艺术text/05-ch04.txt:432(搜「权重衰减」) · :436(搜「银行柜员」) · :443(搜「干脆关掉」)
数据增强/提前停止/标签平滑第4章 把网络训好的艺术text/05-ch04.txt:447(搜「数据增强」) · :452(搜「提前停止」) · :475(搜「标签平滑」)
正则化不是越多越好第4章 把网络训好的艺术text/05-ch04.txt:479(搜「不是越多越强」)
排查顺序第4章 把网络训好的艺术text/05-ch04.txt:545(搜「先查数据」)
过拟合小测试第4章 把网络训好的艺术text/05-ch04.txt:551(搜「几十到几百个样本」)
梯度裁剪与混合精度第4章 把网络训好的艺术text/05-ch04.txt:601(搜「安全绳」) · :604(搜「混合精度训练」)
悬案第4章 把网络训好的艺术text/05-ch04.txt:668(搜「过参数化的模型」)

Footnotes

  1. 出处:「第4章 把网络训好的艺术」第 32 段(text/05-ch04.txt:32,搜「1986 年就发表」)。 原文:「反向传播算法早在 1986 年就发表了,离它真正引爆还要再等二十多年」。

  2. 出处:「第4章 把网络训好的艺术」第 48 段(text/05-ch04.txt:48,搜「neural network」)。 原文注明这是「传闻」。

  3. 出处:「第4章 把网络训好的艺术」第 60 段(text/05-ch04.txt:60,搜「紧密的小圈子」)。 三人的工作在 text/05-ch04.txt:51-61。

  4. 出处:「第4章 把网络训好的艺术」第 64 段(text/05-ch04.txt:64,搜「深度信念网络」)。 原文:「七八层的网络第一次能稳定训练并达到不错精度」。

  5. 出处:「第4章 把网络训好的艺术」第 79 段(text/05-ch04.txt:79,搜「Xavier 初始化」) 与第 81 段(text/05-ch04.txt:81,搜「用于深层稀疏神经网络」)。

  6. 出处:「第4章 把网络训好的艺术」第 142 段(text/05-ch04.txt:142,搜「指数级缩小」)。 原文给的正是 0.8³⁰≈0.001 和 1.2³⁰≈237。 走查里「30 层网络训三遍」是我们按书里的三难组织的讲法,书里没有一个字面上的「三遍实验」。

  7. 出处:「第4章 把网络训好的艺术」第 278 段(text/05-ch04.txt:278,搜「始终一模一样」)。

  8. 出处:「第4章 把网络训好的艺术」第 282 段(text/05-ch04.txt:282,搜「Xavier 初始化」) 与第 284 段(text/05-ch04.txt:284,搜「He 初始化」)。 原文:「ReLU 会把一半输入截成零、等效上把方差减半,He 初始化便用更大的初始尺度去补偿」。

  9. 出处:「第4章 把网络训好的艺术」第 288 段(text/05-ch04.txt:288,搜「首批排查对象」)。

  10. 出处:「第4章 把网络训好的艺术」第 308 段(text/05-ch04.txt:308,搜「一直移动的目标」)。

  11. 出处:「第4章 把网络训好的艺术」第 310 段(text/05-ch04.txt:310,搜「同一隐藏维度」)。 「行 = 样本、列 = 神经元」的摆法出自书里图 4.3(text/05-ch04.txt:339,搜「沿这一列求统计」)。

  12. 出处:「第4章 把网络训好的艺术」第 314 段(text/05-ch04.txt:314,搜「稳稳推到 50 层」)。

  13. 出处:「第4章 把网络训好的艺术」第 319 段(text/05-ch04.txt:319,搜「幕后功臣」)。 原文:「随后诞生的 ResNet 能顺利训练到 100 多层,BN 是幕后功臣之一」。

  14. 出处:「第4章 把网络训好的艺术」第 323 段(text/05-ch04.txt:323,搜「依赖批量统计」)。

  15. 出处:「第4章 把网络训好的艺术」第 324 段(text/05-ch04.txt:324,搜「层规范化」)。 原文:「不跨样本统计,而是在单个样本内部对隐藏维度做规范化」。

  16. 出处:「第4章 把网络训好的艺术」第 331 段(text/05-ch04.txt:331,搜「CNN 时代主导的是 BN」)。

  17. 出处:「第4章 把网络训好的艺术」第 333 段(text/05-ch04.txt:333,搜「均方根规范化」)。

  18. 补充(不在书里,依据我们的 frontier 书架):Llama 的规范化前向只有「求均方、按平方根缩回、乘权重」三步。 依据: shelf=ai-frontier-reference/transformers@src:src/transformers/models/llama/modeling_llama.py:66 @b6c0bfe04c823a7b2ca48f91b8b91b2a7741f309 事实=RMSNorm 的前向全程没有减均值,只有 pow(2).mean 后乘 rsqrt 缩放。

  19. 出处:「第4章 把网络训好的艺术」第 367 段(text/05-ch04.txt:367,搜「残差流(Residual Stream)」)。

  20. 出处:「第4章 把网络训好的艺术」第 370 段(text/05-ch04.txt:370,搜「梯度可以沿着残差流一路回传」)。

  21. 出处:「第4章 把网络训好的艺术」第 386 段(text/05-ch04.txt:386,搜「共享内存」)。

  22. 出处:「第4章 把网络训好的艺术」第 194 段(text/05-ch04.txt:194,搜「借用了物理直觉」)。 β 常取 0.9 左右,见第 200 段。

  23. 出处:「第4章 把网络训好的艺术」第 215 段(text/05-ch04.txt:215,搜「Adaptive Moment Estimation」)。

  24. 出处:「第4章 把网络训好的艺术」第 230 段(text/05-ch04.txt:230,搜「就先用 Adam 或 AdamW」)。

  25. 出处:「第4章 把网络训好的艺术」第 234 段(text/05-ch04.txt:234,搜「分开做」)。

  26. 出处:「第4章 把网络训好的艺术」第 236 段(text/05-ch04.txt:236,搜「带动量的 SGD」)。

  27. 出处:「第4章 把网络训好的艺术」第 262 段(text/05-ch04.txt:262,搜「运动员热身」)。

  28. 出处:「第4章 把网络训好的艺术」第 264 段(text/05-ch04.txt:264,搜「余弦退火」)。 原文:「预热 + 余弦退火已经成了很常见的组合,GPT-3、Llama 等许多大模型都用过类似策略」。

  29. 补充(不在书里,依据我们的 frontier 书架):nanoGPT 训练配置里写着 warmup_iters = 2000、 min_lr 应约为峰值的十分之一。 依据: shelf=ai-frontier-reference/nanogpt@src:train.py:66 @3adf61e154c3fe3fca428ad6bc3818b27a3b8291 事实=配置写着 warmup_iters = 2000。 另一份: shelf=ai-frontier-reference/nanogpt@src:train.py:68 @3adf61e154c3fe3fca428ad6bc3818b27a3b8291 事实=min_lr 的注释写着 should be ~= learning_rate/10 per Chinchilla。

  30. 补充(不在书里,依据我们的 frontier 书架):同一份配置里 grad_clip = 1.0、dtype 用 bfloat16。 依据: shelf=ai-frontier-reference/nanogpt@src:train.py:63 @3adf61e154c3fe3fca428ad6bc3818b27a3b8291 事实=配置写着 grad_clip = 1.0。 另一份: shelf=ai-frontier-reference/nanogpt@src:train.py:73 @3adf61e154c3fe3fca428ad6bc3818b27a3b8291 事实=dtype 默认取 bfloat16(显卡支持时)。

  31. 出处:「第4章 把网络训好的艺术」第 266 段(text/05-ch04.txt:266,搜「先怀疑学习率」)。

  32. 出处:「第4章 把网络训好的艺术」第 395 段(text/05-ch04.txt:395,搜「互相作对」)。

  33. 出处:「第4章 把网络训好的艺术」第 399 段(text/05-ch04.txt:399,搜「别让模型舒舒服服地收敛」)。

  34. 出处:「第4章 把网络训好的艺术」第 405 段(text/05-ch04.txt:405,搜「打磨成一片宽阔平坦」)。

  35. 出处:「第4章 把网络训好的艺术」第 432 段(text/05-ch04.txt:432,搜「权重衰减」)。

  36. 出处:「第4章 把网络训好的艺术」第 436 段(text/05-ch04.txt:436,搜「银行柜员」) 与第 438 段(text/05-ch04.txt:438,搜「抱团配合」)。

  37. 出处:「第4章 把网络训好的艺术」第 443 段(text/05-ch04.txt:443,搜「干脆关掉」)。 Transformer 里暂退比例常见在 0.1 左右,见第 442 段。

  38. 出处:「第4章 把网络训好的艺术」第 447 段(text/05-ch04.txt:447,搜「数据增强」) 与第 451 段(text/05-ch04.txt:451,搜「把先验知识注入训练过程」)。

  39. 出处:「第4章 把网络训好的艺术」第 452 段(text/05-ch04.txt:452,搜「提前停止」) 与第 472 段(text/05-ch04.txt:472,搜「拒绝让模型继续去记忆」)。

  40. 出处:「第4章 把网络训好的艺术」第 475 段(text/05-ch04.txt:475,搜「标签平滑」)。

  41. 出处:「第4章 把网络训好的艺术」第 479 段(text/05-ch04.txt:479,搜「不是越多越强」)。

  42. 出处:「第4章 把网络训好的艺术」第 545 段(text/05-ch04.txt:545,搜「先查数据」)。

  43. 出处:「第4章 把网络训好的艺术」第 551 段(text/05-ch04.txt:551,搜「几十到几百个样本」)。

  44. 出处:「第4章 把网络训好的艺术」第 601 段(text/05-ch04.txt:601,搜「安全绳」)。

  45. 补充(不在书里,依据我们的 frontier 书架):PyTorch 的梯度裁剪实现是先算缩放系数, 再和 1.0 取最小值,注释里明说这样做是为了避免一次 if 判断带来的主机与显卡同步。 依据: shelf=ai-frontier-reference/pytorch@src:torch/nn/utils/clip_grad.py:168 @c187ef3271d5555d2d79a7c599263be58e036d62 事实=实现是 torch.clamp(clip_coef, max=1.0),上方注释说明避免 if clip_coef < 1 的条件判断。

  46. 出处:「第4章 把网络训好的艺术」第 604 段(text/05-ch04.txt:604,搜「混合精度训练」)。 原文:「没有它,很多大模型根本装不进显存」。

  47. 出处:「第4章 把网络训好的艺术」第 668 段(text/05-ch04.txt:668,搜「过参数化的模型」)。 原文:「深度学习最神秘的悬案之一……这桩悬案至今还没有结案」。

  48. 出处:「第4章 把网络训好的艺术」第 636 段(text/05-ch04.txt:636,搜「先用 AdamW」)。 七条法则在 text/05-ch04.txt:632-654。

  49. 出处:「第4章 把网络训好的艺术」第 594 段(text/05-ch04.txt:594,搜「超参数迁移」)。 这个思路叫 μP:先在小模型上把超参数调到位,再按缩放规则外推。