RoPE旋转位置编码图形化理解

看此篇文章之前可参考:

旋转位置编码创作者苏神博客: Transformer升级之路:2、博采众长的旋转式位置编码
优质博主解析:一文通透位置编码:从标准位置编码、旋转位置编码RoPE到ALiBi、LLaMA 2 Long

很多博文用数学公式推导描述了RoPE的原理,但如果你看完之后还是云里雾里,可通过本篇文章进一步理解,用图形的方式形象化的展示RoPE的作用;

首先,RoPE的核心思想是通过绝对位置编码的方式实现相对位置编码,本文主要围绕下图进行介绍;
在这里插入图片描述

假设一个序列 s = [ s 1 , s 2 , . . . , s 100 ] s = [s_1, s_2, ...,s_{100}] s=[s1,s2,...,s100](为了直观,这里取1作为起始位置,以下同理),要计算第100个位置上的注意力,需要得到 q 100 ∗ [ k 1 , k 2 , . . . , k 100 ] q_{100}*[k_1, k_2, ...,k_{100}] q100[k1,k2,...,k100],由于是自注意力,这里的 q 100 = k 100 q_{100}=k_{100} q100=k100,如果是常规的绝对位置编码,这里的 q = q 词嵌入 + q 绝对位置嵌入 q=q_{词嵌入}+q_{绝对位置嵌入} q=q词嵌入+q绝对位置嵌入 k k k也相同;

在RoPE中,取 q = q 词嵌入 q=q_{词嵌入} q=q词嵌入,同时假设隐层维度是768,则 q 100 = [ q 100 , 1 , q 100 , 2 , . . . , q 100 , 768 ] q_{100}=[q_{100,1},q_{100,2}, ...,q_{100,768}] q100=[q100,1,q100,2,...,q100,768],因为在RoPE中相当于是二维旋转编码,所以两个两个进行旋转计算,先取 q 100 = [ q 100 , 1 , q 100 , 2 ] q_{100} = [q_{100,1},q_{100,2}] q100=[q100,1,q100,2],同理 k 1 至 k 100 k_1至k_{100} k1k100也只取前两维。

假设这100个词的词嵌入都相等(为了更明显的看出旋转位置带来的差异,后面再解释词嵌入的差异)。由于这里只取二维,所以可以表示成向量的形式,假设所有的词嵌入都用图中A向量表示。
( cos  m θ -sin  m θ sin  m θ cos  m θ ) (1) \left( \begin{matrix} \text{cos }m\theta & \text{-sin }m\theta \\ \text{sin }m\theta & \text{cos }m\theta \\ \end{matrix} \right) \tag{1} (cos mθsin mθ-sin mθcos mθ)(1)
旋转矩阵如公式(1)所示,一个向量与旋转矩阵相乘后会逆时针旋转 m θ m\theta mθ角度。如式(2)的例子和图形示例。
( cos ⁡ π 4 − sin ⁡ π 4 sin ⁡ π 4 cos ⁡ π 4 ) ( 1 0 ) = ( cos ⁡ π 4 sin ⁡ π 4 ) = ( 2 2 2 2 ) (2) \left( \begin{matrix} \cos\frac{\pi}{4} & -\sin \frac{\pi}{4} \\ \sin \frac{\pi}{4} & \cos\frac{\pi}{4} \\ \end{matrix} \right) \left( \begin{matrix} 1 \\0 \\ \end{matrix} \right)= \left( \begin{matrix} \cos\frac{\pi}{4} \\\sin \frac{\pi}{4} \\ \end{matrix} \right)= \left( \begin{matrix} \frac{\sqrt2}{2} \\ \frac{\sqrt2}{2} \\ \end{matrix} \right) \tag{2} (cos4πsin4πsin4πcos4π)(10)=(cos4πsin4π)=(22 22 )(2)
在这里插入图片描述

现在每个词嵌入都需融入一个绝对位置嵌入,融入的方式不是常规的与词嵌入相加,而是进行旋转,旋转角度为 m θ m\theta mθ θ \theta θ用一个固定的角度表示, m m m代表当前的位置下标。

比如序列 q 1 q_1 q1旋转 θ \theta θ角得到图中B向量, q 10 q_{10} q10旋转 10 ∗ θ 10*\theta 10θ角得到图中C向量, q 100 q_{100} q100旋转 100 ∗ θ 100*\theta 100θ角得到图中D向量。这里旋转之后也带来了余弦相似度的变化, q 100 q_{100} q100 k 100 k_{100} k100相似度为1,可以赋予较高的注意力权重,而 q 100 q_{100} q100 k 10 k_{10} k10之间则有 90 ∗ θ 90*\theta 90θ角度相似度的差异。所以可以说通过绝对位置编码的方式实现了相对位置编码

下面再说词嵌入的差异,正常来讲每个token的词嵌入是不一样的,但这是词嵌入本身就带有的差异,RoPE只是在词嵌入基础上增加了位置上的差异,所以是合理的。

由于内积带有线性叠加性,图中多个两维处理之后可以直接叠加到一起,所以原理是相同的。

讲RoPE公式的博文已经很多了,这里就不列公式了,想看公式了解细节的可以移步其他博文。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值