【论文阅读随笔】RoPE/旋转编码:ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING

1.目的:通过绝对位置编码的方式实现相对位置编码

  • 绝对位置编码比较简单,加或乘一个有次序的数
  • 实现相对位置编码,也即意味着,要蕴含位置差的信息:
    • 假设m是某个token的位置信息,n是另一个token的位置信息,要有类似 m − n m-n mn的信息,比较容易想到复数乘法会产生 m − n m-n mn,以及复数乘法和复数内积的性质。

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 mn的相对位置信息,也就达成了相对位置编码的目的
  • 二维向量和复数平面存在一一对应的关系
  • 二维扩展到 2 ∗ N 2*N 2N维:既然二维的向量旋转后,再做内积有 m − n m-n mn的相对位置信息,那就直接把 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)=(acbd)+(bcad)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)(cdi)]

4.源码实现分析:

todo

5.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

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值