Bengxy
Little steps lead to great distances.
How Does Batch Normalization Help Optimization
2019-08-12 Leave a comment

2018年NIPS的这篇文章[1]主要讲Batch Normalization(BN)为什么能在提升算法效果。

众所周知,在各类场景下BN都能显著提升算法效果,这也是如今BN大行其道的原因。尽管如此,学术界对于BN为什么能提效还未有深刻的探讨。目前流行的观点认为,BN通过控制各个神经网络层的输入分布,从而降低Internal Covariate Shift(ICS)。

而这篇文章证明,让各层输入的分布稳定和BN提效并没有很大的关联。真正让BN起作用的是BN让优化的landscape更加平滑,从而带来了稳定的梯度,允许模型更快收敛。

ICS表示由上一层神经网络带来的输入数据分布的改变。传统上,我们认为ICS降低了模型精度,而BN通过降低ICS来提升training的performance。

关于Optimization Landscape如下图,右侧是更加平滑的梯度曲面,这篇文章[2] 是讲Skip-Connection的,其中的图可以描述光滑曲面的特点。

optimize-landsapce

这篇文章主要贡献点有几个:

  1. 作者首先通过一些例子,反证了BN的提效和降低ICS少有联系,或几乎没有任何联系。这一点足够颠覆目前的认知。

  2. 接着,作者通过观察梯度分布的Landscape,从而发现BN和梯度平滑(Smoothen)之间的关联,并证明了这个理论:在自然条件下,BN提升了Loss和梯度的利普希茨性(Lipschitness)[3]

  3. 最后,作者发现Smoothen不仅BN有,其他很多normalization技术都可以带来效果的提升。

为了验证这些猜想,作者做了几个实验

首先,作者用VGG网络训练CIFAR-10数据,在效果上,BN确实比不用BN有显著提升。但是如果对比不同层之间(Layer-3Layer-11)输入分布的mean和variance(下图最右),有没有BN区别似乎是微不足道的。

with-without-BN

因此作者抛出两个问题:

  1. BN的效果是否和ICS有关?
  2. BN输入层的稳定性是否有效降低了ICS?

作者设计了这样的实验:在BN层后面添加随机噪声,并且对每个Batch,用non-zero mean和non-unit variance分布的i.i.d采样,打乱激活函数,且每一步这个噪声分布都会变化。毫无疑问,这个噪声会带来极大Covariate-Shift(CS),每次都会扭曲激活函数。从而使得每个神经单元在每一步都有一个不同的分布(其实是噪声),接着,作者测试了BN在这次训练的效果。

Noise-BN-result

加了随机的噪声后,算法的效果如预期的比原始BN下降了,但奇怪的是,和标准神经网络比,加了noisy后的BN分布稳定性要低于标准神经网络,而实际的效果却比标准神经网络好(洋红色 VS 橙色)。因此,BN的效果并非来自于ICS。

那么BN是否能够降低ICS呢?作者定义了优化中的梯度表达式。

用$\mathcal{L}$表示Loss,$W_k^t$ 表示k层神经网络在t时刻的参数,$(x^t, y^t)$ 表示t时刻的输入数据和label。激活函数i在t时刻的ICS定义为梯度差:$\Vert G_{t,i} - G’_{t,i}\Vert$。

$$G_{t,i} = \nabla_{W_i^t} \mathcal{L} (W_1^t ,…, W_k^t; x^t, y^t)$$

$$ G_{t,i}^{’} = \nabla_{W_i^t} \mathcal{L} (W_1^{t+1} ,…, W_{i-1}^{t+1} ,W_i^t ,…, W_k^t; x^t, y^t)$$

由于网络已一层一层的反向传播,也就是说,ICS表示当神经网络的梯度和前馈layer更新后的梯度差值。这个差值反应了当网络的输入改变后$W_i$的Landscape变化程度。

作者在VGG和25层的深度网络上进行了实验,而实验证明了BN甚至可能会带来ICS的上升。在图中,Loss和Acc都优于标准网络的BN网络,但是却有更高的Landscape差值。所以,BN也不是必然带来ICS的降低。

BN-increase-ICS

那么BN是如何生效的呢?作者认为,BN的效果来自于Smoothing Effect,让Landscape更加平滑。

作者以普通的全连层网络为例,网络的Loss函数不仅是非凸的,而且具有大量的扭结,平坦区域,和陡峭的极小值,这让梯度优化变得非常不稳定,随着梯度爆炸和梯度消失,这一现象变得更加严重。作者对比了Loss平滑度,两次step的梯度平滑度,网络的$\beta$-smoothness。BN网络都表现出更稳定的特性。最后,作者还尝试验证了其他的一些能让Landscape变得smooth的方法。对于$l_p$的正则,均可以达到类似BN的功能,同时$l_1$在Deep Net上甚至有更好的效果。

BN-loss-landscape-compare

从理论上解释BN,有几点是BN带来平滑性的原因。

首先深度网络的梯度优化有多层,这使得我们优化的中间值也很重要。而内部参数变量随着梯度更新,使得最终结果的内积很容易偏离0点。依次反向累计后,BN公式$\frac{y_i - \mu}{\sigma}$的$\sigma$值会变得很大,从而相对让更新变得平滑。

同时,BN其实是一种重新参数化(re-parametrization)的过程,而不仅仅是简单的缩放。对于凸的loss,每一层Loss的海森矩阵都是半正定的,他保证了原始网络的局部最优点和新网络的局部最优点一致。


  1. Santurkar, Shibani, et al. “How does batch normalization help optimization?.” Advances in Neural Information Processing Systems. 2018.

  2. Li, Hao, et al. “Visualizing the loss landscape of neural nets.” Advances in Neural Information Processing Systems. 2018.

  3. Lipschitz continuity

本文作者:Bengxy

本文采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)协议

本文链接:http://blog.bengxy.com/posts/450074ea/

Machine Learning Optimization NIPS Paper