Attention(注意力)
Attention模型在关注哪里
亦作、亦称:注意力
注意力机制(Attention)是深度学习中让模型在处理序列时动态决定「该关注哪些位置」的核心运算,它打破了 RNN 对信息的线性传递限制,成为 Transformer 及现代大语言模型的基础算子。
概述
注意力机制让模型对序列中每个位置赋予不同的「重要性权重」,而非一视同仁地处理所有输入。
- 核心直觉:人类阅读时视线会集中在关键词上,注意力机制将这一行为数学化——每个输出 token 都能「回望」全部输入并决定借鉴谁。
- 三要素:Query(查询) 代表当前需求,Key(键) 代表候选信息的索引,Value(值) 是实际携带的内容;注意力分数由 Q 与各 K 的相似度决定。
- 地位:注意力是 Transformer 的核心算子,直接影响 位置编码、多头机制、KV Cache 等所有上层设计。
- 对旧范式的替代:在此之前,seq2seq 模型依赖固定长度的中间向量传递信息,注意力允许模型直接访问任意历史位置,解决了长距离依赖问题。
工作原理
缩放点积注意力(Scaled Dot-Product Attention)是最常用的计算形式,步骤清晰可拆解。
- 第一步,线性投影:输入向量分别乘以三个可学习矩阵 W_Q、W_K、W_V,得到 Q、K、V 三组表示。
- 第二步,计算分数:Q 与每个 K 做点积,再除以 √d_k(键维度的平方根),防止内积过大导致 softmax 梯度消失。
- 第三步,归一化:将分数通过 softmax 转换为和为 1 的概率分布,即各位置的注意力权重。
- 第四步,加权求和:用注意力权重对 V 做加权求和,得到当前位置的输出向量。
- 计算复杂度:序列长度为 n 时,标准注意力的时间与空间复杂度均为 O(n²),这是长上下文的主要瓶颈。
类型与变体
注意力机制演化出多种变体,分别针对效率、表达力或应用场景优化。
- 多头注意力(Multi-Head Attention):同时运行 h 组并行注意力头,每头学习不同的「关注视角」,再拼接投影;这是 Transformer 的标准配置。
- 自注意力(Self-Attention) 与 交叉注意力(Cross-Attention):前者 Q/K/V 均来自同一序列用于建模内部依赖,后者让解码器关注编码器输出,常见于翻译和多模态模型。
- 因果注意力(Causal Attention):通过掩码屏蔽未来位置,确保自回归生成时只能看见之前的内容;GPT 系列采用此形式。
- Flash Attention:不改变数学等价性,通过分块计算与 IO 感知调度大幅降低 GPU 显存占用,已成工程标配。
- 分组查询注意力(GQA):多个 Q 头共享同一组 K/V,减少 KV Cache 体积;Llama 2/3、Mistral 等主流模型均采用。
应用场景
注意力机制已成为几乎所有前沿 AI 任务的基础构件。
- 自然语言处理:BERT 用双向自注意力做理解任务,GPT 用因果注意力做生成任务,两者均以注意力为核心。
- 图像理解:Vision Transformer(ViT) 将图像切成 patch 序列后用注意力建模全局关系,打破 CNN 局部感受野限制。
- 多模态对齐:CLIP 中文本与图像特征通过交叉注意力对齐;扩散模型(如 Stable Diffusion)用交叉注意力将文本提示注入图像去噪过程。
- 语音与代码:Whisper 用编解码器注意力做语音转录;代码补全工具依赖注意力捕捉跨文件上下文。
- 长上下文推理:通过稀疏注意力或 KV Cache 复用,现代 LLM 的上下文窗口已扩展至百万 token 级别。
局限与误区
理解注意力机制的边界同样重要。
- 二次方复杂度:标准注意力的计算量随序列长度平方增长,这是 Flash Attention、稀疏注意力等研究的根本动因。
- 位置信息缺失:注意力本身是排列不变的(permutation-invariant),必须额外引入 位置编码(如正弦编码、RoPE)才能感知顺序。
- 误区:权重 ≠ 重要性:注意力权重高并不一定意味着该 token 对最终输出贡献大,梯度分析等归因方法往往给出不同结论。
- 误区:头数越多越好:多头注意力并非头数越多性能越强,过多的头会带来冗余,实践中需根据模型规模权衡。
- 显存瓶颈:推理阶段 KV Cache 随上下文长度线性增长,成为部署长上下文模型时显存的主要占用者。
发展脉络
注意力机制从早期翻译辅助技术演变为现代 AI 的基础架构。
- 2014:Bahdanau et al. 提出软对齐注意力(additive attention)用于 seq2seq 机器翻译,首次让解码器动态关注编码器不同位置。
- 2015:Luong et al. 提出点积注意力(multiplicative attention),计算更高效,成为后续主流形式。
- 2017:Google 发表《Attention Is All You Need》,提出 Transformer 架构,注意力机制从辅助角色升为唯一核心,淘汰 RNN。
- 2018:BERT(双向编码器)和 GPT(自回归解码器)相继发布,验证注意力在 NLP 预训练中的统治地位。
- 2020:ViT 将注意力引入计算机视觉,证明其跨模态普适性。
- 2022:Flash Attention(Dao et al.)通过 IO 感知算法大幅提升注意力计算效率,成为主流框架标配。
- 2023-2024:GQA、MLA(DeepSeek) 等变体聚焦 KV Cache 压缩,支撑百万 token 级别的长上下文推理。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「模型在关注哪里」
- 「软性的划重点」
- 「QKV 那套」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 高级概念查看详解 →
Transformer 架构如何工作?通常用于哪些场景?
Transformer 用多头自注意力并行建模序列全局依赖,取代 RNN 的逐步递归;广泛用于机器翻译、大语言模型(GPT)、视觉(ViT)及多模态任务。
- 高级概念高频查看详解 →
FlashAttention 如何在不改变数学结果的前提下加速注意力并节省显存?
同样的注意力数学,靠分块(tiling)+ online softmax 避免把 N×N 注意力矩阵写回 HBM,减少访存而非减少计算。
- 高级概念查看详解 →
多查询注意力(MQA)与分组查询注意力(GQA)解决了什么问题?
让多个 Query 头共享 K/V 头,缩小 KV-cache 显存与解码访存,MQA 共享到 1 组、GQA 折中分多组。
- 高级概念查看详解 →
线性注意力如何把注意力复杂度降到 O(n)?
线性注意力用核函数 φ 近似 softmax,借矩阵乘法结合律先算 φ(K)ᵀV,避开 n×n 矩阵,把复杂度降到 O(n)。
延伸阅读
从知识库精选 2 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「Attention」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
