Why do we need normalization?
存在问题:
内部协变量偏移 (Internal Covariate Shift): 在训练中,由于前面层的参数在不断更新,导致后面层接收到的输入数据分布一直在变化,就像在瞄准一个不断移动的目标,学习过程会非常困难。
normalization可以强制让每一层处理前的数据拉回一个标准的、稳定的分布上(均值0 方差1)
- norm可以让数据分布更稳定,促进模型收敛
- 减轻梯度消失/爆炸
- 可以用更大的学习率
BN vs LN
BN 跨样本,常用于图像,batch大,如CNN,每个通道(如RGB)都不同,
LN 跨特征,适用于seq2seq,因其seq\_len不确定,难以使用BN,同时NLP中,token通常被embedding为高维向量(如果有768维,那就是768个特征)