批量归一化(Batch Normalization),通常简称为BN,是一种在深度学习中常用的技术,旨在提高训练神经网络的速度、稳定性和性能。批量归一化通过规范化(归一化)处理神经网络中间层的输出,使其具有固定的均值和方差。具体来说,批量归一化包含以下几个步骤:
-
计算均值和方差:
- 对于每一个mini-batch的数据,计算每个特征(即每个神经元的输出)的均值和方差。
- 均值 μ \mu μ是所有样本某个特征值的算术平均。
- 方差 σ 2 \sigma^2 σ2是每个样本该特征值与均值差的平方的平均值。
-
归一化:
- 使用上述计算得到的均值和方差对每个特征的输出进行归一化处理,使得归一化后的数据的均值为0,方差为1。
- 归一化公式为: x ^ = x − μ σ 2 + ϵ \hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} x^=σ2+ϵx−μ
- 其中, x x x 是原始数据, x ^ \hat{x} x^ 是归一化后的数据, ϵ \epsilon ϵ是一个很小的常数,用来防止除以0的情况。
-
缩放和偏移:
- 归一化后的数据可以通过两个可学习的参数(缩放参数 γ \gamma γ和偏移参数 β \beta β))进行调整,以恢复网络的表达能力。
- 调整后的输出公式为:KaTeX parse error: Undefined control sequence: \y at position 1: \̲y̲ ̲= \gamma \hat{x…
- 其中, y y y是批量归一化后的输出。
批量归一化的主要优点包括:
- 加速收敛:通过减少内部协变量偏移(internal covariate shift),即网络各层输入分布的变化,加速深度神经网络的训练过程。
- 允许更高的学习率:由于减少了梯度问题,可以使用更高的学习率,进一步加速训练。
- 正则化效果:具有一定的正则化效果,可以减少过拟合,因此有时可以减少对dropout等正则化技术的依赖。
- 减少依赖于初始化:减轻了对网络权重初始化的敏感性。
批量归一化已经成为许多深度学习架构的标准组成部分,尤其是在卷积神经网络(CNN)中。