是什么
Xavier 初始化(Xavier initialization),又称 Glorot 初始化,是给神经网络权重挑选初始值的一种方法,目的是让训练收敛得明显更快,而不是沿用朴素的随机初始化[1]。它来自 Glorot 与 Bengio 的论文,PMLR 的记录显示该论文发表于 2010 年的 AISTATS 会议[1]。这篇论文并没有提出新的训练算法,它先追问一个更基本的问题:传统的深层多层网络究竟为什么会难以训练,然后给出一个设定初始权重尺度的规则[2]。
怎么工作
论文的分析顺着信号在网络中的传递展开:激活值(activation)和梯度在各层如何变化,在训练过程中又如何变化[1]。作者给出的判断标准是,如果每一层对应的雅可比矩阵(Jacobian)的奇异值(singular value)远离 1,训练就可能更困难[1]。奇异值大于 1,意味着这一层把经过它的信号放大;小于 1,意味着把它缩小。这样的层叠得多了,任何一种倾向都会被累积放大。
可以这样直观地理解:设想一个层数很多的网络,每一层都把传入的数值放大一点点,传到最后一层就成了极大的数;反过来,如果每层都缩小一点点,传到后面几乎等于零,反向流回的梯度也同样微弱。Xavier 初始化让每一层初始权重的尺度与该层的规模相匹配,使信号无论向前传还是向回传,都不会被系统性地放大或缩小,从而让各层的雅可比矩阵尽量接近理想的状态[1]。
论文还讨论了激活函数的选择。它指出,逻辑 sigmoid(logistic sigmoid)不适合与随机初始化搭配用于深层网络,因为它的均值会把最上面的隐藏层推进饱和区[1]。单元一旦饱和,对差别很大的输入也会给出几乎相同的响应,学习于是停滞。
从哪来
论文发表于 2010 年的 AISTATS[1]。摘要里提到一个值得注意的背景:自 2006 年以来所有成功的深度网络实验结果,都是在新的初始化方法或新的训练机制下取得的[1]。这句话把初始化摆到了「让深度网络能训练起来」的关键位置之一。论文正文说,这项分析考察的是激活函数的选择与初始化方式,如何影响各层在各次训练迭代中的激活值和梯度[2]。它同时把无监督预训练(unsupervised pre-training)看作一种影响巨大的特殊初始化形式,并说明作者把这条路线放在一边,转而分析传统的深层多层网络究竟哪里出了问题[2]。
今天用在哪里
今天搭建深度网络时,初始化已经不再是可以随手带过的细节,而被当作设计的一部分。论文提出的那个问题——信号尺度能否穿过许多层而不失衡——也是模型训练不起来时首先要检查的东西。初始化之所以常和网络的基本构件一起被介绍,正是因为它点明了一件事:权重从哪里出发,可能和之后怎样更新同样重要。
局限
论文针对的是从随机起点开始训练的传统深层多层网络,而不是它明确搁置的预训练路线[2]。它的诊断以各层雅可比矩阵的奇异值为表述方式[1],关于激活函数的结论也属于同一套分析:逻辑 sigmoid 被指出不适合深层随机初始化的网络[1]。初始化讲的是训练如何开始,这个结论来自对各层以及整个训练过程中激活值和梯度的观察[1];它本身并不能替代深度网络所需的其他选择。
注释与来源
- Understanding the difficulty of training deep feedforward neural networkshttps://proceedings.mlr.press/v9/glorot10a
- AISTATS 2010 Glorot & Bengio paperhttps://www.cs.cmu.edu/%7Ebhiksha/courses/deeplearning/Fall.2016/pdfs/1111/AISTATS2010_Glorot.pdf
引用本页: Xavier / Glorot 初始化. TellWorld, https://www.tellworld.net/zh/learn/xavier-initialization. 更新于 2026-11-07