TellWorldAI 世界档案
问档案English

首页›原理

原理

注意力机制

注意力机制衡量序列中每个元素相对于其他元素的重要程度并给出权重,使模型能直接读取输入的任意位置。它是 transformer 的核心运算。

时代 深度学习

是什么

注意力机制(attention mechanism)判断一个序列中每个元素相对于其他元素的重要程度,并在整个序列上产生一组权重[1]。循环网络只能依赖上一步传下来的隐藏状态,而注意力让每个词元(token)直接访问句子的任意部分[1]。有一个直接后果值得说清楚:如果不加位置编码(positional encoding),注意力具有排列不变性(permutation invariant),词序必须靠别的途径提供[1]。

怎么工作

描述注意力通常用三个角色:查询(query)表示模型当前在找什么,一组键(key)表示每个位置提供什么,一组值(value)表示真正被传递的内容。打分函数把查询与每个键比较,分数被归一化成权重,输出就是值的加权混合。

常用的打分函数有两种。加性注意力(additive attention)把查询和键送进一个 tanh 非线性层和一个可学习的权重向量;乘性注意力(multiplicative attention,也叫点积注意力)用的是缩放点积(scaled dot product)[1]。现代模型采用的缩放点积形式是:先算 Q 乘以 K 的转置,除以键维度的平方根,做 softmax,再乘以 V[1]。

举一个小例子就清楚了。在机器翻译中,模型预测某个目标词时,可以自动软搜索(soft-search)源句中与这个词相关的部分,而不必先把源句切成硬性片段[2]。源句的每个位置都会得到一个权重,而且每输出一步,权重都会重新计算。

从哪来

2014 年,Bahdanau、Cho 和 Bengio 提出加性注意力,目的是去掉序列到序列翻译中的定长向量瓶颈[1]。这篇论文首次提交于 2014 年 9 月,其中猜测编码器-解码器翻译模型使用的定长向量构成了性能瓶颈[2];作者在该架构上做扩展,让模型自动软搜索源句中与预测某个目标词相关的部分,而不必把这些部分显式地组织成硬性片段[2]。用这一方法,作者在英语到法语翻译上取得了与当时最好的基于短语的系统相当的翻译性能[2]。

2015 年,Luong 把点积(乘性)注意力用于序列到序列机器翻译[1]。自注意力(self-attention)指查询、键和值都来自同一个序列,它从可微分神经计算机(differentiable neural computer)、神经图灵机(neural Turing machine)和 intra-attention 等方向生长出来[1]。2017 年,Vaswani 与同事把这些线索合并成 transformer,论文题为《Attention Is All You Need》[1]。

今天用在哪里

自注意力处在 transformer 的中心位置,而缩放点积形式正是现代模型使用的那种形式[1]。由于每个位置都能一步读取其他所有位置,这一机制用对整个序列的直接查询,取代了循环网络逐步交接信息的方式[1]。

局限

注意力矩阵的大小随词元数量的平方增长,因此长输入需要大量 GPU 显存[1]。FlashAttention 通过分块处理计算来降低显存占用,KV 缓存(KV caching)和 FlexAttention 是进一步的优化[1]。还有一层限制不在计算而在解释:注意力分数不一定等同于对模型行为的解释,某个位置权重大,本身并不构成对输出的说明[1]。

注释与来源

  1. Attention (machine learning)https://en.wikipedia.org/wiki/Attention_(machine_learning)
  2. Neural Machine Translation by Jointly Learning to Align and Translatehttps://arxiv.org/abs/1409.0473

引用本页: 注意力机制. TellWorld, https://www.tellworld.net/zh/learn/attention-mechanism. 更新于 2026-11-07