RoFormer: Enhanced Transformer with Rotary Position Embedding
[TOC]
前言
谈谈位置编码
在“attention is all you need”这篇文章中,对于位置编码方式基本是一笔带过而已,没有详细地解释为什么在self-attention当中要加入位置编码和文章中的编码方式的好处。
论文中的编码方式如上式所述,其中别是位置的编码向量的第个分量,是向量的维度。
对于“它是怎么想出来的”、“非得要这个形式不可吗”等原理性问题,还没有比较好的答案。
泰勒展开
对于self-attention这种模型来说,他是==对称的==。假设模型为,什么是对称模型呢,即对于任意第m、n个输入来说,
这就是所谓的对称性,也就是transformer无法识别位置信息的原因——==对称性==,简单来说,就是函数天然满足恒等式。
现在要做的就是要打破这种对称性,将位置信息考虑进去,比如说在每个位置都加上不同的偏置向量:
只要每个位置的编码向量都不一样,那么这种对称性就会被打破,可以用来代替来处理有序的输入(它融合了每个token的位置信息)。
目前,仅考虑m、n这两个位置的位置编码,将其视为扰动项,并泰勒展开(二阶):
根据泰勒展开式可以看到,第一项与位置信息无关,从第二项到第五项都依赖于单一位置信息(==绝对位置信息==),第六项同时包含了m、n这两个位置的信息,是二者的交互项,希望它能够表示一定的==相对位置信息==。
相对位置
根据公式(3)可以看到,展开式最后一位为两个位置的==交互项==,隐含了两个位置的相对位置信息,记为,那么为什么它可以表示相对位置信息呢?
假设单位矩阵,这个时候为==两个编码的内积==,我们希望该项表示的是两个位置的相对位置信息,即==存在某个函数==使得
Abstract
在transformer架构中,位置编码为序列不同位置元素的依赖建模提供了监督信息。本文在transformer-base语言模型中审查了各种各样的位置编码方法,并提出了一个新的命名为Rotary Position Embedding(RoPE)的编码方法。该方法使用旋转矩阵编码了绝对位置信息并且在self-attention公式当中自然地包含了相对位置依赖。
RoPE带有一些有价值的特征,比如能够灵活地扩展到任意长度序列、随着相对距离的增加,token之间的依赖会逐渐衰减,利用相对位置信息装备线性self-attention的能力。
因此,本文的实验表明带有旋转位置矩阵的被提升的transformer(简称RoFormer)在各种各样的语言模型任务上实现了更好的性能表现。
介绍
序列的词序在自然语言中扮演着重要的角色,RNNs通过沿着时间步循环计算隐藏状态编码词序信息,CNNs典型地并没有考虑到词序信息,但是最近的研究显现出使用通用的padding操作可以隐性地学习到位置信息。
在近些年,transformer-base模型的有效性被证明在各种各样的NLP任务中的有效性,提供了比RNNs更好的并行化能力,并且模型能够比CNNs更好地处理长token之间的关系。
以为在transformer中没有用到任何的RNN和CNN,并且self-attention结构被证明不带有位置信息,许多不同的方法被提出在模型中插入位置信息。
部分工作专注于绝对位置编码,这些位置编码由被训练的或者预先定义的函数生成,他们被加到上下文表示当中。
另一部分工作专注于相对位置编码,其将相对位置信息插入到attention公式当中。
在本文的工作中
- 首先在self-attention结构中建立一个位置编码问题的正式描述,并且在回溯了以前的工作。
- 随后,提出旋转位置编码(RoPE),并且了解它的特性
- 最后,报告实验结果
本文==贡献==:
- 审查以前的在相对位置编码上的工作,发现大部分工作都是以添加位置信息到上下文表示的分解为基础。本文提出通过将上下文表示与一个具有清晰理论解释的旋转矩阵==相乘==编码==相对位置信息==。
- 学习RoPE的特性,==并且发现随着相对距离的增加,它逐渐衰减==,这正是自然语言编码所期望的。本文认为以前的相对位置编码方法与线性self-attention机制是不兼容的,但是本文的PoPE是适应这种机制的。
- 证明了RoFormer在各种任务上实现了与其他优秀模型相当的、更优秀的性能效果。更重要的是,发现在中文和英文的语言模型预训练过程中实现了更有效的收敛。