在 Transformer 模型中,位置嵌入(Position Embedding) 是一种为序列中的每个元素(如文本中的单词)添加位置信息的机制。它的核心作用是解决 Transformer 中自注意力机制的 “顺序无关性” 问题 —— 由于自注意力是并行处理序列中所有元素的,本身不具备捕捉序列顺序(如 “我爱你” 和 “你爱我” 的区别)的能力,因此需要通过位置嵌入显式注入位置信息。

为什么需要位置嵌入?


Transformer 的核心组件是自注意力机制,其计算过程对序列中元素的顺序不敏感(所有元素同时参与计算,没有类似 RNN 的 “时序依赖”)。例如,对于输入序列 [x1, x2, x3],自注意力的计算结果与 [x2, x1, x3] 可能相同,这显然不符合语言等序列数据的特性(顺序直接影响语义)。

位置嵌入的作用就是:为每个位置分配一个独特的向量,通过与词嵌入(Token Embedding)结合,让模型 “知道” 每个元素在序列中的位置,从而理解序列的顺序关系。

Transformer 原论文中的位置嵌入:正弦余弦嵌入


Transformer 原论文(《Attention Is All You Need》)中使用的是固定的正弦余弦位置嵌入(Sinusoidal Position Embeddings),而非可学习的参数。其设计思路是通过三角函数的周期性,让模型能自然捕捉到 “相对位置” 关系(如位置 k 和 k+Δ 的嵌入向量具有可预测的关联)。

具体公式

对于序列中位置为 pos(从 0 开始)的元素,其位置嵌入向量的第 i 维(i 从 0 开始)的计算方式为:

  • 当 i 为偶数时:PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
  • 当 i 为奇数时:PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

其中:

  • d_model 是嵌入向量的维度(与词嵌入维度一致,原论文中为 512);
  • 10000 是一个缩放常数,控制周期变化的速率。

设计优势

  1. 相对位置可捕捉:对于任意固定偏移 Δ,PE(pos+Δ) 可以表示为 PE(pos) 的线性变换(利用三角函数的和角公式),这让模型能轻松学习到 “相对位置” 信息(如 “距离为 Δ 的两个词” 的关系)。
  2. 无需训练:是固定计算的,不增加模型参数,也无需通过数据学习。
  3. 泛化到长序列:理论上可支持任意长度的序列(即使长于训练时的序列长度),而可学习的位置嵌入在超长序列上泛化能力较差。

位置嵌入的使用方式


在 Transformer 中,位置嵌入与词嵌入的结合方式非常直接:逐元素相加。

具体流程:

  1. 每个词通过词嵌入层映射为 d_model 维的词向量(如 Token Embedding);
  2. 每个位置(如第 0 个词、第 1 个词)对应一个 d_model 维的位置嵌入向量(Position Embedding);
  3. 将词向量与对应位置的位置嵌入向量相加,得到最终的输入向量(Input Embedding = Token Embedding + Position Embedding),再输入到 Transformer 的编码器 / 解码器中。

其他常见的位置嵌入变体


原论文的正弦余弦嵌入并非唯一方案,后续研究中出现了多种改进的位置嵌入方式:

  1. 可学习的位置嵌入(Learned Position Embeddings)

    • 思路:随机初始化一个与序列长度、嵌入维度匹配的位置嵌入矩阵(形状为 [max_seq_len, d_model]),将其作为可学习的参数,通过训练更新。
    • 优势:能自适应具体任务(如 BERT、GPT 等模型均采用),在训练数据覆盖的序列长度内效果较好。
    • 缺陷:对超出训练长度的序列泛化能力差(需截断或插值)。

  2. 相对位置嵌入(Relative Position Embeddings)

    • 思路:不在输入层添加位置信息,而是在自注意力计算时直接引入 “相对位置” 参数。例如,计算注意力权重时,不仅考虑两个词的内容相似度,还考虑它们之间的相对距离(如 “距离 1”“距离 2” 等)。
    • 优势:更直接地建模相对位置关系,避免绝对位置对长序列的限制(如 T5、Transformer-XL 等模型使用)。

  3. 旋转位置嵌入(Rotary Position Embedding, RoPE)

    • 思路:通过 “旋转矩阵” 对词向量进行旋转,将位置信息编码到向量的相位中。其核心是利用复数域的旋转特性,让位置 pos 的向量通过旋转矩阵与位置 pos+Δ 的向量产生关联。
    • 优势:同时支持绝对位置和相对位置建模,且对超长序列的泛化能力极强(被 LLaMA、GPT-4 等大模型广泛采用)。


总结


位置嵌入是 Transformer 处理序列数据的核心组件,其本质是显式注入位置信息,弥补自注意力机制对顺序不敏感的缺陷。从原论文的正弦余弦嵌入到后来的可学习嵌入、RoPE 等,其发展趋势是更高效地捕捉相对位置关系,并提升对长序列的泛化能力。不同的位置嵌入设计会直接影响模型对语言顺序、长距离依赖的理解能力,是 Transformer 架构优化的关键方向之一。

更多推荐