您的位置:首页 > 其它

深度学习第六天: BatchNormalization.md

2016-09-14 00:47 309 查看

batch normalization:accelerating deep network training by reducing internal covariate shift

可以用更高的学习率,更少的关于初始化,正则化减少dropout的使用。

概述:训练机器学习系统时,一个一般的假设是它每次的输入的分布是稳定的。如果不满足这个假设,就是covariate shift,这个通常通过domian adaption解决。在训练一个复杂的机器学习系统时,同样要求这个sub-network对应的输入(activation)分布(distribution)是稳定的,如果不满足这个假设,就是本文提出的internal covariate shift(ICS)。本文CNN训练中,存在的ICS问题提出batch normalizaiton,一方面通过normalization使得每个网络层的输入尽量保持稳定的分布(均值为0以及单位方差),另一方面通过一个线性变化(transform)使得该层的输入在表达能力上也同时保持较好的效果。

对于CNN训练中存在的ICS问题,在原文中通过一个带sigmoid activation function的层进行了说明,具体而言:首先这个中间层的输入是原始数据在先网络(preceding network)上变化后的结果,所以这层的输入首先是跟它前面的网络参数有很大关联,这样的话前面网络参数的变化必然带来这层在输入上的变化,而且这个网络深度越深,这种现象就会被扩大(amplify),从而导致输入的不稳定;另一方面,对于一个sigmoid激活函数,它的导数随着自变量绝对值增大而减小,输入x的很多维上的梯度往往太小而导致梯度不能有效的传播(saturation problem and gradient descent)。之前,解决这个问题的方法包括 using Rectified linear units,care initialization以及small learning rate。这往往导致的问题就是学习速度太慢并且学习的效果太依赖于初始化。如果能够保持每层输入的分布稳定, 那么这个问题就能很好的解决,本文从这个角度提出了batch normalization。除了保持输入数据的稳定性之外,BN技术还能消除梯度算法中梯度与参数大小和初始值之间的关系,同时regularized the model并且减少对dropout的需求。文章通过实验验证,通过BN技术,可以显著提高学习的效率,同时也能提高模型的性能。

来源: http://www.voidcn.com/blog/a1154761720/article/p-5693390.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习