大模型位置编码方式概述
大型语言模型需要位置编码来理解序列中各个元素的相对或绝对位置。以下是主要的位置编码方式:
主要位置编码方法
-
绝对位置编码:最早由Transformer引入,直接为每个位置分配一个独特的向量
- 正弦/余弦位置编码:使用不同频率的正弦和余弦函数
- 可学习的绝对位置编码:通过模型训练学习位置表示
-
相对位置编码:关注元素之间的相对距离而非绝对位置
- Shaw等人的相对位置表示法:为注意力计算中的每对位置添加相对位置向量
- T5模型的相对位置偏置:在注意力分数中添加相对位置偏置
- 旋转位置编码(RoPE):通过旋转操作在复数平面上编码相对位置信息
- ALiBi:根据相对距离线性衰减注意力分数
- XPos:结合了绝对和相对位置信息
-
混合方法:
- Transformer-XL:结合相对位置编码和分段处理长序列
- DeBERTa:分解注意力机制,同时建模内容和位置信息
RoPE与余弦位置编码比较
RoPE(旋转位置编码)相比传统余弦位置编码有几个显著优势:
理论优势
-
天然编码相对位置:RoPE通过复数旋转直接表达相对位置关系,而余弦编码主要表达绝对位置
-
更好的理论性质:
- 具有平移等变性,即位置关系保持不变
- 具有线性衰减的外推能力
- 内积形式下保持相对位置的一致性
-
解耦表示:有效分离了内容信息和位置信息,减少了二者之间的干扰
实际应用优势
-
更好的长文本外推能力:RoPE能更有效地泛化到训练中未见过的位置
-
上下文窗口扩展友好:
- 使用RoPE进行位置内插(Position Interpolation)
- NTK缩放等技术相对容易实现
-
注意力机制兼容性:与自注意力机制深度整合,不需要额外的前后处理步骤
-
计算效率:实现简单且计算高效,可以很好地并行化
-
在大模型中的普及:几乎所有最新的大模型(LLaMA, GPT-4等)都采用了RoPE或其变种
RoPE通过在复平面上的旋转操作,使得大模型能够更有效地捕捉序列中的相对位置信息,这在处理长文本、跨文档推理和进行位置编码外推时尤为重要。