跳转到内容
输入关键词后按 Enter 打开第一个结果。

注意力机制三级详解

一、入门级:高中生 / 非技术人群

Section titled “一、入门级:高中生 / 非技术人群”

想象你在参加一场热闹的晚宴,周围有十几个人同时在聊天。如果你想听清楚某个人说的话,你会怎么做?你会不自觉地把注意力集中在那个人身上,同时忽略其他人的声音——即使他们也在说话。

注意力机制做的就是这么一件事:让 AI 学会”把注意力放在重要的地方”。

在阅读理解中,这特别有用。比如这句话:“小明虽然个子不高,但打篮球非常厉害。“当我们读到”他”的时候,大脑会自动把注意力放在”小明”上,而不是”个子”或”篮球”上。AI 以前做不到这一点——它会把所有词一视同仁地处理,很容易搞混谁是谁。

有了注意力机制后,AI 可以给每个词分配一个”关注权重”。读到”他”的时候,“小明”的权重最高,其他词的权重很低。这样 AI 就”知道”了”他”指的是小明。

这就是 2017 年 Google 提出的 Transformer 模型的核心思想。后来大名鼎鼎的 ChatGPT 就是在这个基础上发展起来的。简单来说,注意力机制让 AI 学会了像人一样”聚焦关键信息”,而不是对所有信息一视同仁。这个看似简单的能力,彻底改变了人工智能的发展方向。


注意力机制的核心可以用三个矩阵来理解:Query(查询)Key(键)Value(值)。这三个概念借用了数据库的术语,但含义有所不同。

打个比方:你在图书馆找书。你心里想找的主题就是 Query,每本书封面上的标签是 Key,而书的内容是 Value。你用 Query 去匹配所有书的 Key,匹配度越高的书,你花的时间越多(权重越大),最终得到的是所有书内容的加权求和

假设输入序列有 n 个词,每个词用维度为 d 的向量表示:

  1. 线性变换:将输入 X 分别乘上三个可学习的权重矩阵,得到 Q、K、V:

    • Q = XW_Q,K = XW_K,V = XW_V
  2. 计算注意力分数:用 Q 和 K 的点积衡量每个词对其他词的”相关程度”:

    • scores = QKᵀ,结果是一个 n×n 的矩阵
  3. 缩放 + Softmax:将分数除以 √d_k(防止梯度消失),再用 softmax 归一化为概率分布:

    • α = softmax(QKᵀ / √d_k)
  4. 加权求和:用注意力权重对 V 做加权求和,得到最终输出:

    • output = αV

softmax 的作用是让所有权重加起来等于 1,这样输出就是 V 中各行的”加权平均”。权重越大的词,对输出的影响越大。

这个过程被称为 Scaled Dot-Product Attention,是 Transformer 中最基本的注意力单元。通过 Q/K/V 的巧妙设计,模型能够自动学习到”应该关注谁”。


单头注意力将整个嵌入维度映射到一个表示空间,存在信息瓶颈。Multi-Head Attention 将 Q/K/V 分别投影到 h 个不同的子空间(d_k = d_model / h),独立计算注意力后拼接:

MultiHead(Q, K, V) = Concat(head₁, …, headₕ) Wᴼ

其中 headᵢ = Attention(QWᵢᑫ, KWᵢᵏ, VWᵢᵛ)

多头机制让模型能同时关注不同子空间中的不同位置,捕获诸如句法依存、语义共指、长距离搭配等异构关系。实验表明,h=8 在大多数场景下已足够。

自注意力机制本身是置换不变的(permutation equivariant),无法区分词序。为此需要注入位置信息。原始 Transformer 使用正弦/余弦编码:

  • PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
  • PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

这种编码的好处是可以处理未见过的序列长度,且不同维度形成不同频率的周期函数。后续工作如 RoPE(Rotary Position Embedding)通过旋转矩阵将位置信息注入 Q/K 的交互中,具有更好的长度外推性,已成为主流方案(LLaMA、Mistral 等均采用)。

设序列长度为 n,模型维度为 d:

模型每层计算复杂度顺序操作最大路径长度
TransformerO(n²d)O(1)O(1)
RNN(循环)O(nd²)O(n)O(n)
CNN(一维卷积)O(knd²)O(1)O(n/k)

自注意力的 O(n²) 复杂度是主要瓶颈——注意力矩阵的规模与序列长度平方成正比。这催生了大量高效注意力变体:Sparse Attention(如 Longformer 的局部+全局模式)、Linear Attention(用核函数近似 softmax,将复杂度降至 O(n))、Flash Attention(通过分块计算减少 HBM 读写,实现 O(n²) FLOPs 但大幅降低 wall-clock time)。

  • vs RNN:RNN 的顺序计算天然限制了并行性,且梯度在长序列中容易消失/爆炸。注意力机制直接建模任意两个位置的关系,最大路径长度为 O(1),且完全可并行。
  • vs CNN:卷积通过局部感受野和堆叠层捕获关系,路径长度为 O(n/k)。但卷积难以建模跨块的远程依赖(除非堆叠极多层),而注意力一步直达任意位置。

Transformer 的成功本质上是用计算换归纳偏置:放弃了 RNN 的时序假设和 CNN 的局部性假设,让模型从数据中自由学习依赖关系,在数据量充足时表现更强。这也是预训练大语言模型采用 Transformer 架构的根本原因。