BN-Inception: Batch Normalization Accelerating Deep Network

发布于:2023-01-22 ⋅ 阅读:(8) ⋅ 点赞:(0) ⋅ 评论:(0)

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

作者: Sergey Ioffe
发表日期: 2015
引用量: 38954
星级 : ★★★★★
模型简写: BN-Inception
精读: No

Introduction

Motivation:

深度神经网络训练的复杂性在于:在训练过程,每一层输入的数据分布随着前一层网络参数的改变而改变。这会降低训练速度,并需要更小的learning rate和仔细的网络参数初始化,并使得训练具有饱和非线性的模型异常困难。

论文指出这种每层输入数据分布改变的现象叫做internal covariate shift,提出可以用normalization解决。

在这里插入图片描述

小的扰动就会引起后续大的变化,使得网络训练较难,BN就是解决在训练过程中,中间层数据分布发生变化的问题。

Batch Normalization思考起源(Towards Reducing Internal Covariate Shift)

Whitened (LeCun et al., 1998b)(白化),对输入进行白化,即对输入进行线性变化为具有0均值和单位方差,并去相关。使用白化(Whitened )进行标准化(Normalization)以此来消除Internal covariate shift的不良影响。由于Whitened需要计算协方差矩阵和平方根倒数,而且在每次更新后需要对整个训练集进行分析,代价昂贵。

因此本文寻找一种对上述可替代的normalization方法,需要其是可导的,并且在每次参数更新后不用对整个训练集进行分析。本文提出的这种方法就是Batch Normalizaiton

Method

在Whitened的基础上做简化

在这里插入图片描述

使得输入均值为0,方差为1.

值得注意的是:简单的标准化会改变该层的表达能力,以sigmoid激活层例,会把输入约束到线性状态。因此我们需要添加新的恒等变换抵消这个操作:

在这里插入图片描述

事实上,当 γ ( k ) = V a r [ x ( k ) ] \gamma^{(k)}=\sqrt{Var[x^{(k)}]} γ(k)=Var[x(k)] β ( k ) = E [ x ( k ) ] \beta^{(k)}=E[x^{(k)}] β(k)=E[x(k)]时,上式可以完全恢复原始分布。

因此最终的Normalization方法见如下:

Batch Normalization (over mini-batch)

在这里插入图片描述

Batch Normalization Transformer,在上述算法中, ϵ \epsilon ϵ 为一个常数,添加到方差中以保持数值稳定性。

InceptionV2

InceptionV2相比于GooLeNet(InceptionV1)的改变如下:

  1. Batch Normalization(批归一化),目前BN已成为几乎所有卷积神经网络的标配技巧。
  2. 将5x5卷积用两个连续的3x3卷积核替代(感受野相同),参数量提升了25%,计算量提升了30%。
  3. The number 28x28的inception module从2个增加至3个(inception stage3)
  4. 在模型内部,有时候使用max pooling,有时候使用average pooling
  5. 没有across board pooling layers在任意两个inception modules。只在3c,4e里会有stride-2的卷积和pooling

在这里插入图片描述
在这里插入图片描述