【知识】Layer Normalization以及其他的一些Normalization方法

Layer Normalization

BN实际使用时需要计算并且保存某一层神经网络batch的均值和方差等统计信息,对于对一个固定深度的前向神经网络(DNN,CNN)使用BN,很方便;但对于RNN来说,sequence的长度是不一致的,换句话说RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一个特殊sequence比其他sequence长很多,这样training时,计算很麻烦。
而且RNN的参数是各时间步共用的,那么当sequencelength不一样,我们去padding0的话,就会影响BN层参数的学习。所以很麻烦。
另外BN对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布。
与BN不同,LN是针对深度网络的某一层的所有神经元的输入进行normalize操作,即在RNN中,对每个cell的input+State_{t-1}进行normalize。

具体可以参考论文:Layer Normalization
参考
https://blog.csdn.net/liuxiao214/article/details/81037416

posted @ 2019-03-24 16:22  大胖子球花  阅读(242)  评论(0)    收藏  举报