旋转位置编码Rope

1.背景

   注意力机制本身没有获取位置信息的能力,对于transformer来说"Hello world"和"world Hello"两句话中的"Hello"张量是完全相同的,即使两句话中的相同Hello可能有不同的表达含义,所以需要在输入信息中添加位置信息

2.原理

   transformer中KQV都是而二维的张量,所以可以用复数空间来表示输入数据的位置信息。只需要对K,Q信息进行位置编码

3.公式

   对于一个输入\(x_m\),有\(f_q(x_m, m) = (W_qx_m)e^{im\theta}\),其中\(e^{im\theta}\)就是添加的位置信息,由欧拉公式可得:\(e^{im\theta} = cos(i\theta) + isin(i\theta)\)。假设输入的长度为2。
\(q_{m} = \left( \begin{array}{c} q_{m}^{(1)} \ q_{m}^{(2)} \end{array} \right) = W_{q}x_{m} = \begin{pmatrix} W_{q}^{(11)} & W_{q}^{(12)} \\ W_{q}^{(21)} & W_{q}^{(22)} \end{pmatrix}\begin{pmatrix} x_{m}^{(1)} \\ x_{m}^{(2)} \end{pmatrix}\)。这里的\(q_{m}^{(1)}, q_{m}^{(2)}\)可视为一个在复数平面的坐标。
那么\(q_m\)可表示为\(q_{m}^{(1)} \ +q_{m}^{(2)}i\),带入\((W_qx_m)e^{im\theta}\)可得:\(\begin{pmatrix} \cos(m\theta) & -\sin(m\theta) \\ \sin(m\theta) & \cos(m\theta) \end{pmatrix} \begin{pmatrix} q_m^{(1)} \\ q_m^{(2)} \end{pmatrix}\)
扩展到长度为\(d/2\):

posted @ 2024-12-13 15:47  博客员626  阅读(8)  评论(0编辑  收藏  举报