Batch Normalization 和 Batch Renormalization 前向和反向公式详细推导


文章目录

  • Batch Normalization 和 Batch Renormalization 前向和反向公式详细推导
  • 一、BN前向传播
  • 二、BN的反向传播
  • 三、Batch Renormalization
  • 1、前向
  • 2、反向
  • 三、卷积网络中的BN


一、BN前向传播

根据论文‘’Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" 的推导过程,主要有下面四个公式:

rnn反向传播详细推导 bn反向传播推导_归一化

rnn反向传播详细推导 bn反向传播推导_深度学习_02

rnn反向传播详细推导 bn反向传播推导_ide_03

rnn反向传播详细推导 bn反向传播推导_归一化_04

以MLP为例,假设输入的mini-batch样本数为rnn反向传播详细推导 bn反向传播推导_深度学习_05,则此处的rnn反向传播详细推导 bn反向传播推导_深度学习_06是第rnn反向传播详细推导 bn反向传播推导_ide_07个样本对应的某一层激活值中的一个激活值。也就是说,假设输入rnn反向传播详细推导 bn反向传播推导_深度学习_05个样本作为一次训练,其中第rnn反向传播详细推导 bn反向传播推导_ide_07个样本输入网络后,在rnn反向传播详细推导 bn反向传播推导_ide_10层得到了rnn反向传播详细推导 bn反向传播推导_归一化_11个激活单元,则rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_12代表其中任意一个激活单元。事实上应该写为rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_13更为直观。

所以BN实际上就是对第rnn反向传播详细推导 bn反向传播推导_ide_10层的第rnn反向传播详细推导 bn反向传播推导_ide_15个激活单元rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_13求其在一个batch中的平均值和方差,并对其进行标准归一化,得到rnn反向传播详细推导 bn反向传播推导_深度学习_17,可知归一化后的m个激活单元均值为0方差为1,一定程度上消除了Internal Covariate Shift,减少了网络的各层激活值在训练样本上的边缘分布的变化。

二、BN的反向传播

  • 设前一层的梯度为rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_18.
  • 需要计算rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_19

由链式法则以及公式\eqref{4}:

rnn反向传播详细推导 bn反向传播推导_归一化_20

由于对于所有rnn反向传播详细推导 bn反向传播推导_ide_21均有贡献,因此一个batch的训练中将rnn反向传播详细推导 bn反向传播推导_反向传播_22定义为:

rnn反向传播详细推导 bn反向传播推导_ide_23

同样有:

rnn反向传播详细推导 bn反向传播推导_归一化_24

另外,求rnn反向传播详细推导 bn反向传播推导_反向传播_25过程则较为复杂。根据链式法则,以及公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{3},将rnn反向传播详细推导 bn反向传播推导_深度学习_26视为rnn反向传播详细推导 bn反向传播推导_深度学习_27有:

rnn反向传播详细推导 bn反向传播推导_反向传播_28

而因为公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{2}可知上式括号中的第二项求偏导可以进一步拆分。(将rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_29视为rnn反向传播详细推导 bn反向传播推导_ide_30

rnn反向传播详细推导 bn反向传播推导_深度学习_31

注意公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{9}中的两个rnn反向传播详细推导 bn反向传播推导_深度学习_32代表不同的含义。由公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{8},\eqref{9}可知,只要求出rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_33.即可求出rnn反向传播详细推导 bn反向传播推导_反向传播_25.

原论文中将公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{8}拆分成如下几项:

rnn反向传播详细推导 bn反向传播推导_深度学习_35

其中:
rnn反向传播详细推导 bn反向传播推导_ide_36

rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_37

rnn反向传播详细推导 bn反向传播推导_反向传播_38
rnn反向传播详细推导 bn反向传播推导_深度学习_39

rnn反向传播详细推导 bn反向传播推导_ide_40

rnn反向传播详细推导 bn反向传播推导_归一化_41
rnn反向传播详细推导 bn反向传播推导_深度学习_42

rnn反向传播详细推导 bn反向传播推导_归一化_43

最终BN的反向过程由公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{6},\eqref{7},\…给出。

三、Batch Renormalization

参照论文—— Batch Renormalization: Towards Reducing Minibatch Dependence
in Batch-Normalized Models

Batch Renormalization是对传统BN的优化,该方法保证了train和inference阶段的等效性,解决了非独立同分布和小minibatch的问题。

1、前向

跟原来的公式类似,添加了两个非训练参数rnn反向传播详细推导 bn反向传播推导_反向传播_44:
rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_45

rnn反向传播详细推导 bn反向传播推导_深度学习_46

rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_47

rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_48

rnn反向传播详细推导 bn反向传播推导_归一化_49

rnn反向传播详细推导 bn反向传播推导_归一化_50


Update moving averages:

rnn反向传播详细推导 bn反向传播推导_ide_51

rnn反向传播详细推导 bn反向传播推导_反向传播_52

Inference:

rnn反向传播详细推导 bn反向传播推导_反向传播_53

相比于之前的BN只在训练时计算滑动均值与方差,推断时才使用他们;BRN在训练和推断时都用到了滑动均值与方差。

2、反向

反向的推导与BN类似,
rnn反向传播详细推导 bn反向传播推导_深度学习_54

rnn反向传播详细推导 bn反向传播推导_ide_55

rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_56

rnn反向传播详细推导 bn反向传播推导_归一化_57

rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_58

rnn反向传播详细推导 bn反向传播推导_归一化_59

三、卷积网络中的BN

上面的推导过程都是基于MLP的。对于卷积网络而言,BN过程中的m个激活单元被推广为m幅特征图像。 假设某一层卷积后的feature map是rnn反向传播详细推导 bn反向传播推导_ide_60的张量,其中N表示batch数目,H,W分别表示长和宽,C表示特征通道数。则对卷积网络的BN操作时,令rnn反向传播详细推导 bn反向传播推导_深度学习_61,也就是说将第rnn反向传播详细推导 bn反向传播推导_ide_07个batch内某一通道rnn反向传播详细推导 bn反向传播推导_ide_63上的任意一个特征图像素点视为rnn反向传播详细推导 bn反向传播推导_rnn反向传播详细推导_12,套用上面的BN公式即可。所以对于卷积网络来说,中间激活层每个通道都对应一组BN参数rnn反向传播详细推导 bn反向传播推导_反向传播_65.