对于预训练大型语言模型,训练的不稳定性是一个挑战性的问题。为了缓解这个问题,标准化被广泛地用作稳定神经网络训练的策略。在原始的Transformer中,采用了LayerNorm。近期,有几种高级的标准化技术被提出,作为LayerNorm的替代,例如RMSNorm和DeepNorm。

LayerNorm:在深度学习的早期,BatchNorm被广泛采用,它在众多模型中都有出色的表现。但是,当我们处理有变长序列或小批量数据时,BatchNorm就显得力不从心。这时,LayerNorm应运而生。与BatchNorm不同,LayerNorm对每一层的所有激活函数进行标准化,使用它们的均值和方差来重新定位和调整激活函数。其公式如下:

\frac{\mathbf {x} -\mathbf \mu}{\sqrt{\mathbf \sigma}}\cdot \gamma +\beta, \text{~~~} \mathbf \mu=\frac 1 d \sum_{i=1}^d x_i, \text{~~~} \mathbf \sigma=\sqrt{\frac 1 d \sum_{i=1}^d ( x_i-\mathbf \mu))^2}

RMSNorm:尽管LayerNorm非常有用,但研究者们并没有停下探索的步伐。RMSNorm就是这样一个新的尝试。它通过仅使用激活函数的均方根来重新调整激活,从而提高了训练速度。一些最新的模型,例如Gopher和Chinchilla,已经采用了RMSNorm,并展示了其在训练速度和性能上的优越性。其公式如下:

\frac {\mathbf x}{\mathrm{RMS}(\mathbf x)} \cdot \gamma, \text{~~~} \mathrm{RMS}(\mathbf x)=\sqrt {\frac 1 d \sum_{i=1}^d x_i^2}

DeepNorm:为了进一步稳定深度Transformer的训练,Microsoft推出了DeepNorm。这是一个创新的方法,它不仅用作标准化,还作为残差连接。有了DeepNorm的帮助,我们现在可以轻松训练高达1000层的Transformer模型,同时保持稳定性和高性能。其中,GLM-130B就是采用了这种技术的代表。其公式如下:

\mathrm {LayerNorm}(\alpha \cdot \mathbf x + \mathrm{Sublayer}(\mathbf x))

其中\mathrm{Sublayer}是FFN或Self-Attention模块。