内容提要
文章梳理了从Bahdanau注意力到Transformer的演进,重点介绍Transformer完全基于注意力机制、摒弃递归与卷积、采用编码器-解码器结构,包含多头自注意力和前馈网络,可大幅并行化;同时讲解缩放点积注意力、多头注意力、位置编码,以及BERT、ViT、Swin等衍生模型,并对比Bahdanau与Luong注意力机制。
延伸解读
从RNN到Transformer:并行化为何关键
文章指出,递归模型按序列顺序计算,无法在训练实例内并行化,序列较长时内存约束会限制批处理。Transformer摒弃递归,完全依赖注意力,将任意两位置的关联操作数降至O(1),从而大幅提升并行化,在8个P100 GPU上训练12小时即可达到新翻译水平。这解释了Transformer在长序列任务中的效率优势。
缩放点积注意力的设计细节
缩放点积注意力将查询与键的点积除以√dk后做softmax。文章解释,当dk较大时,点积幅度增大,会将softmax推向梯度极小的区域,除以√dk可缓解此问题,使梯度更大、效果更好。此外,点积注意力可利用高度优化的矩阵乘法,比加法注意力更快、空间效率更高。
多头注意力与掩码机制的作用
多头注意力将查询、键、值线性投影到多个子空间,允许模型在不同位置共同关注不同表征子空间的信息,避免单头平均化抑制。解码器自注意力中,通过掩码将未来位置的权重置为-∞,确保预测仅依赖小于当前位置的已知输出,保持自回归特性。
Bahdanau与Luong注意力的主要差异
Bahdanau使用双向RNN编码器,将上一隐状态与每个annotation通过加法对齐模型计算注意力分数;Luong则放弃双向编码器,使用LSTM顶层隐藏状态,并引入乘法注意力,还提出全局与局部注意力,局部注意力通过窗口减少长句计算成本。两者在隐状态使用和注意力计算方式上不同。
Q&A
Transformer模型的核心创新是什么?
Transformer完全基于注意力机制,摒弃了递归和卷积,采用编码器-解码器结构,包含多头自注意力和前馈网络,可大幅并行化。
Bahdanau注意力机制是如何工作的?
Bahdanau注意力使用双向RNN生成annotation,通过alignment model计算上一步解码器隐状态与每个annotation的匹配分数,softmax得到权重,加权求和得到上下文向量,再与解码器隐状态和上一输出结合生成当前输出。
Luong注意力与Bahdanau注意力有哪些主要区别?
Luong注意力提出global和local两种机制,使用乘法注意替代加法注意,放弃双向编码器而使用LSTM顶层隐藏状态,且计算y使用的隐状态不同。
Transformer中的缩放点积注意力为什么要除以√dk?
当dk较大时,点积的幅度会变大,导致softmax梯度极小,除以√dk可以使得梯度更大,效果更好。
Transformer的编码器和解码器结构是怎样的?
编码器由6层相同层堆叠,每层包含多头自注意力和前馈网络,带残差连接和层归一化。解码器同样6层,但额外有编码器-解码器注意力子层,并修改自注意力防止关注后续位置。
Transformer有哪些衍生模型?
BERT(双向编码器表示,有base和large版本)、ViT(用于图像分类的纯Transformer)、Swin Transformer(使用移位窗口的层次化视觉Transformer)。