概述
良好的初始化是快速收敛和永远不会学习的模型之间的区别。
深入探讨
在训练之前,每个重量都需要一个起始值。将它们全部设置为零是致命的:相同的权重产生相同的梯度,因此神经元永远不会区分——这就是对称性破缺问题。随机初始化打破了对称性,但规模非常重要。太大,激活和梯度爆炸;太小了,它们就会消失。原则方案根据层大小选择方差,以保持各层信号方差大致恒定。 Xavier (Glorot) 初始化通过输入加输出单元的数量来缩放方差,并且适合 tanh 和 sigmoid 网络。他(Kaiming)的初始化按输入数量进行缩放,并考虑到 ReLU 丢弃了一半的输入,使其成为基于 ReLU 的深度网络和 CNN 的标准。良好的初始化可以使早期训练保持稳定,直到标准化和自适应优化器接管。
现实世界的实施
使用 ReLU 激活的 CNN 通过 He 初始化进行初始化,因此深度卷积堆栈的训练不会消失信号。
具有 tanh 激活的网络使用 Xavier 初始化来保持跨层激活方差稳定。
一位工程师不小心将所有权重初始化为零,会发现网络无法学习,因为每个神经元都保持相同。
框架默认设置(PyTorch 的 Kaiming、Keras 的 Glorot 统一)在创建层时自动应用原则性初始化。
权重初始化的未来
归一化层和残差连接使得训练对精确初始化不太敏感,但对于非常深或无归一化的网络来说仍然很重要。积极的研究包括针对 Transformer 和注意力量身定制的方案、让网络在没有任何归一化层的情况下进行训练的方法,以及动态等距和仅通过初始化来预测可训练性的神经切线内核等理论。数据相关的初始化,即从样本批次中校准尺度,是另一个发展方向。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是权重初始化?
在训练开始之前如何设置神经网络的起始权重,这很大程度上决定了信号和梯度是否在深层中保持健康。良好的初始化是快速收敛和永远不会学习的模型之间的区别。
为什么将所有权重初始化为零是一个致命错误?
使用相同的权重,每个神经元计算相同的输出和梯度,因此它们的更新相同,并且该层永远无法学习不同的特征。
他(Kaiming)的初始化是专门为哪个激活函数设计的?
他初始化将方差缩放 2 / fan_in 以补偿 ReLU 将其大约一半的输入归零。
有原则的权重初始化方案的主要目标是什么?
像 Xavier 和 He 这样的方案从层大小中选择权重方差,这样信号在传播时既不会消失也不会爆炸。
Xavier (Glorot) 初始化最适合使用哪些激活的网络?
Xavier 平衡对称、饱和激活(如 tanh 和 sigmoid)的前向和后向方差。
为什么 He 初始化使用方差 2 / fan_in 而不是 1 / fan_in?
ReLU 仅传递正输入,丢弃大约一半的信号,因此将方差加倍即可恢复预期的激活方差。