Loading...
墨滴

algolearn

2021/11/29  阅读:32  主题:默认主题

layer normalization

1 BN(batch normalization) 存在的问题

BN针对单个神经元进行,利用网络训练时一个 mini-batch 的数据来计算该神经元的均值和方差, 因而称为 Batch Normalization。

  • BN是按照样本数计算归一化统计量的,当样本数很少时,比如说只有4个。这四个样本的均值和方差不能反映全局的统计分布息,所以基于少量样本的BN的效果会变得很差。
  • 对于RNN来说,RNN可以展开成一个隐藏层共享参数的MLP,随着时间片的增多,展开后的MLP的层数也在增多,最终层数由输入数据的时间片的数量决定。在一个batch中,通常各个样本的长度都是不同的,测试时当我们遇到长度大于任何一个训练样本的测试样本,无法找到保存的归一化统计量,所以BN无法运行。

LN 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小 mini-batch 场景、动态网络场景和 RNN,特别是自然语言处理领域。此外,LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间。

但是,BN 的转换是针对单个神经元可训练的——不同神经元的输入经过再平移和再缩放后分布在不同的区间,而 LN 对于一整层的神经元训练得到同一个转换——所有的输入都在同一个区间范围内。如果不同输入特征不属于相似的类别(比如颜色和大小),那么 LN 的处理可能会降低模型的表达能力。

2 LN (layer notmalization)

LN是一个独立于batch size的算法,所以无论样本数多少都不会影响参与LN计算的数据量,从而解决BN的两个问题。

隐层节点数量 ,网络层数 ,LN的归一化统计量

上面统计量的计算是和样本数量没有关系的,它的数量只取决于隐层节点的数量,所以只要隐层节点的数量足够多,我们就能保证LN的归一化统计量足够具有代表性。归一化后的值

类似BN,LN同样需要一组参数来保证归一化操作不会破坏之前的信息,在LN中这组参数叫做增益(gain) 和偏置(bias) 。假设激活函数为 ,最终LN的输出为:

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

算法工程师面试那些事儿
算法工程师面试那些事儿

algolearn

2021/11/29  阅读:32  主题:默认主题

作者介绍

algolearn