神经网络Transformer架构中的位置编码
字数 1012 2025-11-20 05:20:55
神经网络Transformer架构中的位置编码
位置编码是固定或可学习的向量,添加到输入序列的每个词嵌入中,用于向模型提供词语的位置信息。由于Transformer的自注意力机制本身不包含顺序感知能力,位置编码确保模型能理解序列中元素的顺序关系。
-
基础概念:在自然语言等序列数据中,词语的顺序对语义至关重要。例如,“猫追狗”和“狗追猫”含义不同。自注意力机制并行处理所有输入词,但无法区分位置差异,因此需显式注入位置信息。位置编码通过数学方法生成与词嵌入维度相同的向量,直接叠加到词嵌入上,使输入同时包含语义和位置特征。
-
编码类型:
- 绝对位置编码:为每个位置生成唯一编码。原始Transformer使用正弦和余弦函数生成固定编码:
- 公式:对于位置 \(pos\) 和维度 \(i\)(其中 \(i\) 为偶数或奇数),编码值为 \(PE_{(pos,2i)} = \sin(pos / 10000^{2i/d_{\text{model}}}})\) 和 \(PE_{(pos,2i+1)} = \cos(pos / 10000^{2i/d_{\text{model}}}})\),其中 \(d_{\text{model}}\) 是词嵌入维度。
- 优势:正弦函数允许模型外推到更长序列,且线性变换可捕获相对位置关系。
- 相对位置编码:直接建模元素间相对距离。例如,通过修改注意力得分计算,加入可学习的相对位置偏差,使模型更关注邻近元素。
- 可学习位置编码:将位置编码作为可训练参数,随模型训练优化。适用于数据分布固定的任务,但可能缺乏外推性。
- 绝对位置编码:为每个位置生成唯一编码。原始Transformer使用正弦和余弦函数生成固定编码:
-
实现细节:
- 位置编码与词嵌入相加后,通过层归一化稳定数值分布。
- 在Transformer编码器和解码器中,位置编码均应用于输入层。解码器还需处理掩码位置,确保预测时仅依赖已生成部分。
- 对于长序列,可选用旋转位置编码等改进方法,增强外推能力。
-
扩展与应用:
- 视觉Transformer(ViT)将图像分块后使用位置编码,保留空间结构。
- 语音处理中,位置编码可捕获时间步顺序。
- 现代变体如ALiBi(Attention with Linear Biases)通过线性偏置直接修正注意力得分,提升长文本处理效果。
位置编码是Transformer架构的核心组件,其设计直接影响模型对序列结构的理解能力,后续优化方向包括动态位置编码和跨模态适配。