Layer Normalization

在学习Layer Normalization之前建议大家先自行学习Batch Normalization.

鉴于BN存在一些问题,LayerNormalzation才得以提出,并且LayerNormalization可以直接应用于recurrent neural networks,并且也解决了BN当batch size=1不能进行在线学习,在线预测的问题。

layer normalization和BN的整个思想是相近的,不同的是应用场景和计算均值、方差的方法是不同,但是总体而言都是通过归一化来加快训练速度,找到更佳的优化点来提升效果的。

无论是BN还是LN都是基于“covariate shift”的问题而设计的。不同于BN,LN进行normalization的数据,均值和方差的计算集合是同一层所有隐节点,公式如下:

其中,H为隐层l的节点数量,\mu^{l}为均值,\sigma ^{l}为方差,a_{i}^{l} 为隐层l的节点i的未经过激活函数的初始值,在RNN中,a^{l}可以表示如下:

其中, x^{t}为当前时刻的输入,h^{t-1}为上一时刻的隐层输出。

在RNN中随着t的增长,通常会出现梯度消失和梯度爆炸的问题,这是由于时间维展开,梯度不稳定,或者出现小于1的情况,或者出现大于1的情况,在链式法则的作用下而导致的。而如果采用layer normalized RNN,归一化项会re-scaling inputs to a layer, 使得隐层和隐层之间的梯度计算更稳定。

 

你可能感兴趣的:(layer,normalization,论文阅读)