深入理解 Transformer:位置编码 (Positional Encoding) 与位置嵌入 (Positional Embedding) 的核心区别

Transformer 架构自 2017 年诞生以来,彻底改变了自然语言处理(NLP)领域。它强大的自注意力机制 (Self-Attention)允许模型捕捉句子中的长距离依赖关系。然而,自注意力机制本身是与词序无关的,这意味着如果打乱一个句子的词序,自注意力层的输出可能保持不变。

为了解决这个问题,我们需要引入一种机制,让模型知道每个词在序列中的位置 。这就是 位置信息(Positional Information) 的作用。在不同的 Transformer 变体中,实现这一目标主要有两种方式:位置编码 (Positional Encoding)位置嵌入 (Positional Embedding)

虽然它们的目的相同,但其实现方式和性质却有本质区别。


🔑 核心差异:计算 vs. 学习

理解两者区别的关键在于:这些位置向量是预先计算好的 ,还是在训练中学习到的

特性 位置编码 (Position Encoding) 位置嵌入 (Position Embedding)
获取方式 通过固定的、预定义的函数(如正弦和余弦函数)直接计算。 作为模型参数,在训练过程中学习和优化得到。
可学习性 不可学习(Non-learnable / Fixed)。 可学习(Learnable)。
典型应用 原始的 Transformer 模型(《Attention Is All You Need》)。 BERT、GPT-2/3、T5 等(或后续许多使用可学习位置向量的模型)。

1. 详细解析:位置编码 (Positional Encoding)

🌊 什么是位置编码?

位置编码 是原始 Transformer 论文《Attention Is All You Need》中采用的方法。它不引入任何新的可训练参数,而是使用一种基于正弦和余弦函数的数学公式来生成与序列中每个位置相对应的向量。

📌 关键特点:

  • 固定性与泛化性: 由于是基于函数计算,它具有天然的外推能力。即使模型在训练时只见过长度为 512 的序列,如果推理时遇到长度为 1000 的序列,它仍然可以通过公式计算出 等位置的编码。
  • 相对位置信息: 正余弦函数的性质使得任意两个位置 和 之间的位置编码可以通过线性变换表示,这能帮助模型捕捉相对位置关系

数学表达如下(其中 是位置, 是词嵌入的维度, 是维度的索引):


2. 详细解析:位置嵌入 (Positional Embedding)

📚 什么是位置嵌入?

位置嵌入 是将位置信息本身视为一个可训练的参数矩阵,类似于词嵌入(Word Embedding)矩阵。模型在训练过程中,会为每一个可能的序列位置学习一个唯一的向量表示。

📌 关键特点:

  • 灵活性: 模型可以学习到最适合特定任务和数据集的位置表示,理论上比固定的函数编码更强大。
  • 长度限制: 这种方法要求在训练之前确定一个最大序列长度 (例如 BERT 为 512)。位置嵌入矩阵的大小是固定的(最大长度 维度)。如果输入的序列超过了这个最大长度,模型将无法提供有效的位置信息。
  • 广泛应用: 许多现代预训练模型(如 BERT)都采用了这种可学习的位置嵌入。

🤝 它们如何结合使用?

无论是采用位置编码 还是位置嵌入 ,它们最终都是通过向量相加的方式,将位置信息注入到词嵌入向量中。

最终进入 Transformer 层的输入嵌入 可以概括为:

其中 要么是固定的位置编码 向量,要么是学习得到的位置嵌入向量。


结论

在设计 Transformer 模型时,选择 Position Encoding 还是 Position Embedding 是一个重要的设计决策:

  • 如果注重简单、无需训练 ,以及对超长序列的泛化能力 ,可以选择位置编码(固定函数)。
  • 如果认为模型应该通过数据学习最有效的位置表示 ,且对序列长度有明确限制,则选择位置嵌入(可学习参数)。

随着 Transformer 架构的演进,也出现了更多高级的位置表示方法,例如相对位置编码 (Relative Position Encoding)、旋转位置嵌入 (RoPE) 等,它们进一步提升了模型处理序列关系的能力。

相关推荐
Lihua奏3 天前
从单核到多核:CPU为什么不能再只靠提频变快
深度学习
拾年2753 天前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
饼干哥哥7 天前
开源Skills|搭建亚马逊动态关键词库系统,每天抓SSS级机会词
人工智能·深度学习·数据分析
武子康9 天前
调查研究-191 SenseVoice 不只是 ASR:把语音从“转文字“升级成“理解状态“
人工智能·深度学习·openai
武子康10 天前
调查研究-189 Kronos 调研:金融 K 线基础模型,是真突破,还是量化圈的新玩具?
人工智能·深度学习·openai
xiao5kou4chang6kai416 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
renhongxia116 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
计算机科研狗@OUC16 天前
(cvpr26) AIMDepth: Asymmetric Image-Event Mamba for Monocular Depth Estimation
人工智能·深度学习·计算机视觉
β添砖java16 天前
深度学习(22)网络中的网络NiN
人工智能·深度学习
Kobebryant-Manba16 天前
深度学习时候d2l报错和使用问题
人工智能·深度学习