在大语言模型中,位置编码用于为模型提供序列中各个标记的位置信息,因为自注意力机制本身是排列不变的(不包含位置信息)。以下是几种主流的位置编码方式及其优缺点:
经典正弦/余弦编码(如Transformer原始方案):
原理:使用不同频率的正弦和余弦函数生成位置向量,并与词向量相加。
优点:可处理任意长度的序列;确定性,无需学习参数。
缺点:对相对位置关系的建模能力有限;可能无法适应训练长度之外的序列。
可学习绝对位置编码(如BERT、GPT):
原理:将位置索引映射为可学习的嵌入向量。
优点:灵活,能够从数据中学习位置模式;在训练长度内表现稳定。
缺点:无法泛化到超过训练时最大长度的序列;缺乏相对位置敏感性。
经典相对位置编码(如Transformer-XL、T5):
原理:在注意力分数计算中引入标记间的相对位置偏差,通常通过可学习的标量或向量实现。
优点:直接建模标记间的相对距离,更符合语言特性;通常具有更好的泛化能力。
缺点:计算复杂度可能稍高;实现相对复杂。
旋转位置编码(RoPE,如LLaMA、GPT-NeoX):
原理:通过旋转矩阵对查询和键向量进行变换,使内积仅依赖于相对位置。
优点:线性注意力机制中天然包含相对位置信息;具有良好的外推性(可处理长于训练长度的序列);被广泛应用于当前大模型(如LLaMA系列)。
缺点:计算开销略高于绝对位置编码。
ALiBi(Attention with Linear Biases):
原理:在注意力分数上添加一个与相对距离成比例的负偏置,越远的标记惩罚越大。
优点:无需位置嵌入,直接修改注意力机制;外推性极强,擅长处理长文本。
缺点:偏置函数形式较简单,可能无法捕捉复杂位置关系。
T5 Bias(如T5模型):
原理:将相对位置划分为若干桶(buckets),每个桶对应一个可学习的偏置标量。
优点:参数量少,计算高效;在预训练模型中表现良好。
缺点:桶的划分可能不够精细,丢失部分位置信息。
| 编码方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 正弦/余弦绝对编码 | 外推性好,无需学习参数 | 相对位置建模弱 | 早期Transformer |
| 可学习绝对编码 | 灵活,训练长度内稳定 | 无法外推,缺乏相对位置感知 | BERT、GPT系列 |
| 相对位置编码 | 直接建模相对位置,泛化能力强 | 实现复杂,计算稍高 | Transformer-XL、T5 |
| RoPE | 外推性好,天然相对位置感知,广泛适用 | 计算开销略高 | LLaMA、ChatGLM等现代大模型 |
| ALiBi | 无需嵌入,外推性极强,适合长文本 | 偏置函数简单,可能表达能力有限 | 长文本生成、推理任务 |
| T5 Bias | 高效,参数量少,适合预训练 | 位置分桶可能不够精细 | T5及其他编码器-解码器模型 |
当前,RoPE和ALiBi因其优秀的外推能力和相对位置建模,已成为大模型位置编码的主流选择。例如,LLaMA-2、ChatGLM等采用RoPE,而ALiBi在MosaicML的模型中得到广泛应用。选择时需权衡外推需求、计算效率与实现复杂性。