Transformer 自己不知道词的先后,需要额外表示位置。ALiBi 没有把位置向量加到 Token 表示里。它直接修改注意力分数,两个位置离得越远,分数里扣掉的值越大,模型因此更偏向附近内容。
我查看了 ALiBi 原始论文的方法和长度外推实验。它的全名是 Attention with Linear Biases。那条距离惩罚是一条直线,每个注意力头使用一个训练前就定好的斜率。有的头惩罚较陡,更多关注近处;有的头斜率较缓,还能保留较远的信息。
位置信息进入注意力分数
常见的绝对位置嵌入会给每个序号准备一个表示。训练只见过 1024 个位置时,更大的序号可能没有合适经验。ALiBi 使用相对距离计算惩罚,长度增加以后,同一条规则仍能继续算。它也没有新增需要训练的位置参数。
论文在 WikiText-103 上比较了正弦位置、旋转位置和 T5 相对偏置等方法。相同训练长度下,ALiBi 没有增加运行时间或参数,额外显存介于 0 到 0.7%。它的主要节省来自用短序列训练。短序列的注意力矩阵更小,同一批 Token 可以更便宜地处理。
一个 13 亿参数模型只用 1024 长度训练,测试时把输入拉到 2048,困惑度达到使用正弦位置并在 2048 长度训练的模型水平。前者训练快 11%,显存少 11%。这个数字经常被概括成免费长上下文,论文给出的范围窄得多,模型、数据和评测长度都有明确设置。
作者观察到,表现最好的区域大约在训练长度的两倍附近。模型在一万 Token 的输入上仍保持较强表现,继续拉长却没有普遍保证。分析还发现,一部分收益来自减少序列开头可用历史太少造成的困惑度损失,并不能证明模型会同等利用远处每个细节。
论文也做了同长度对照。训练和测试都没有超过原长度时,大规模语料上的 ALiBi 与正弦位置表现相近;外推时差异才明显。作者用滑动窗口重新计算困惑度以后,随着验证文本变长,ALiBi 的困惑度大致持平,没有继续因为看到更长历史而下降。这项分析把结论收窄了,稳定处理更长输入与有效利用全部长历史是两件事。
距离偏好会影响任务
线性惩罚给模型加入了偏近的先验。语言模型预测下一个词时,这种偏好常常合理;长文检索若要从很远处找一个名字,距离惩罚也可能让那条信息吃亏。斜率如何分给不同注意力头,会改变近处与远处的分工。
采用 ALiBi 时,应在计划使用的长度上分别测困惑度、远距离检索、跨段推理和生成稳定性。还要把训练长度写清,2048 训练后跑到 4096,与 4096 训练后跑到 8192,虽然都是两倍,计算预算和任务难度并不相同。ALiBi 让长度外推有了一条很简洁的路,能走多远仍需用实际材料量出来。