概述
它成为深度学习中最广泛使用的技巧之一。
深入探讨
当数据流经深层网络时,随着早期层的更新,每层的值分布不断变化,这会减慢训练速度并不稳定。 Ioffe 和 Szegedy 在 2015 年引入的批量归一化通过对当前小批量中每个层的输入进行归一化来解决这个问题,使它们的均值和单位方差大致为零。然后,它应用两个可学习的参数:gamma 和 beta,让网络可以缩放并将归一化值移回(如果有帮助的话),因此它不会失去表征能力。回报是巨大的:网络可以容忍更高的学习率,在更少的时期内收敛,对权重初始化不太敏感,并且通常泛化得更好一些。问题是行为取决于批次统计数据,因此非常小的批次可能会使其不稳定。
现实世界的实施
在 ResNet 图像分类器中插入批归一化层,使其能够以更高的学习率进行训练并在更少的迭代时间内收敛。
稳定之前未经归一化而出现分歧的医学成像深度卷积网络的训练。
降低自定义 CNN 中权重初始化的敏感性,因此工程师可以减少手动调整起始值的时间。
部署模型时从训练模式批量统计切换到存储的运行平均值,以便单图像预测保持一致。
批量归一化的未来
批量归一化仍然是卷积视觉模型中的主力,但它对批量统计数据的依赖对于循环网络、小批量和分布式训练来说很尴尬。这推动了层归一化等替代方案的采用,层归一化对单个示例中的各个功能进行归一化,现在主导了变压器架构,以及特定领域的组和实例归一化。对无标准化网络的研究仍在继续,通过仔细的初始化和扩展来匹配其优点。期望标准化仍然是必要的,并选择适合架构的特定变体。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是批量归一化?
批量归一化是一种在训练期间重新调整神经网络每一层的输入的技术,使深度网络训练更快、更可靠。它成为深度学习中最广泛使用的技巧之一。
批量归一化归一化什么?
批量归一化使用当前小批量中计算的均值和方差来标准化层的输入,从而在训练过程中将激活保持在稳定的范围内。
为什么批量归一化包括可学习参数 gamma 和 beta?
在归一化至零均值和单位方差后,gamma 和 beta 让网络重新缩放和重新移动值(如果这是有益的),因此归一化不会限制该层可以表示的内容。
批量标准化的常见实际好处是什么?
通过保持层输入的良好扩展性,批量归一化可以让网络以更大的学习率进行训练,更快地收敛,并且对初始化不太敏感。
在推理时(预测新数据),批量标准化使用什么统计数据?
在推理时使用实时批次统计数据将根据共享该批次的其他示例进行预测。相反,批量归一化使用训练期间存储的固定运行平均值。
为什么批量归一化对于非常小的批量大小表现不佳?
批次归一化取决于估计批次的均值和方差。由于示例很少,这些估计是有噪声的,这可能会破坏训练的稳定性。