1.目的:通过绝对位置编码的方式实现相对位置编码
- 绝对位置编码比较简单,加或乘一个有次序的数
- 实现相对位置编码,也即意味着,要蕴含位置差的信息:
- 假设m是某个token的位置信息,n是另一个token的位置信息,要有类似 m − n m-n m−n的信息,比较容易想到复数乘法会产生 m − n m-n m−n,以及复数乘法和复数内积的性质。
2.理解RoPE,在我看来有几个需要注意的点:
- 最重要的是 e i m θ e^{im\theta} eimθ 的构造,给二维的 q ⃗ \vec q q或 k ⃗ \vec k k乘这个量(也即对 q ⃗ \vec q q或 k ⃗ \vec k k做了旋转),旋转后再对二者进行内积便会产生 m − n m-n m−n的相对位置信息,也就达成了相对位置编码的目的
- 二维向量和复数平面存在一一对应的关系
- 二维扩展到 2 ∗ N 2*N 2∗N维:既然二维的向量旋转后,再做内积有 m − n m-n m−n的相对位置信息,那就直接把 q ⃗ \vec q q和 k ⃗ \vec k k都分成2维一组,这样 q ⃗ \vec q q和 k ⃗ \vec k k做内积时,就让分好的组与组之间做内积,就自然让各位置携带相对位置信息了
- 向量旋转有两种计算方式,一种是复数乘取实部,另一种是通过构造旋转矩阵计算
3.本文相关复数概念:
3.1.复数乘法的几何意义
- 两个复数相乘,得到的复数的模长是原来两个复数的模长的乘积,得到的复数的幅角是原来两个复数的幅角的相加。
3.2.复数内积 VS. 复数乘法
- 复数内积: ⟨ ( a + b i ) , ( c + d i ) ⟩ = a c + b d {\left \langle (a+bi),(c+di)\right \rangle }=ac+bd ⟨(a+bi),(c+di)⟩=ac+bd(不含i)
- 复数乘法: ( a + b i ) ( c + d i ) = ( a c − b d ) + ( b c − a d ) i (a+bi)(c+di)=(ac-bd) + (bc-ad)i (a+bi)(c+di)=(ac−bd)+(bc−ad)i
- 复数内积的结果跟复数乘法的实部相差了一个正负号,复数内积等于复数乘以另一个复数的共轭后取实部:
- ⟨ ( a + b i ) , ( c + d i ) ⟩ = R E [ ( a + b i ) ( c + d i ) ∗ ] {\left \langle (a+bi),(c+di)\right \rangle }=RE[(a+bi)(c+di)^*] ⟨(a+bi),(c+di)⟩=RE[(a+bi)(c+di)∗]
- 也即: ⟨ ( a + b i ) , ( c + d i ) ⟩ = R E [ ( a + b i ) ( c − d i ) ] {\left \langle (a+bi),(c+di)\right \rangle }=RE[(a+bi)(c-di)] ⟨(a+bi),(c+di)⟩=RE[(a+bi)(c−di)]
4.REF:
[1].https://zhuanlan.zhihu.com/p/642884818 (这篇讲的很清楚了)
[2].https://zhuanlan.zhihu.com/p/669797102
[3].https://zhuanlan.zhihu.com/p/647109286
[4].https://kexue.fm/archives/8265
[5].https://zhuanlan.zhihu.com/p/641865355
[6].https://zhuanlan.zhihu.com/p/646598747
[7].学习报告:向量与复数的联系
[8].复向量的内积,想不明白?
[9].https://arxiv.org/pdf/2104.09864.pdf文章来源地址https://www.toymoban.com/news/detail-838622.html
文章来源:https://www.toymoban.com/news/detail-838622.html
到了这里,关于【论文阅读随笔】RoPE/旋转编码:ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!