一句话定义:ALiBi(Attention with Linear Biases,线性偏置注意力)是一种位置处理方案——模型完全不往词向量里加位置编码,而是在算注意力分数时,按"这两个词隔多远"扣分。
它到底做了什么
Transformer 的注意力本质是集合运算:谁跟谁相关就打高分,跟顺序无关。所以必须额外告诉它"谁在前、谁在后"。主流有两条路:一是绝对位置编码(absolute positional embedding),把位置信息揉进词向量;二是相对位置偏置(relative position bias),按两个词的相对距离给注意力加分或减分。
ALiBi 走第二条路,但做得极简。词向量里什么都不加,注意力原始打分(query 和 key 的点积)出来之后,如果第 i 个词在看前面的第 j 个词,就减掉 m × (i − j)。这里的 m 是每个注意力头(head)固定好的斜率,不学习、不训练,不同的头给不同的 m——斜率大的头衰减快,只管近处;斜率小的头衰减慢,能看很远。
打个比方:公司开会,每个人发言的分量先由内容决定,再按座位距离打折——隔一排扣 1 分,隔两排扣 2 分,隔十排扣 10 分。近处的人天然更容易被听见,远处的人除非内容特别硬,否则压不过来。
为什么它反而更擅长外推
关键在"公式"和"查表"的区别。
可学习的绝对位置编码本质是查表:位置 0 到 1023 各有一个训练出来的向量,位置 1024 没学过,模型只能瞎猜。ALiBi 不需要表,它只做一次减法乘法——训练时最长见过 1024 个词,推理时喂 4096 个词,"隔 3000 个位置扣 3000m 分"照样算得出来。而且模型在训练中已经学会了"越远越不可信"这个模式,序列变长只是把同一模式继续延伸。距离越远扣得越多,也保证注意力不会被长序列摊薄到失控。
| 方案 | 位置信息怎么进入 | 有可学参数 | 长度外推 |
|---|---|---|---|
| 可学习绝对位置编码 | 加到词向量 | 有,每个位置一个 | 差,超长位置没学过 |
| 正弦位置编码 | 加到词向量 | 无 | 一般 |
| 相对位置偏置(T5 式) | 加到注意力分数 | 有,按距离分桶 | 中等,靠分桶截断 |
| RoPE | 旋转 Q/K | 无 | 一般,通常要配插值等技巧 |
| ALiBi | 加到注意力分数 | 无 | 较好,任意距离都能算 |
注意:不加位置编码 ≠ 不知道位置。位置信息以"扣分规则"的形式进了注意力权重,只是走的不是向量加法。
对从业者的意义
实现几乎零成本:几十行代码,不增加参数和显存,训练推理都便宜。想"短上下文训练、长上下文推理"时,它是最省事的选项之一,适合长文档、长对话、代码仓库这类输入远超训练长度的场景。
但它不是万能药:外推不是无限有效,拉到特别长时质量仍会下降;固定线性衰减也是一种比较强的先验,未必适合所有任务。今天更主流的是 RoPE 加各种插值方案,ALiBi 更多见于一批早期长上下文开源模型(如 BLOOM、MPT 一系)。具体某个模型用没用、怎么配,以官方页面为准。
