上一章 · 返回首页 · 内容清单 · 下一章

课程锚点:Lecture01 Slides42–50;Lecture02 Slides14–21;Tutorial04 的标准 Transformer 部分;Lab6 Cells3–45;Assignment1 QuestionIII。

3.1 Q、K、V 为什么要分开

某个位置需要从上下文取信息:Q表示“我需要什么”,K表示“我有哪些可供匹配的特征”,V表示“匹配后实际传递什么”。这只是便于理解的比喻;实际向量和投影矩阵通过训练学得,并不预先绑定人工含义。

单头、暂不写batch:X:[T,D],WQ/WK:[D,d_k],WV:[D,d_v],则 Q/K:[T,d_k],V:[T,d_v]。QKᵀ给出每个query对每个key的匹配分数。

S=QKTdk+M,Aij=eSij∑j′eSij′,Zi=∑jAijVj.S={QK^T\over\sqrt{d_k}}+M,\quad A_{ij}={e^{S_{ij}}\over\sum_{j'}e^{S_{ij'}}},\quad Z_i=\sum_j A_{ij}V_j.

S/A:[T,T],Z:[T,d_v]。softmax沿key轴j归一化,每个query有一份权重分布。A一般不对称,即便未加mask,因为Q与K投影不同,且逐行归一化不同。

QKᵀ要求Q与K的末维相同;V末维可以不同。输出长度由query位置数决定,输出特征数由V决定。cross-attention可有Q长度T_q与KV长度T_k,A为[T_q,T_k]。

3.2 为什么除以根号 d_k

在各维独立、均值0、方差1且q/k独立的近似条件下,q·k=Σq_r k_r 方差为 d_k;除以√d_k后方差约为1。未缩放时,大点积会让softmax集中在极少数项,容易饱和、梯度不利于学习。

softmax导数 ∂p_i/∂s_j=p_i(δ_ij-p_j);接近one-hot时很多导数很小。缩放缓解尺度问题,不保证训练永不梯度消失。实际网络不一定严格满足独立同分布假设,这是设计动机,不是对所有hidden state的精确定理。

3.3 因果mask为何必须在softmax之前

decoder位置i用于预测i+1;只能利用j≤i的输入。令 M_ij=0 (j≤i),否则 -∞。负无穷的指数为0,因此未来权重为0,其余可见位置重新归一化。

若softmax后直接把未来项乘0,却不重新归一化,行和不再为1,输出尺度改变。对有限实数bias也要区分 (QKᵀ+M)/√d_k 与 QKᵀ/√d_k+M;只在M为0/负无穷的硬mask时此处缩放位置不影响屏蔽效果。

padding mask屏蔽补齐产生的无效key;loss mask屏蔽无效目标。padding query不自动失效。若一整行全为负无穷,稳定softmax里会出现 -∞-(-∞),导致NaN;必须设计合法可见项或显式处理全屏蔽行。不要把“每行和为1”无条件用于全屏蔽padding行。

3.4 手算 Assignment1 的矩阵

题面原图确认:

X=[101011],WQ=[100111],WK=[111001],WV=[10011−1].X=\begin{bmatrix}1&0&1\\0&1&1\end{bmatrix},\quad W_Q=\begin{bmatrix}1&0\\0&1\\1&1\end{bmatrix},\quad W_K=\begin{bmatrix}1&1\\1&0\\0&1\end{bmatrix},\quad W_V=\begin{bmatrix}1&0\\0&1\\1&-1\end{bmatrix}.

所以 Q=[[2,1],[1,2]],K=[[1,2],[1,1]],V=[[2,-1],[1,0]]。

QKT=[4353],S=12[4353].QK^T=\begin{bmatrix}4&3\\5&3\end{bmatrix},\quad S={1\over\sqrt2}\begin{bmatrix}4&3\\5&3\end{bmatrix}.

无mask:A≈[[.6698,.3302],[.8044,.1956]],Z≈[[1.6698,-.6698],[1.8044,-.8044]]。

有mask:A≈[[1,0],[.8044,.1956]],Z≈[[2,-1],[1.8044,-.8044]]。

将X第二行改为[10,10,10],因果mask下第一行输出仍为[2,-1]。因为第一位置Q、K、V均未变,又不允许读取第二位置。无mask时则会被第二位置影响。这个实验同时检查了mask方向和“不能泄露未来”两件事。

3.5 多头不是把同一个A复制多次

每头有自己的Q/K/V投影子空间,独立算attention;拼接后用WO混合。

MHA⁡(X)=Concat⁡(Z(1),…,Z(H))WO.\operatorname{MHA}(X)=\operatorname{Concat}(Z^{(1)},\ldots,Z^{(H)})W_O.

常见D=H d。批量形状:X:[B,T,D]→投影[B,T,Hd]→reshape[B,T,H,d]→transpose[B,H,T,d]→scores[B,H,T,T]→context[B,H,T,d]→合并[B,T,D]。

H变大而D固定时,每头d变小;标准MHA的总投影参数量约4D²,而不是H倍4D²。attention score张量则含H个T×T矩阵。若每头宽度固定再增加头数,总宽度和计算量都会变化,不能与前一种设置混答。

3.6 FFN、残差、Norm 分别解决什么

attention混合不同token的信息;FFN对每个位置独立做特征变换。经典 FFN(x)=W2 ReLU(W1x+b1)+b2(此处列向量记法),中间F常比D大。所有位置使用同一FFN权重,位置之间的通信主要来自attention。

残差 y=x+F(x) 保留输入通路,导数有 I+∂F/∂x,有助于深层优化;不是“防止一切梯度问题”。残差相加要求形状一致,必要时用投影对齐。

原始post-norm子层:y=LN(x+F(x))。现代pre-norm:y=x+F(Norm(x))。pre-norm使残差主路径避开每层norm,通常更便于深层训练;见04具体推导。

完整decoder-only:embedding→重复attention子层+FFN子层→最终norm(常见pre-norm模型中)→LM head。完整2017 encoder-decoder另有encoder的双向self-attention和decoder的cross-attention,不能把decoder-only代码画成原版完整Transformer。

3.7 训练为何可并行,生成为何逐步

已知训练序列[A,B,C,D],输入[A,B,C]、标签[B,C,D]。一个masked forward可同时得到三个位置的预测;第二位置的表示可以看到A/B,却不能看到C。教师强制提供真实历史,不需要先抽样生成B再训练预测C。

生成时只有[A,B],C未知:先取最后位置logits抽样C,再把C追加到上下文去生成D。KV cache复用已算的历史,并没有提前知道未来。prompt已知,因此prefill能并行;decode的新token仍有依赖。

3.8 反向流程与复杂度

令上游梯度G=∂L/∂Z,Z=AV,则∂L/∂V=AᵀG、∂L/∂A=GVᵀ。每行softmax的梯度 ds=a⊙(da-Σ(a⊙da));再经QKᵀ/√d回传到Q/K及投影矩阵。被硬屏蔽的未来项没有这条有效attention梯度。

每层MHA投影约8BTD² FLOPs(乘加算2);QKᵀ及AV合计约4BT²D,未计softmax、norm、非线性等。常规实现保存attention矩阵需O(BHT²)空间;FlashAttention会改内存访问而非更换数学目标,见07。

闭卷检验:给B=2,T=5,D=24,H=3,写出WQ、分头Q、A、合并Z的shape;再解释为何softmax不能沿query轴做。


上一章 · 返回首页 · 内容清单 · 下一章

Built with LogoFlowershow