BN与LN的区别

网友投稿 1018 2022-05-30

RNN是可以用BN的,只需要让每个Batch的长度相等,可以通过对每个序列做补长,截断来实现。RNN不适合用BN的原因:Normalize的对象(position)来自不同分布。CNN中使用BN,对一个batch内的每个channel做标准化。多个训练图像的同一个channel,大概率来自相似的分布。(例如树的图,起始的3个channel是3个颜色通道,都会有相似的树形状和颜色深度)RNN中使用BN,对一个batch内的每个position做标准化。多个sequence的同一个position,很难说来自相似的分布。(例如都是影评,但可以使用各种句式,同一个位置出现的词很难服从相似分布)所以RNN中BN很难学到合适的μ和σ,将来自不同分布的特征做正确变换,甚至带来反作用,所以效果不好。

BN是不适用于RNN这种动态结构的。如果将BN应用在RNN中,由于BN是以batch为单位统计归一化变量的,所以不同长度的样本的时间片如何计算将十分困难。在BN中我们需要根据训练数据保存两个统计量 μ和σ,如果在测试时一组样本的长度大于训练的所有样本,那么它的后面的时间片需要的μ和σ该怎么办?

BN与LN的区别

LN是按与x轴平行的方向做归一化(即[C,T]),这个被证明是在RNN中表现比较好的一种归一化方法,因为在每个时间片都会获得相同的数量(通道数)个数值的归一化统计量。LN中不同时间片的μ和σ是共享的。

batch是“竖”着来的,各个维度做归一化,所以与batch size有关系。

layer是“横”着来的,对一个样本,不同的神经元neuron间做归一化。

Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。

Batch Normalization 是对这批样本的同一维度特征(每个神经元)做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。

机器学习 神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python编程:日常练习-1
下一篇:SAP CRM和C4C的客户主数据修改历史记录查询
相关文章