趋近智
将输入令牌表示为密集向量(令牌嵌入)以及生成表示其位置的独特信号(位置编码)是Transformer模型处理输入的一个基本步骤。这两种信息源需要被整合。自注意力机制是Transformer的核心组件,在处理输入元素时本身不了解它们的顺序。因此,我们必须将这种位置信息直接提供给输入到Transformer堆栈的表示中。
原始Transformer论文(《Attention Is All You Need》)中提出的一种标准且非常有效的方法十分直接:逐元素相加。如果 E∈RL×dmodel 表示长度为 L 的序列的令牌嵌入矩阵,且 P∈RL×dmodel 表示对应的位置编码,那么组合后的输入表示 X∈RL×dmodel 的计算方式如下:
X=E+P这表示序列中每个令牌 i(i 的范围从 0 到 L−1),其最终输入向量 xi 是其令牌嵌入 ei 和其位置编码 pi 的和:
xi=ei+pi在此,令牌嵌入 ei 和位置编码 pi 都必须具有相同的维度,dmodel。这种维度上的一致性是加法运算的基本要求。
为什么是简单的加法?尽管可以设想其他组合函数,但加法具有多项优势:
实际操作中,组合嵌入和位置编码通常涉及以下步骤:
[batch_size, sequence_length, d_model] 的张量。[1, sequence_length, d_model] 或 [sequence_length, d_model],可以进行广播或切片。[1, sequence_length, d_model] 或类似的张量,其中包含可训练向量。流程图,说明了通过逐元素相加组合令牌嵌入和位置编码,从而创建Transformer层的输入表示。
如果使用学习到的位置嵌入而不是正弦嵌入,组合机制保持不变:逐元素相加。主要区别在于,表示位置 0,1,2,… 的向量现在是在训练过程中优化的参数,而不是由固定函数确定。模型会根据数据学习对任务最有效的表示。加法步骤仍然将这些学习到的位置信号与语义令牌嵌入合并。
通过将位置编码直接添加到令牌嵌入中,我们创建了一个输入表示 X,它为后续的Transformer层提供了精密的序列理解所需的“什么”(来自 E 的语义)和“哪里”(来自 P 的序列顺序)信息。这个组合表示构成了编码器或解码器堆栈第一层的输入。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造