4.2 可学习位置编码:灵活性与局限

GPT、BERT 等早期预训练模型没有使用正弦编码,而是选择了可学习的位置编码(Learned Positional Embedding)。这种方案更简单直接,但也带来了新的限制。

4.2.1 设计思路

可学习位置编码的想法很直观:为每个位置分配一个可学习的嵌入向量,像词嵌入一样让模型在训练中自行学习最优的位置表示。

具体实现是创建一个位置嵌入矩阵 $P \in \mathbb{R}^{L_{\max} \times d_{\text{model}}}$,其中 $L_{\max}$ 是预设的最大序列长度。位置 $pos$ 的编码就是取出矩阵的第 $pos$ 行。

4.2.2 优势:完全数据驱动

可学习位置编码的最大优势是灵活性——模型不受任何预设的数学形式(如正弦函数)的约束,可以自由地学习最适合当前任务和数据的位置表示。

实验表明,可学习位置编码在许多任务上与正弦编码效果相当甚至略好,这也是 GPT 和 BERT 选择它的原因。学习到的位置嵌入在可视化后通常展现出平滑的模式——相邻位置的嵌入向量彼此接近,远离的位置向量则渐行渐远——表明模型确实学到了位置的连续性。

4.2.3 根本局限:无法外推

可学习位置编码的致命缺陷是无法外推到训练中未见过的位置

如果训练时最大序列长度为 512,那么位置 513、514、... 的嵌入向量根本不存在。推理时如果收到更长的序列,模型将无法处理。

这个限制在早期模型(BERT 最大 512、GPT-2 最大 1024)中尚可接受,但随着长上下文需求的增长(现代模型需要处理数万甚至上百万词元),可学习位置编码的局限性变得越来越突出。

4.2.4 绝对位置 vs 相对位置的思考

正弦编码和可学习编码都属于绝对位置编码——它们为每个位置分配一个固定的(或固定维度的可学习)向量。但语言中真正重要的往往是相对位置:两个词相距多远,而非它们各自在句子中的绝对位置。

“猫吃鱼”这个片段,无论出现在句子的开头还是中间,“猫”和“吃”之间的关系不应改变。但绝对位置编码中,同样的词在不同位置会有不同的编码,可能导致模型学习到对位置过度敏感的模式。

这一思考推动了相对位置编码方案的发展——其中最成功的是旋转位置编码(RoPE),将在下一节详细讨论。

最后更新于