定义
注意力机制(Attention Mechanism)是神经网络中的一种计算方法:在处理某个元素时,模型会计算它与其他元素的相关程度,然后按照这个相关程度对其他元素的信息加权求和。相关性高的元素贡献更多,相关性低的贡献更少,就像人在阅读时会把注意力集中在关键词上一样。
注意力机制最早在神经机器翻译中被用来改进编码器—解码器模型,让模型在翻译每个词时能“回头看”原句中最相关的部分。后来,Transformer 架构把它变成了模型的核心计算单元。
工作原理
目前最常见的形式是“缩放点积注意力”。它把每个 Token 的表示分别变换出三个向量:
- 查询(Query,Q):代表“我在找什么信息”。
- 键(Key,K):代表“我能提供什么信息的索引”。
- 值(Value,V):代表“我实际携带的信息内容”。
计算过程可以分为三步:
- 用当前 Token 的查询向量,与所有 Token 的键向量做点积,得到一组相关性分数。
- 把分数除以向量维度的平方根(防止数值过大),再通过 softmax 函数转换成总和为 1 的权重。
- 用这些权重对所有 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