《How Does Batch Normalization Help Optimization》论文笔记

《How Does Batch Normalization Help Optimization》

论文初略

论文地址: https://arxiv.org/...
该论文推翻了BN原论文认为BN是因为减少了Internal Covariate Shift(ICS)的推论,给出了一个新的解释,而是因为每层的标准化使得最后的loss函数变成了一个光滑的曲面而造成的最后性能提优。ICS 即由于之前网络层参数的更新,当前从的输入分布会不断变化的现象。


本文的主要贡献:

  1. BN带来的性能提升与ICS的减少无关。 并且在一定程度上认为BN并不能减少 ICS。
  2. 发现了BN使得优化问题的曲面更加平滑,这使得梯度更容易预测以及允许更大范围的学习率和更快的网络vonvergence。证明了BN提升了模型的LOSS的Lipschitzness和梯度的Lipschitzness(β-smoothness)。
  3. 提出了除了BN外,还有其他方式同样可以达到类似平滑效应,有些甚至效果更好。

BN层与ICS的实验分析

  • 实验一:朴素BN层带来的实验结果分析
    实验设计: 普通网络及带有BN层的网络实验对比,观察是否有BN层的网络精确度结果及其抽样的网络层输入分布对比。
    实验结果:由图一可以看出,增加了BN层的VGG网络,其训练和测试准确率都得到了提升,然而实验抽样的某一次对应得输入分布可视化后,并没有发现明显的区别。
    实验分析:由此,作者开始思考:1. BN的高效是否与ICS相关? 2. BN带来的网络输入分布的稳定是否减少了ICS?
    image.png
  • 实验二: Standard/Standard+BN/standard+BN+Noise三组对比试验
    为解答第一个问题: 1. BN的高效是否与ICS相关?实验设计如下
    实验设计:在BN层后增加一个非零均值,非单位方差的随机噪声,即每一次计算时,该层都会有一个随机的输入方差偏移。由此,层间的每一个神经元所接收到的输入都是不同分布的。
    实验结果: 第二组和第三组模型准确度相较于第一组标准模型都有提升。且第三组带噪声的BN网络,其层间输入比另外两组都不稳定。
    实验分析:这些实验现象证明:BN带来的性能提升并不是基于网络层输入稳定性提升。
    image.png
  • 实验三:Standard/Standard+BN/DLN/DLN+BN 对比试验
    为解答第二个问题: 2. BN带来的网络输入分布的稳定是否减少了ICS?实验设计如下。
    实验设计:为了量化某一网络层的参数对于之前网络层中参数更新所必须“调整”的程度, 实验测量了在所有前面的网络层参数更新前与更新后每一层网络的梯度的变化,其符号定义为与。为了排除非线性与梯度随机性的影响, 这个对比试验同时在一个25层的深度线性网络(DLN)上,以全部数据为一个batch进行梯度下降。
    实验结果: 带有BN层的网络,经常呈现出ICS增加的现象,这种现象在DLN中更加显著。由于DLN中没有非线性激活层,那么本应当网络层中不应该出现ICS现象。然而增加BN层后,与几乎不相关。需要强调的是:带有BN的网络其效果仍然相较没有BN层而言,提升非常的大。
    实验分析: BN层也许不能降低ICS。
    image.png

BN层原理分析

  • BN层的平滑效应
    此处给出原文描述,也是该论文的核心结论。
    It reparametrizes the underlying optimization problem to make its landscape significantly more smooth. The first manifestation of this impact is improvement in the Lipschitzness of the loss function. That is, the loss changes at a smaller rate and the magnitudes of the gradients are smaller too. There is, however,an even stronger effect at play. Namely, BatchNorm’s reparametrization makes gradients of the loss more Lipschitz too. In other words, the loss exhibits a significantly better “effective” β-smoothness.
  1. Lipschitzness: 即系统具备L-Lipschitz稳定的,具有以下性质。
    系统输入的变化导致系统输出的变化波动会被限制在一个常系数范围内。
  2. 论文《Visualizing the loss landscape of neural nets》中提到: 在Vanilla深度神经网络(非BN网络)中, 损失函数不仅是非凸的,并且常有许多的"kinks", 平坦区域,和尖锐的极小值。这些都导致基于梯度下降的训练算法不稳定,例如由于梯度爆炸或者梯度消失,由此其网络对于学习率的选择和网络初始化高度敏感。
  3. BN带来的Lipschitzness与其BN带来网络提升之间的关系:BN层使得梯度更加值得依赖和具有预测性的。提升后的梯度Lipschitzness让我们放心地设置一个较大的学习步数且梯度方向维持不错的精确。这允许任何基于梯度的训练算法可以采取更大的学习率而不用担心起遭遇梯度突然变好的危险,例如平缓区域会导致梯度消失,尖锐的局部最小值会导致梯度爆炸等等。由此,BN使得训练过程更快且对超参数选择没那么敏感。
  • 得出Lipschitzness平滑的实验基础
    实验一:在训练过程的每一步中,计算当前step损失函数的梯度,并得出损失沿着当前step梯度方向的变化范围分布,并绘制随着step变化的曲线。沿着梯度的方向,vanilla网络的loss分布一直有很大的变化波动与范围,尤其是在刚开始训练的时候。
    实验二: 计算训练过程中某点的损失梯度与其原来梯度方向不同点梯度的L2距离的变化曲线。可以发现两者区别很大。
    实验三:对比两者在沿着梯度方向上梯度在L2范数的最大差别,发现带BN的网络其平滑性更好。
    在DLN网络中也进行了这三个实验对比。两次实验结果如以下两图所示。
image.png

image.png

探索其他正则方式是否有同样的效果

实验内容:在标注网络中添加不同的正则方式,例如正则,n为1,2与无穷等。此时,网络层输入参数分布不再是高斯分布。然后在这些网络中都进行了以上的实验。最终结果显示: 模型的效果都得到了提升且Loss Lanscape都得到了平滑。因此,对于标准化方案的设计空间进行探索可能是有价值的,因为它可以带来更好的性能。具体实验结果可以去查看论文附录。

image.png

作者提出的公理

接着,基于实验现象,作者总结了一部分基于经验性质的公式,相关信息请翻阅论文查看。

你可能感兴趣的:(《How Does Batch Normalization Help Optimization》论文笔记)