定义

注意力机制(Attention Mechanism)是神经网络中的一种计算方法:在处理某个元素时,模型会计算它与其他元素的相关程度,然后按照这个相关程度对其他元素的信息加权求和。相关性高的元素贡献更多,相关性低的贡献更少,就像人在阅读时会把注意力集中在关键词上一样。

注意力机制最早在神经机器翻译中被用来改进编码器—解码器模型,让模型在翻译每个词时能“回头看”原句中最相关的部分。后来,Transformer 架构把它变成了模型的核心计算单元。

工作原理

目前最常见的形式是“缩放点积注意力”。它把每个 Token 的表示分别变换出三个向量:

  • 查询(Query,Q):代表“我在找什么信息”。
  • 键(Key,K):代表“我能提供什么信息的索引”。
  • 值(Value,V):代表“我实际携带的信息内容”。

计算过程可以分为三步:

  1. 用当前 Token 的查询向量,与所有 Token 的键向量做点积,得到一组相关性分数。
  2. 把分数除以向量维度的平方根(防止数值过大),再通过 softmax 函数转换成总和为 1 的权重。
  3. 用这些权重对所有 Token 的值向量加权求和,得到当前 Token 的新表示。

举个例子:在句子“小猫没有跳上桌子,因为它太累了”里,处理“它”的时候,注意力权重会更多地分配给“小猫”,模型因此理解“它”指的是谁。

几种常见变体:

自注意力:Q、K、V 都来自同一个序列,用于让序列内部的元素互相关联。

交叉注意力:Q 来自一个序列,K 和 V 来自另一个序列,比如翻译时目标语言关注源语言,或图像生成时图像关注文字提示。

多头注意力:同时运行多组独立的注意力计算,每组关注不同类型的关系(如语法、指代、语义),最后把结果拼接起来。

因果注意力:生成模型中,每个位置只能看到它之前的内容,不能“偷看”未来,以保证逐字生成的合理性。

标准注意力需要计算序列中每两个位置之间的关系,计算量和内存占用随序列长度近似按平方增长,这是长上下文成本高的重要原因之一。为此,研究者提出了稀疏注意力、线性注意力、以及更省显存的实现方式(如 FlashAttention)等优化方法。

典型应用

  • 大语言模型中理解上下文、处理指代和长距离依赖
  • 机器翻译中对齐源语言与目标语言
  • 图像生成中让画面与文字描述对应(交叉注意力)
  • 视觉模型中关注图像的关键区域
  • 语音识别中对齐音频片段与文字

相关概念

  • Transformer:以注意力机制为核心构建的模型架构。
  • 上下文窗口:注意力的计算成本是限制上下文长度的因素之一。
  • Embedding:注意力计算的输入是 Token 的向量表示。
  • 多模态模型:常用交叉注意力融合不同模态的信息。

参考论文:Neural Machine Translation by Jointly Learning to Align and Translate、Attention Is All You Need