Xavier初始化让深层网络层间方差守恒,Sigmoid会把顶层逼进饱和

2026-09-19

Glorot与Bengio指出logistic sigmoid的均值会把深层顶层送进饱和,并提出按fan-in与fan-out联合缩放的均匀初始化,让前向激活和反向梯度的方差在层间大致守恒。

这篇在解决什么

2006 年之后,深度网络突然能训了,靠的是无监督预训练或逐层贪心,不是随机初始化再端到端反向传播。这篇要回答的是后一件事为什么不行。监控各层激活和梯度之后,他们把原因分给两个地方:非线性的形状,以及初始化有没有让每层 Jacobian 的奇异值离 1 太远。

方法

实验网络是多层全连接,输出 softmax 加负对数似然,mini-batch 10,学习率按验证集调。数据集包括无限可采样的 Shapeset-3×2(九类形状组合)、MNIST、CIFAR-10 和 Small-ImageNet。非线性对比 logistic sigmoid、tanh,以及饱和更弱的 softsign x/(1+|x|)。

理论部分先看线性区。希望每层激活方差相等,反向梯度方差也相等。第 i 层权重方差若取 1/ni(只按 fan-in)或 1/n{i+1}(只按 fan-out),只能保一头。折中是 Var[Wi] = 2/(ni+n{i+1})。对均匀分布,这给出后来被称为 Xavier/Glorot 的公式:

W U[-sqrt(6/(nj+n{j+1})), +sqrt(6/(nj+n{j+1}))]

当时的标准做法是按 fan-in 取 U[-1/sqrt(n), 1/sqrt(n)],也就是 LeCun 1998 那套。归一化初始化把前向和反向一起照顾。他们还看每层 Jacobian 的奇异值:归一化初始化下平均奇异值大约 0.8,标准初始化会掉到大约 0.5。

结果

关键观察在图里,正文几乎不给最终误差表。logistic sigmoid 在随机小权重下,因为输出均值恒正,顶层隐层会被推到饱和;梯度从输出往回走时逐层变小。出乎意料的是,饱和单元可以自己爬出来,只是极慢,对应训练曲线上的长平台。tanh 对称,好于 sigmoid,但对初始化更敏感。softsign 对初始化更稳,因为非线性更「软」。

Shapeset-3×2 的在线学习曲线上,sigmoid 或 tanh 加标准初始化收敛慢、最终误差更高;tanh 加归一化初始化明显更快。MNIST 和 CIFAR-10 上顺序一样。归一化初始化再叠二阶优化,Hessian 不用先去修层间尺度差,还可以再挤一点。层宽逐层递增或递减时,同样的增益还在。

论文没有给出「某数据集上误差从 A 降到 B」这种单点数字,结论靠的是跨激活、跨初始化的误差曲线排序。

为什么重要

这是深度网络能从零训起来的第一块正规化基石。PyTorch 的 xavieruniform、TensorFlow 早期默认,都从这里来。它把初始化从经验口诀变成方差守恒条件,后续 He initialization 只是把 ReLU 的 1/2 因子补进去。对今天的人,直接可迁移的判断就两条:别用均值非零的 sigmoid 当深层激活;初始化要让每层的尺度既不爆炸也不消失。

局限与存疑

推导按线性激活加独立同分布假设,ReLU 网络上这条公式偏小,何恺明 2015 年专门纠过,30 层 ReLU 上 Xavier 会直接停训。实验全是全连接,没有卷积。误差数字几乎都在图里,复现结论只能靠自己跑。softsign 后来没成为主流。无监督预训练相对纯监督的优势,这篇解释了一部分优化问题,没有声称解释了全部泛化差异。监控激活直方图和梯度直方图,比提出的激活函数更有生命力。

术语

原文与代码

社区讨论

全部论文解读