Re 79 读论文:RoPE RoFormer: Enhanced Transformer with Rotary Position Embedding

诸神缄默不语-个人优快云博文目录
诸神缄默不语的论文阅读笔记和分类

论文下载地址:https://arxiv.org/abs/2104.09864
论文标题:RoFormer: Enhanced Transformer with Rotary Position Embedding

这篇是苏神团队的工作,是做位置编码的。总之就是直接计算的是绝对位置编码,但是用在注意力机制中就能建模相对位置编码,这么一个算法。
原博文:Transformer升级之路:2、博采众长的旋转式位置编码 - 科学空间|Scientific Spaces
比较早期的博文:让研究人员绞尽脑汁的Transformer位置编码 - 科学空间|Scientific Spaces
本文提出的编码方法叫:Rotary Position Embedding(RoPE)
用RoPE的Transformer就叫RoFormer,RoFormer模型开源地址:
https://github.com/ZhuiyiTechnology/roformer
https://huggingface.co/docs/transformers/model_doc/roformer

1. 大模型位置编码问题发展史

Transformer相比RNN的优势是可以并行,相比CNN的优势是可以建模长距token间关系(多层CNN其实也可以建模,但本文说不考虑这件事先)。
但是现存的Transformer自注意力机制其实是与token位置无关的。

这里的编码是以KQV计算方式的选型来定义的,这个是通用写法:
在这里插入图片描述

x x x是content-based encoding(我的理解是就是词向量), p p p就是位置编码

  1. absolute position embedding:在计算kqv的时候直接把这个位置编码加到表征上
    在这里插入图片描述
    在这里插入图片描述
    1. generated absolute position encoding:直接用固定的公式生成位置编码,例如Transformer本来的位置编码。
      Transformer标准的位置编码方法可以见我之前写过的Transformer原理那篇博文的对应段落:https://blog.youkuaiyun.com/PolarisRisingWar/article/details/127999367#t9
    2. trainable absolute position encoding
  2. relative position encoding
    在这里插入图片描述
    就是这个KQV它本来就是用于token之间的自注意力,现在就直接只针对token之间的关系进行建模了,这个意思。r是m和n之间的相对距离,clip到一个范围内,也就是说如果距离太大就一概而论了。
    在这里插入图片描述

其他:
3. 神经常微分网络
4. 在复数空间建模

2. RoPE原理

用旋转矩阵(乘原始余弦表征)编码绝对位置,用自注意力机制编码相对位置。
在具体的实现上,它是想办法让绝对位置编码拥有一种能在注意力机制计算的过程中建模相对位置编码的能力。
RoPE的编码也是绝对的,不是可学的。

优势:(数学证明我懒得研究了)

  1. 支持任意长度序列(有更好的“外推性”)
  2. token间依赖随距离增加而衰减
  3. 相对位置编码间可以应用线性注意力

以下是我看不懂的数学上RoPE的定义:
目标是qk内积能只建模token之间的相对距离:
在这里插入图片描述
当d=2时:
在这里插入图片描述
在这里插入图片描述
↑也就是query向量乘一个旋转矩阵
k同理,最终g(内积)就可以表示为:
在这里插入图片描述

对于普遍的多维场景,分成d/2个子空间(图1的色块),根据点积的线性叠加性进行拼接:
在这里插入图片描述
在这里插入图片描述

示意图:
在这里插入图片描述

RoPE的高效计算:
在这里插入图片描述

纯数学理论证明懒得看了,我靠,看不懂。

3. 实验

机器翻译任务:
在这里插入图片描述

预训练语言模型任务,与标准Transformer(BERT)的对比和Performer是否结合RoPE的效果对比:
在这里插入图片描述

GLUE benchmark:
在这里插入图片描述

中文数据
对中文数据的处理:
在这里插入图片描述
对中文数据的预训练:
在这里插入图片描述
下游任务实验指标:
在这里插入图片描述

4. 本文撰写过程中参考的网络资料

因为数学部分比较难,我基本上都是略读,以后还有很大的重刷空间:

  1. 一步一步,推导旋转位置编码 (Rotary Position Embedding, RoPE) - 知乎
  2. 十分钟读懂旋转编码(RoPE)
  3. 一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值