自注意力
Self-Attention,注意力机制的一种特殊形式——序列中的每个 token 同时对所有其他 token 计算注意力权重,既是评价者也是被评价者,所有人同时参与、同时生成各自的综合印象。是 Transformer 架构的核心计算方式。
简介
自注意力(Self-Attention)是注意力机制在”序列内部”的应用:不是用一个序列去关注另一个序列(交叉注意力),而是让同一个序列中的每个 token 都对序列内所有其他 token(包括自己)计算注意力。它的核心特征是”自”——信息来源和目标都在同一个序列内部。
与传统 RNN 按时间步顺序处理不同,自注意力让所有 token 同时参与计算:每个 token 生成 Q、K、V 三个向量,然后用自己的 Q 去和所有 token 的 K 做匹配,得到注意力权重,最后按权重从所有 token 的 V 中加权提取信息。这意味着每个 token 在一次计算中就能”看到”序列中的所有其他 token,不受距离限制。
自注意力的关键意义在于:它让模型能够捕捉序列中任意两个位置之间的依赖关系——无论它们相距多远。在”小明住在北京,他昨天去了上海,因为他要参加一个会议”这句话中,自注意力能让”他”直接关注到”小明”,而不需要像 RNN 那样经过中间所有词的传递。
关键信息
- 类型:AI 核心技术 / 计算机制
- 领域:深度学习 / 自然语言处理
- 核心公式:
Self-Attention(Q, K, V) = softmax(QKᵀ/√dk)V(Q、K、V 都来自同一序列) - 所在架构:Transformer(核心组件)
- 与普通注意力的区别:普通注意力的 Q 来自一个序列、K/V 来自另一个序列(交叉注意力);自注意力的 Q、K、V 都来自同一序列
- 计算复杂度:O(n²),n 为序列长度——每个 token 都要和所有 token 做匹配
核心特性
1. 序列内部的信息交互
自注意力的核心是让序列中的 token 互相”交流”。每个 token 既提供自己的信息(K、V),也主动去获取别人的信息(Q)。这种双向信息流动让每个 token 的最终表示都融合了全局上下文。
2. 并行计算
与 RNN 必须按时间步顺序处理不同,自注意力的所有 token 可以同时计算。这是 Transformer 训练效率远高于 RNN 的根本原因——现代 GPU 的并行计算能力被充分利用。
3. 动态注意力权重
注意力权重不是固定的,而是随输入内容动态变化。在”猫坐在垫子上,因为它是软的”这句话中,当处理”它”时,自注意力会给”垫子”更高的权重(因为”软的”更可能描述垫子);如果换成”因为它是黑色的”,注意力会转向”猫”。
4. 全局视野
每个 token 在一次计算中就能”看到”序列中的所有其他 token,不受距离限制。这解决了 RNN 的长距离依赖问题——即使两个相关词相隔 100 个 token,自注意力也能直接建立连接。
5. O(n²) 复杂度
序列长度为 n 时,自注意力需要计算 n×n 个注意力分数。这是 Transformer 处理长序列的主要瓶颈——序列越长,计算量和显存占用呈平方增长。各种高效注意力变体(如 Flash Attention、稀疏注意力、线性注意力)都在试图降低这个复杂度。
不同素材中的观点
- 2026-06-22-transformer-attention-dating-analogy:作者用相亲节目的类比解释自注意力——不是”自己看自己”这种字面翻译,而是”每个人既是评价者,也是被评价者,所有人同时参与”。现场 20 个嘉宾,每个人都在同时做同样的事:拿自己的标准(Q)对照所有人的自我介绍(K),打分,按分数深浅了解每个人(V),最后形成自己的综合印象。你在打量别人的时候,别人也在打量你。20 个人同时做,20 份综合印象同时生成。把嘉宾换成 token,就是自注意力的完整过程。
实用信息
理解路径
- 直觉层:想象一场所有人都在同时互相打量的社交场景——每个人都在看别人,同时也在被别人看
- 对比层:对比 RNN 的”接力传递”和自注意力的”直接连接”——RNN 是排队传话,自注意力是圆桌会议
- 公式层:理解 Q、K、V 都来自同一序列这个关键区别
- 可视化层:用注意力热力图看到每个 token”在关注谁”
常见误区
- “自注意力就是自己看自己”:这是字面翻译。“自”指的是”序列内部”,不是”自己对自己”——每个 token 关注的是序列中所有其他 token
- “自注意力能记住所有信息”:自注意力只在当前层做一次加权聚合,信息会被后续层的变换覆盖,不是”记忆”
- “自注意力 = Transformer”:自注意力是 Transformer 的核心组件,但 Transformer 还包含前馈网络、残差连接、层归一化等其他组件