资讯

注意力机制是什么?让模型自动关注最相关的那部分信息

2026-11-053 分钟阅读百科
TL;DR注意力机制(Attention Mechanism)让模型在处理每个位置时按相关性为输入的各部分分配权重,再加权汇总信息,2014 年 Bahdanau 等人将其引入神经机器翻译,2017 年 Transformer 以缩放点积自注意力和多头注意力为核心,计算上通过查询、键、值实现,是大语言模型的基础,其平方复杂度催生了 FlashAttention 等优化。

注意力机制(Attention Mechanism)是一种让神经网络在处理信息时,能够自动地把“注意力”集中在最相关的那部分内容上的技术。它模仿了人类的注意力:我们看一张照片时,会自然地聚焦在主要的人物身上;读一句话时,理解某个词往往需要特别留意与它相关的其他几个词。注意力机制是 Transformer 和今天大语言模型的核心。

它的起源

注意力机制最早在机器翻译中取得了重大的成功。2014 年前后,神经机器翻译使用编码器-解码器结构:编码器读完整个源语言句子,把它压缩成一个固定长度的向量,解码器再根据这个向量生成译文。问题在于,把一整句话的所有信息都塞进一个固定长度的向量里,句子一长,信息就会丢失,翻译效果明显下降。2014 年,蒙特利尔大学的 Dzmitry Bahdanau、Kyunghyun Cho 和 Yoshua Bengio 提出了注意力机制:解码器在生成每一个词时,不再只依赖那一个向量,而是回头查看源句子中所有词的表示,并根据它们与当前要生成的词的相关程度,给它们分配不同的权重,再加权汇总。比如翻译“我爱北京”时,生成“Beijing”这个词时,模型会把大部分注意力放在“北京”上。这大大提升了长句的翻译质量,而且注意力权重本身还能直观地显示出词语之间的对应关系。

查询、键和值

现代的注意力机制通常用“查询、键、值”三个概念来描述,可以用查资料来打比方:查询是你想找的东西;每份资料都有一个标签,这是键;资料的内容就是值。你拿着查询与每个键进行比较,越匹配的资料,你越重点地参考它的内容。在注意力机制中,每个位置都会被转换成查询、键和值三个向量。计算某个位置的输出时,用它的查询向量与所有位置的键向量计算相似度,通常是点积;把这些相似度除以向量维度的平方根进行缩放,避免数值过大;再经过 softmax 函数转换成一组加起来等于 1 的权重;最后用这些权重对所有位置的值向量进行加权求和,得到输出。这叫缩放点积注意力。

自注意力与多头注意力

2017 年,谷歌的研究者在论文《注意力就是你所需要的一切》中提出了 Transformer,完全基于注意力机制构建,抛弃了循环神经网络。其中的关键是自注意力:查询、键和值都来自同一个序列,序列中的每个位置都直接与所有其他位置进行交互,从而捕捉序列内部各部分之间的关系。比如在“小猫没有跳上桌子,因为它太累了”中,自注意力能让“它”与“小猫”建立紧密的联系。与循环神经网络必须一步步地按顺序处理不同,自注意力中任意两个位置之间都能直接联系,而且所有位置可以并行计算,大大提高了训练效率。多头注意力则同时进行多组独立的注意力计算,每一组叫作一个“头”,不同的头可以关注不同类型的关系,比如有的关注语法结构,有的关注语义联系,最后把它们的结果拼接起来。在生成文本的模型中,还会使用因果掩码,让每个位置只能看到它前面的内容。

影响与挑战

注意力机制如今被广泛用于自然语言处理、计算机视觉(视觉 Transformer)、语音识别、多模态模型、蛋白质结构预测(AlphaFold)等几乎所有的领域。它的主要挑战是计算成本:自注意力需要计算所有位置两两之间的关系,计算量和内存占用随序列长度的平方增长,处理超长文本的代价很高。为此,研究者提出了很多改进:FlashAttention 通过优化 GPU 上的内存读写,大幅加快了注意力的计算;稀疏注意力、滑动窗口注意力只计算部分位置之间的关系;分组查询注意力、多头潜在注意力减小了推理时需要缓存的键和值;还有线性注意力、状态空间模型等替代方案的探索。