批量正常化是深入学习中用来改进神经网络培训过程的一种技术,它使每一层的投入都正常化,有助于稳定和加速学习。本条探讨了所涉及的计算、它提供的好处以及在实践中如何部署批量正常化。

批量常态化计算

在训练期间,批量正常化计算当前小批量中每个特性的平均值和差异。然后通过减去平均值和以标准偏差除以计算出该标准化值。公式是:

数值:x=(x-μ)/[(x/ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

输入 x 是输入, μ 是批量平均值, / 3] 是批量差异, 是防止零除法的小型常数。在正常化后,可学习参数尺度和移转输出:

输出:y=γ * x ⁇ +β ]

批量正常化的好处

批量正常化在神经网络培训方面提供了若干优势。 它减少了内部共变变换,即网络激活的分布变化。 这种稳定化可以提高学习率,加快融合速度。 此外,它还起到一种形式规范化的作用,有可能减少对辍学等其他技术的需求。

其他好处包括改进模型的准确性和稳健性,以及能够使用更深的网络而不会因梯度消失或爆炸而受到影响。

批量的部署

在神经网络中实施批量正常化需要在每个演化层或全连接层后添加一个批量正常化层。 在诸如TensorFlow或PyTorch等框架中,这与内置功能是直接的。

在培训期间,分批正常化层更新了移动平均值和差异,在推论期间,这些平均值用于正常化,确保了一致的业绩。

在部署批量正常化时必须考虑到批量大小。 批量较小可能导致对平均和差异的估计稳定性降低,从而影响模型性能。 在这种情况下,可以使用层态或组态正常化等替代方法。