Transformer 架构是一种围绕自注意力构建的神经网络设计。它不再主要依赖一步一步的顺序处理,而是让每个 token 都能从序列中其他相关 token 收集信息。

这也是 Transformer 在语言和其他序列任务中表现出色的原因。如果一个词依赖于另一个距离很远的词,注意力机制会在它们之间提供一条直接的信息路径。

Transformer 架构是什么意思

一个 Transformer 模块并不只是应用一个公式,但自注意力是其中的核心思想。在自注意力中,每个 token 会产生三个向量:

  • query(查询),表示这个 token 正在寻找什么
  • key(键),表示这个 token 可用于匹配的内容
  • value(值),表示可以传递出去的信息

如果把 token 表示排成矩阵 XX,那么一个注意力头通常会构造

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \qquad K = XW_K, \qquad V = XW_V

其中 WQW_QWKW_KWVW_V 是通过训练学到的矩阵。

标准的缩放点积注意力公式是

Attention(Q,K,V)=softmax ⁣(QKTdk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V

这里的 dkd_k 是 key 的维度。除以 dk\sqrt{d_k} 的缩放操作有助于防止随着维度增大,原始点积分数变得过大。

softmax 是按行应用的。每一行都在回答一个 token 的问题:“我应该对其他 token 分配多少注意力?”

用通俗语言理解自注意力如何工作

自注意力通常不会只选中一个 token 而忽略其他所有 token。它构造的是 value 向量的加权平均。

如果一个 token 与另一个 token 的 key 匹配得很强,那么后者会得到更大的权重。如果匹配较弱,权重就会更小。因此,一个 token 的输出就是来自整个序列信息的、带有上下文感知的混合结果。

这有助于处理主谓一致、代词指代以及其他长距离关系。模型不需要让信息经过许多中间步骤后才能被利用。

自注意力计算示例

考虑单个注意力头中的一个 query 和两个候选 token。为了让计算更简单,取 dk=1d_k = 1

假设当前 token 的 query 是

q=[2]q = [2]

两个候选 token 的 key 是

k1=[2],k2=[1]k_1 = [2], \qquad k_2 = [1]

对应的 value 是

v1=[10],v2=[4].v_1 = [10], \qquad v_2 = [4].

原始注意力分数就是点积:

qk1T=4,qk2T=2.qk_1^T = 4, \qquad qk_2^T = 2.

因为 dk=1d_k = 1,缩放因子是 1=1\sqrt{1} = 1,所以缩放后的分数仍然是 4422

现在对这两个分数应用 softmax:

α1=e4e4+e20.881,α2=e2e4+e20.119.\alpha_1 = \frac{e^4}{e^4 + e^2} \approx 0.881, \qquad \alpha_2 = \frac{e^2}{e^4 + e^2} \approx 0.119.

注意力输出就是加权组合

α1v1+α2v2=0.881(10)+0.119(4)9.29.\alpha_1 v_1 + \alpha_2 v_2 = 0.881(10) + 0.119(4) \approx 9.29.

核心思想很简单:因为 query 与 k1k_1 的匹配强于与 k2k_2 的匹配,所以输出会更接近 v1v_1

这就是一个更大模型内部的基本模式。真实的 Transformer 会在更高维空间中、对许多 token 同时执行这一过程,但计算思路是一样的。

Transformer 模块里还有什么

Transformer 不只是一个注意力公式。一个标准模块通常包含:

  • 多头注意力,使模型能够同时学习多种不同类型的关系
  • 逐位置前馈网络,在注意力之后变换每个 token 的表示
  • 残差连接,帮助在层与层之间保留并细化信息
  • 层归一化,帮助稳定训练过程

在最初用于序列到序列任务的 Transformer 架构中,模型包含编码器堆叠和解码器堆叠。

  • 编码器对输入序列使用自注意力。
  • 解码器使用带掩码的自注意力,因此某个位置不能提前看到未来的输出 token。
  • 解码器还可以使用交叉注意力,此时 query 来自解码器,而 key 和 value 来自编码器输出。

许多现代语言模型只使用解码器这一侧。核心的注意力思想仍然存在,但整体架构专门针对下一个 token 预测进行了设计。

为什么 Transformer 需要位置信息

仅靠注意力,对于输入 token 的排列顺序,它是置换等变的。通俗地说,如果你只对同一组 token 向量应用注意力而不加入位置信息,模型本身并不知道哪个 token 先出现。

这就是为什么 Transformer 要加入位置信息,比如可学习的位置嵌入或位置编码。没有这个额外信号,像语言这样对顺序敏感的任务就会更难被正确建模。

关于 Transformer 架构的常见误区

认为注意力就是整个 Transformer

注意力是核心思想,但这个架构还依赖前馈层、残差路径、归一化和位置信息。

混淆自注意力和交叉注意力

在自注意力中,QQKKVV 来自同一个序列。在交叉注意力中,它们并不全部来自同一个来源。

忽略掩码的作用

仅解码器语言模型在训练和推理时都需要因果掩码,这样一个 token 才不能关注未来的 token。

把注意力权重当成完整解释

注意力权重可能提供有用信息,但它们并不能完整证明模型的推理过程。最终行为还取决于 value 向量、后续层以及非线性变换。

Transformer 模型在什么时候使用

Transformer 被广泛用于语言建模、翻译、摘要、代码生成、语音以及许多视觉任务。当序列或集合中的关系比纯粹的局部模式更重要时,它们尤其有效。

但它们并不是所有场景下的万能方案。对于非常小的数据集、严格的实时约束,或者局部归纳结构最重要的问题,其他架构仍然可能更合适。

试着做一道类似的问题

取一个由三个词组成的短语,并聚焦其中一个词。判断另外两个词中哪些应该获得较高的注意力权重,并说明原因,然后构造一个很小的 query-key-value 例子来匹配这种直觉。

如果你想再进一步,可以手算一个很小的注意力输出。这通常是从“我知道公式”走向“我理解这个架构在做什么”的最快路径。

需要解题帮助?

上传你的问题,几秒钟内获得经过验证的分步解答。

打开 GPAI Solver →