进阶← 返回知识库
Self-Attention(自注意力机制)
Transformer的核心机制。序列中的每个token通过Q/K/V三组投影计算与所有其他token的关联权重,再用权重加权求和得到新的表示。让任意两个位置之间的信息传递距离变为O(1)。
核心公式
📖 符号说明
| 符号 | 含义 |
|---|---|
| Query矩阵(n×d_k) | |
| Key矩阵(n×d_k) | |
| Value矩阵(n×d_v) | |
| Key向量维度(缩放因子) | |
| 转置 |
Self-Attention(自注意力机制)
一句话理解
自注意力让句子里的每个词都能直接"看到"所有其他词,并自动计算出该重点关注谁。
直觉
"我吃了一个苹果,它很甜。"
"它"指的是谁?人类秒懂是"苹果"。Self-Attention 的工作就是让模型也能做到——每个 token 都去"询问"其他所有 token:"你跟我有关系吗?关系多大?"
Q/K/V 机制
每个 token 被投影成三个角色:
- Query(查询):"我在找什么信息?"
- Key(索引):"我能提供什么信息?"
- Value(内容):"我的实际内容是什么。"
计算过程:
Attention(Q,K,V)=softmax(dkQKT)V- Q 和 K 做点积 → 得到注意力分数(谁跟谁相关)
- 除以 dk → 防止数值过大导致 softmax 梯度消失
- softmax 归一化 → 变成权重分布(加起来为 1)
- 用权重对 V 加权求和 → 输出融合了全局信息的新表示
注意力热力图
颜色越亮,表示该词对目标词的注意力越高。注意观察「它」那一行——模型学会了把注意力集中在「苹果」上。
注意力热力图
直觉类比
可以类比为搜索引擎:Query 是搜索词,Key 是每个网页的标题,Value 是网页内容。搜索引擎根据搜索词和标题的匹配度排序,然后把排名靠前的内容聚合返回。Self-Attention 就是每个 token 对整个句子做了一次"搜索"。
与传统 Attention 的区别
传统 Attention(如 Seq2Seq 中的 Bahdanau Attention)是 Encoder 和 Decoder 之间的注意力——Decoder 的 Query 去"看" Encoder 的 Key/Value。
Self-Attention 是序列内部的注意力——同一个序列的 token 互相看,Query/Key/Value 都来自同一个输入。
引用本概念的文章