LayerNorm层归一化和bn的区别
https://blog.csdn.net/Kelly_Ai_Bai/article/details/135081885
05. 为什么transformer块使用LayerNorm而不是BatchNorm
Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。LN不依赖于batch的大小和输入sequence的长度,因此可以用于batchsize为1和RNN中sequence的normalize操作。
为什么BN在NLP中效果差
BN计算特征的均值和方差是需要在batch_size维度,而这个维度表示一个特征,比如身高、体重、肤色等,如果将BN用于NLP中,其需要对每一个单词做处理,让每一个单词是对应到了MLP中的每一个特征明显是违背直觉得;
BN是对单词做缩放,在NLP中,单词由词向量来表达,本质上是对词向量进行缩放。词向量是什么?是我们学习出来的参数来表示词语语义的参数,不是真实存在的。
为什么LayerNorm单独对一个样本的所有单词做缩放可以起到效果
layner-norm 针对每一个样本做特征的缩放。换句话讲,保留了N维度,在C/H/W维度上做缩放。
layner-norm 也是在对同一个特征下的元素做归一化,只不过这里不再是对应N(或者说batch size),而是对应的文本长度。