batch-normalization是根据每一列的特征进行批量归一化,把一个batch(N张图片)中同一通道的特征(w*h的特征图),将其标准化。可以理解为对batch中的所有图的每一层像素(也就是不同的通道)进行标准化。通常在图像领域用的多,CNN
layer-normalization是根据每一个批次batch来批量归一化,把batch中的一个样本(一个句子)在当前层的所有特征(在该句子中的若干词语的向量特征),将其标准化。可以理解为对一个句子的整体进行标准化。通常在自然语言处理领域用的多,Transformer
总结:
BatchNorm是对一个batch-size样本内的每个特征做归一化,LayerNorm是对每个样本的所有特征做归一化。
BN抹杀了不同特征之间的大小关系,但是保留了不同样本间的大小关系,即不同图片的的同一通道的相对关系是保留的,不同图片的同一通道的特征是可以比较的,同一图片的不同通道的特征则是失去了可比性;
LN抹杀了不同样本间的大小关系,但是保留了一个样本内不同特征之间的大小关系,同一句子中词义向量(V1, V2, …, VL)的相对大小是保留的,或者也可以说LayerNorm不改变词义向量的方向,只改变它的模。不同句子的词义向量则是失去了可比性。
(理解:BN对batch数据的同一特征进行标准化,变换之后,纵向来看,不同样本的同一特征仍然保留了之前的大小关系,但是横向对比样本内部的各个特征之间的大小关系不一定和变换之前一样了,因此抹杀或破坏了不同特征之间的大小关系,保留了不同样本之间的大小关系;LN对单一样本进行标准化,样本内的特征处理后原来数值大的还是相对较大,原来数值小的还是相对较小,不同特征之间的大小关系还是保留了下来,但是不同样本在各自标准化处理之后,两个样本对应位置的特征之间的大小关系将不再确定,可能和处理之前就不一样了,所以破坏了不同样本间的大小关系)