2022-02-18

RoFormer: Enhanced Transformer with Rotary Position Embedding

[TOC]

前言

談?wù)勎恢镁幋a

在“attention is all you need”這篇文章中,對(duì)于位置編碼方式基本是一筆帶過(guò)而已,沒(méi)有詳細(xì)地解釋為什么在self-attention當(dāng)中要加入位置編碼和文章中的編碼方式的好處。

論文中的編碼方式如上式所述,其中\large \mathcal{P}_{k, 2i}別是位置\large K的編碼向量的第\large i個(gè)分量,\large d是向量的維度。

對(duì)于“它是怎么想出來(lái)的”、“非得要這個(gè)形式不可嗎”等原理性問(wèn)題,還沒(méi)有比較好的答案。

泰勒展開(kāi)

對(duì)于self-attention這種模型來(lái)說(shuō),他是==對(duì)稱(chēng)的==。假設(shè)模型為f(.),什么是對(duì)稱(chēng)模型呢,即對(duì)于任意第m、n個(gè)輸入x_m、x_n來(lái)說(shuō),
\Large f(..., x_m, ..., x_n)=f(...,x_n, ...,x_m)\tag{1}
這就是所謂的對(duì)稱(chēng)性,也就是transformer無(wú)法識(shí)別位置信息的原因——==對(duì)稱(chēng)性==,簡(jiǎn)單來(lái)說(shuō),就是函數(shù)天然滿(mǎn)足恒等式\large f(m, n)=f(n, m)。

現(xiàn)在要做的就是要打破這種對(duì)稱(chēng)性,將位置信息考慮進(jìn)去,比如說(shuō)在每個(gè)位置都加上不同的偏置向量:
\Large\hat{f}(..., x_m, ...,x_n)=f(...,x_m+p_m, ...,x_n+p_n) \tag{2}
只要每個(gè)位置的編碼向量都不一樣,那么這種對(duì)稱(chēng)性就會(huì)被打破,可以用\hat{f}來(lái)代替f來(lái)處理有序的輸入(它融合了每個(gè)token的位置信息)。

目前,僅考慮m、n這兩個(gè)位置的位置編碼,將其視為擾動(dòng)項(xiàng),并泰勒展開(kāi)(二階):
\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}

根據(jù)泰勒展開(kāi)式可以看到,第一項(xiàng)與位置信息無(wú)關(guān),從第二項(xiàng)到第五項(xiàng)都依賴(lài)于單一位置信息(==絕對(duì)位置信息==),第六項(xiàng)同時(shí)包含了m、n這兩個(gè)位置的信息,是二者的交互項(xiàng),希望它能夠表示一定的==相對(duì)位置信息==。

相對(duì)位置

根據(jù)公式(3)可以看到,展開(kāi)式最后一位為兩個(gè)位置的==交互項(xiàng)==,隱含了兩個(gè)位置的相對(duì)位置信息,記為\large\mathcal{p_m^T}\mathcal{H}\mathcal{p_n},那么為什么它可以表示相對(duì)位置信息呢?
假設(shè)\large \mathcal{H}=\mathcal{I}單位矩陣,這個(gè)時(shí)候\large\mathcal{p_m^T}\mathcal{H}\mathcal{p_n}=\mathcal{p_m^T}\mathcal{p_n}=<\mathcal{p_m}, \mathcal{p_n}>為==兩個(gè)編碼的內(nèi)積==,我們希望該項(xiàng)表示的是兩個(gè)位置的相對(duì)位置信息,即==存在某個(gè)函數(shù)\large \mathcal{g}==使得
\Large <p_m, p_n> \ =\ g(m-n)

Abstract

在transformer架構(gòu)中,位置編碼為序列不同位置元素的依賴(lài)建模提供了監(jiān)督信息。本文在transformer-base語(yǔ)言模型中審查了各種各樣的位置編碼方法,并提出了一個(gè)新的命名為Rotary Position Embedding(RoPE)的編碼方法。該方法使用旋轉(zhuǎn)矩陣編碼了絕對(duì)位置信息并且在self-attention公式當(dāng)中自然地包含了相對(duì)位置依賴(lài)。

RoPE帶有一些有價(jià)值的特征,比如能夠靈活地?cái)U(kuò)展到任意長(zhǎng)度序列、隨著相對(duì)距離的增加,token之間的依賴(lài)會(huì)逐漸衰減,利用相對(duì)位置信息裝備線(xiàn)性self-attention的能力。

因此,本文的實(shí)驗(yàn)表明帶有旋轉(zhuǎn)位置矩陣的被提升的transformer(簡(jiǎn)稱(chēng)RoFormer)在各種各樣的語(yǔ)言模型任務(wù)上實(shí)現(xiàn)了更好的性能表現(xiàn)。

介紹

序列的詞序在自然語(yǔ)言中扮演著重要的角色,RNNs通過(guò)沿著時(shí)間步循環(huán)計(jì)算隱藏狀態(tài)編碼詞序信息,CNNs典型地并沒(méi)有考慮到詞序信息,但是最近的研究顯現(xiàn)出使用通用的padding操作可以隱性地學(xué)習(xí)到位置信息。

在近些年,transformer-base模型的有效性被證明在各種各樣的NLP任務(wù)中的有效性,提供了比RNNs更好的并行化能力,并且模型能夠比CNNs更好地處理長(zhǎng)token之間的關(guān)系。

以為在transformer中沒(méi)有用到任何的RNN和CNN,并且self-attention結(jié)構(gòu)被證明不帶有位置信息,許多不同的方法被提出在模型中插入位置信息。

  1. 部分工作專(zhuān)注于絕對(duì)位置編碼,這些位置編碼由被訓(xùn)練的或者預(yù)先定義的函數(shù)生成,他們被加到上下文表示當(dāng)中。

  2. 另一部分工作專(zhuān)注于相對(duì)位置編碼,其將相對(duì)位置信息插入到attention公式當(dāng)中。

在本文的工作

  1. 首先在self-attention結(jié)構(gòu)中建立一個(gè)位置編碼問(wèn)題的正式描述,并且在回溯了以前的工作。
  2. 隨后,提出旋轉(zhuǎn)位置編碼(RoPE),并且了解它的特性
  3. 最后,報(bào)告實(shí)驗(yàn)結(jié)果

本文==貢獻(xiàn)==:

  • 審查以前的在相對(duì)位置編碼上的工作,發(fā)現(xiàn)大部分工作都是以添加位置信息到上下文表示的分解為基礎(chǔ)。本文提出通過(guò)將上下文表示與一個(gè)具有清晰理論解釋的旋轉(zhuǎn)矩陣==相乘==編碼==相對(duì)位置信息==。
  • 學(xué)習(xí)RoPE特性,==并且發(fā)現(xiàn)隨著相對(duì)距離的增加,它逐漸衰減==,這正是自然語(yǔ)言編碼所期望的。本文認(rèn)為以前的相對(duì)位置編碼方法與線(xiàn)性self-attention機(jī)制是不兼容的,但是本文的PoPE是適應(yīng)這種機(jī)制的。
  • 證明了RoFormer在各種任務(wù)上實(shí)現(xiàn)了與其他優(yōu)秀模型相當(dāng)?shù)?、更?yōu)秀的性能效果。更重要的是,發(fā)現(xiàn)在中文和英文的語(yǔ)言模型預(yù)訓(xùn)練過(guò)程中實(shí)現(xiàn)了更有效的收斂。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容