趋近智
训练深度神经网络涉及到根据计算出的梯度更新其所有层的参数(权重和偏置)。假设网络中间有一层,比如层 L。它的学习过程,即参数调整方式,在很大程度上依赖于它从前一层 L−1 接收到的输入数据。
然而,问题在于:在训练过程中,层 L−1 的参数,以及之前所有层的参数,也在不断变化。随着这些前层更新其权重和偏置,它们产生的输出数据分布会发生偏移。因此,输入到层 L 的数据分布在整个训练过程中并不会保持固定。这种在训练期间内部层输入数据分布发生变化的情况,被称为内部协变量偏移。
这种持续的偏移给深度网络的训练带来了若干难题:
网络中的每一层都在试图学习其输入的有用表示或转换。当输入数据的分布不断变化时,该层就像在追逐一个移动的目标。它必须不断调整,不仅要学习任务所需的映射,还要弥补其传入数据统计量的偏移。这使得学习过程效率降低,并且通常需要使用较小的学习率来防止参数更新变得不稳定,从而显著延长了整体训练时间。
许多激活函数,特别是sigmoid和双曲正切(tanh),当其输入变得非常大或非常小(正或负)时会饱和。如果内部协变量偏移将某层的输入推入这些饱和区域,激活函数的梯度将接近于零。在反向传播过程中,这些微小的梯度会阻碍信息流回前层,导致梯度消失问题,并使这些层的学习停滞不前。尽管像ReLU(f(x)=max(0,x))这样的非饱和激活函数可以避免正输入的饱和问题,但输入分布的不稳定偏移仍可能导致梯度过大或神经元实际上“死亡”(总是输出零)等问题。
因为初始分布对后续的偏移有很大影响,所以初始权重和偏置的选择变得相当重要。不良的初始化可能使网络一开始就处于层输入分布不佳的状态(例如,立即导致饱和或零激活),这使得训练难以顺利进行。网络可能会陷入停滞或需要更长时间才能找到一个好的解路径。
为了在输入分布发生偏移时保持稳定性,优化器通常需要使用较小的学习率。如果学习率过高,基于当前输入分布的参数更新在下一步分布偏移后可能变得不合适甚至有害,从而导致振荡或发散。这种限制阻碍了我们快速穿越损失空间。
让我们考虑一个简化的情况,看看层输入的统计量可能如何漂移。下图说明了如果没有应用归一化,输入到特定层的激活值的均值和标准差在不同训练批次中可能如何变化。
此图显示了层输入激活值的均值和标准差在连续训练批次中可能出现的波动。这些偏移说明了内部协变量偏移。
如图中所示,一个层可能在不同批次接收到统计特性显著不同的输入。这种不稳定要求该层进行调整,并使整体优化动态变得复杂。
旨在对抗内部协变量偏移的方法旨在稳定这些分布。通过对每层的输入进行归一化,我们可以创建一个更一致的学习环境,这可能带来更快的训练、更高的学习率以及对初始化敏感性的降低。批归一化(Batch Normalization),我们接下来将要介绍的,它是实现这种稳定化最常用和有效的方法之一。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造