Dark Dwarf Blog background

assignment 4

Assignment 4

Attention Exploration

aa

ii

注意力权重 αiα_i 是通过对 kiTqk_i^T q 的点积结果进行 softmax 计算得到的。要让 αjα_j 几乎承载所有权重,查询向量 qq 和键向量 kjk_j 的点积 kjTqk_j^T q 远大于所有其他点积 kiTqk_i^T q(i≠ji ≠ j)。

iiii

根据 ii 的结论,我们有 αj≈1α_j \approx 1 且对于所有 i≠j,αi≈0i ≠ j,α_i ≈ 0。此时:

c≈0⋅v1+0⋅v2+...+1⋅vj+...+0⋅vn=vjc \approx 0 \cdot v_1 + 0 \cdot v_2 + ... + 1 \cdot v_j + ... + 0 \cdot v_n = v_j

输出向量 cc 几乎完全等于与 kjk_j 对应的值向量 vjv_j:注意力机制从一系列输入 vv 中精准地挑选并输出了 vjv_j。

bb

要实现这个目标,我们需要注意力权重 αa≈1/2,αb≈12α_a ≈ 1/2,α_b ≈ \frac{1}{2},并且其他的 αi≈0α_i ≈ 0。一个很自然的想法是让 qq 同时与 kak_a 和 kbk_b 相关。我们尝试 q=ka+kbq = k_a + k_b。

由于所有键向量 kik_i 相互正交 (kiTkj=0k_i^T k_j = 0) 且范数为 1 (∣∣ki∣∣=1||k_i|| = 1),有:

kaT⋅q=kaT⋅(ka+kb)=kaT⋅ka+kaT⋅kb=∣∣ka∣∣2+0=1。k_a^T \cdot q = k_a^T \cdot (k_a + k_b) = k_a^T \cdot k_a + k_a^T \cdot k_b = ||k_a||^2 + 0 = 1。 kbT⋅q=kbT⋅(ka+kb)=kbT⋅ka+kbT⋅kb=0+∣∣kb∣∣2=1。k_b^T \cdot q = k_b^T \cdot (k_a + k_b) = k_b^T \cdot k_a + k_b^T \cdot k_b = 0 + ||k_b||^2 = 1。 kiT⋅q=kiT⋅(ka+kb)=kiT⋅ka+kiT⋅kb=0+0=0(i≠a,b)k_i^T \cdot q = k_i^T \cdot (k_a + k_b) = k_i^T \cdot k_a + k_i^T \cdot k_b = 0 + 0 = 0(i \neq a,b)

此时有:

αa=αb=exp⁡(1)exp⁡(1)+exp⁡(1)+∑i≠a,bexp⁡(0)\alpha _a=\alpha _b = \frac{\exp(1)} {\exp(1) + \exp(1) + \sum _{i≠a,b} \exp(0)}

如果 exp⁡(1)\exp(1) 远大于 exp⁡(0)=1\exp(0)=1,那么分母主要由 2exp⁡(1)2 \exp(1) 构成,αaα_a 和 αbα_b 都近似等于 12\frac{1}{2}。为了让这个近似更精确,我们可以放大 qq 为 C(ka+kb)C (k_a + k_b),其中 CC 是一个大常数。

cc

正态分布有如下的特点:

  1. 均值分布的中心点,代表随机变量最可能取到的值。
  2. 协方差矩阵 (Covariance, Σ\Sigma):描述了分布的离散程度(胖瘦)和方向。

ii

由于键 kik_i 是从 N(μi,Σi)\mathcal{N}(\mu _i, \Sigma _i) 中采样的,因此 ki≈μik_i \approx \mu _i,μi\mu _i 之间相互正交且范数为 1。这和 bb 中的问题类似,只不过我们现在操作的是均值 μi\mu _i。因此 q=μa+μbq=\mu _a+\mu _b。

iiii

kak_a 的协方差变为 Σα=αI+1/2(μaμaT)\Sigma _\alpha = αI + 1/2(\mu _a \mu _a^T),这意味着 kak_a 的方向基本固定,但其长度(范数)随机变化很大。我们可以把 kak_a 看作 ka≈λ∗μaka ≈ λ * \mu a,其中 λλ 是一个均值在 1 附近但方差很大的随机标量。

我们继续使用 q=μa+μbq=\mu _a+\mu _b,计算点积如下:

kaTq≈(λμa)T(μa+μb)=λ(μaT⋅μa+μaT⋅μb)=λ⋅(1+0)=λk_a^T q \approx (λ \mu _a)^T (\mu _a + \mu _b) = λ (\mu _a^T \cdot \mu _a + \mu _a^T \cdot \mu _b) = λ \cdot (1 + 0) = λ kbT⋅q≈μbT⋅(μa+μb)=1k_b^T \cdot q \approx \mu _b^T \cdot (\mu _a + \mu _b) = 1

现在点积序列变成了 (λ,1,0,...)(λ, 1, 0, ...),其中 λλ 是一个随机数。在不同的采样中,cc 会在 vav_a 和 vbv_b之间剧烈摆动,完全取决于 kak_a 长度的随机性。cc 的方差会非常大。这就是单头注意力在试图同时关注多个事物时,面对某些特定噪声时的严重缺陷。

dd

iiii

我们用两个注意力头来模型上面的过程。我们让 c1c_1 负责“复制” vav_a,让 c2c_2 负责“复制” vbv_b。根据前面的结论,我们只需要让q1q_1 和 q2q_2 跟 μa\mu _a,μb\mu _b 对齐。

c1c_1 进行点积的结果如下:

kaT⋅q1≈(λ⋅μa)T⋅μa=λ⋅∣∣μa∣∣2=λk_a^T \cdot q_1 \approx (λ \cdot \mu _a)^T \cdot \mu _a = λ \cdot ||\mu _a||^2 = λ kbT⋅q1≈μbT⋅μa=0k_b^T \cdot q_1 \approx \mu _b^T \cdot \mu _a = 0

点积序列是 (λ,0,0,...)(λ, 0, 0, ...)。只要 λ>0λ > 0(题目让我们忽略 λ<0λ<0 的情况),softmax 就会把所有权重都给 αaα_a。因此 c1≈vac_1 \approx v_a。这个结果是稳定的,它不依赖于 λλ 的具体值。

同理 c2c_2 进行点积的结果如下:

kaT⋅q2≈(λ⋅μa)T⋅μb=λ∗0=0k_a^T \cdot q_2 \approx (λ \cdot \mu _a)^T \cdot \mu _b = λ * 0 = 0 kbT⋅q2≈μbT⋅μb=1k_b^T \cdot q_2 \approx \mu _b^T \cdot \mu _b = 1

点积序列是 (0,1,0,...)(0, 1, 0, ...)。softmax 会把所有权重都给 αbα_b。c2≈vbc_2 \approx v_b。这个结果也是稳定的。

ee

多头注意力通过使用多个独立的查询,将复杂的注意力任务分解。它可以让不同的头专注于不同的项目(例如,头1负责 aa,头2负责 bb)。每个头的注意力决策是独立的,不受其他头或不相关键的噪声影响。头1即使面对 kak_a 的长度变化,也能稳定地关注 aa;头2完全不受 kak_a 影响,稳定地关注 bb。最后将这些稳定的结果组合起来,得到一个稳健、低方差的最终输出。

Position Embeddings Exploration

aa

由矩阵乘法的结合律:

  • Qperm=XpermWQ=(PX)WQ=P(XWQ)=PQQ_{perm} = X_{perm} W_Q = (PX) W_Q = P (XW_Q) = P Q
  • Kperm=XpermWK=(PX)WK=P(XWK)=PKK_{perm} = X_{perm} W_K = (PX) W_K = P (XW_K) = P K
  • Vperm=XpermWV=(PX)WV=P(XWV)=PVV_{perm} = X_{perm} W_V = (PX) W_V = P (XW_V) = P V

然后计算注意力层输出,由矩阵转置性质及题中提供的等式,有:

  • QpermKpermT=(PQ)(PK)T=(PQ)(KTPT)=P(QKT)PTQ_{perm} K_{perm}^T = (PQ)(PK)^T = (PQ) (K^TP^T) = P (QK^T) P^T
  • softmax  QpermKpermTd=softmax  P(QKT)PTd=P⋅softmaxQKTd⋅PT\text{softmax} \; \frac{Q_{perm} K_{perm}^T} {\sqrt d} = \text{softmax} \; \frac{P (QK^T) P^T}{\sqrt d} = P \cdot \text{softmax} \frac{QK^T}{\sqrt d} \cdot P^T

最后乘 VpermV_{perm}:

Hperm=[P⋅softmaxQKTd⋅PT]⋅Vperm=Hperm=[P⋅softmaxQKTd⋅PT]⋅(PV)H_{perm} = [ P \cdot \text{softmax} \frac{QK^T}{\sqrt d} \cdot P^T ] \cdot V_{perm}=H_{perm} = [ P \cdot \text{softmax} \frac{QK^T}{\sqrt d} \cdot P^T ] \cdot (PV)

而 PP 为正交矩阵,PPT=IPP^T=I,有:

LHS=P⋅softmaxQKTd(PTP)⋅V=P⋅softmaxQKTd⋅IV\text{LHS}=P \cdot \text{softmax} \frac{QK^T}{\sqrt d} (P^TP) \cdot V = P \cdot \text{softmax}\frac{QK^T}{\sqrt d} \cdot IV

而 H=softmaxQKTd⋅VH = \text{softmax} \frac{QK^T}{\sqrt d} \cdot V,于是:

Hperm=PHH_{perm} = PH

HpermH_{perm} 是前馈网络的输入,我们把它代入 ZZ 的计算公式:

Zperm=ReLU((PH)⋅W1+b1)⋅W2+b2Z_{perm} = \text{ReLU}( (PH) \cdot W_1 + b_1 ) \cdot W_2 + b_2

b1b_1 的操作是把偏置向量 b1b_1 加到 (PH)W1(PH)W_1 的每一行。由于 PP 只是对 HH 的行进行重新排列,所以 P(HW1)P(HW_1) 相当于对 HW1HW_1 的行进行同样的排列。对排列后的矩阵每一行加 b1b_1,等价于先对原矩阵 HW1HW_1 每一行加 b1b_1,再对结果的行进行排列:

ReLU((PH)⋅W1+b1)=ReLU(P⋅(HW1+b1))\text{ReLU}( (PH) \cdot W_1 + b_1 ) = \text{ReLU}( P \cdot (HW_1 + b_1) )

利用题中等式:

ReLU(P⋅(HW1+b1))=P⋅ReLU(HW1+b1)\text{ReLU}( P \cdot (HW_1 + b_1) )=P \cdot \text{ReLU}(HW_1 + b_1)

于是原式变为:

LHS=[P⋅ReLU(HW1+b1)]⋅W2+b2\text{LHS}=[ P \cdot \text{ReLU}(HW_1 + b_1) ] \cdot W₂ + b_2

同样地,+b2+b_2 的操作也是对每一行加偏置,可以和 PP 交换顺序:

LHS=P⋅[ReLU(HW1+b1)⋅W2+b2]\text{LHS}=P \cdot [ \text{ReLU}(HW_1 + b_1) \cdot W_2 + b_2 ]

而 ReLU(HW1+b1)⋅W2+b2=Z\text{ReLU}(HW_1 + b_1) \cdot W_2 + b_2 = Z,于是:

LHS=PZ\text{LHS}=PZ

bb

位置编码 Φ\Phi 的定义如下:

  • Φ(t,2i)=sin⁡(t/10000(2i/d))\Phi(t, 2i) = \sin (t / 10000^{(2i/d)})
  • Φ(t,2i+1)=cos⁡(t/10000(2i/d))\Phi(t, 2i+1) = \cos (t / 10000^{(2i/d)})

假设存在两个不同的位置 t1≠t2t₁ ≠ t₂,它们的编码向量相同,即 Φ(t1,:)=Φ(t2,:)Φ(t₁, :) = Φ(t₂, :)。

这意味着向量中的每一个元素都必须对应相等。对于任意一个维度索引 i(0≤i<d/2)i(0 ≤ i < d/2),以下两个等式必须同时成立:

  • sin⁡(t1/Ci)=sin⁡(t2/Ci)\sin(t₁ / Cᵢ) = \sin(t₂ / Cᵢ)
  • cos⁡(t1/Ci)=cos⁡(t2/Ci)\cos(t₁ / Cᵢ) = \cos(t₂ / Cᵢ)

(其中 Ci=10000(2i/d)Cᵢ = 10000^{(2i/d)} 是一个随 ii 变化的常数)

由三角函数的基本性质,要让 sin⁡(a)=sin⁡(b)\sin(a) = \sin(b) 且 cos⁡(a)=cos⁡(b)\cos(a) = \cos(b)同时成立,aa 和 bb 的差必须是 2π2π 的整数倍:

(t1/Ci)−(t2/Ci)=2kπ,k∈Z⇒t1−t2=2kπCi(t₁ / Cᵢ) - (t₂ / Cᵢ) = 2kπ,k \in \mathbb{Z} \Rightarrow t₁ - t₂ = 2kπ Cᵢ

这个等式必须对所有的 ii 都成立。但是 CiCᵢ 的值是随着 ii 变化的:

  • 当 i=0i=0 时,C0=100000=1C₀ = 10000⁰ = 1。等式为 t1−t2=2k0πt₁ - t₂ = 2k₀π。
  • 当 i=1i=1 时,C1=10000(2/d)C₁ = 10000^{(2/d)}。等式为 t1−t2=2k1π∗10000(2/d)t₁ - t₂ = 2k₁π * 10000^{(2/d)}。

因为 t1≠t2t₁ ≠ t₂,所以 t1−t2t₁ - t₂ 是一个非零常数。如果 t1−t2=2k0πt₁ - t₂ = 2k₀π,那么 2k0π=2k1π∗10000(2/d)2k₀π = 2k₁π * 10000^{(2/d)},这意味着 k0=k110000(2/d)k₀ = k₁ 10000^{(2/d)}。由于 10000(2/d)10000^{(2/d)} 通常不是1(除非 dd 无穷大),并且 k0k₀ 和 k1k₁ 都必须是整数,这个等式除了 k0=k1=0k₀=k₁=0 的平凡解之外,不可能成立。QED\text{QED}。

gg

i.i.

将二维向量表示为复数:z=x1+ix2z = x_1 + ix_2,旋转角度tθt_θ对应复数:e(itθ)=cos(tθ)+i⋅sin(tθ)e^{(it_θ)} = cos(t_θ) + i \cdot sin(t_θ)。因此:

z⋅e(itθ)=(x1+ix2)(cos⁡tθ+isin⁡tθ)=x1cos⁡tθ+ix1sin⁡tθ+ix2cos⁡tθ−x2sin⁡tθ=(x1cos⁡tθ−x2sin⁡tθ)+i (x1sin⁡tθ+x2cos⁡tθ)\begin{array}{l} z \cdot e^{(i t_\theta)} = (x_1 + i x_2)(\cos t_\theta + i \sin t_\theta) \\ = x_1\cos t_\theta + i x_1\sin t_\theta + i x_2\cos t_\theta - x_2\sin t_\theta \\ = (x_1\cos t_\theta - x_2\sin t_\theta) + i\,(x_1\sin t_\theta + x_2\cos t_\theta) \end{array}

这与矩阵旋转结果一致。

ii.ii.

RoPE(z1,t1)=z1⋅e(it1θ),RoPE(z2,t2)=z2⋅e(it2θ)\text{RoPE}(z_1, t_1) = z_1 · e^{(it_1θ)},\text{RoPE}(z_2, t_2) = z_2 \cdot e^{(it_2θ)},于是:

⟨RoPE(z1,t1), RoPE(z2,t2)⟩=Re⁡(z1eit1θ⋅z2‾e−it2θ)=Re⁡(z1z2‾ ei(t1−t2)θ)=⟨RoPE(z1,t1−t2), RoPE(z2,0)⟩\begin{array}{l} \langle \mathrm{RoPE}(z_1,t_1),\,\mathrm{RoPE}(z_2,t_2)\rangle = \operatorname{Re}\bigl(z_1 e^{i t_1 \theta}\cdot \overline{z_2} e^{-i t_2 \theta}\bigr)\\ = \operatorname{Re}\bigl(z_1\overline{z_2}\, e^{i(t_1-t_2)\theta}\bigr)\\ = \langle \mathrm{RoPE}(z_1,t_1-t_2),\,\mathrm{RoPE}(z_2,0)\rangle \end{array}