论文阅读_批归一化Batch Normalization

论文地址:https://arxiv.org/pdf/1502.03167.pdf

《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》批归一化:通过减小内部协变量移位加速深度网络训练,是2015年收录在cv.LG中的论文。

由于深度神经网络中每一层输入都依赖之前层的处理,在不同训练阶段分布也不相同,因此网络的初值非常重要,在修改网络参数时也不能使用太大的学习率(不能一次调整太多),因此需要训练很长时间才能收敛,这还引起了饱合的非线性函数(主要指sigmoid函数,后面详述)难以训练的问题。文中将这一现象称为内部协变量转移(internal covariateshift)。文中用批归一化层缓解了这一问题,具体方法是对每个mini-batch做归一化。它比普通训练收敛加速****14****倍,并且提高了精度。

介绍

梯度下降法的核心是求取合理的模型参数Θ,使误差函数最小化:

训练集中共N个实例,每个训练步(step)使用其中m个实例训练(mini-batch),每一步根据目标函数l在梯度方向上调整网络参数:

使用多个实例训练时计算整体梯度,当m较大时,训练的质量相对更高,且并行处理速度更快。由于每一层的输入都受到之前各层参数的影响,每个对模型参数的微小改变都将影响到深层。

由于网络参数始终外于不断变化之中,每一层的输入也不断变化,参数又需要调整以适应新的输入数据的分布,这种现象被称为covariate shift协变量移位。

最初covariate shift是指在迁移学习中,或者在训练集和测试集分布不一致的情况下,如用数据集A训练模型,在数据集B上应用模型,如果A与B上分布相似,则模型效果较好。如果数据A与B的分布不一致。一种解决方法是使用转换T,B*T=A,把B转换成类似A的数据,使得B使用模型时效果更好。

在神经网络内部也是如此,它的每一层都可以看成一个模型,模型输入的分布越稳定,模型训练效果就越好,这样网络内部的参数就不用因为输入的不同反复调整。

固定网络输入的分布同样有利于网络中其它层的训练,假设网络中使用了sigmoid激活函数,z =g(Wu + b),其中u是网络输入,W,b是被训练的网络参数,g是激活函数,z是最终结果。sigmoid函数定义如下:

当x的绝对值增大到一定程度时,其导数g’(x)趋近于0(随着|x|越大,g(x)的变化越不明显),这就意味着除非x=Wu+b足够小,否则调参将非常慢,即梯度消失问题。之前常用ReLU激活函数、调整参数初值,降低学习率等方法缓解这一问题,如果能将其分布固定下来,则能更有效地解决此问题。

Batch Normalization方法可以减轻covariate shift的影响,归一化也减轻了网络参数和初值的影响,让开发者可以使用更高的学习率,并且可替代部分的Dropout,并且解决了非线性函数的饱合问题(上面提到的sigmoid引发的问题)。

减少内部变量移位(Internal Covariate Shift)

之前的研究证明白化数据可加速模型训练,白化一般指将数据转换成均值为0,标准差为1,且元素之间相关性低的数据。由于层与层之间相互影响,对每一层进行白化操作,将改进各层输入的分布,从而减少Internal Covariate Shift的影响。

如果将归一化层插进神经网络的各个层之间,假设某一层的操作是x=u+b,其中u是该层输入,b是偏移,对该层输出做如下归一化:

如果梯度下降时忽略E[x]与b的相关性,则更新b时只需要计算b←b+ ∆b,因此,有:

结合了对b的更新及后续的归一化将不会影响该层的输出和损失函数(更新了也没用),这样随着训练次数的增加,b将越来越大,而loss却固定不变。在E不只计算位移(减均值相当于向中心移动),同时也考虑缩放时该问题更加明显。

引起上述问题的原因是梯度下降时并未将正则化的影响考虑在内,实际上E[x]与b并非不相关。可将归一化写成如下函数的形式:

归一化的结果不仅取决于实例x,也取决于训练数据中的所有元素X,数据集中的其它元素也由上一层的b计算得出。因此,在反向传播时,应该分别计算对x和X的偏导。

如果忽略了后边的一项,则可能引发上述的梯度爆炸问题。

一般情况下白化,需要计算协方差矩阵以消除各元素之间的相关性,及计算平方根,反向传播等等操作比较复杂,因此,希望能找到一种既可导,又不需要在每次调参时都计算所有训练数据的归一化方法。

使用Mini-Batch的统计值归一化

文中提出的方法是用均值为0,方差为1方法的归一化,之前也有论文证明了,归一化的特征即使不去相关性,也能加速收敛。

通过简单的归一化操作之后,数据的内容就被改变了,这可能引起一些问题,例如在归一化后使用sigmoid激活函数,归一化可能将数据转换到非线性函数的线性段之内(sigmoid在0附近的小区域内几乎是线性函数,这样归一化就把非线性转换变成了线性转换)。为解决此问题,引入了参数γβ,分别用于缩放和平移(类似于一个普通的线性层)。

在γ是标准差,β是均值的情况下,γ和β操作相当于将数据还原成归一化之间的内容,而此处的γβ通过训练调参得到。也就是说,如果需要,模型可将其还原到归一化之前的状态。

另外,很难实现用全部训练数据做归一化,文中通过统计每一步mini-batch的数据,对每一个维度(如图像通道)分别计算归一化,这里用方差替代了协方差,具体算法如下:

其中每个元素都是可微的,可用链式法则计算:

使用BN网络训练和预测

预测(或称推理inference,即:使用模型)时与训练时的方法不同,一般在测试时只希望对输入值计算,并不一定有一组输入用于计算统计信息。因此使用模型训练阶段的均值和方差,此时BN变成了简单的线性变换。

在卷积网络中使用BN

假设网络处理了仿射变换(线性变换)和非线性的激活函数:z=g(Wu+b),其中u是输入,W、b是模型参数,g是激活函数。该公式对全连接层和卷积层同样适用,一般将归一化层加在线性变换和激活函数之间。原因是:输入u也是之前层非线性函数的输出,它的分布在训练过程中不断改变,相对来说Wu+b更加对称,且非稀疏,更近似高斯分布,对其做归一化的效果也更好。

对于卷积层,对不同的位置做相同的特征映射(feature map),卷积层的归一化也同理,对每个mini-batch中的每个空间区域做同样的归一化处理。因此,对每一个小区域训练γβ,替代对整个层的mini-batch训练γβ。

使用更高的学习率

在传统的深度网络中,较高学习率往往引起梯度爆炸、梯度消失,或者陷入局部最小值。BN防止了小的改变通过多层网络传播被放大的问题。

较大的学习速率会放大网络参数,在反向传播过程中放大梯度,导致模型爆炸。而BN处理可使反向传播不受参数缩放的影响。假设参数被放大了a倍:BN(Wu) =BN((aW)u)。求导过程中:

这使缩放不影响梯度传播,BN也能使参数更稳定的增长。

实验

下图为对比使用BN在MINST数据集上的效果,从(a)可以看到使用了BN之后,模型更加稳定快速收敛。(b)(c)中展示了送入sigmoid函数数据分布的15,50,85分位数的变化过程,可以看到BN变化更加稳定。

在ImageNet图片分类任务中,除增加BN层以外,还了加大了学习率;去掉了Dropout层;减小了l2损失的权重;加快了学习率衰减;去掉了本地响应归一化(Local Response Normalization);使用更加彻底地洗牌(shuffle),在训练数据中within-shard shuffling,并防止同样实例出现在同一mini-batch中;减少了图片扭曲。

下图是使用了BN的效果对比:

其中Inception是未被修改的基础模型,BN-Baseline是加入了BN的模型;BN-x5将学习率提升5倍;BN-30将学习率提升30倍;BN-x5-Sigmoid将激活函数从ReLU改为Sigmoid,菱形为达到Inception模型最佳效果的迭代次数。

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