2022-02-18

RoFormer: Enhanced Transformer with Rotary Position Embedding

[TOC]

前言

谈谈位置编码

在“attention is all you need”这篇文章中,对于位置编码方式基本是一笔带过而已,没有详细地解释为什么在self-attention当中要加入位置编码和文章中的编码方式的好处。

论文中的编码方式如上式所述,其中\large \mathcal{P}_{k, 2i}别是位置\large K的编码向量的第\large i个分量,\large d是向量的维度。

对于“它是怎么想出来的”、“非得要这个形式不可吗”等原理性问题,还没有比较好的答案。

泰勒展开

对于self-attention这种模型来说,他是==对称的==。假设模型为f(.),什么是对称模型呢,即对于任意第m、n个输入x_m、x_n来说,
\Large f(..., x_m, ..., x_n)=f(...,x_n, ...,x_m)\tag{1}
这就是所谓的对称性,也就是transformer无法识别位置信息的原因——==对称性==,简单来说,就是函数天然满足恒等式\large f(m, n)=f(n, m)

现在要做的就是要打破这种对称性,将位置信息考虑进去,比如说在每个位置都加上不同的偏置向量:
\Large\hat{f}(..., x_m, ...,x_n)=f(...,x_m+p_m, ...,x_n+p_n) \tag{2}
只要每个位置的编码向量都不一样,那么这种对称性就会被打破,可以用\hat{f}来代替f来处理有序的输入(它融合了每个token的位置信息)。

目前,仅考虑m、n这两个位置的位置编码,将其视为扰动项,并泰勒展开(二阶):
\Large \hat{f} \approx f +\mathcal{p_m}^T{\partial f \over \partial x_m}+\mathcal{p_n}^T{\partial f \over \partial x_n}+{1 \over2}\mathcal{p_m}^T{\partial^2 f \over \partial x_m^2}\mathcal{p_m}\\ \Large+{1 \over 2}\mathcal{p_n}^T{\partial^2 f \over \partial x_n^2}\mathcal{p_n}+\underbrace{\mathcal{p_m^T}{\partial^2 f \over \partial x_nx_m}\mathcal{p_n}}_{\mathcal{p_m^T}\mathcal{H}\mathcal{p_n}} \tag{3}

根据泰勒展开式可以看到,第一项与位置信息无关,从第二项到第五项都依赖于单一位置信息(==绝对位置信息==),第六项同时包含了m、n这两个位置的信息,是二者的交互项,希望它能够表示一定的==相对位置信息==。

相对位置

根据公式(3)可以看到,展开式最后一位为两个位置的==交互项==,隐含了两个位置的相对位置信息,记为\large\mathcal{p_m^T}\mathcal{H}\mathcal{p_n},那么为什么它可以表示相对位置信息呢?
假设\large \mathcal{H}=\mathcal{I}单位矩阵,这个时候\large\mathcal{p_m^T}\mathcal{H}\mathcal{p_n}=\mathcal{p_m^T}\mathcal{p_n}=<\mathcal{p_m}, \mathcal{p_n}>为==两个编码的内积==,我们希望该项表示的是两个位置的相对位置信息,即==存在某个函数\large \mathcal{g}==使得
\Large <p_m, p_n> \ =\ g(m-n)

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结构被证明不带有位置信息,许多不同的方法被提出在模型中插入位置信息。

  1. 部分工作专注于绝对位置编码,这些位置编码由被训练的或者预先定义的函数生成,他们被加到上下文表示当中。

  2. 另一部分工作专注于相对位置编码,其将相对位置信息插入到attention公式当中。

在本文的工作

  1. 首先在self-attention结构中建立一个位置编码问题的正式描述,并且在回溯了以前的工作。
  2. 随后,提出旋转位置编码(RoPE),并且了解它的特性
  3. 最后,报告实验结果

本文==贡献==:

  • 审查以前的在相对位置编码上的工作,发现大部分工作都是以添加位置信息到上下文表示的分解为基础。本文提出通过将上下文表示与一个具有清晰理论解释的旋转矩阵==相乘==编码==相对位置信息==。
  • 学习RoPE特性,==并且发现随着相对距离的增加,它逐渐衰减==,这正是自然语言编码所期望的。本文认为以前的相对位置编码方法与线性self-attention机制是不兼容的,但是本文的PoPE是适应这种机制的。
  • 证明了RoFormer在各种任务上实现了与其他优秀模型相当的、更优秀的性能效果。更重要的是,发现在中文和英文的语言模型预训练过程中实现了更有效的收敛。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容