理解Batch Normalization系列3——为什么有效及11个问题(清晰解释)

前面两期,我们了解了原理、训练及评估,然而为什么有效及若干细节仍值得讨论。

系列目录

理解Batch Normalization系列1——原理

理解Batch Normalization系列2——训练及评估

理解Batch Normalization系列3——为什么有效及若干讨论

理解Batch Normalization系列4——实践

文章目录
BN改善了ICS吗?
什么是ICS?
BN与ICS无关
BN改善了损失的平滑性
什么是平滑性?
其他11个值得讨论的问题
参考文献

BN改善了ICS吗?

原作者认为BN是旨在解决了 ICS(Internal Covariate Shift)问题。原文是这样解释:

We define Internal Covariate Shift as the change in the distribution of network activations due to the change in network parameters during training. To improve the training, we seek to reduce the internal covariate shift. By fixing the distribution of the layer inputs x as the training progresses, we expect to improve the training speed.

什么是ICS?

所谓Covariate Shift,是指相比于训练集数据的特征,测试集数据的特征分布发生了变化。

而原作者定义的Internal Covariate Shift,设想把每层神经网络看做一个单独的模型,它有着自己对应的输入与输出。如果这个“模型”越靠输出层,由于训练过程中前面多层的权重的更新频繁,导致它每个神经元的输入(即上一层的激活值)的数值分布,总在不停地变化,这导致训练困难。

然而,一个启发性的解释很容易被推翻,又有人做了更进一步的解释。

BN与ICS无关

2018年的文章《How Does Batch Normalization Help Optimization?》做了实验,如图1所示。

img1.png

图 1. BN与ICS (来源: 原始论文)

左图表明,三个网络训练曲线,最终都达成了较高的精度;右图是三个网络中抽出3个层的激活值,绘制9个HISTOGRAMS图,每层激活值的分布都在训练过程中不断变化(HISTOGRAMS图),尤其是网络中更深的层,这导致了ICS问题(根据上文的ICS定义)。

  • 应用了BN,观察到的右图(Standard+BatchNorm)的激活值分布变化很明显,理论上将引起明显的ICS问题。

  • 在BN层后叠加噪音(输入到后面的非线性激活,相当于BN白干了),观察到的右图(Standard+"Noisy" BatchNorm)的激活值分布变化更为突出,理论上将引起更为明显的ICS问题。

    (然而,我的理解是:如果每个BN层后叠加噪音,下一层的BN也会进行标准化,层层抵消,相当于仅最后一个BN层后叠加的噪音增大了ICS)

    然而两种情况下,左图BN的表现依然非常稳定。即BN并没有减少ICS。

    那么,BN是为什么有效?

BN改善了损失的平滑性

2018年的论文《How Does Batch Normalization Help Optimization?》,作者定义了一个描述损失函数平滑度的函数,观察加入BN的前后,损失函数平滑性的变化。如图2所示。纵轴的数值越小,表明损失函数曲面越平滑;纵轴数值越大,表明损失函数曲面越颠簸。蓝色线为加入BN后的损失函数的平滑度,可以看到,加入BN后,损失函数曲面的平滑程度得到了显著改善。

img2.png

图 2. BN的加入,增加了损失函数的光滑度(来源: 原始论文)

因此得到的结论是:BN的加入使得损失函数曲面变得平滑,而平滑的损失函数进行梯度下降法变得非常容易(可参见图3)。

什么是平滑性?

对平滑性的理解,我想没有比图3更合适的了。

img3.png

图 3. 损失函数的光滑度对比(来源:Visualizing the Loss Landscape of Neural Nets)

图3中所展示的是,ResNet中引入的shortcut connection,实际上是对损失函数的平滑作用。显然,对于左侧的损失函数,梯度下降将是异常困难;而对于右侧,即经过平滑的损失函数,将大大提升训练效率。

由于权重参数动辄千万,必然将权重数映射成2个,因此绘制损失函数曲面相当需要技巧与计算代价,尚未找到BN的平滑性3D图对比,但不影响图2中BN对平滑性改善效果的证明。

其他11个值得讨论的问题

  • BN层的位置能不能调整?如果能调整哪个位置更好?

    能。原因:由第二章BN的反向传播可知,BN不管放在网络的哪个位置,都可以实现这两个功能:训练​和​、传递梯度到前一层,所以位置并不限于ReLU之前。

    原始论文中,BN被放在本层ReLU之前,即

    也有测试表明,BN放在上一层ReLU之后,效果更好,即

    表1 BN的位置对训练结果的影响来源

Name Accuracy LogLoss Comments
Before 0.474 2.35 As in paper
Before + scale&bias layer 0.478 2.33 As in paper
After 0.499 2.21
After + scale&bias layer 0.493 2.24

但是由于这些都是试验证明,而非理论证明,因此无法肯定BN放在ReLU后就一定更好。

在实践中可以都试试。

  • 在训练时为什么不直接使用整个训练集的均值/方差?

    使用 BN 的目的就是为了保证每批数据的分布稳定,使用全局统计量反而违背了这个初衷。

  • 在预测时为什么不直接使用整个训练集的均值/方差?

    完全可以。由于神经网络的训练数据量一般很大,所以内存装不下,因此用指数滑动平均方法去近似值,好处是不占内存,计算方便,但其结果不如整个训练集的均值/方差那么准确。

  • batch_size的配置

    不适合batch_size较小的学习任务。因为batch_size太小,每一个step里前向计算中所统计的本batch上的方差和均值,噪音声量大,与总体方差和总体均值相差太大。前向计算已经不准了,反向传播的误差就更大了。

    尤其是最极端的在线学习(batch_size=1),原因为无法获得总体统计量。

  • 对学习率有何影响?

    由于BN对损失函数的平滑作用,因此可以采用较大的学习率。

  • BN是正则化吗?

    在深度学习中,正则化一般是指为避免过拟合而限制模型参数规模的做法。即正则化=简化。BN能够平滑损失函数的曲面,显然属于正则化。不过,除了在过拟合时起正则作用,在欠拟合状况下,BN也能提升收敛速度。

  • 与Dropout的有何异同?

    BN由于平滑了损失函数的梯度函数,不仅使得模型训练精度提升了,而且收敛速度也提升了;Dropout是一种集成策略,只能提升模型训练精度。因此BN更受欢迎。

  • 能否和Dropout混合使用?

    虽然混合使用较麻烦,但是可以。不过现在主流模型已经全面倒戈BN。Dropout之前最常用的场合是全连接层,也被全局池化日渐取代。既生瑜何生亮。

  • BN可以用在哪些层?

    所有的层。从第一个隐藏层到输出层,均可使用,而且全部加BN效果往往最好。

  • BN可以用在哪些类型的网络?

    MLP、CNN均ok,几乎成了这类网络的必选项。

    RNN网络不ok,因为无论训练和测试阶段,每个batch上的输入序列的长度都不确定,均值和方差的统计非常困难。

  • BN的缺点

    在训练时前向传播的时间将增大。(但是迭代次数变少了,总的时间反而少了)

下一期,我们将动手实现一个BN层。

(如果本文对您有所帮助,别忘了点赞支持一下哈,感谢各位看官)

参考文献

[1] https://arxiv.org/pdf/1502.03167v3.pdf

[2] https://r2rt.com/implementing-batch-normalization-in-tensorflow.html

[3] Adjusting for Dropout Variance in Batch Normalization and Weight Initialization

[4] https://www.jianshu.com/p/05f3e7ddf1e1

[5] https://www.youtube.com/watch?v=gYpoJMlgyXA&feature=youtu.be&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC&t=3078

[6] https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html

[7] https://www.quora.com/In-deep-learning-networks-could-the-trick-of-dropout-be-replaced-entirely-by-batch-normalization

[8]https://panxiaoxie.cn/2018/07/28/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0-Batch-Normalization/

[9] https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization

[10] https://www.quora.com/In-deep-learning-networks-could-the-trick-of-dropout-be-replaced-entirely-by-batch-normalization

[11] https://github.com/ducha-aiki/caffenet-benchmark/blob/master/batchnorm.md

[12]https://www.quora.com/What-is-Covariate-shift

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

推荐阅读更多精彩内容