batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)

详解深度学习中的Normalization,BN/LN/WN

内部协方差漂移

深度神经网络很难训练。因为深度神经网络中网络层数太多,在训练过程中,模型参数的更新会引起靠近输出侧各层的输出结果发生剧烈的变化。Google 将这一现象总结为Internal Covariate Shift(ICS)内部协方差漂移

ICS 会导致什么问题?

简而言之,每个神经元的输入数据不再是“独立同分布”。

其一,上层参数需要不断适应新的输入数据分布,降低学习速度。

其二,下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。

其三,每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎。

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第1张图片

从上图可以看到,靠近输入侧的层稍有更新,靠近输出侧的层都需要重新寻找更优参数。这种计算数值的不稳定性通常令我们难以训练出有效的深度模型。对数据进行归一化是解决这类问题的一种思路。

Batch Normalization 有效性解释

关于Normalization的有效性,有以下几个主要观点:

(1) 主流观点,Batch Normalization调整了数据的分布,不考虑激活函数,它让每一层的输出归一化到了均值为0方差为1的分布,这保证了梯度的有效性,目前大部分资料都这样解释,比如BN的原始论文认为的缓解了Internal Covariate Shift(ICS)问题。

(2) 可以使用更大的学习率,文[2]指出BN有效是因为用上BN层之后可以使用更大的学习率,从而跳出不好的局部极值,增强泛化能力,在它们的研究中做了大量的实验来验证。

(3) 损失平面平滑。文[3]的研究提出,BN有效的根本原因不在于调整了分布,因为即使是在BN层后模拟ICS,也仍然可以取得好的结果。它们指出,BN有效的根本原因是平滑了损失平面。之前我们说过,Z-score标准化对于包括孤立点的分布可以进行更平滑的调整。

batchnorm原理

批量归一化(BatchNorm)加速深度网络训练

批量归一化的数学表示

归一化是机器学习特征工程常用的技巧,一般是减去均值然后除以标准差

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第2张图片

 

浅层的模型,比如线性回归,逻辑回归等,需要对输入特征进行归一化。假设我们有两个特征,分别为年龄和价格,这两个特征的度量单位不同,表征含义不同,直接用来作为机器学习算法的特征,分布不均匀。我们需要使用归一化,将这两个特征转成均值为0的分布,机器学习的效果会好很多。

基于这种归一化的思想,我们可以在深度神经网络的层与层之间使用归一化,Google 提出了批量归一化。

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第3张图片

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第4张图片

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第5张图片

batchnorm(特征数据纵向标准化,全连接使用) LayerNorm(特征数据横向的规范化,nlp,rnn使用) WeightNorm(对参数的规范化) 余弦Norm(对w*x的规范化)_第6张图片

参考资料

  1. 深度学习中 Batch Normalization为什么效果好?
  2. Ioffe, S., & Szegedy, C. (2015). Batch normalization: accelerating deep network training by reducing internal covariate shift.
  3. Batch Normalization — Speed up Neural Network Training
  4. http://d2l.ai/chapter_convolutional-modern/batch-norm.html

  5. 详解深度学习中的Normalization,BN/LN/WN

小结

  • 深度神经网络训练难,Batch Normalization在层与层之间进行归一化,经过归一化后,输出结果更稳定,可以提升训练速度。

  • 批量归一化基于一个批次的数据,计算批次均值和方差,进行伸缩和偏移。

  • 全连接层和卷积层的批量归一化略有不同。

  • 训练和预测时,批量归一化的计算方式不同。

你可能感兴趣的:(tensorflow)