1 原理
简单总结: batchnorn 和layernorm是在不同维度上对特征进行归一化处理。
batchnorm在batch这一维度上, 对一个batch内部所有样本, 在同一个特征通道上进行归一化。 举个例子, 假设输入的特征图尺寸为16x224x224x256, 这4个维度分别是B, H, W,D, 那么batchnorm就是对256个通道的每一个通道, 在16个样本上进行归一化计算。
layernorm则是对batch内的每一个样本,在所有通道的特征进行归一化计算。
如下图形象地说明了2种归一化的方式的区别:
2 应用
batchnorm通常用在cv中, layernorm通常应用在nlp中。原因如下:
-
cv 中的batch通常较大, 在batch这个维度求均值方差是有意义的, 而nlp中batch通常较小, 求均值方差失去意义。
-
图像特征通常每个通道是较为独立的, 比如一个通道关注颜色, 另一个通道可能关注纹理等等,不同通道之间可比性较低, 而对同一个通道, 不同图像样本区别可能不大, 有可比性。 而自然语言任务中刚好相反, 不同样本没什么可比性, 而一个样本的不同特征可比性比较强。