跳到正文

2017语言模型

Transformer

Attention Is All You Need

理解一个词,不一定要沿着句子逐个传递信息。Transformer 让不同位置直接交换信息,用注意力重新组织序列建模。先看一个小例子,再拆开它的完整结构。

  • Ashish Vaswani 等 8 位作者
  • NeurIPS · 2017
查看论文原文

01背景问题

读懂一句话,为什么一定要排队?

想象你和同学一起翻译一句话。读到“它”时,你可能需要回头看前面的名词;理解一个动作时,也可能需要参考句末的信息。词的含义常常依赖上下文,而不只是它旁边的词。

论文关注的一个瓶颈是:循环神经网络通常沿序列逐步计算,后一个位置依赖前一个位置的状态,因此单个样本内的计算不容易完全并行。距离很远的信息,也要经过多次传递。

把“依次传话”换成“直接交流”

Transformer 用自注意力让一个位置直接参考其他位置。可以把它想成同学们同时摊开整句话:每个人根据自己的问题,挑选值得参考的信息。这个比喻帮助理解信息流;模型实际处理的是向量,不是人的阅读策略。

这篇论文的突破,是用注意力替代序列建模中的循环和卷积结构;注意力机制本身在此之前已经存在。

依据:原论文 §1–2:研究动机与背景。

02核心机制

注意力,就是有选择地汇总信息

选一个词,观察它如何给其他位置分配权重;再试试遮住右侧位置。

动手试 · 一个位置,如何参考整句话?01 / SELF-ATTENTION

先选择一个词,把它作为当前查询 Q。

“小猫”把多少注意力分给每个位置?

小猫
37.1%
坐在
18.8%
温暖的
11.0%
垫子上
33.1%

这些权重之和为 100%(显示值有四舍五入)。接下来,模型按这些比例混合各位置的 V 向量,得到当前位置的新表示。

教学示意:按短语分成 4 个位置,用手工设置的二维 Q、K 实际计算权重;不是论文模型的分词、参数或可解释性结论。

Q、K、V 各自做什么?

  • Q · Query:当前位置用于发起查询的向量,可以类比“我需要什么信息”。
  • K · Key:每个位置用于匹配查询的向量,可以类比“我有哪些可供匹配的特征”。
  • V · Value:最终被汇总的信息向量。匹配程度决定取多少,内容来自 V。

自注意力中的 Q、K、V 都由同一序列的表示分别投影得到。先计算 Q 与 K 的点积,再按维度缩放、经 softmax 转成权重,最后对 V 加权求和。

Attention(Q, K, V) = softmax(QKᵀ / √dₖ) V

为什么还要“多头”?

只做一次汇总,可能把不同关系混在一起。多头注意力使用多组学到的投影,分别计算,再把结果拼接并投影。不同头可以捕捉不同关系,但并不是预先指定某个头只能看语法、另一个只能看指代。

依据:原论文 §3.2:注意力公式与多头机制。

03模型结构

一边理解输入,一边生成输出

原论文提出的是编码器—解码器结构,主要用于机器翻译。下面按信息流方向简化展示。

ENCODER / 理解原句

编码器

输入词向量 + 位置编码
以下模块堆叠 6 层
多头自注意力
逐位置前馈网络

每个子层都有残差连接与层归一化。

带上下文的输入表示
DECODER / 写出译文

解码器

右移的目标词向量 + 位置编码
以下模块堆叠 6 层
带因果遮罩的自注意力
交叉注意力:参考编码器输出
逐位置前馈网络
线性层 + softmax → 下一个词
编码器输出 提供交叉注意力的 K、V;Q 来自解码器
依据原论文图 1 重绘的简化示意,按从上到下的信息流排列;解码器各子层也包含残差连接与层归一化。

两个容易漏掉的细节

位置信息需要补进去。自注意力本身没有循环带来的先后顺序,论文把位置编码加到词向量上,让模型利用序列顺序。

训练并行,不等于生成时同时输出整句。训练时,右移的目标序列配合因果遮罩,可以同时计算多个位置的预测;推理时,这个自回归解码器仍然逐步生成后续词。

依据:原论文 §3 与图 1:完整模型结构。

04实验与边界

更好的翻译结果,更容易并行的训练

论文在 WMT 2014 机器翻译任务上验证这套结构。下面展示英语到德语任务的测试结果,分数来自原论文表 2;BLEU 衡量译文与参考译文的匹配程度,不能当作通用智能分数。

Transformer · Base27.3 BLEU

8 张 P100 GPU
训练约 12 小时

Transformer · Big28.4 BLEU

8 张 P100 GPU
训练约 3.5 天

训练时长依据 §5.2,属于论文当时的硬件与实验设置。查看原论文 §6.1 与表 2。

读完后,记住这三个边界

  • 标题不表示网络里只有注意力。模型仍包含前馈网络、词嵌入、位置编码、残差连接和归一化。
  • 直接交流也有代价。标准全局自注意力需要考虑位置两两之间的关系,注意力矩阵大小随序列长度平方增长。长输入的成本依然是问题。
  • 论文验证的是具体任务。翻译成绩支持这种架构的有效性,并不直接证明它具有人类式理解,也不证明注意力权重就是完整的推理解释。

最值得带走的思路:先让相关信息高效地相遇,再学习怎样组合它们。