由于 Transformer 自身具有置换稳定性(Permutation Invariance),无法直接捕获每个词在序列中的位置信息,因此利用位置编码将序列中元素顺序信息融入Transformer成为一种常见做法。根据位置编码表现的是序列中元素的绝对位置信息还是相对位置信息,业界将位置编码重要分为绝对位置编码(Absolute Position Encoding,APE)和相对位置编码(Relative Position Encoding,RPE)。绝对位置编码的核心思想是在每个输入序列的元素上添加一个位置向量,以表现该元素在序列中的具体位置。相对位置编码则侧重于考虑元素之间的间隔信息。这里说重要是因为另有一些难以划分的位置编码。固然也有别的的区分方式,好比把RoPE单独列为旋转编码。
底子方案是论文"Convolutional Sequence to Sequence Learning"提出来的。该方案将每个单词的位置k映射为一个唯一的位置向量 p k p_k pk,然后在每个词的嵌入 x k x_k xk上加位置编码 p k p_k pk之后输入模子。形式上如下: x = ( x 1 + p 1 , . . . , x k + p k ) x=(x_1+p_1,...,x_k+p_k) x=(x1+p1,...,xk+pk)。其中,x表现模子的输入, x k x_k xk表现第k个位置的词嵌入, p k p_k pk表现第k个位置的绝对位置编码,且只依赖于位置编号k。
2.2 训练式
Encoding Word Order in Complex Embeddings 提出一种复值词向量函数生成绝对位置编码,奇妙地将复值函数的振幅和相位与词义和位置相接洽。该复值词向量函数以位置为变量来盘算每个词在不同位置的词向量。由于该函数对于位置变量而言是一连的,因此该方法不光建模了绝对位置,也建模了词之间的相对位置。
SHAPE: Shifted Absolute Position Embedding for Transformers 提出了一种绝对位置编码的鲁棒性训练方法。SHAPE的根本思想是在训练过程中对绝对位置编码随机整体平移一段间隔来实现泛化能力。
Rethinking Positional Encoding in Language Pretraining在注意力上添加两个标志位置嵌入之间的点积logit。
因此,研究职员通过修改自注意力盘算的过程,把相对位置信息植入到Transformer架构的每一层的注意力机制中。相对位置编码会根据矩阵元素的下标,直接考虑每个元素对应的两个token间的相对位置关系。好比在盘算自注意力矩阵时,无论是在query和key的dot product,以及最终注意力权重和value矩阵乘时,都会分别额外添加一个表现位置m和位置n相对位置信息的仅依赖于m-n的bias。这样通过将每个元素的位置嵌入向量与其他位置的偏移向量进行组合,来编码元素之间的相对间隔。每个元素的位置嵌入向量会随着其与其他元素的位置关系而变化,从而更好地捕捉序列中的局部结构信息,从而进步序列建模的性能。
以“You are great“这句子为例,怎样获取序列顺序?我们大要有两个选择方案。
因为相对位置编码大多是在正弦位置编码的底子上修改得到,因此我们先考虑一样寻常的带绝对位置编码的注意力机制。下图上方出了Transformer模子的某一层中自注意力机制的盘算流程。最终输出的点乘结果 z i z_i zi是当前位置i和和序列中所有位置间的关系,是输入序列的线性加权表现结果。
下图下方的公式 (2) 是query、key之间的向量内积展开式,一共是四项注意力的组合,其中每一项的分别为
相对位置编码起源于论文《Self-Attention with Relative Position Representations》,作者是Transformer的原班人马,他们应该早就知道三角函数编码的题目。
下图给出了三角函数编码的改造过程,重要思绪是以当前位置 q t q_t qt为锚点,在盘算注意力分数 e i j e_{ij} eij和加权求和 z i z_i zi时各引入一个可训练的相对位置向量 a i j V a_{ij}^V aijV和 a i j K a_{ij}^K aijK,具体技能细节如下:
形式上与正弦位置编码有接洽。
把相对位置信息i-j加在K和V上面,而且在多头之间共享,其中i-j是有约束条件的。
相对位置编码的目标是序列元素的边或者间隔。所谓相对位置,是将原来依赖于二元坐标(i,j)的向量,改为只依赖于相对间隔i−j的向量 R i , j K , R i , j V R^K_{i,j},R^V_{i,j} Ri,jK,Ri,jV,而且通常来说会进行截断,以顺应不同任意的间隔,制止分布外位置。 这样只需要有限个位置编码,就可以表达出任意长度的相对位置(因为进行了截断)。或者说,通过在确定的范围内裁剪相对位置,减少了要学习的位置嵌入数目,增强了长度外推。
对于裁剪我们做下阐明:这里的相对位置实在就是一个分段函数,在[-k,k]范围内为线性,在两侧做了截断。通过预先设定的最大相对位置k来强化模子对以当前词为中心的左右各k个词的注意力盘算。因此,最终的窗口大小为2k+1。对于边沿位置窗口超出2k的单词,则接纳了裁剪的机制,即只对有效的临近词进行建模。相对位置权重矩阵 a i j a_{ij} aij如下图所示。
联合绝对位置编码的公式,本方案的具体推导过程如下:
3.5 XLNET
XLNET式位置编码源自Transformer-XL的论文Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context。
Transformer-XL 对绝对位置编码公式做了改动:保存了正余弦频率的取值以及位置信息与语义信息的交互,增长了两个全局可学习的变量u、v,Key的变更矩阵也区分为基于内容的和基于相对位置的两个W。具体细节如下。
把绝对位置编码替换为相对位置编码。
以 q t q_t qt为锚点,将所有的 p s p_s ps改为 r t − s r_{t-s} rt−s,表现对key而言由绝对位置编码换成相对于 q t q_t qt的相对位置编码。相对位置信息 r t − s r_{t-s} rt−s (content-dependent positional bias)是依照Transformer中的通过正余弦频率方式来获取的,该项不需要学习,因此自己也没有被截断。从XLNet论文公式角度看,此处是把绝对位置编码 U j U_j Uj换成了相对位置编码 R i − j R_{i-j} Ri−j。
在key上引入相对位置信息,key的变更矩阵 W K W_K WK被拆分为基于内容的和基于相对位置的两个W,也就是说输入序列和位置编码不再共享权值。从XLNet论文公式角度看,两个W对应 W k , E W_{k,E} Wk,E和 W k , R W_{k,R} Wk,R。
调整绝对位置编码公式的第二项。通过矩阵 W R W_R WR 描画相对间隔与上下文语义之间的关系。
调整绝对位置编码公式的第三项和第四项。
在第三项和第四项中引入引入了两个新的可学习的参数 u ∈ R d u∈R^d u∈Rd 和 v ∈ R d v∈R^d v∈Rd 来替换Transformer中的query向量。这是因为无论query位置怎样,其对不同词的注意毛病都保持划一。因为我们已经把相对位置编码融入了key端,那么query端就不再需要位置编码了。
假如从XLNet论文公式角度看是替换掉 U i T W q T U_i^TW_q^T UiTWqT。
联合绝对位置编码的公式,本方案的具体推导过程如下:
应该是从这个工作开始,后续的RPE都只加到K上去,而不加到V上了。
3.6 TENER
从位置编码的角度,TENER作者发现了传统三角式位置编码在实践中不具备单调性,在理论上也缺少前后token间相对方向的感知。因此,TENER作者提出了将相对方向和相对间隔都纳入到位置编码当中。TENER的位置编码和Transformer-XL的位置编码类似,形式上,只是去掉了相对位置信息 r t , s r_{t,s} rt,s 的变更矩阵。别的,TENER还发现,去除自注意力变更中的校正系数 d \sqrt d d ,可以提升其在NER任务上的效果。
联合绝对位置编码的公式,本方案的具体推导过程如下:
简化(d)项为 b i j b_{ij} bij。第4项相对位置信息实际上只是一个只依赖于(i,j)的标量,可以将直接映射成可学习的标量,作为参数训练出来。该相对位置毛病矩阵被添加到自注意力层中的查询矩阵和关键矩阵的乘积中。这确保了雷同相对间隔的标志始终由雷同的毛病表现,无论它们在序列中的位置怎样。
去除 v j = ( x j + p j ) W V v_j = (x_j + p_j)W_V vj=(xj+pj)WV中的位置编码。
DeBERTa出自《DeBERTa: Decoding-enhanced BERT with Disentangled Attention》。和T5恰恰相反,DeBERTa去掉了分解后的第四项,在第二、三项中将绝对位置编码改为相对位置编码。其思绪如下:
将二三项中的位置编码换成相对位置编码。首先通过 δ ( t , s ) \delta(t,s) δ(t,s) 将 t−s 直接截断在区间 (−k,k] 内,接着通过参数矩阵 P ∈ R 2 k × d P∈R^{2k×d} P∈R2k×d 描画将相对位置映射为特征向量;即接纳相对位置编码,并解耦了内容和位置的注意力。
TUPE出自论文"RETHINKING POSITIONAL ENCODING IN LANGUAGE PRE-TRAINING"。
注:TUPE有APE和RPE两个版本,本文归类时是按照其出发点来归为APE。
TUPE实在可以看作是T5和DeBERTa的位置编码的联合。TUPE位置编码去掉绝对位置编码的公式的第二三项,保存第四项。相较于T5压缩后学习一个标量描画相对位置,TUPE将语义信息和位置信息划一对待、分开描画:以 W Q W_Q WQ, W K W_K WK 描画语义关系,并以 U Q U_Q UQ,$U_K $来描画位置关系(directly model the relationships between a pair of words or positions by using different projection matrices)
针对绝对位置编码的公式的四项,论文认为存在两个题目:
ALiBi编码出自论文“rain Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation”。ALiBi (Attention with Linear Biases) 实在和T5类似,直接给(未概率归一化的)注意力分数加上了一个线性的bias,通过线性偏置项,让自注意力分布更加关注相对间隔较小,即邻近位置的语义信息。区别在于:T5 的偏置是可训练参数,而 ALiBi 的偏置是预设好、不可训练的。 动机
ALiBi的动机是:靠近的词比阔别的词更紧张。 实行
ALiBi编码不是给词向量加入位置嵌入向量,而是用一个和query, key之间的间隔成比例的一个“处罚项”来偏置query-key的注意力得分。这个偏置根据 query 和 key 的相对间隔来处罚 attention score,相对间隔越大,处罚项越大。相当于两个 token 的间隔越远,相互贡献就越小。好比,针对原始attention层中第i个Token的Query向量和第j个Token的Key向量进行相乘操作,ALiBi通过加入位置i、j的绝对值差将位置i和位置j的相对位置信息嵌入到attention盘算过程中。该绝对值差是常量,可以事先盘算出来,而且每个头(head)的值都有所不同。
具体公式是 q i k j T → q i k j T − λ ∣ i − j ∣ q_ik_j^T \rightarrow q_ik_j^T - \lambda|i-j| qikjT→qikjT−λ∣i−j∣,其中 λ \lambda λ 是超参数,对于每一个head接纳不同数值设置,论文颠末实行发现对超参数 λ \lambda λ 以 1 2 1 , 1 2 2 , 1 2 3 , . . . , 1 2 8 , \frac{1}{2^1},\frac{1}{2^2},\frac{1}{2^3},...,\frac{1}{2^8}, 211,221,231,...,281,区间进行设置效果最佳,即假如有 n 个head,则区间 λ \lambda λ 起始从 2 − 8 / n 2^{−8/n} 2−8/n 开始到止境 2 − 8 2^{−8} 2−8。
实行过程如下图所示。
特色
ALIBI是一个很朴素(固然也很有效)的光滑局部注意力技巧,但假如将它理解为“位置编码”,又并非十分妥当。
ALIBI通过线性偏置项,让自注意力分布更加关注相对间隔较小,即邻近位置的语义信息,相当于增强局域性的作用。虽然其是线性偏置项,但是颠末softmax变化之后,真正乘以自注意力分布上的却是指数的衰减。其次,线性的偏置意味着当相对间隔很大时,偏置项趋近于负无穷。因此,ALiBi的偏置项更像是在盘算注意力分数时通过一个带坡度的滑动窗口或者掩码来直接实现注意力盘算过程中的长途衰减,即只能获取到训练长度内的信息。而只要相对间隔足够大,ALiBi都会对其给予严格的处罚。随着序列长度的增长,ALiBi 往往从全局注意力过渡到险些局部的注意力,这就是为什么 ALiBi 在训练长度内的表现比大多数基线差,但在超出训练长度后表现更好的缘故原由。
与此同时,还要注意的是,以ALiBi为代表的绝对偏置编码,无法将对 A t , s A_{t,s} At,s 的操作拆分至 q t q_t qt, k s k_s ks ;而从参数角度,由于偏置 b(t-s) 是直接加在 q t q_t qt, k s k_s ks 内积上的,因此对于参数矩阵 W q W_q Wq, W k W_k Wk ,每个特征维度间缺少区分性,相比其他两种偏置形式更难优化。
联合绝对位置编码的公式,本方案的具体推导过程如下:
3.11 偏置编码&上下文模式
分析完上述相对位置编码之后,我们看看一种分类方式。无论是绝对位置编码,还是相对位置编码,怎样描画序列不同位置间的相对间隔、怎样通过相对间隔控制自注意力矩阵不同位置的偏置大小,不停是位置编码计划的重中之重。而不同位置编码方案添加偏置的方式则各不雷同。但是根本上都可以整理成如下形式。
S t , s = q t T k s = x t T W Q T W K x s + b t , s S_{t,s} = q^T_tk_s = x_t^TW_Q^TW_Kx_s + b_{t,s} St,s=qtTks=xtTWQTWKxs+bt,s
其中, b i j b_{ij} bij被称为位置偏置,依据其不同形式,可以把相对位置编码分为以下两种流派。
bias方案。以T5、TUPE、ALiBi为代表的位置编码,其 b i j b_{ij} bij是一个与 q j q_j qj, k j k_j kj无关的标量。直接把偏置加 q j q_j qj, k j k_j kj的内积上,直接对自注意力矩阵操作。这种方式直接将偏置加在自注意力矩阵 A t , s A_{t,s} At,s 上,盘算简单理解容易,但处罚过于绝对。
上下文方案。包括好比Transfomrer-XL,DeBERTa,其中 b i j = f ( x i , x j , r i j ) b_{ij}=f(x_i,x_j,r_{ij}) bij=f(xi,xj,rij)。这种方案将偏置渗透进特征向量 q t q_t qt, k s k_s ks 的每个维度上,能很好区分特征维度,并以过滤代替处罚,具有更强表达能力。但其其整体偏置易随相对位置大小颠簸,需要更多的维度、额外的校正才能有所缓解。
3.12 小结
一样寻常来说,绝对位置编码具有实现简单、盘算速度快等优点,而相对位置编码则直接地表现了相对位置信号,更符合直觉也更符合文本的特性,实际效果往往也更好。怎样做到集二者之所长呢?很自然的想法是,通过绝对位置编码来实现相对位置编码!也就是混合位置编码。因此,APE和RPE两者最终统一于旋转位置编码(Rotary Position Embedding,RoPE),以绝对位置编码的形式,实现了相对位置编码的效果。
注:此处分类模糊,有人把RoPE看作是混合位置编码,也有人把其归结为相对位置编码,也有人把其单独列为旋转位置编码。
0xEE 个人信息
Length Extrapolation of Transformers: A Survey from the Perspective of Position Encoding
LLaMA长度外推高性价比trick:线性插值法及相干改进源码阅读及相干记录
Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation
2309.12307.pdf (arxiv.org)
ALiBi
Bias项的神奇作用:RoPE + Bias = 更好的长度外推性
DeBERTa: Decoding-enhanced BERT with Disentangled Attention\
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
EXTENDING CONTEXT WINDOW OF LARGE LANGUAGE MODELS VIA POSITION INTERPOLATION
GitHub - dvlab-research/LongLoRA: Code and documents of LongLoRA and LongAlpaca
https://blog.csdn.net/weixin_44826203/article/details/129255185
https://medium.com/@ddxzzx/why-and-how-to-achieve-longer-context-windows-for-llms-5f76f8656ea9
https://twitter.com/GregKamradt/status/1727018183608193393
Kimi Chat 公布“大海捞针”长文本压测结果,也搞清晰了这项测试的精华 (qq.com)
NTK-Aware Scaled RoPE allows LLaMA models to have extended (8k+) context size without any fine-tuning and minimal perplexity degradation. : r/LocalLLaMA (reddit.com)
RETHINKING POSITIONAL ENCODING IN LANGUAGE PRE-TRAINING
RoPE
RoPE外推的缩放法则 —— 实行外推RoPE至1M上下文 河畔草lxr
T5
TENER: Adapting Transformer Encoder for Named Entity Recognition
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
Transformer升级之路:15、Key归一化助力长度外推 苏剑林
Transformer升级之路:1、Sinusoidal位置编码追根溯源 - 科学空间|Scientific Spaces
Transformer升级之路:2、博采众长的旋转式位置编码
Transformer升级之路:6、旋转位置编码的完备性分析
TUPE
XLNet
xPos
RoFormer: Enhanced Transformer with Rotary Position Embedding
Self-Attention with Relative Position Representations
分析transformer模子的参数目、盘算量、中间激活、KV cache - 知乎 (zhihu.com)
图解RoPE旋转位置编码及其特性
大模子分布式训练并行技能(五)-序列并行 (qq.com)
条理分解位置编码,让BERT可以处理超长文本
干货!On Position Embeddings AI TIME
理解Transformer的位置编码51CTO博客transformer的位置编码
羊驼再度进化,“长颈鹿版”LongLLaMA 来啦,上下文长度冲向 100K ,性能不减
让研究职员绞尽脑汁的Transformer位置编码 - 科学空间|Scientific Spaces
详解基于调整RoPE旋转角度的大模子长度外推方法 (qq.com)
https://blog.csdn.net/qq_27590277/article/details/106264402
Ke G, He D, Liu T Y. Rethinking positional encoding in language pre-training[J]. arXiv preprint arXiv:2006.15595, 2020.