assignment 4

• 80 min read • 15932 words
Tags: Deep Learning NLP Transformer
Categories: NLP

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(iji ≠ j)。

iiii

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

c0v1+0v2+...+1vj+...+0vn=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

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

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

kaTq=kaT(ka+kb)=kaTka+kaTkb=ka2+0=1k_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。 kbTq=kbT(ka+kb)=kbTka+kbTkb=0+kb2=1k_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。 kiTq=kiT(ka+kb)=kiTka+kiTkb=0+0=0(ia,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)+ia,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}。为了让这个近似更精确,我们可以放大 qqC(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) = λ kbTqμbT(μa+μb)=1k_b^T \cdot q \approx \mu _b^T \cdot (\mu _a + \mu _b) = 1

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

dd

iiii

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

c1c_1 进行点积的结果如下:

kaTq1(λμa)Tμa=λμa2=λk_a^T \cdot q_1 \approx (λ \cdot \mu _a)^T \cdot \mu _a = λ \cdot ||\mu _a||^2 = λ kbTq1μ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。因此 c1vac_1 \approx v_a这个结果是稳定的,它不依赖于 λλ 的具体值

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

kaTq2(λμa)Tμb=λ0=0k_a^T \cdot q_2 \approx (λ \cdot \mu _a)^T \cdot \mu _b = λ * 0 = 0 kbTq2μbTμb=1k_b^T \cdot q_2 \approx \mu _b^T \cdot \mu _b = 1

点积序列是 (0,1,0,...)(0, 1, 0, ...)。softmax 会把所有权重都给 αbα_bc2vbc_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=PsoftmaxQKTdPT\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=[PsoftmaxQKTdPT]Vperm=Hperm=[PsoftmaxQKTdPT](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=PsoftmaxQKTd(PTP)V=PsoftmaxQKTdIV\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=softmaxQKTdVH = \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))=PReLU(HW1+b1)\text{ReLU}( P \cdot (HW_1 + b_1) )=P \cdot \text{ReLU}(HW_1 + b_1)

于是原式变为:

LHS=[PReLU(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)})

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

这意味着向量中的每一个元素都必须对应相等。对于任意一个维度索引 i0i<d/2i(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)同时成立,aabb 的差必须是 2π 的整数倍:

(t1/Ci)(t2/Ci)=2kπkZt1t2=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。等式为 t1t2=2k0πt₁ - t₂ = 2k₀π
  • i=1i=1 时,C1=10000(2/d)C₁ = 10000^{(2/d)}。等式为 t1t2=2k1π10000(2/d)t₁ - t₂ = 2k₁π * 10000^{(2/d)}

因为 t1t2t₁ ≠ t₂,所以 t1t2t₁ - t₂ 是一个非零常数。如果 t1t2=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θ)+isin(tθ)e^{(it_θ)} = cos(t_θ) + i \cdot sin(t_θ)。因此:

ze(itθ)=(x1+ix2)(costθ+isintθ)=x1costθ+ix1sintθ+ix2costθx2sintθ=(x1costθx2sintθ)+i(x1sintθ+x2costθ)\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)=z1e(it1θ),RoPE(z2,t2)=z2e(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θz2eit2θ)=Re(z1z2ei(t1t2)θ)=RoPE(z1,t1t2),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}

Comments

Total words: 15932