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

1. 摘要

  • 训练深层的神经网络非常困难,因为在训练的过程中,随着前面层数参数的改变,每层输入的分布也会随之改变。这需要我们设置较小的学习率并且谨慎地对参数进行初始化,因此训练过程比较缓慢。

  • 作者将这种现象称之为 internal covariate shift,通过对每层的输入进行归一化来解决这个问题。

  • 引入 BN 后,我们可以不用太在意参数的初始化,同时使用更大的学习率,而且也会有正则化的效果,在一些情况下可以不用再使用 Dropout。

2. 介绍

因为网络中每一层的输入都受到前面所有层参数的影响,因此参数的一个小的改变将会随着网络加深而被逐渐放大。在这样的情况下,每一层网络都需要一直去适应新的输入分布,训练过程也就变得很慢。

考虑如下的网络计算

F_1F_2 是任意的变换,\Theta_1\Theta_2 是需要学习的参数。学习 \Theta_2 可以看作是输入 x=F_1(u, \Theta_1) 被传入子网络

因此,如果 x 的分布保持不变的话, \Theta_2 就不用去重新适应来补偿 x 分布的变化。

另一方面,如果我们采用 Sigmoid 激活函数的话,随着网络加深,我们很容易落入到饱和区域,容易产生梯度消失现象,减缓训练过程。但是,如果我们能够确保非线性输入的分布维持稳定的话,优化就不容易陷入到饱和区域,从而能够加速训练。

3. 小批量归一化

针对每一层的所有输入进行白化代价非常高并且不是处处可微,因此作者进行了两个必要的简化。

第一,我们独立地归一化一层中的每一个特征,让它们具有零均值标准方差。针对一个 d 维的输入 x=(x^{(1)}...x^{(d)}),我们将分别对每一维进行归一化。

但是,这样简单地归一化每个输入会改变当前层网络的表达能力。比如,归一化 Sigmoid 函数的输入将会使它们落入激活函数的线性区域。为了解决这个问题,我们要保证嵌入到网络中的变换能够表示恒等变换。对此,我们引入一对参数 \gamma^{(k)}, \beta^{(k)} 来对归一化后的值再进行缩放和平移。

这样,通过设定 \gamma^{(k)}=\sqrt {Var[x^{(k)}]}, \beta^{(k)}=E[x^{(k)}]如果原始激活值是最优的话,我们也能够恢复到原有状态

第二,用小批量样本来产生对每个激活值均值和方差的估计。针对 m 个样本的小批量,归一化变换如下所示:

在训练过程中,我们需要计算 BN 变换参数的梯度来进行反向传播,根据链式法则,有

因此,BN 在网络中引入了对激活值的归一化,并且是一个可微的变换。这样,每一层都可以在同样的分布上持续学习而不用担心内部偏移问题,所以可以加速训练过程。最后,在归一化后学习到的仿射变换允许网络表示恒等变换,因此也保留了网络的容量也即表示能力。

4. 测试

虽然对小批量的激活值进行归一化在训练时是非常有效的,但在测试时却是不必要也不可取的,我们想让输出只确定地依赖于输入。因此,一旦训练好了一个网络,我们用训练时总体的均值和方差来进行归一化。

忽略 \epsilon,这些归一化后的激活值就具有了和训练时一样的零均值和标准方差。我们采用无偏的方差估计

期望是根据训练过程中所有大小为 m 的小批量样本计算的,\sigma_B^2 代表它们的方差。同时,我们使用滑动平均来跟踪训练过程中每个小批量的均值和方差。

5. 在全连接和卷积网络中引入 BN

针对全连接网络,我们在非线性之前加入 BN 变换,对 x=Wu+b 进行归一化。注意到,偏置 b 可以被忽略,因为在后序的减去均值的过程中它的作用被抵消了。因此,就变成了

z=g(Wu+b) \to z=g(BN(Wu))

对于 x 的每一个维度我们学习一对参数 \gamma^{(k)}, \beta^{(k)}

针对卷积网络,我们想要归一化保持卷积的特性,因此,不同样本的所有位置的同一个特征图用同样的方式进行归一化。对于一个大小为 m 的小批量样本和大小为 p×q 的特征图,有效的小批次为

m'=m\cdot pq

对于每一个特征图我们学习一对参数 \gamma^{(k)}, \beta^{(k)}

6. BN 允许更高的学习率

在传统的网络中,太高的学习率可能会导致梯度消失或者爆炸,也会使网络陷入在糟糕的局部最优解。但引入 BN 后,它会阻止参数的小的变化被放大成激活值和梯度的更大变化或者次优变化,比如说不会让训练陷入到非线性的饱和区域。

BN 也使得训练对参数的规模更适应。正常情况下,大的学习率会增大参数,然后放大反向传播的梯度导致模型爆炸。但是,引入 BN 后,反向传播不受参数的规模影响。实际上,对于标量 a,有

x_i = Wu_i
\mu = \frac{1}{m}\sum_{i=1}^{m}x_i
\sigma^2 = \frac{1}{m}\sum_{i=1}^{m}(x_i-\mu)^2
\hat x_i = \frac{x_i-\mu}{\sqrt{\sigma^2+\epsilon}}
y_i =\gamma \hat x_i+\beta=BN[Wu_i]

所以,BN[Wu] = BN[(aW)u]\hat x_i 求取时分子分母都放大 a 倍。反向传播时,有

\frac{\partial BN[(aW)u]}{\partial x} = \frac{1}{a} \cdot \frac{\partial BN[Wu]}{\partial x}

\tag{1}\frac{\partial BN[(aW)u]}{\partial u} = \frac{\partial BN[Wu]}{\partial u}
\tag{2}\frac{\partial BN[(aW)u]}{\partial (aW)} = \frac{1}{a} \cdot \frac{\partial BN[Wu]}{\partial W}

由式 (1) 可以看到,参数的规模不影响梯度的反向传播。而且,由式 (2) 知,较大的参数将会获得较小的梯度,BN 能够稳定参数的增长

7. BN 的正则化效果

当使用 BN 进行训练时,小批次中的一个样本会与其他样本结合在一起被传入网络中,网络不再会为某个给定的训练样例生成确定值。在实验中,作者发现这种效应有利于网络的泛化。引入 BN 后,Dropout 可以被移除或减少作用。

8. 加速 BN 网络的训练

仅仅在网络中添加 BN 不能充分利用这种方法的优越性,除此之外,作者采用了以下策略:

  • 增大学习率
  • 移除 Dropout
  • 减小 L2 正则化权重
  • 加快学习率衰减
  • 移除局部响应归一化
  • 更彻底地打乱训练数据,防止同样的数据总出现在同一个批次中
  • 减少光度畸变

9. 实验结果

可以看到,在 MNIST 数据集上,引入 BN 后网络网络收敛很快,并且输入的分布更加稳定。

在 ImageNet 数据集上,引入 BN 后很快就达到了原来 Inception 网络取得的准确率。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容