Efficient BackProp把权重标准差设为fan-in开方倒数,输入必须先零均值

2026-09-19

LeCun等人把反向传播能训起来的工程条件写成清单:输入零均值、方差归一、权重标准差取fan-in的开方倒数,并论证经典二阶方法对大网络不实用。

这篇在解决什么

1998 年的反向传播已经能用,但慢、不稳、高度依赖手调。很多有效做法只在实验室口口相传,论文里不写。这篇把这些 tricks 收成一份可执行清单,并给其中几条推了原因:为什么输入要居中,为什么 logistic 不如对称 sigmoid,为什么大网络上牛顿法用不成。

它不是一篇刷榜论文。MNIST 只作为讨论背景,正文几乎没有「方法 A 比方法 B 高几个点」的表。价值在于把后来 Xavier、He、BatchNorm、Adam 都还在解决的尺度问题,用 1998 年的语言先讲清楚。

方法

设定是模块化前馈网络,每层线性变换加逐元非线性,用链式法则反传。核心训练建议如下。

随机梯度优先于 batch。理由很具体:冗余数据上,batch 把几乎相同的梯度重复算很多遍才更新一次;随机更新的噪声有时能把参数从浅盆踢到更深的盆。数据分布在变的时候,在线更新还能跟踪。Batch 的优点是收敛条件清楚、共轭梯度这类加速只在 batch 下好用。

输入变换三条:每个输入变量训练集均值靠近 0;方差缩到同一量级(配合他们推荐的 sigmoid,协方差取 1);可能的话再做去相关。全部为正的输入会让第一层权重只能同号更新,改方向只能之字形,极慢。这一条要对每一层都成立,所以节点输出均值也最好靠近 0,这就约束了激活函数的选择。

激活用关于原点对称的 sigmoid,推荐 f(x)=1.7159 tanh(2x/3),有时加一个小线性项避免平台。Logistic 输出恒正,下一层输入均值漂着,正是他们反对的。目标值不要设在渐近线(饱和端)上,否则权重要被赶到极大、导数归零,网络还对不确定样本给出假装很自信的输出。分类用 +1/−1,落在线性区内。

权重初始化:假定输入已归一化、用了上述 sigmoid,则权重从均值 0、标准差 σ = m^{-1/2} 的分布抽样,m 是 fan-in。太大正饱和,太小梯度也小,落在线性区可以先学线性映射再学非线性。

学习率哲学是让所有权重大致同速收敛。低层二阶导数通常更小,学习率应该比高层更大。大而冗余的分类任务用随机梯度或随机对角 Levenberg-Marquardt;小数据或回归用共轭梯度。经典牛顿或拟牛顿要存或估全 Hessian,大网络不现实。后半篇讲如何只算 Hessian 的对角或 Hessian-向量积。

结果

没有现代意义上的对照表。收敛快几个数量级的说法写在 tricks 节开头,依据是实践观察加简化分析,例如「1000 条里混了 10 份相同 100 条,batch 白算 10 遍」。Hessian 分析给出多层网络误差曲率随层变化的图像,用来支撑「低层学习率要更大」。最终清单是:

为什么重要

fan-in 开方缩放是 Glorot 和 He 的直接前身,只是当时还没把反向方差和 ReLU 的 1/2 写进公式。零均值输入加对称激活,和后来 BatchNorm、Pre-LN 要解决的是同一件事:让信号别在层间漂走。随机梯度优于当时主流的 batch 二阶方法,这条判断被深度学习的规模化证明了,尽管当时的「大」和现在差几个数量级。

读这篇是为了看清初始化文献的起点,不是为了按 1998 的 sigmoid 配方去训 Transformer。

局限与存疑

推荐的 1.7159 tanh(2x/3) 和 ±1 目标,是为饱和 sigmoid 设计的,ReLU 或 GELU 网络上不能照搬。没有量化实验支撑「快几个数量级」。去相关在高维图像上本身很贵,实践中后来被随机打乱和归一化代替,而不是真去做输入 PCA。对二阶方法的否定针对的是稠密牛顿,和今天的 K-FAC、Shampoo 不是同一个对象。泛化部分只点到 bias-variance 和过训练,没有给出可操作的正则实验。章节后半的 Hessian 技巧对现在用 Adam 的人基本是历史材料。

术语

原文与代码

社区讨论

全部论文解读