422 Chapter 12. 基于自注意力的模型 肖桐 朱靖波
12.5 残差网络和层标准化
Transformer 编码器、解码器分别由多层网络组成(通常为 6 层),每层网络又包
含多个子层(自注意力网络、前馈神经网络)。因此 Transformer 实际上是一个很深
的网络结构。再加上点乘注意力机制中包含很多线性和非线性变换;且注意力函数
Attention(·) 的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的
角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失。解决这
个问题的一种办法就是使用残差连接
[423]
,此部分内容已经在第九章进行了介绍,这
里不再赘述。
Self-Attention
Add & LayerNorm
Feed Forward Network
Add & LayerNorm
Embedding
+
Position
编码器输入: 我 很 好
编码器
Self-Attention
Add & LayerNorm
Encoder-Decoder Attention
Add & LayerNorm
Feed Forward Network
Add & LayerNorm
Output layer
Embedding
+
Position
解码器输入: <sos> I am fine
解码器
解码器输出: I am fine <eos>
图 12.14 残差和层标准化在模型中的位置
在 Transformer 的训练过程中,由于引入了残差操作,将前面所有层的输出加到
一起,如下:
x
l+1
= F (x
l
) + x
l
(12.12)
其中 x
l
表示第 l 层网络的输入向量,F(x
l
) 是子层运算,这样会导致不同层(或子层)
的结果之间的差异性很大,造成训练过程不稳定、训练时间较长。为了避免这种情
况,在每层中加入了层标准化操作
[422]
。图12.14 中的红色方框展示了 Transformer 中
残差和层标准化的位置。层标准化的计算如下:
LN(x) = g ·
x −µ
σ
+ b (12.13)
该公式使用均值 µ 和方差 σ 对样本进行平移缩放,将数据规范化为均值为 0,方差
为 1 的标准分布。g 和 b 是可学习的参数。