两种归一化的计算公式:
Pre Norm: xt+1=xt+Ft(Norm(xt))
Post Norm: xt+1=Norm(xt+Ft(xt))
参照我们的plato模型:我们的plato模型使用的归一化是pre Norm
结论是在大多数情况下,post Norm的效果都优于pre Norm。以下是证明过程:
以下是pre Norm的计算公式:
当t足够大时,Ft-1(Norm(xt-1)) 近似等于 Ft(Norm(xt)),因此原本一个t层的模型与t+1层和,近似等效于一个更宽的t层模型,所以在Pre Norm中多层叠加的结果更多是增加宽度而不是深度,层数越多,这个层就越“虚”。
而我们知道,对深度学习而言,网络深度的重要性往往大于网络的宽度。
但是pre Norm相较于post Norm还是在一些方面是有优势的:可以发现post Norm在梯度范数是不均匀的,越深的层的梯度越大,pre Norm的梯度范数是均匀的。这种结构明显更利于优化器进行优化。
但是我们这里微调使用的是post 归一化,主要原因是为了让我们模型的训练更加稳定。