细数位置编码的几种形式

Transformer Positional Encoding

Posted by Ellie on October 30, 2024

Transformer的位置编码(Positional Encoding, PE)是解决序列数据中位置关系的重要方法。位置编码经历了多个阶段的发展,以应对Transformer模型中序列信息丢失的问题,并优化模型的性能。以下是Transformer位置编码形式的主要发展演变。

1. 基础位置编码(经典正弦-余弦位置编码)

在原始Transformer模型(Vaswani等人,2017)中,位置编码采用了固定的正弦和余弦函数来编码序列的位置信息。每个位置 ( pos ) 的编码是使用频率随位置递增的正弦和余弦函数构造的: [ PE_{(pos, 2i)} = \sin \left( \frac{pos}{10000^{2i/d}} \right), \quad PE_{(pos, 2i+1)} = \cos \left( \frac{pos}{10000^{2i/d}} \right) ]

  • 优点:这种编码方式是可加性的,可推广到不同序列长度,并且能很好地捕捉到绝对位置和相对位置。
  • 局限性:这种固定的编码对一些需要自适应学习的任务(如长序列任务或动态序列)表现较差,无法自适应地调节。

2. 可学习位置编码(Learnable Positional Encoding)

随着位置编码应用的扩大,研究者提出了可学习的位置编码,让位置编码向量通过训练来获得。其优点在于:

  • 模型能够自适应调整位置编码以适应特定任务需求,例如在BERT模型中,直接对每个位置添加可训练参数向量,而不再依赖固定的正弦-余弦函数。
  • 然而,随着序列长度的增加,可学习位置编码需要更多的计算资源,并且在遇到未知序列长度时性能会有所下降。

3. 相对位置编码(Relative Positional Encoding)

相对位置编码关注的是序列中位置之间的相对关系,而非绝对位置,这在自注意力中更能有效捕捉长程依赖。

  • 典型的相对位置编码方法如Transformer-XL和T5等模型,它们在序列中每个词之间的相对位置上构建编码,使得模型更加灵活,可以处理动态长度序列。
  • 相对位置编码在许多自然语言处理任务中取得了优异的效果,尤其是在长序列处理上。

4. 混合位置编码(Hybrid Positional Encoding)

混合位置编码结合了绝对和相对位置编码的优点,为每个输入添加不同的相对和绝对位置特征,以同时捕捉全局和局部的位置信息。这种方法进一步增强了对长序列的处理能力,使模型在面对复杂序列结构时表现更佳。

5. 其他进展(例如旋转位置编码、连续位置编码)

最近,旋转位置编码(Rotary Position Embedding, RoPE)和连续位置编码(Continuous Positional Encoding)等新方法也开始应用。它们将位置编码推广到更复杂的向量空间中,如在RoPE中,通过旋转矩阵表示相对位置变化。

  • RoPE:通过在二维旋转空间中表示位置编码,这种方法对长程依赖的捕捉表现更好。
  • 连续位置编码:在时间序列数据中广泛应用,适合建模动态变化的序列特征,使得Transformer更适合时序预测等任务。

6. 结论

Transformer的位置编码已经从固定的正弦-余弦编码逐步演变到自适应和相对编码,甚至混合编码的形式,增强了模型的普适性和灵活性。