如是我闻: 自注意力机制是 Transformer 的核心操作。下面我们就按四步走来梳理一下,建立一条从输入到输出的「注意力路径」。并用一个形象的例子,说说它到底是怎么回事!
✅ Step 1: 生成 Q, K, V 向量
📌 公式:
q
i
=
x
i
W
Q
,
k
i
=
x
i
W
K
,
v
i
=
x
i
W
V
q_i = x_i W_Q,\quad k_i = x_i W_K,\quad v_i = x_i W_V
qi=xiWQ,ki=xiWK,vi=xiWV
📖 意义:
- 每个输入 token
x
i
x_i
xi 通过三个不同的投影矩阵生成:
- q(query):我要问的问题
- k(key):别人描述自己
- v(value):别人携带的信息
Q、K 是用来打分的,V 是用来加权求和的。
✅ Step 2: 计算 attention 相关性打分(scores)
📌 公式:
e
i
j
=
q
i
⋅
k
j
T
d
m
e_{ij} = \frac{q_i \cdot k_j^T}{\sqrt{d_m}}
eij=dmqi⋅kjT
📖 意义:
- 第 i i i 个词问:我对第 j j j 个词有多感兴趣?
- 用 query–key 的 dot-product 来衡量「相关性」
- 除以 d m \sqrt{d_m} dm 是为了 数值稳定性
Query 对所有 key 逐一 dot product 得到 score 向量。
✅ Step 3: 用 softmax 得到 attention 权重(归一化)
📌 公式:
α i j = exp ( e i j ) ∑ l = 1 T exp ( e i l ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{l=1}^{T} \exp(e_{il})} αij=∑l=1Texp(eil)exp(eij)
📖 意义:
- 把打分变成概率(加权系数)
- 总和为 1,是一个在所有词上的 注意力分布
这就是“注意力”的本质 —— 对别人的关注程度
✅ Step 4: 加权求和 value 得到输出(context vector)
📌 公式:
z
i
=
(
∑
j
=
1
T
α
i
j
v
j
)
W
F
z_i = \left( \sum_{j=1}^{T} \alpha_{ij} v_j \right) W_F
zi=(j=1∑Tαijvj)WF
📖 意义:
- 每个词根据 attention 权重对所有 v j v_j vj 做加权求和
- 得到当前词的上下文表示 z i z_i zi
- 通常还会再加一层线性变换 W F W_F WF
Self-Attention 输出的就是这一串 z i z_i zi,每个都是融合上下文的信息向量
图中:箭头从所有 value 指向一个点,表示加权聚合。
🔚 总结这一流程像什么?
就像你在一个会议上,听着所有人的发言(value),你会根据每个人说话的重要性(attention 权重)决定该吸收谁的信息来丰富自己的观点(context vector)。
🏃🏻扩展
有小伙伴可能要问了学 Self-Attention 到第三步觉得“已经有 attention 权重了”,为什么还要第四步?
我们来用一句话先回答,再展开解释:
第三步只是“知道我关注谁”,第四步才是“我到底拿到了什么信息”。
🎯 为什么 Step 3 不够?
Step 3 得到的是:
α
i
j
=
我(token
i
)对 token
j
的注意力程度
\alpha_{ij} = \text{我(token }i\text{)对 token }j\text{ 的注意力程度}
αij=我(token i)对 token j 的注意力程度
但这只是“关注了谁”,还没有任何内容信息被拿过来。
🧠 第四步做了什么?
它说:
“既然我决定了关注哪些人,那我就把他们的 Value 信息,按照注意力权重加权过来当我的表示。”
公式:
z
i
=
∑
j
α
i
j
v
j
z_i = \sum_{j} \alpha_{ij} v_j
zi=j∑αijvj
所以:
- 不是只“看”,要“听他说了什么”,听完之后把重点抄到自己的本子上(那就是 z i z_i zi)
✅ 没有第四步会怎样?
- 只知道自己该关注谁,但输出仍然是空的,模型没法往下走
- 没有上下文感知的表示,整个 Transformer 就断链了
- 后续的 FeedForward、Residual、LayerNorm 等都失去了输入
✨ 比喻
你站在教室里(token ( i )),你决定:
- 对 Alice(token 3)关注 50%
- 对 Bob(token 5)关注 30%
- 对 Carol(token 2)关注 20%
这只是你第三步的结果(你知道听谁)。
但你最后要写一段 summary(表示),一定是把这些人说的话加权总结起来。那一步就是第四步。
非常的有品
以上