©PaperWeekly 原创 · 作者 | 苏剑林
单位 | 追一科技
研究方向 | NLP、神经网络
对于 Transformer 模型来说,其长度的外推性是我们一直在追求的良好性质,它是指我们在短序列上训练的模型,能否不用微调地用到长序列上并依然保持不错的效果。之所以追求长度外推性,一方面是理论的完备性,觉得这是一个理想模型应当具备的性质,另一方面也是训练的实用性,允许我们以较低成本(在较短序列上)训练出一个长序列可用的模型。
下面我们来分析一下加强 Transformer 长度外推性的关键思路,并由此给出一个“超强基线”方案,然后我们带着这个“超强基线”来分析一些相关的研究工作。
思维误区
第一篇明确研究 Transformer 长度外推性的工作应该是 ALIBI [1],出自 2021 年中期,距今也不算太久。为什么这么晚(相比 Transformer 首次发表的 2017 年)才有人专门做这个课题呢?估计是因为我们长期以来,都想当然地认为 Transformer 的长度外推性是位置编码的问题,找到更好的位置编码就行了。
事实上,通过对比现有的一些位置编码的外推效果,确实能找到支撑该观点的一些论据。比如后面分享的多篇实验效果显示,相对位置编码的长度外推性,平均好于绝对位置编码的;像 RoPE 这样的函数式相对位置编码,又会比训练式相对位置编码的外推效果好些。
所以看上去,似乎只要我们不断优化位置编码形式,最终就能给 Transformer 提供更好的长度外推性,从而解决这个问题。然而,情况没有那么乐观,像 RoPE 算是外推能力较好的位置编码,也只能外推 10% 到 20% 左右的长度而保持效果不变差,再长效果就会骤降。
这个比例与预期差太远了,设想中好歹能外推个几倍长度才算是有价值的外推,所以不难想象,单靠改进位置编码改进 Transformer 的长度外推性,就不知道要等多久才能实现更长的效果了。
在直觉上,相信很多读者觉得像 Sinusoidal 或 RoPE 之类的函数式位置编码,它们没有训练参数,长度外推性应该很好才对,但事实上并非如此,这类位置编码并没有在长度外推方面表现出什么优势。为什么会这样呢?其实是大家在假设函数式位置编码的外推性时,忘了它的基本前提——“光滑性”。
其实,外推性就是局部推断整体,对此我们应该并不陌生,泰勒级数近似就是经典的例子,它只需要知道函数某点处若干阶导数的值,就可以对一个邻域内的值做有效估计,它依赖的就是给定函数的高阶光滑性(高阶导数存在且有界)。但是 Sinusoidal 或 RoPE 是这种函数吗?
并不是。它们是一系列正余弦函数的组合,其相位函数是 ,当 时,函数近似就是 ,这算是关于位置编码 的高频振荡函数了,而不是直线或者渐近趋于直线之类的函数,所以基于它的模型往往外推行为难以预估。能否设计不振荡的位置编码?
很难,位置编码函数如果不振荡,那么往往缺乏足够的容量去编码足够多的位置信息,也就是某种意义上来说,位置编码函数的复杂性本身也是编码位置的要求。
超强基线
事实上,更准确的定位应该是:
长度外推性是一个训练和预测的长度不一致的问题。
具体来说,不一致的地方有两点:
1.