浅谈位置编码(RoPE)(未完待续...)

当前版本为本文的尝鲜版,稳定版尚未发布:

位置编码:

https://zhuanlan.zhihu.com/p/454482273
transformer的sin位置编码本身已经包含了相对位置信息,本身就是一种包含相对信息的绝对位置编码。因为它符合一种形式:

\[PE_{t+k}=f(k)\cdot PE(t) \]

而这种编码一种比较尴尬的地方就在于,这仍然是一种绝对位置编码,虽然token之间的位置编码可以互相转换,但是每个token的位置编码还和自己的位置强相关,有点等差数列的意思。(抽象到一维的情况,假如我们使用的位置编码就是一维自然数,那也符合这种形式),所以这仍然是绝对位置编码
希望可以有一种完全的相对位置编码,也就是位置编码在后续的forward中完全不会产生绝对位置的信息。
这里苏剑林给介绍了一下一些位置编码
https://zhuanlan.zhihu.com/p/352898810

ROPE:

以下内容摘编自:十分钟读懂旋转编码(RoPE)
首先,位置编码本身并不一定需要是一个显式的embedding向量,可以是一种“信息”,融入到模型中即可,这是理解RoPE的一个关键点。一般的位置编码是计算一个embedding向量,和正常的word embedding相加。比如:

\[X_{out} = X_{emb} + P_{emb} \tag 1 \]

这里 \(P_{emb}\)是位置编码, \(X_{emb}\)是词嵌入。我们把上式写成:

\[X_{out}=f(X_{emb}) \tag 2 \]

这里的 \(f\)的作用就是”对 \(X_{emb}\)施加位置编码“。因此,位置编码可以视为一种”施加“作用。然后,先说RoPE的位置编码计算方法:对于序列中的第m个token,它的词嵌入为 \(\boldsymbol{x}_m\),计算它的 \(\boldsymbol{q}_m,\boldsymbol{k}_m\)

\[\boldsymbol{q}_m=W_Q\boldsymbol{x}_m \\ \boldsymbol{k}_m=W_K\boldsymbol{x}_m \tag 3\]

然后,对其”施加位置编码信息“:

\[\boldsymbol{qpos}_m=\boldsymbol{R}^\theta_{d,m}\boldsymbol{q}_m=\boldsymbol{R}^\theta_{d,m}W_Q\boldsymbol{x}_m \\ \boldsymbol{kpos}_m=\boldsymbol{R}^\theta_{d,m}\boldsymbol{k}_m=\boldsymbol{R}^\theta_{d,m}W_K\boldsymbol{x}_m \tag 4\]

然后,把 \(\boldsymbol{qpos}_m\)\(\boldsymbol{kpos}_m\)当成之前的Query和Key向量进行attention计算即可。这里的 \(\boldsymbol{R}^\theta_{d,m}\)和位置m相关,这样就包含了位置的信息,但是,推导后实际上在后续self-attention计算中和绝对位置是无关的。这个公式可见:R的计算公式

\[\bm{R}^d_{\Theta,m}=\begin{equation}\scriptsize{\underbrace{\begin{pmatrix} \cos m\theta_0 & -\sin+m\theta_0+&+0+&+0+&+\cdots+&+0+&+0+\\+\sin+m\theta_0+&+\cos+m\theta_0+&+0+&+0+&+\cdots+&+0+&+0+\\+0+&+0+&+\cos+m\theta_1+&+-\sin+m\theta_1+&+\cdots+&+0+&+0+\\+0+&+0+&+\sin+m\theta_1+&+\cos+m\theta_1+&+\cdots+&+0+&+0+\\+\vdots+&+\vdots+&+\vdots+&+\vdots+&+\ddots+&+\vdots+&+\vdots+\\+0+&+0+&+0+&+0+&+\cdots+&+\cos+m\theta_{d/2-1}+&+-\sin+m\theta_{d/2-1}+\\+0+&+0+&+0+&+0+&+\cdots+&+\sin+m\theta_{d/2-1}+&+\cos+m\theta_{d/2-1}+\\+\end{pmatrix}}_{\boldsymbol{W}_m}}\end{equation} \]

image

这个可以提前计算好放在那里。至于具体推理,原文知乎已经很清晰了。之后再写。

posted @ 2024-03-25 21:06  王冰冰  阅读(291)  评论(6编辑  收藏  举报