跳到主要内容

这一章管「训练开始之前」和「每一层之中」的数值卫生: 起点撒得不对,信号在前向里消失、在反向里爆炸,第 17 章的所有算法都救不了; 撒对了,再配上把每一层的取值拉回稳定区间的规范化,很深的网络才训得动。

初始化、预处理与逐层规范化

1. 这一章讲什么

三件事: 参数起点怎么撒(对称权重 → 方差缩放 → 正交); 输入数据怎么整理(尺度对齐的三种做法); 以及把「整理」这件事搬进网络内部——逐层规范化的四个家族(BN/LN/RMSNorm/WeightNorm)。

它在全书链条里的位置: 第 17 章说高维地形要靠算法和随机性对付; 这一章补上另一半:地形的坡度本身是可以被修的——初始化决定起点, 规范化决定每层看到的数值范围。第 03 章埋的方差概念,在这里第一次承重。

需要第 10 章;第 7 节用到第 16 章(循环网络)和第 22 章的名词(Transform 点到为止)。

2. 顶层全景

出发前 ────────────────────────────────────────────▶ 训练中
参数初始化 数据预处理 逐层规范化
├ 全零 → 对称权重 ✗ ├ 尺度不齐 → 等高线长条 ├ BN:跨样本统计
├ 固定方差:太小信号衰减 ├ 最小最大值 → 压到区间 ├ LN:样本内统计
│ 太大激活饱和 ├ 标准化 → 均值0方差1 ├ RMSNorm:不减均值
├ Xavier/He:按扇入扇出算方差 └ 白化 → 再去相关 └ WeightNorm:权重自身
└ 正交:直接保范数

一句话链条: 神经元的输出 = 一串「权重×输入」的和 → 和的方差由权重方差乘以输入个数决定 → 想让信号每层不多不少地传下去, 权重方差必须按连接数算 → 这就是 Xavier/He 的全部 → 训练中每一层照此办理的实时版,就是逐层规范化。

3. 全设成零会怎样:对称权重

在感知器、Logistic 回归这种线性模型里,参数全初始化为 0 完全没问题; 同样的做法放进神经网络就是灾难:第一遍前向计算,所有隐藏层神经元的激活值相同; 反向传播时,所有权重的更新也相同——神经元之间没有任何区分性, 学再久也还是一群复读机。这种现象叫对称权重现象, 打破它的办法就一句:每个参数随机初始化1

三种初始化的定位书里摆得很清楚2:

方式用在哪要点
预训练(先在大数据上学一轮)初始化有现成大模型时大规模数据上学到的参数当起点(继续学叫微调),还带正则化效果
随机初始化权重矩阵神经元有区分性的前提;本章的主角
固定值初始化偏置等特殊参数偏置常设 0;LSTM 遗忘门偏置设 1 或 2,让初期偏向「多记住」;ReLU 神经元偏置设 0.01,让初期更容易激活、拿到梯度

第三行那两个「经验值」和第 16 章的内容直接咬合:遗忘门偏置为正, 训练初期更像「保留记忆」——同一件事的两处落地3

4. 方差该多大:一次信号放大率的账

随机撒点撒在哪个范围?设每层的输出都是一串「权重×输入」加起来, 输出信号的方差 = 输入个数 × 权重方差 × 输入方差。于是:

  • 权重方差太小 → 输出过小,多层之后信号慢慢消失; 而且 Sigmoid 型激活在 0 附近近似线性,小信号等于白费非线性4;
  • 权重方差太大 → 输入状态过大,激活值进入饱和区、梯度接近 0, 梯度消失问题回头找上门5

原则从这条账里自己长出来:让每个神经元的输入和输出方差保持一致—— 信号经过这一层,不多不少地传下去。要按神经元性质差异化设置: 输入连接多的神经元,每条连接上的权重就该小一些6

5. 按扇入扇出算:Xavier 与 He

把第 4 节的原则写成公式(推导假设权重与输入独立、均值 0、激活函数先用恒等函数): 前向不放大也不缩小,要求 var(w) = 1/扇入;反向同理,要求 var(w) = 1/扇出; 两边同时照顾,取折中 var(w) = 2/(扇入+扇出)7。 按这个方差用高斯分布或均匀分布采样,就是 Xavier 初始化[Glorot et al., 2010], 也叫 Glorot 初始化8。虽然推导用了恒等激活,它对 Logistic/Tanh 也适用—— 参数和输入的绝对值通常较小,正好落在这些函数的线性区间; Logistic 在线性区间斜率约 0.25,所以其场合方差还要放大(约 16 倍或乘经验缩放因子)9

ReLU 要单独算一遍。 ReLU 会把一半输入直接归零,神经元输出的方差 近似只有恒等函数时的一半;把这一半补回来,只考虑前向时方差应为 var(w) = 2/扇入——正好是 Xavier 折中值的约两倍10。 这就是 He 初始化(也叫 Kaiming 初始化)[He et al., 2015]。 两家设置汇总:

方法激活函数高斯方差
XavierTanh2/(扇入+扇出)
XavierLogistic32/(扇入+扇出)(线性区间斜率 0.25 的修正)
HeReLU2/扇入

主走查在第 10 节拿一个真实的三层网络把这两列算出来。

再进一步,独立采样本身就不够稳。 逐参数随机采样出的矩阵,深层连乘后仍可能漂; 正交初始化直接把权重矩阵初始化为正交矩阵(W·Wᵀ=I), 让误差项在反向传播中范数保持——每过一层,误差向量的长度原样通过11。 实现两步:先撒一个高斯随机矩阵,再做一次奇异值分解取其正交因子12。 非线性网络里正交矩阵还要乘缩放系数(ReLU 在 0 附近的平均梯度近似 0.5, 为保持范数缩放系数取 √2);正交初始化常见于循环网络的循环边上13

6. 数据进门之前:尺度对齐

换单位惹的祸。 描述长度的特征用「米」记作 x,改用「厘米」就变成 100x—— 特征尺度不一,对不同模型的杀伤不同。线性分类器尺度不变, 最近邻(找最像的训练样本)分类器尺度敏感:算欧氏距离时尺度大的特征会主导整个距离14

神经网络名义上不受限,实际上吃亏。 书里的小例子值得抄: y = tanh(w₁x₁+w₂x₂+b),x₁∈[0,10]、x₂∈[0,1]。 tanh 只在净输入 ∈[−2,2] 时导数显著,想不掉进饱和区就得把 w₁ 手动压到 [−0.1,0.1] 附近—— 维数一多,人工这样挑每个参数是不可能的任务15

几何后果在图 7.9 里:尺度不齐时损失面的等高线是长条形, 梯度方向几乎不指向最低点,要来来回回走很多弯路; 规范化成相同尺度后,大部分位置的梯度直接朝着谷底去16

三种预处理,代价递增17:

方法做法代价
最小最大值规范化按最大最小值线性压到 [0,1] 或 [−1,1]对离群值敏感
标准化(Z-Score)减均值、除标准差(方差的平方根),变成均值 0 方差 1某维标准差为 0 说明无区分性,直接删掉
白化在标准化之上再去掉特征间相关性(常用 PCA),各维同方差计算重,不适合放到网络中间层

第三行已经预告了下一节的分工:白化太贵,所以网络内部只做便宜的标准化。

7. 把规范化搬进网络:BN、LN、RMSNorm、WeightNorm

为什么要搬。 深层网络里每一层的输入都是上一层的输出:低层参数一动, 高层输入的分布跟着变——书打的比方是高楼,低楼层偏一点,高楼层晃得厉害; 「输入分布一变,参数就得重新适应」这个现象叫内部协变量偏移18。 既然每个中间层都在被别人改变分布,那就在每一层现场做一遍数据预处理—— 这就是逐层规范化

批量规范化(BN)[Ioffe et al., 2015] 的做法: 对第 l 层的净输入 z(仿射之后、激活函数之前),用当前小批量样本算均值和方差, 标准化到均值 0 方差 1,再乘一个可学习的缩放 γ、加一个可学习的平移 β19。 四个要点:

① 统计量的方向:同一个神经元,跨 K 个样本算均值方差
② γ、β 给网络「反悔权」:当 γ=σ、β=μ 时恰好还原原值,表示能力不受损
③ 布置位置:仿射之后、激活之前;BN 自带平移,该层不再需要偏置
④ 部署时:用全量数据(或移动平均)的统计量替换小批量统计量

动机的出处值得较真。 BN 最初的卖点就是消除内部协变量偏移, 但书随后引入后续研究的修正:主要作用不在于减少内部协变量偏移, 而在于让优化地形更平滑,允许更大学习率、加速收敛[Bjorck; Santurkar]20—— 第 17 章那条「地形可以修」的经验线,在这里又延伸了一步。 还有一个意外红利:预测时一个样本的规范化结果依赖同批其他样本, 批的随机性让它顺带成了隐形的正则化,模型不至于过拟合到特定样本21

BN 的两个软肋逼出了变体。 其一,统计量要跨样本算,批量太小就没得算; 其二,分布随时间漂移的层(典型:循环网络)难用22层规范化(LN)[Ba et al., 2016] 换了一个统计方向: 不再跨样本,而是对同一条样本内的这一层全部神经元算均值方差—— 书里的对照一句话讲完:按列堆叠的矩阵,LN 对每列规范化,BN 对每行规范化23。 于是它不怕小批量、也不管样本顺序,循环网络里净输入随时间漂移的问题顺势被缓解24; 在 CNN(卷积网络)和大批量视觉任务里 BN 仍更常见,循环网络、Transformer、小批量场景则更自然地选 LN25

均方根(RMS)规范化(RMSNorm) 再砍一刀:连减均值都不要了,只按均方根调尺度、 乘一个可学习缩放——计算更省,却保留了对尺度变化的抑制; 在 Transformer 类大模型里比层规范化更常见26

权重规范化(WeightNorm) 是第三条路:不动输入、不动激活,改写权重本身—— 把 W 分解成「长度 × 方向」两个参数(g·v/‖v‖)分别学习27; 因为权重大量共享,它的开销比逐神经元的做法更小。

(还有第四个名字:AlexNet 用的局部响应规范化 LRN,对邻域神经元做规范化, 如今已较少使用,历史地位而已28。)

8. 作者的判断与证据

书里给了推导的: Xavier 的方差公式(恒等激活、独立零均值假设下的完整推导)7; He 的「ReLU 砍半 → 方差翻倍」修正10;正交矩阵的范数保持性11

书里给了证据更正的: BN 动机的修正(平滑地形而非消 ICS)20—— 这是教科书少见的「后来研究发现当初的解释不对」的坦白; Logistic 线性区间斜率 0.25 → 方差乘 16 的数值修正9

书里给了经验值的: 遗忘门偏置 1~2、ReLU 偏置 0.013; 正交初始化在 ReLU 下的缩放系数 √213;LRN 的历史定位28

书里画了分工图的: 视觉/大批量归 BN,RNN/Transformer/小批量归 LN, 大模型归 RMSNorm——「不同模型常有不同偏好」2526

9. 边界与局限

初始化的推导都建立在理想假设上:恒等激活、输入零均值、层间独立、 各层等宽。真实网络的偏离靠什么兜底?书给的答案是「配合逐层规范化使用」5—— 换句话说,规范化普及之后,初始化的精度要求其实降低了。

规范化家族的取舍书只给方向不给机理的: 为什么 RMSNorm 减均值这一步可以省, 哪些任务下省得没有代价,正文未论证,只交代了「实践中更常见」的现状26

白化在线上训练场景的失效:它需要全量数据的统计量,网络中间层的实时白化 因代价高被直接排除19;这也意味着本章的选择集其实是「三种便宜做法」。

测试期统计量的漂移(部署分布变了,BN 的移动平均统计失准)书中未展开, 这是 BN 在实际部署中的知名坑点,需要读者出门补课。

10. 主走查:三层网络的方差表 + 四个数的批量规范化

第一段:初始化。 网络结构取原书习题 7-17 的设定:输入 100 维, 两个隐藏层 256 和 128,输出 10 维。按本章公式现算:

第1层(100→256):Xavier 2/(100+256)=0.005618 He 2/100 =0.020000
第2层(256→128):Xavier 2/(256+128)=0.005208 He 2/256 =0.0078125
第3层(128→ 10):Xavier 2/(128+ 10)=0.014493 He 2/128 =0.015625

三行看完两件事:每往右一层,Xavier 的分母变小、方差变大(扇出变小了); He 与 Xavier 的差距集中在扇入大的层(第 1 层差 3.6 倍), 到窄层两者几乎重合(0.014493 对 0.015625)。 「ReLU 方差翻倍」这句话在数字上的样子,就是第 1、2 层这两列。

第二段:批量规范化。 某层四个样本的净输入取 z = [−2, −1, 1, 2] (这组数是为演示编的),K=4:

均值 μ = (−2−1+1+2)/4 = 0
方差 σ² = [(−2)²+(−1)²+1²+2²]/4 = 10/4 = 2.5 σ = 1.5811
标准化:z/σ = [−1.265, −0.632, 0.632, 1.265]

验证「反悔权」: 令 γ=σ=1.5811、β=μ=0,乘回去正好还原 [−2,−1,1,2]—— 规范化本身没有破坏任何表示能力,它只是先立一个标准尺度、 再让网络自己决定用不用。若 γ=2、β=0.5,输出变为 [−2.030, −0.765, 1.765, 3.030],区间被重新拉宽抬高。 最后再看统计方向:换一个样本进来,这四个数全变——BN 的归一化(拉回均值方差)依赖同批的邻居, 这正是它「隐形正则化」效果和「小批量不能用」的软肋共同的来源。

11. 可带走的

  1. 全零初始化制造对称权重:前向同值、反向同更新,神经元永远一样;必须随机撒;
  2. 方差太小时信号层层衰减且丢非线性,太大时激活饱和、梯度近零;
  3. Xavier = 2/(扇入+扇出),让每层输入输出方差一致;He 针对只有一半输出的 ReLU,取 2/扇入;
  4. 正交初始化(W Wᵀ=I)让范数每层原样通过,循环网络的循环边上特别有用;
  5. 尺度敏感的模型要先做预处理:最小最大值、标准化、白化代价递增; 标准化是网络内部的默认;
  6. 尺度不齐 → 等高线长条形 → 梯度绕路:预处理省的是迭代次数;
  7. BN 对跨样本统计,LN 对样本内统计;批量小、时序结构、Transformer 用 LN;
  8. BN 的主要作用被修正为「地形更平滑」,消除内部协变量偏移是当年的动机、不是今天的机制;
  9. γ/β 让规范化可还原原值——规范化不损失表示能力;
  10. RMSNorm 省掉减均值一步,大模型时代的主流;WeightNorm 把权重拆成长度×方向。

12. 原文地图

主题原书章原文位置
对称权重现象第7章 网络优化与正则化text/08-ch07.txt:758(搜「对称权重现象」)
三种初始化方式第7章 网络优化与正则化text/08-ch07.txt:765(搜「遗忘门更偏向保留上一时刻记忆」)
固定方差的两难第7章 网络优化与正则化text/08-ch07.txt:796(搜「输出过小,经过多层之后信号就慢慢消」) · text/08-ch07.txt:802(搜「梯度接近于 0,从而导致梯度消失问题」)
方差缩放原则第7章 网络优化与正则化text/08-ch07.txt:811(搜「每个输入连接上的权重就应该小一些」)
Xavier 推导与折中第7章 网络优化与正则化text/08-ch07.txt:872(搜「同时考虑信号在前向和反向」) · text/08-ch07.txt:894(搜「斜率约为 0.25」)
He 初始化第7章 网络优化与正则化text/08-ch07.txt:902(搜「一半的神经元输出为 0」) · text/08-ch07.txt:921(搜「Kaiming 初始化」)
正交初始化第7章 网络优化与正则化text/08-ch07.txt:950(搜「范数保持性(Norm-Preserving」) · text/08-ch07.txt:955(搜「初始化为正交矩阵」) · text/08-ch07.txt:968(搜「循环神经网络中循环」) · text/08-ch07.txt:971(搜「缩放系数 𝜌 可以设置为 2」)
尺度不变性第7章 网络优化与正则化text/08-ch07.txt:979(搜「尺度不变性(Scale Invariance」) · text/08-ch07.txt:980(搜「最近邻分类器就是尺度敏感的」)
tanh 小例子第7章 网络优化与正则化text/08-ch07.txt:991(搜「𝑤1 设得小一点」)
等高线与梯度第7章 网络优化与正则化text/08-ch07.txt:998(搜「未规范化数据的等高线图」)
三种预处理第7章 网络优化与正则化text/08-ch07.txt:1018(搜「Min-Max Normalization」) · text/08-ch07.txt:1027(搜「Z 值规范化(Z-Score」) · text/08-ch07.txt:1045(搜「没有任何区分性,可以」) · text/08-ch07.txt:1049(搜「PCA」)
高楼与 ICS第7章 网络优化与正则化text/08-ch07.txt:1070(搜「就像一栋高楼」) · text/08-ch07.txt:1072(搜「内部协变量偏移(Internal Covariate Shift」)
BN 动机修正第7章 网络优化与正则化text/08-ch07.txt:1094(搜「最初的提出动机是减少」) · text/08-ch07.txt:1096(搜「使损失函数的优化地形」)
BN 要点第7章 网络优化与正则化text/08-ch07.txt:1105(搜「一般应用在仿射变换(Affine」) · text/08-ch07.txt:1121(搜「用当前小批量样本」) · text/08-ch07.txt:1150(搜「被还原为原来的值」) · text/08-ch07.txt:1157(搜「不再需要偏置」) · text/08-ch07.txt:1164(搜「隐形的」)
LN 与对照第7章 网络优化与正则化text/08-ch07.txt:1173(搜「不能太小,否则难以计算单个神经元」) · text/08-ch07.txt:1213(搜「层规范化可以有效缓解这种状况」) · text/08-ch07.txt:1216(搜「每一列进行规范化,而批量规范化是对」)
RMSNorm第7章 网络优化与正则化text/08-ch07.txt:1224(搜「不再对输入做均值中心化」) · text/08-ch07.txt:1247(搜「很多现代大模型中比层规范化更常见」)
权重规范化与 LRN第7章 网络优化与正则化text/08-ch07.txt:1253(搜「分解为长度和方向」) · text/08-ch07.txt:1263(搜「Local Response Normalization,LRN」)

Footnotes

  1. 出处:「第7章 网络优化与正则化」第 752 至 758 段(text/08-ch07.txt:758,搜「对称权重现象」)。

  2. 出处:「第7章 网络优化与正则化」第 724 至 772 段。 预训练初始化与微调见第 751 段(text/08-ch07.txt:751,搜「也称为微调(Fine-Tuning」); 随机初始化见第 752 至 758 段;固定值初始化见第 764 至 768 段。

  3. 出处:「第7章 网络优化与正则化」第 765 段(text/08-ch07.txt:765,搜「遗忘门更偏向保留上一时刻记忆」); ReLU 偏置 0.01 在第 766 至 768 段(搜「更容易激活」)。 2

  4. 出处:「第7章 网络优化与正则化」第 796 段(text/08-ch07.txt:796,搜「输出过小,经过多层之后信号就慢慢消」)。

  5. 出处:「第7章 网络优化与正则化」第 802 段(text/08-ch07.txt:802,搜「梯度接近于 0,从而导致梯度消失问题」); 「配合逐层规范化使用」的边注在同段右侧(搜「逐层规范化参见」)。 2

  6. 出处:「第7章 网络优化与正则化」第 811 段(text/08-ch07.txt:811,搜「每个输入连接上的权重就应该小一些」)。

  7. 出处:「第7章 网络优化与正则化」第 818 至 872 段,式(7.41)-(7.48); 折中方差的推导在 text/08-ch07.txt:872(搜「同时考虑信号在前向和反向」)。 2

  8. 出处:「第7章 网络优化与正则化」第 892 段(text/08-ch07.txt:892,搜「Glorot 初始化」, 边注注明 Xavier 是发明者 Xavier Glorot 的名字)。

  9. 出处:「第7章 网络优化与正则化」第 894 段(text/08-ch07.txt:894,搜「斜率约为 0.25」); Logistic 情形方差约为 16 倍并配经验缩放因子。 2

  10. 出处:「第7章 网络优化与正则化」第 902 至 910 段(text/08-ch07.txt:902,搜「一半的神经元输出为 0」), 式(7.49)[He et al., 2015];Kaiming 别名见第 921 段。 2

  11. 出处:「第7章 网络优化与正则化」第 948 至 955 段(text/08-ch07.txt:950,搜「范数保持性(Norm-Preserving」; text/08-ch07.txt:955,搜「初始化为正交矩阵」)[Saxe et al., 2014]。 2

  12. 出处:「第7章 网络优化与正则化」第 958 段(text/08-ch07.txt:958,搜「奇异值分解得到两个正交矩阵」)。

  13. 出处:「第7章 网络优化与正则化」第 961 至 971 段(text/08-ch07.txt:971,搜「缩放系数 𝜌 可以设置为 2」); 「通常用在循环神经网络中循环边上的权重矩阵上」为第 968 段边注。 2

  14. 出处:「第7章 网络优化与正则化」第 979 至 982 段(text/08-ch07.txt:980,搜「最近邻分类器就是尺度敏感的」)。

  15. 出处:「第7章 网络优化与正则化」第 988 至 996 段(text/08-ch07.txt:991,搜「𝑤1 设得小一点」)。

  16. 出处:「第7章 网络优化与正则化」第 998 至 1004 段(text/08-ch07.txt:998,搜「未规范化数据的等高线图」),图 7.9。

  17. 出处:「第7章 网络优化与正则化」第 1018 至 1050 段(text/08-ch07.txt:1018,搜「Min-Max Normalization」; text/08-ch07.txt:1027,搜「Z 值规范化(Z-Score」;text/08-ch07.txt:1049,搜「PCA」)。

  18. 出处:「第7章 网络优化与正则化」第 1064 至 1074 段(text/08-ch07.txt:1070,搜「就像一栋高楼」; text/08-ch07.txt:1072,搜「内部协变量偏移(Internal Covariate Shift」)。

  19. 出处:「第7章 网络优化与正则化」第 1090 至 1160 段,式(7.56)-(7.61); 白化因复杂度高不合适见第 1110 段(text/08-ch07.txt:1110,搜「白化方法就不太合适」)。 2

  20. 出处:「第7章 网络优化与正则化」第 1094 至 1096 段(text/08-ch07.txt:1096,搜「使损失函数的优化地形」), [Bjorck et al., 2018; Santurkar et al., 2018]。 2

  21. 出处:「第7章 网络优化与正则化」第 1164 至 1172 段(text/08-ch07.txt:1164,搜「隐形的」)。

  22. 出处:「第7章 网络优化与正则化」第 1173 至 1176 段(text/08-ch07.txt:1173,搜「不能太小,否则难以计算单个神经元」)。

  23. 出处:「第7章 网络优化与正则化」第 1216 段(text/08-ch07.txt:1216,搜「每一列进行规范化,而批量规范化是对」)[Ba et al., 2016]。

  24. 出处:「第7章 网络优化与正则化」第 1211 至 1214 段(text/08-ch07.txt:1213,搜「层规范化可以有效缓解这种状况」), 式(7.66)-(7.67)。

  25. 出处:「第7章 网络优化与正则化」第 1218 段(text/08-ch07.txt:1218,搜「规范化仍然是更常见的选择」)。 2

  26. 出处:「第7章 网络优化与正则化」第 1221 至 1247 段(text/08-ch07.txt:1224,搜「不再对输入做均值中心化」; text/08-ch07.txt:1247,搜「很多现代大模型中比层规范化更常见」),式(7.68)-(7.70)。 2 3

  27. 出处:「第7章 网络优化与正则化」第 1249 至 1262 段(text/08-ch07.txt:1253,搜「分解为长度和方向」),式(7.71)。

  28. 出处:「第7章 网络优化与正则化」第 1263 至 1266 段(text/08-ch07.txt:1263,搜「Local Response Normalization,LRN」)。 2