返回学习地图
trainingPhase D · 第 26

D1.1 Self-Attention 公式(必背)

理解 Attention(Q,K,V) = softmax(QK^T / sqrt(d_k)) V 的每个符号

3 个章节·按类别展开/折叠
知识

为什么必须懂数学?工程师和魔法师的区别

工程师:知道怎么调参。

魔法师:知道为什么调这个参。

Transformer 的全部机制就是 4 个数学对象:

  1. 矩阵乘法(Q、K、V 投影)
  2. Softmax(注意力归一化)
  3. LayerNorm(数值稳定)
  4. 残差连接(梯度通路)

类比:学开车。你不需要懂内燃机热力学,但你需要懂「红灯停绿灯行」。Transformer 的「红绿灯」就是这 4 个数学对象。

本课目标:看完后能手写 Self-Attention(20 行 PyTorch),能解释清楚为什么 d_k 要开根号。

公式

Self-Attention 公式(必背)

<p>公式:</p><pre>Attention(Q, K, V) = softmax(Q @ K^T / sqrt(d_k)) @ V</pre><p>逐符号解释:</p><ul><li><b>Q</b>:Query,当前 token 的「问题」。形状 [seq_len, d_k]。</li><li><b>K</b>:Key,所有 token 的「标签」。形状 [seq_len, d_k]。</li><li><b>V</b>:Value,所有 token 的「内容」。形状 [seq_len, d_v]。</li><li><b>Q @ K^T</b>:相似度矩阵,每个 token 对其他所有 token 的打分。形状 [seq_len, seq_len]。</li><li><b>sqrt(d_k)</b>:缩放因子,防止 softmax 饱和。d_k=64 时 sqrt(d_k)=8。</li><li><b>softmax</b>:行归一化,每行和=1,变成概率分布。</li><li><b>@ V</b>:加权求和,每个 token 用注意力权重汇总所有信息。</li></ul><p>为什么除以 sqrt(d_k)?当 d_k 大时,Q@K^T 的方差 = d_k,数值会很大(几十上百),softmax 会把所有概率压到一个 token 上,梯度消失。除以 sqrt(d_k) 后方差 = 1,分布平滑。</p>
练习

练习:手算 4-token Attention 矩阵

练习

给定 4 个 token,d_k=2:

Q = [[1,0],[0,1],[1,1],[0,0]]
K = [[1,0],[0,1],[1,1],[0,0]]
V = [[1,2],[3,4],[5,6],[7,8]]

任务:

  1. 手算 Q@K^T(4x4 矩阵)
  2. 除以 sqrt(2)=1.414
  3. 手算 softmax(每行)
  4. 手算 attention output

答案:scores = [[1,0,1,0],[0,1,1,0],[1,1,2,0],[0,0,0,0]]。除以 sqrt(2) 后 softmax 第 0 行近似 [0.43, 0.14, 0.43, 0]。Output 第 0 token = 0.43*[1,2] + 0.43*[5,6] = [2.6, 3.4]。