©PaperWeekly 原创 · 作者 | 苏剑林
单位 | 追一科技
研究方向 | NLP、神经网络
说到 Transformer 无法处理超长序列的原因,大家的第一反应通常都是 Self Attention 的二次复杂度。但事实上,即便忽略算力限制,常规的 Transformer 也无法处理超长序列,因为它们的长度外推性(Length Extrapolation)并不好,具体表现为当输入序列明显超过训练长度时,模型的效果通常会严重下降。
尽管已有一些相关工作,但长度外推问题离实际解决还比较远。本文介绍笔者构思的一种参考方案,它可能是目前唯一一种可以用在生成模型上、具备全局依赖能力的长度外推方法。
方法回顾
长度外推,也称为长度泛化(Length Generalization),此前我们在《Transformer升级之路:长度外推性与局部注意力》、《Transformer升级之路:长度外推性与位置鲁棒性》已经介绍过部分工作。然而,它们各有各的问题。
第一篇文章介绍的各种方案都是将注意力局部化的思路,虽然指标上能够体现出改进,但实质也就只是指标好看了一点,无法做到全局依赖的外推,所以对于真正需要长程依赖的场景(如 In Context Learning)并无实质帮助;后者通过随机位置扰动增强对位置信号的鲁棒性,理论上有可能保留全局依赖,但该方法只适用于 Encoder 模型,不适合于 GPT 之类的自回归生成模型。
所以,长度外推问题依然是目前 Transformer 亟待解决但还没解决的一个问题。事实上这个问题不仅存在于 Transformer 中,像我们之前在《Google新作试图“复活”RNN:RNN能否再次辉煌?》中介绍的线性 RNN 模型(包括很火的RWKV),其长度外推能力也并不好。在如今 LLM 时代,长度外推能力显得尤为重要,因为我们总希望模型能够处理任意长的文本,但又不可能把训练样本的长度拉到任意长。
平移不变
接下来我们将针对自回归式 Transformer 进行介绍,但方法对双向注意力的 Encoder 也是有效的。本质上来说,局部化注意力就是通过限制注意力的感知范围,来赋予整个模型“平移不变性”。平移不变性的一个简单基准是 Window Attention,如下图所示: