内部协变量偏移(Internal Covariate Shift)和批归一化(Batch Normalization)

BN是由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中“梯度弥散”的问题,从而使得训练深层网络模型更加容易和稳定。所以目前BN已经成为几乎所有卷积神经网络的标配技巧了。

从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化,确实如此,对于训练中某一个batch的数据{x1,x2,...,xn},注意这个数据是可以输入也可以是网络中间的某一层输出。在BN出现之前,我们的归一化操作一般都在数据输入层,对输入的数据进行求均值以及求方差做归一化,但是BN的出现打破了这一个规定,我们可以在网络中任意一层进行归一化处理,因为我们现在所用的优化方法大多都是min-batch SGD,所以我们的归一化操作就成为Batch Normalization。

我们为什么需要BN

我们知道网络一旦train起来,那么参数就要发生更新,除了输入层的数据外(因为输入层数据,我们已经人为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。以网络第二层为例:网络的第二层输入,是由第一层的参数和input计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal Covariate Shift”。BN的提出,就是要解决在训练过程中,中间层数据分布发生改变的情况。

BN怎么做

如上图所示,BN步骤主要分为4步:

  • 1、求每一个训练批次数据的均值
  • 2、求每一个训练批次数据的方差
  • 3、使用求得的均值和方差对该批次的训练数据做归一化。其中ε是为了避免除数为0时所使用的微小正数。
  • 4、尺度变换和偏移:将x_i乘以\gamma调整数值大小,再加上\beta增加偏移后得到y_i,这里的\gamma是尺度因子,\beta是平移因子。这一步是BN的精髓,由于归一化后的x_i基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,我们引入两个新的参数:\gamma\beta\gamma\beta是在训练时网络自己学习得到的,如果\gamma = \sqrt{\sigma^2 + \epsilon},而\beta = \mu,那么就会恢复到之前的原数据

BN的优势

BN对神经网络训练可谓是有诸多优点,可以分成以下几个方面:

  • 解决内部协变量偏移
    (最近一篇论文否定了BN是改善内部协变量偏移的观点,参考论文How Does Batch Normalization Help Optimization?)
    如果单单是做了减均值除方差归一化的操作,那么就会像图a)中这样子,把输入数据框定在以0为中心的一块区域,在这一区域内绝大多数激活函数都会有一个问题:函数梯度变化程线性增长,不能保证对数据的非线性变换,从而影响数据表征能力,降低神经网络的作用


    sigmoid函数是这样,其他主流的激活函数也一样,如图:

    BN的本质就是利用优化变一下方差大小和均值位置,使得新的分布更切合数据的真实分布,保证模型的非线性表达能力。BN的极端的情况就是这两个参数等于mini-batch的均值和方差,那么经过batch normalization之后的数据和输入的数据分布基本保持一致。

  • 使得梯度变平缓
    我们知道,如果梯度变得平缓后就可以使用大的学习率(learning rate),从而使得学习速度变快加速收敛到最优点的时间。

  • 优化激活函数
    可以看到,同样的激活函数,在使用BN与不使用BN有着明显的差异(虚线代表没有使用,实线代表使用),使用BN后能在更短的时间达到较稳定的状态。

  • 增强优化器作用
    同样,在增强优化器功效方面BN也有一定的作用,比较典型的是sigmoid函数,在没有使用BN之前它的迭代是震荡的,不稳定的,在使用了BN之后有了非常明显的提升。

  • 解决梯度弥散问题
    拿sigmoid和relu来举例,如果没有使用BN的话,第一层与第二层蓝色的曲线相差会很大,但是使用了BN的黄色曲线相差的值其实并不是很多了。

  • 使模型具有正则化效果
    采用BN算法后可以选择更小的L2正则约束参数,因为BN本身具有提高网络泛化能力的特性。

总结

使用BN会有以下几个优点:

  • 解决内部协变量偏移
  • 使得梯度变平缓
  • 优化激活函数
  • 解决梯度弥散问题
  • 使模型正则化具有正则化效果

(各大深度学习框架在搭建网络时需要指定BN层)

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

推荐阅读更多精彩内容