位置编码与长度外推性[Alibi/KERPLE/Sandwich]

绝对位置编码【三角/递归/相乘】->相对位置编码【XLNET/T5/DEBERTA】->旋转位置编码(ROPE/XPOS)->复杂位置编码【CNN/RNN/复数/融合】

Transformer升级之路:7、长度外推性与局部注意力
Transformer升级之路:8、长度外推性与位置鲁棒性
Bias项的神奇作用:RoPE + Bias = 更好的长度外推性

长度外推

1.1 什么是长度外推性?

长度外推性=train short, test long
train short:1)受限于训练成本;2)大部分文本的长度不会特别长,训练时的max_length特别特别大其实意义不大(长尾)。
test long:这里long是指比训练时的max_length长,希望不用微调就能在长文本上也有不错的效果。

1.2 为了做到长度外推性,需要解决两个主要问题:

1)预测时位置编码的外推:没见过的就无法保证很好的泛化,不仅学习式位置编码如此;像正弦位置编码、RoPE也有这样的问题,它们自身虽然不用学习,但是会影响上层参数的学习;
2)预测时序列更长,导致注意力相比训练时更分散:序列长度增大意味着attention分布的熵增大了,注意力更分散了;

1.3 长度外推性的推测

可见,长度外推性问题并不完全与设计一个良好的位置编码等价。
然后,还有个问题是,虽然PE一直是transformer类模型中的重要的基础组件,很多位置编码也在尝试做一些外推性的工作,但整体来看早期的LLM其实没有特别关注或者说纠结长度外推性,直到后面各种NLG模型的崛起,尤其是ChatGPT的出现,大家才惊觉原来上下文可以做的这么长了?

为什么目前市面上的LLM鲜有使用呢(据目前所知,好像只有BLOOM/MPT/采用了ALiBi)?可能的原因:

1)专注于长度外推性的工作主要是在21/22年后才逐渐出现,效果尚未经过充分检验;
2)长度外推性的评测指标与LLM的评测指标并不完全match:目前长度外推性主要看PPL,这其实不够全面。PPL这类语言模型的指标,可能更关注局部上下文的预测,因此局部注意力相关的方案可能在这类评测上天然占优。
3)目前的长度外推性工作似乎更多的在强调外推性如何如何,但更重要的应该还是max_length内的效果,从LLM的角度来看,应该在保证max_length内的效果后再去追求外推性。比如,从GLM的消融实验来看,ALiBi的效果还是不如RoPE的。

一直的误解

第一篇明确研究Transformer长度外推性的工作应该是ALIBI,出自2021年中期,距今也不算太久。为什么这么晚(相比Transformer首次发表的2017年)才有人专门做这个课题呢?估计是因为我们长期以来,都想当然地认为Transformer的长度外推性是位置编码的问题,找到更好的位置编码就行了。
事实上,通过对比现有的一些位置编码的外推效果,确实能找到支撑该观点的一些论据。比如后面分享的多篇实验效果显示,相对位置编码的长度外推性,平均好于绝对位置编码的;像RoPE这样的函数式相对位置编码,又会比训练式相对位置编码的外推效果好些。所以看上去,似乎只要我们不断优化位置编码形式,最终就能给Transformer提供更好的长度外推性,从而解决这个问题。然而,情况没有那么乐观,像RoPE算是外推能力较好的位置编码,也只能外推10%到20%左右的长度而保持效果不变差,再长效果就会骤降。这个比例与预期差太远了,设想中好歹能外推个几倍长度才算是有价值的外推,所以不难想象,单靠改进位置编码改进Transformer的长度外推性,就不知道要等多久才能实现更长的效果了。
在直觉上,相信很多读者觉得像Sinusoidal或RoPE之类的函数式位置编码,它们没有训练参数,长度外推性应该很好才对,但事实上并非如此,这类位置编码并没有在长度外推方面表现出什么优势。为什么会这样呢?其实是大家在假设函数式位置编码的外推性时,忘了它的基本前提——“光滑性”
其实,外推性就是局部推断整体,对此我们应该并不陌生,泰勒级数近似就是经典的例子,它只需要知道函数某点处若干阶导数的值,就可以对一个邻域内的值做有效估计,它依赖的就是给定函数的高阶光滑性(高阶导数存在且有界)。但是Sinusoidal或RoPE是这种函数吗?并不是。它们是一系列正余弦函数的组合,其相位函数是k/100002i/d,当2i/d≈0时,函数近似就是sink,cosk,这算是关于位置编码k的高频振荡函数了,而不是直线或者渐近趋于直线之类的函数,所以基于它的模型往往外推行为难以预估。能否设计不振荡的位置编码?很难,位置编码函数如果不振荡,那么往往缺乏足够的容量去编码足够多的位置信息,也就是某种意义上来说,位置编码函数的复杂性本身也是编码位置的要求。

1.4 实现长度外推性的超强基线

长度外推性是一个训练和预测的长度不一致的问题。具体来说,不一致的地方有两点:

1、预测的时候用到了没训练过的位置编码(不管绝对还是相对);
2、预测的时候注意力机制所处理的token数量远超训练时的数量。

第1点可能大家都容易理解,没训练过的就没法保证能处理好,这是DL中很现实的现象,哪怕是Sinusoidal或RoPE这种函数式位置编码也是如此。
关于第2点,可能读者会有些迷惑,Attention理论上不就是可以处理任意长度的序列吗?训练和预测长度不一致影响什么呢?答案是熵,我们在《从熵不变性看Attention的Scale操作》也已经分析过这个问题,越多的token去平均注意力,意味着最后的分布相对来说越“均匀”(熵更大),即注意力越分散;而训练长度短,则意味着注意力的熵更低,注意力越集中,这也是一种训练和预测的差异性,也会影响效果。

事实上,对于相对位置编码的Transformer模型,通过一个非常简单的Attention Mask,就可以一次性解决以上两个问题,并且取得接近SOTA的效果:
不难理解,这就是将预测时的Attention变为一个局部Attention,每个token只能看到训练长度个token。这样一来,每个token可以看到的token数跟训练时一致,这就解决了第2个问题,同时由于是相对位置编码,位置的计数以当前token为原点,因此这样的局部Attention也不会比训练时使用更多的未知编码,这就解决了第1个问题。所以,就这个简单的Attention Mask一次性解决了长度外推的2个难点,还不用重新训练模型,更令人惊叹的是,各种实验结果显示,如果以它为baseline,那么各种同类工作的相对提升就弱得可怜了,也就是它本身已经很接近SOTA了,可谓是又快又好的“超强基线”。

对于第二点:
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第1张图片
其中m是训练长度,n是预测长度。经过这样修改(下面简称为“logn缩放注意力”),注意力的熵随着长度的变化更加平稳,缓解了这个不一致问题。个人的实验结果显示,至少在MLM任务上,“logn缩放注意力”的长度外推表现更好。

第1点不一致性,即“预测的时候用到了没训练过的位置编码”,那么为了解决它,就应该做到“训练阶段把预测所用的位置编码也训练一下”。一篇ACL22还在匿名评审的论文《Randomized Positional Encodings Boost Length Generalization of Transformers》首次从这个角度考虑了该问题,并且提出了解决方案。
论文的思路很简单:

随机位置训练 设N为训练长度(论文N=40),M为预测长度(论文M=500),那么选定一个较大L>M(这是一个超参,论文L=2048),训练阶段原本长度为N的序列对应的位置序列是[0,1,⋯,N−2,N−1],现在改为从{0,1,⋯,L−2,L−1}中随机不重复地选N个并从小到大排列,作为当前序列的位置序列。

预测阶段,也可以同样的方式随机采样位置序列,也可以直接在区间中均匀取点(个人的实验效果显示均匀取点的效果一般好些),这就解决了预测阶段的位置编码没有被训练过的问题。不难理解,这是一个很朴素的训练技巧(下面称之为“随机位置训练”),目标是希望Transformer能对位置的选择更加鲁棒一些,但后面我们将看到,它能取得长度外推效果的明显提升。笔者也在MLM任务上做了实验,结果显示在MLM上也是有效果的,并且配合“logn缩放注意力”提升幅度更明显(原论文没有“logn缩放注意力”这一步)。

Alibi 位置编码

主要是Bloom模型采用,Alibi 的方法也算较为粗暴,是直接作用在attention score中,给 attention score 加上一个预设好的偏置矩阵,相当于 q 和 k 相对位置差 1 就加上一个 -1 的偏置。其实相当于假设两个 token 距离越远那么相互贡献也就越低。
ALiBi的做法其实和T5 bias类似,直接给q*k attention score加上了一个线性的bias:

KERPLE(Kernelized Relative Positional Embedding for Length Extrapolation)

KERPLE主要针对Alibi 做了一些微小改进,将内积的bias由之前自然数值幂函数或指数函数,并且改成可学习参数。

Sandwich(Receptive Field Alignment Enables Transformer Length Extrapolation)

Sandwich将ALiBi的线性bias改为正弦编码的内积pm*pn,上述编码也是对于正余弦三角式的一种改进。

1 Attention with Linear Biases (ALiBi).

ALiBi的做法其实和T5 bias类似,直接给q*k attention score加上了一个线性的bias
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第2张图片
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第3张图片
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第4张图片
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第5张图片

2 KERPLE: Kernelized Relative Positional Embedding for Length Extrapolation

其对ALIBI进行了一些改进,引入了两个可学习的参数r1和r2来“动态”学习局部区域。如下图所示,左侧为原始的通过引入参数QmTKn来动态减去AIBLI中的λ∣m−n∣矩阵:

KERPLE其实就是ALiBi的一个简单推广,将线性bias改为幂函数或指数函数的形式,系数或幂设置为可学习参数
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第6张图片
定义了两种模式,分别是power和logarithmic,分别对应没有对数和有对数的形式:
在这里插入图片描述
在logarithmic模式中,r1控制了整体的量,r2相当于ALIBI中的λ \lambdaλ,c是一个常数。苏神版简化写作:
在这里插入图片描述

3 Receptive Field Alignment Enables Transformer Length Extrapolation

Sandwich与KEPRLE是同一个作者提出的,其对KEPRLE进行了少量改进,即对应的公式改写为:QmTKn + λ PmTPn,其中Pm和Pn可以使用Sinusoidal编码表示,即:

由于Sinusoidal编码在单调性上等价于∣ m − n ∣,都是线性递增形式,因此Sandwich只是改头换面了。
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第7张图片
PmTPn是m−n的标量函数,并且平均而言是|m−n|的单调递增函数,所以它的作用也跟−λ|m−n|相似。之所以强调“平均而言”,是因为PmTPn整体并非严格的单调,而是振荡下降,如图所示:
位置编码与长度外推性[Alibi/KERPLE/Sandwich]_第8张图片

你可能感兴趣的:(自然语言处理,深度学习,人工智能)