Pre-Norm和Post-Norm之间的对比是一个“老生常谈“的问题,目前也没有一个比较好的结论解释清楚,当前比较明确的结论是:同一设置下,Pre-Norm结构往往更加容易训练,但最终效果不如Post-Norm。Pre Norm更容易训练好理解,因为它的恒等路径更突出,但为什么它效果反而没那么好呢?
Pre Norm和Post Norm的式子分别如下:
Pre Norm:
x
t
+
1
=
x
t
+
F
t
(
Norm
(
x
t
)
)
Post Norm:
x
t
+
1
=
Norm
(
x
t
+
F
t
(
x
t
)
)
\text{Pre Norm: } \quad \boldsymbol{x}_{t+1} = \boldsymbol{x}_t + F_t(\text{Norm}(\boldsymbol{x}_t)) \\\text{Post Norm: }\quad \boldsymbol{x}_{t+1} = \text{Norm}(\boldsymbol{x}_t + F_t(\boldsymbol{x}_t))
Pre Norm: xt+1=xt+Ft(Norm(xt))Post Norm: xt+1=Norm(xt+Ft(xt))
在Transformer中,这里的NormNorm主要指Layer Normalization,但在一般的模型中,它也可以是Batch Normalization、Instance Normalization等,相关结论本质上是通用的。
在原始的 Transformers 论文中,使用的是 Post Norm,如下所示:
因篇幅问题不能全部显示,请点此查看更多更全内容