程一-计算所 发表于 2016-3-21 12:48:52

【VALSE前沿技术选介16-06期】

http://mp.weixin.qq.com/s?__biz=MzA3Mjk0OTgyMg==&mid=402287131&idx=1&sn=82bb7edcf3468002ad56c5b39f3d358a#rd

【VALSE前沿技术选介16-06期】

今天推介的两篇论文都是对现在CNN中常用的Batch Normalization Layer的推广,文章的题目分别为”Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks”和”Normalization Propagation: A Parametric Technique for Removing Internal Covariate Shift in Deep Networks”. 今天的文章稍微理论一下,有一些公式,希望大家有耐心看完哦~
这两篇文章均从BN的两个缺陷出发,提出对BN的改进。文章中认为BN的问题包括:1) 因为训练时估计均值和方差的时候使用的是mini-batch的统计,那么batch size为1的时候,无法使用BN训练。 2)每个mini-batch的统计引入了训练的随机性,这是一把双刃剑,虽然在CNN等传统分类任务中,这样的随机性可以有效减小overfitting,但是对于generative model或者reinforcement learning等任务中,这样的随机性可能会导致训练不稳定,甚至不收敛。这两个缺陷的本质都在于,BN在训练时的统计都是data dependent的,也就是说必须要知道数据是什么才可以进行normalization,这也就是这两篇文章想着重改进的地方。
在第一篇文章中,作者提出可以每次SGD后,将每个neuron的权值normalize为1。这样简单的做法仍然可以保证gradient稳定,不会爆炸或者消失。除此之外,作者发现,如果在normalize weight的基础上再对减去每个batch的均值,结果会进一步改进。不过很有趣的是,这样的做法又重新引入了作者claim的第一点的BN的缺点。除此之外,文章中给出的分析相对较少,仍有较大改进空间。
第二篇文章使用了更为优雅的方法来解决前述提到的问题。其核心思想是,将输入数据做normalization,然后想办法将这个normalization的效果“传播”到后续的层中,从而避免每层都需要计算数据相关的统计量来normalize。文章的核心是以下两个公式,下面我会详细解释它们的含义:

这个公式给出了在输入$x$是标准正态分布时,经过一层全连接层的变化后,输出的协方差矩阵距离最近的对角矩阵距离的bound,以及最优的对角矩阵的形式。首先,我们注意到这个$\alpha_i$的最优值就是$W_i$的l2norm,换句话说,为了使输出$u_i$的variance是1,那么我们需要把$u_i$除以$\|W_i\|_2$,这也等价于将$\|W_i\|_2$normalize到1. 这也就完美解释了上一篇文章中为什么normalize weight的办法会work。然后我们来看这个bound,这个bound分为两项,第一项只与每个neuron对应的权值的l2 norm有关,但是如果进行了上述normalize,则第一项会变为0;与此同时,第二项也只与W矩阵的coherence(即$\max|W_i^T W_j|$,即列之间最大相关性的绝对值)相关。而往往在实际应用中学到的$W$的coherence一般会很低。这也就说明了经过全连接层变换后的输出的协方差矩阵仍旧可以近似为一个对角矩阵。卷积层的推导也同理。以上的引理就证明了如果给网络的输入是decorrelate过的,那么我们经过全连接层和卷积层后,也可以近似保持这个性质。(但作者也提到,在实际应用中,因为效率的原因,并没有做decorrelate,而只是将每一维feature的方差正则化到1。)这也就是作者提出”Normalization Propagation”的合理之处。

在上一个公式中,并没有考虑ReLU对分布的影响,于是在第二个核心公式中,作者给出了一个标准正态分布过了ReLU之后的mean和variance。这个ReLU后分布的推导,也可以很简单地推广到PReLU等更复杂的激活函数中去。除此之外,文章还给出一个了“Jacobian Factor”,即在矩阵$W$近似coherent的时候,除以这个常数使得Post-ReLU对输入的Jacobian Matrix的singular value近似于1。具体的推导可以见论文。这样的好处在之前的工作中说明,可以使得训练收敛速度大幅度提升。
有了以上的分析,文章的算法其实就很明了,首先我们需要对输入进行normalize,然后在forward过程中,以全连接层为例,输入输出为:

其中1.21为前面提到的Jacobian Factor。在backward过程中,在更新每一层的权重后,需要对每一列重新normalize到1。整个的过程中不涉及数据相关的均值和方差计算,所以完美的解决了前述的两个问题。
总结一下,我非常喜欢这篇文章中证明bound和公式推导的思路,证明出的bound和推导不仅仅是一个没有生命的公式,而是对于实际模型的设计有很大指导意义,使得整个paper鲜活起来。而且对于第一篇paper中heuristic的做法给出了很漂亮的解释。整个证明的过程也没有用到复杂的数学工具,只有基本的矩阵知识和统计知识,十分推荐大家有时间的话仔细推导一下。比较遗憾的是,这两个文章都没有在大规模的通用benchmark,例如ImageNet上进行测试,所以在大规模问题中的有效性仍有待验证。
综上,我个人一直觉得Batch Normalization是一个非常“妖性”的操作,经常会带来意外的惊喜,也会带来意想不到的bug。我们最近的一个工作发现Batch Normalization在Domain Adaptation问题中也十分有效,这个paper也是源于在实验中发现的一些BN的反常情况。我相信更多BN神奇的性质还未被完全挖掘,期待大家有更精彩的发现。

Salimans, Tim, and Diederik P. Kingma. “Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks.” arXiv preprint arXiv:1602.07868 (2016).
Arpit, Devansh, et al. “Normalization Propagation: A Parametric Technique for Removing Internal Covariate Shift in Deep Networks.” arXiv preprint arXiv:1603.01431 (2016).
Yanghao Li, Naiyan Wang, Jianping Shi, Jiaying Liu, Xiaodi Hou. “Revisiting Batch Normalization For Practical Domain Adaptation.” arXiv preprint arXiv:1603.04779, 2016.
Saxe, Andrew M, McClelland, James L, and Ganguli, Surya. “Exact solutions to the nonlinear dynamics of learning in deep linear neural networks.” arXiv preprint arXiv:1312.6120, 2013.




页: [1]
查看完整版本: 【VALSE前沿技术选介16-06期】