一、什么是Batch Norm?
(1)Batch Norm的本质
神经网络中的Batch Normalization(批量归一化,简称BatchNorm或BN)是一种改进神经网络训练过程的规范化方法,BatchNorm的主要目的是加速神经网络的训练并提高模型的性能。
在深度学习训练过程中,尤其是深层神经网络中,每层输入的数据分布可能会随着训练的进行而发生变化,这种现象被称为内部协变量偏移。这种变化会导致训练变得困难,因为每一层都需要不断适应变化的输入分布。BatchNorm通过在每一层的输入(通常是线性变换之后,激活函数之前)应用规范化处理来减轻这个问题。
(2)Batch Norm和Mini-Batch的关系
Mini-Batch(小批量)是机器学习中常用的一种梯度下降优化策略,一种训练模式。它在每次更新模型参数时使用一小部分(而非全部)训练样本来计算梯度。这个小部分样本就称为Mini-Batch。
Batch Norm顾名思义,是在学习时以Mini-Batch为单位,按照Mini-Batch进行正规化。具体来说是基于当前Mini-Batch内所有样本的统计信息(即均值和方差)进行的。使用计算出的均值和方差来规范化该批数据,确保输入的均值为0,方差为1。
二、Batch Norm的好处
- 加速训练:减小内部协变量偏移,使得输入分布更加稳定,从而可以使用更高的学习率。
- 正则化效应:减少过拟合,类似于dropout的效果,但机制不同。
- 减少对权重初始化的依赖:即使初始化不是最优的,模型也能较好地收敛。
三、Batch Norm算法步骤
(1)计算Mini-Batch的均值和方差
对于每个小批量数据,计算该批次数据在某一维度上的均值和方差。
其中,是小批量中第个数据点的值,是小批量的大小(即小批量中数据点的总数)。
其中,表示小批量数据中的第个数据点,是小批量的均值,和前面的公式一致,而依然是小批量的大小。
(2)规范化
使用这些统计量将小批量数据的每个特征调整为均值=0和方差=1
其中是输入数据,是批数据的均值,是批数据的方差,是一个很小的数以避免除以零。
(3)缩放和平移
为了保留网络的学习能力,还会引入两个可学习的参数(缩放因子)和(平移因子)对规范化后的数据进行调整