Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
Brief
该论文是关于 BN, 引用量10000++
论文链接paper
Pieter Abbeel Sergey Levine 作者依然是两位大佬
这是BN的始祖文章,为了增进理解,特意细读看看。
Abstract
(这个摘要的特点是开门见山,直接就是指出问题,问题影响了啥。我们的方法是啥,特点是啥,能提高啥。做了什么实验,得到了怎样好的结果。)
【直接点明问题】训练深度神经网络很复杂,因为在训练过程中,每层输入的分布会随着前几层的参数变化而变化。这需要lower learning rate 和careful parameter initialization 较低的学习率和仔细的参数初始化,从而减慢了训练速度,并且使得训练具有饱和非线性saturating nonlinearities的模型变得众所周知的困难notoriously hard。【下定义】我们将这种现象称为internal covariate shift (内部协方差?内部协变量偏移 ?),并通过对层输入进行归一化来解决这个问题。【方法】我们的方法的优势在于将normalization规范化作为模型architecture结构的一部分,并对每个小批量训练each training min-batch 执行规范化。【特点】(1)批规范化允许我们使用更高的learning rate 学习率,并且对初始化不那么小心。(2)它还可以作为一个regularizer 正则化器,在某些情况下消除eliminating了Dropout 的需要。【应用实验】应用于一个最先进的图像分类模型,批规范化在训练步骤减少了14倍的情况下达到了相同的精度,并且by a significant margin 大大优于原始模型。使用一组an ensemble of batch-normalized 批标准化网络,我们改进了 ImageNet分类的最佳发布结果:top-5 validation error 验证误差达到4.9%(4.8% test error 测试误差),超过了exceeding人类评分员human raters 的准确性。
Introduction
-
第一段:介绍SGD的概念,计算方法,两个优点
【大背景】 深度学习极大地推动了vision,speech和许多其它领域的技术水平。【SGD】stochastic gradient descent (SGD)随机梯度下降已经被证明是训练深度网络的有效方法,SGD 的变种,如 momentum 和 Adagrad 等已经被用于实现最先进的性能。SGD 优化了网络的参数 Θ \mathcal\Theta Θ,从而最小化loss
Θ = a r g min Θ 1 N ∑ i = 1 N ℓ ( x i , Θ ) \mathcal\Theta=arg\min\limits_{\mathcal\Theta}\frac{1}{N}\sum\limits_{i=1}^N\ell(x_i, \mathcal\Theta) Θ=argΘminN1i=1∑Nℓ(xi,Θ)
其中, x 1... m x_{1...m} x1...m 是training data set 训练数据集。
with SGD,训练是分布进行的,在每一步我们都会考虑大小为 m 的minibatch x 1... m x_{1...m} x1...m。mini-batch 用于近似loss function 的梯度 with respect to the parameters, 通过计算
1 m ∂ ℓ ( x i , Θ ) ∂ Θ \frac{1}{m}\frac{\partial\ell(x_i, \mathcal\Theta )}{\partial\mathcal\Theta} m1∂Θ∂ℓ(xi,Θ)
使用mini-batch 的例子,而不是一次一个例子,在几个方面是有帮助的。首先,在mini-batch上的loss 的梯度是对训练集上的梯度的估计,其质量随着批次大小batch size增加而提高。其次,由于现代计算平台提供的并行性parallelism ,批量的计算可以比单个例子individual examples 的m次计算更有效率。 -
第二段:
【点出缺点】虽然随机梯度简单有效,但需要仔细调整模型超参数,特别是优化中使用的learning rate 学习率,以及模型参数的初始值initial values。【分析原因】 由于每层的输入都会受到前面所有层的参数的影响— 因此网络参数的微小变化会随着网络的深入而放大,这使得训练变得复杂。 -
第三段:
层输入分布的变化带来了一个问题,因为层需要不断适应新的分布。当一个学习系统的输入分布发生变化时,就会被称为 experience 经历了 covariate shift。这通常是通过domain adaptation 域适应来处理的。然鹅,covariate shift 的概念可以扩展到学习系统整体之外,适用于它的各个部分,如sub-network 子网络或 a layer 层。考虑一个网络计算
ℓ = F 2 ( F 1 ( u , Θ 1 ) , Θ 2 ) \ell=F_2(F_1(u, \mathcal\Theta_1), \mathcal\Theta_2) ℓ=F2(F1(u,Θ1),Θ2)
其中, F 1 F_1 F1 和 F 2 F_2 F2 是 arbitrary transformation 任意变换,参数 Θ 1 \mathcal\Theta_1 Θ1 和 Θ 2 \mathcal\Theta_2 Θ2 是要学习的,为了把loss ℓ \ell ℓ 最小化。学习 Θ 2 \mathcal\Theta_2 Θ2 可以看作是把输入 x = F 1 ( u , Θ 1 ) x=F_1(u, \mathcal\Theta_1) x=F1(u,Θ1) fed into 输入到 sub-network 中去
ℓ = F 2 ( x , Θ 2 ) \ell=F_2(x, \mathcal\Theta_2) ℓ=F2(x,Θ2) .
例如,一个梯度下降步骤
Θ 2 ← Θ 2 − a m ∑ i = 1 m ∂ F 2 ( x i , Θ 2 ) ∂ Θ 2 \mathcal\Theta_2\leftarrow\mathcal\Theta_2-\frac{a}{m}\sum\limits_{i=1}^m\frac{\partial F_2(x_i, \mathcal\Theta_2 )}{\partial \mathcal\Theta_2} Θ2←Θ2−mai=1∑m∂Θ2∂F2(xi,Θ2)
(for batch size m and learning rate α \alpha α) 是完全等同于输入 x x x 的 stand-alone network F 2 F_2 F2 独立网络。因此,输入分布特性使得训练更有效率——例如,训练数据和测试数据之间有相同的分布——也适用于训练 sub-network。因此 As such,随着时间的推移, x x x 的分布保持固定是有利的。那么, Θ 2 \mathcal\Theta_2 Θ2 不需要重新调整来补偿 x x x 的分布变化。 -
第四段:
sub-network输入的固定分布,对sub-network外的各层也会产生积极的影响positive consequences。考虑一个具有sigmoid 激活函数 z = g ( W u + b ) z = g(Wu + b) z=g(Wu+b) 的层,其中 u 是层输入,权重矩阵 W 和偏置向量 b 是要学习的层参数,并且 g ( x ) = 1 1 + e x p ( − x ) g(x)=\frac{1}{1+exp(-x)} g(x)=1