Batch Normalization(批量归一化)

发布时间 2023-11-06 16:43:38作者: 同淋雪

Batch Normalization

内部协变量偏移(ICS)

在神经网络的训练过程中,由于隐藏层参数的更新,同分布不同批次的数据,进入网络同一层后的输出分布发生变化,这种现象称之为内部协变量偏移(ICS)。

引起的问题

  • 收敛速度慢,学习不稳定

    一方面,ICS现象使网络的每一层需要不断适应输入数据的分布变化,网络刚适应学习这种分布,下一个批次又需要学习另一种分布。这会使得学习过程不稳定,导致收敛速度降低。另一方面,由于同一批数据中不同样本点的分布可能不同等原因,为保证训练的稳定性和收敛性,在实际应用中往往会采用较小的学习率,防止参数更新过快,从而导致收敛速度降低

  • 梯度消失问题

    经过网络前几层的变换,可能使得后几层的输入数据过大或过小,从而掉进激活函数(Tanh、Sigmoid)的饱和区。在饱和区梯度变化很不明显,会产生梯度消失问题,导致学习过程停止。

    img

    为了降低ICS所带来的负面影响,在训练过程中一般会采用非饱和型激活函数(ReLU)、精细的网络参数初始化,保守的学习率,但这不仅会使得网络的学习速度太慢,还会使得最终效果特别依赖于网络的初始化。

批量归一化(Batch Normalization)

批量归一化可以看作在每一层输入和上一层输出之间加入了一个新的计算层,对数据的分布进行额外的约束。

核心即为这一公式:

image-20231009195423634

  • k:表示数据的第k维,BN在一个批次数据的各个维度上独立进行;

  • x(k):输入数据;

  • y(k):BN后的输出数据;

  • u(k):输入数据当前batch的均值;

  • o(k):输入数据当前batch的标准差;

  • B(k):可学习的平移参数;

  • r(k):可学习的缩放参数;

  • e:防止分母为0的一个小量

:归一化和标准化的区别

  • 标准化:将数据变为均值为0,方差为1的分布;
  • 归一化:将一列数据变化到某个固定区间;

批量归一化相当于在标准化的基础上利用参数B和r进一步修正分布

参数B和r的作用

  • 保留网络各层在训练过程中的学习成果,使BN模块具有自我关闭能力;

    image-20231009201126492

    image-20231009201146065

  • 保证激活单元的非线性表达能力

    image-20231009210255692

  • 引入噪音,防止过拟合

    引入参数适当地增加噪音,有助于增加鲁棒性,防止过拟合

预测时怎么使用BN

我们在训练时对于每个batch可以计算出相应的均值和标准差,对这些batch对应的均值和标准差进行加权求和即可。

BN放在哪

  • 放在激活函数之前。可以保证激活单元的非线性表达能力,缓解梯度消失问题,还可以有效避免BN破坏非线性特征的分布
  • 放在激活函数之后。当使用ReLu作为激活函数时,它不存在像Sigmoid、Tanh一样的饱和区问题。避免数据在激活函数之前被转化成相似的模式,从而使得非线性特征分布趋于同化。