Skip to main content

🚀 彻底搞懂注意力机制(Attention Mechanism)

  • ⏱️ 预计阅读时间:10 分钟
  • 📌 一句话总结:注意力机制是一种模拟人类注意力的机制,让模型在处理输入信息时能聚焦于关键部分,从而提升性能。

🧠 一、什么是注意力机制?

注意力机制(Attention Mechanism)最早出现在图像领域,但在 自然语言处理(NLP) 中被大规模使用,并因为 Transformer 的成功而爆红。

核心思想
👉 不是一次性处理所有信息,而是根据当前任务,对信息进行“加权关注”。

📖 类比:翻译一句话时,并非每个词都同等重要,注意力机制帮助模型判断哪些词应该“多看两眼”。


🧩 二、核心组成

1️⃣ Query、Key、Value(Q, K, V)

这是注意力机制的基础三元组:

  • Query(查询):当前需要处理的内容(如某个词)
  • Key(键):每个输入的标识
  • Value(值):每个输入真正携带的信息

💡 类比
你有很多文件(Keys),每个文件中有一些内容(Values),现在你有一个问题(Query),你想找到最相关的文件并读里面的内容。


2️⃣ 注意力打分(Attention Score)

将 Query 与每个 Key 做相似度计算(如点积),得到一个权重分数,用于衡量每个 Value 的“重要性”。


3️⃣ 加权求和(Weighted Sum)

根据权重分数,把所有 Value 加权求和,得到当前 Query 的最终输出。


🧮 三、公式详解(以“点积注意力”为例)

[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ]

  • QKᵀ:Query 和 Key 的点积,得到打分矩阵
  • √dₖ:对维度做缩放,避免梯度爆炸
  • softmax:归一化为概率分布(权重)
  • V:对 Value 进行加权求和

🧠 四、不同类型的注意力

类型 说明
Self-Attention(自注意力) 自己对自己做注意力;每个词都和其它词进行关联,常见于 Transformer Encoder
Cross-Attention(交叉注意力) Query 和 Key/Value 来自不同来源;常用于 Encoder-Decoder 结构(如翻译任务)

🔁 五、多头注意力机制(Multi-Head Attention)

为什么需要多个头?

  • 一个注意力头只能学到一个“关系视角”
  • 多个头可以从多个角度理解输入序列(例如语法、语义、上下文)

[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, …, \text{head}_h) W_o
\quad
\text{where } \text{head}_i = \text{Attention}(QW_q^i, KW_k^i, VW_v^i) ]

🎯 每个头有自己的 Q/K/V 权重矩阵,能专注于不同的特征。


🔧 六、可视化理解

👇 典型的注意力权重热力图(Attention Map)示例

输入序列I love this AI model
输出(翻译)我 喜欢 这个 AI 模型 I love this AI model

—————————––

我 ▓▓ ▓▓▓ ▓ ▓ ▓

喜欢 ▓ ███ ▓▓ ▓▓ ▓▓

这个 ▓ ▓▓ ███ ▓ ▓

AI ▓ ▓▓ ▓ ███ ▓

模型 ▓ ▓ ▓ ▓ ███

颜色越深,表示注意力越集中。


✨ 七、应用场景

领域 典型应用
NLP Transformer、BERT、GPT 系列
CV 图像描述、ViT(Vision Transformer)
推荐系统 用户兴趣建模
多模态任务 图文对齐、语音翻译