外观
LLM 位置编码面试题
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. 什么是位置编码?为什么需要?
位置编码(Position Encoding) 是将 token 在输入序列中的位置信息编码到模型中的技术。
必要性:Self-Attention 机制本身是位置无关的 —— 无论 token 在序列的什么位置,其注意力权重的计算方式完全相同。但实际上,词与词之间的距离信息对语义理解至关重要。位置编码使每个 token 能够感知其在输入序列中的位置,从而实现位置感知的注意力计算。
2. 绝对位置编码
绝对位置编码直接将位置信息加到输入 token 的嵌入向量中:
输入 = x_k + p_k,其中 p_k 仅与位置 k 相关
2.1 训练式位置编码
每个位置对应一个可训练的位置向量,与模型参数一起学习。如对于最大长度 512、维度 768 的模型,初始化一个 512×768 的位置编码矩阵参与训练。
- 应用:BERT、GPT、ALBERT 等早期 Transformer 模型
- 缺点:不具备长度外推性。位置编码矩阵大小是预设的,若扩展长度(如从 512 到 1024),新增的位置向量缺乏训练,无法正确表示位置信息。
2.2 Sinusoidal 位置编码
Sinusoidal 位置编码是 Transformer 原始论文提出的方案,使用正弦和余弦函数生成位置编码:
- 每个分量具有周期性:越靠后的分量波长越长、频率越低
- 远程衰减性:两个 token 的距离越近,其内积分数越高;距离越远,内积分数震荡衰减
3. 相对位置编码
相对位置编码通过修改 Attention 矩阵的计算方式来注入相对位置信息,而非简单地加到输入上。常见变体:
- XLNet 式:将绝对位置替换为正弦式编码和可训练向量
- T5 式:直接在 Attention 矩阵上添加可学习的偏置项
- DeBERTa 式:使用相对位置向量替换部分交互项
4. 旋转位置编码(RoPE)
核心思路:通过旋转矩阵将位置信息编码到 Query 和 Key 向量中,使得 Q 和 K 的内积结果自然地包含相对位置信息。
具体来说,RoPE 作用在每个 Transformer 层的 Self-Attention 块上,在计算完 Q/K 之后、计算 Attention Score 之前进行旋转操作。
优点:
- 以绝对位置编码的方式实现了相对位置编码
- 具有良好的外推性
- 数学形式优雅,与复数运算天然契合
应用模型:LLaMA、GLM-130B、PaLM 等
5. 长度外推问题
5.1 问题定义
长度外推问题指模型在训练和推理时序列长度不一致导致的性能下降,主要体现在:
- 问题一:推理时遇到训练阶段未见过的位置编码
- 问题二:推理时 Attention Span 更大,导致熵增
5.2 解决方法
- 位置编码层面:ALiBi、KERPLE、Sandwich、XPOS、PI、NTK-RoPE / YaRN 等(NTK-RoPE 曾是常用免微调方案)
- Attention Span 层面:在 Softmax 时加入系数
log_{512} n进行调节 - LongChat 方案:将 Position ID 按比例缩放(如长度扩展 8 倍后,position_id = position_id / 8),复用原始位置编码权重
5.3 长文本处理的其他方案
- 稀疏化 Attention:GPT-3 论文中曾提到这方面尝试
- MoE 架构:如据公开推测 GPT-4 可能使用 MoE,以提升长序列训练效率
- Multi-Query Attention:PaLM、Falcon 等通过权重共享提升性能
- Linear Attention:将复杂度从 O(N²) 降至 O(N),代表方案有 Linear Transformer、RWKV
6. ALiBi(Attention with Linear Biases)
思路:在计算完 Attention Score 后,直接加上一个预设的偏置矩阵,根据 Q 和 K 的相对距离来惩罚 Attention Score。距离越远,惩罚越大,贡献越小。
优点:外推性良好。
应用模型:BLOOM