Llama2 核心技术解析— 位置编码RoPE(Rotary Positional Embeddings)

llama2 以及之前的llama 模型都从最初始的transformer 绝对位置编码转变为RPE 相对位置编码,原来位置编码存在什么问题,RPE 位置编码能解决什么问题,下面进行剖析;

原来位置编码为什么是绝对编码?transformer 论文中位置注意力计算公式如下

绝对位置编码Ui,Uj 是位置编码

对上面式子进行展开可得:

绝对位置编码

上面展开式中,最可能携带相对位置信息的就是最后一项(d), 但是实际中间添加了两个矩阵的线性变换之后,也丧失了相对位置编码能力(下方两条曲线),具体见下图:

添加wk wq 之后编码效果

上图对位置0 对称的曲线为 不添加线性变换曲线的两个位置编码做内积具备相对位置关系,具体推导如下:

第t个token 的位置embedding

可以看到下面式子和只和相对位置k有关系。

没有线性变换的位置编码乘积

这里可以看到原始transformer 位置编码transformer 结构中,进行相关的注意力机制的运算之后,会丧失相关的相对位置信息,只能说原始的位置编码只是包含了位置信息,因此针对这个问题,后续存在一系列相关改进。

那么 RoPE(Rotary Positional Embeddings) 又是何方神圣?RoPE 源自论文 《ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING》 ,其思路就是设想找到一个函数f 满足:

函数f

这里xq(query),m 表示 第m个单词的向量xq,kn(query)同理

使得

qm, kn 的向量内积(注意力)

g 是一个假想的存在的一个这么样的函数,输入了n-m 之间的相对位置关系;论文经过在二维复平面上的一系列推到得到 f 的表达式如下:

复数内积的表达式


翻译说明一下:这里g 的表达式结果利用了数学上复数向量的内积 和两个复数的乘积的关系;具体来说两个复数向量的内积的计算其实是对应实部和虚拟的乘积,然后求和;复数乘积是交叉相乘;

;

;

上面式子取一个* ;即虚数部分的共轭(上面的推到全部在二维复平面进行)

这里更进一步,利用二维平面复数的几何性质(复数的乘积,相当于左乘一个旋转矩阵),可以写成矩阵形式:

fq 表达式

上面式子第一个矩阵即我们说是的旋转矩阵, 同时表达式以2维矩阵实数的形式进行了展开,完全变换成为了一个实数形式。

最终通过分块矩阵扩展到d 维度,得到RoPE 表达式为:

f 表达式

其中参数

以上就是RoPE 的核心思想,需要看数学细节的,请参阅原版论文,谢谢大家!

展开阅读全文

页面更新:2024-03-19

标签:内积   式子   位置   乘积   复数   向量   表达式   矩阵   线性   两个

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top