摘要

神经网络训练过程是非常复杂的,这是因为随着训练的进行、前置层的参数的改变,导致每一层的输入分布在不断改变。这种现象使得我们需要使用更小的学习率和更仔细的进行权值初始化,而这又导致网络训练速度变慢,且使得在非线性饱和区内模型变得很难训练。作者把这种现象叫做内部协变量偏移(internal covariate shift),作者通过正规化输入的方法解决了这个问题。这种正规化是在每个batch里进行的,称之为BN(Batch Normalization)。BN有很多有点,包括:

  1. 不需要关注权值初始化
  2. 可以使用更大的学习率
  3. 它还可以充当一种正则化
  4. 在某些情况下,可以使模型不需要Dropout

通过使用BN,作者在达到相同测试准确率的情况下,只使用了当时state-of-the-art图像分类模型的1/14步数。且通过合适的模型融合,在ImageNet分类任务上达到了最佳结果:4.9%的top-5验证集错误率和4.8%的测试集错误率,超过了人类的识别精度。

1. Introduction

此部分详见原文,此处贴出部分重点。

  1. covariate shift :对一个学习系统,当其输入分布改变时,称之为经历了covariate shift
  2. Internal covariate shift: 对一个神经网络,在训练过程中,其内部节点的分布改变了称之为Internal covariate shift
    作者提出一种新机制(BN),它能有效减小internal covariate shift,且大大地加速网络训练过程。它是通过固定各层输入的均值和方差实现的。

2. Toward Reducing Internal Covariate Shift

作者希望通过固定输入分布的方法加速训练,例如使其0均值1方差,此处还提到一些白化的问题,详见原文。

3. Normalization via Mini-Batch Statistics

由于对每一层的输入整体做白化过程很耗时,且处处不可导。因此此处做两个简化处理:
$x =\\frac $

  1. 对输入的各维做白化处理,例如对于ddd维的输入x=(x(1)...x(d))x=(x^{(1)} ... x^{(d)})x=(x(1)...x(d)),对每一维进行正规化:
    (1)x(k)=x(k)E[x(k)]Var[x(k)]\\overset{\\wedge}{x}^{(k)} = \\frac{x^{(k)} - E[x^{(k)}]}{\\sqrt{Var[x^{(k)}]}}\\tag{1}x(k)=Var[x(k)]x(k)E[x(k)](1)
  2. 在一个batch内计算均值和方差

值得注意的是,经式(1)变换后,输入具有0均值,1方差,对于类似与sigmoid的激活函数来说,这个分布落在了其线性区,无法引入非线性,因此做如下变换。
\"在这里插入图片描述\"
这两个参数均是可训练的,经这个变换后,虽然不再是0均值1方差,但仍然是固定的分布,符合一开始的设定。
下面是BN变换的算法:
\"在这里插入图片描述\"

3.1 Training and Inference with Batch Normalized Networks

此处说明BN变换加的位置,作者是加在激活函数之前(即做完Wx+b之后)的。训练过程,每个batch做BN变换即可。在推理过程,由于只能看见一个输入,无法计算均值和方差,使用全部训练样本的均值和方差代替,且由于此时其他参数(β\\betaβγ\\gammaγ)固定,因此此时的BN变换等效于一个线性变换过程。
\"在这里插入图片描述\"
在上图的11步中,这种写法是可以变形成前述的公式
\"在这里插入图片描述\"
之所以这么写,按照之前在一篇博文中作者的说法,因为此时xxx前面和β\\betaβ后面的参数是固定的,可以事先计算并存储。

3.2 Batch-Normalized Convolutional Networks

此处作者提到,对于CNN,应该在每个feature map里做normalize,这一点和NN是不同的。这个何解呢,下面举一个栗子:

例如输入是[batch_size,height,width,channel],计算均值和方差时,应该在除channel外的所有维度计算,即得出的均值和方差是[channel]维度的,即每个feature map算一个均值和方差、学习一个γ\\gammaγβ\\betaβ

后续作者说到BN的优点,前述都提过,只不过这里说得更详细,并指出了原因。

此处另外贴一个实验结果
\"在这里插入图片描述\"

上图是一个简单的NN在MNIST任务上测试集分类结果,(a)是加BN和不加BN测试集准确率随训练步数变化情况,可见加BN后,速度确实更快,且测试准确率更高,(b)、©分别为不加BN和加BN时隐层输入分布,可见不加BN的网络随着时间的变化,隐层输入分布变化较激烈,而加入BN后变化较小。

收藏 打印