返回学习地图
trainingPhase D · 第 26 课
D1.1 Self-Attention 公式(必背)
理解 Attention(Q,K,V) = softmax(QK^T / sqrt(d_k)) V 的每个符号
3 个章节·按类别展开/折叠
知识
为什么必须懂数学?工程师和魔法师的区别
工程师:知道怎么调参。
魔法师:知道为什么调这个参。
Transformer 的全部机制就是 4 个数学对象:
- 矩阵乘法(Q、K、V 投影)
- Softmax(注意力归一化)
- LayerNorm(数值稳定)
- 残差连接(梯度通路)
类比:学开车。你不需要懂内燃机热力学,但你需要懂「红灯停绿灯行」。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]]
任务:
- 手算 Q@K^T(4x4 矩阵)
- 除以 sqrt(2)=1.414
- 手算 softmax(每行)
- 手算 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]。