Transformer数学推导——Q31 正弦位置编码PE(pos, 2i) = sin(pos / 10000^{2i/d})的平移不变性证明

部署运行你感兴趣的模型镜像

该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集

Q31 正弦位置编码 PE(pos, 2i) = \sin(\frac{pos}{10000^{\frac{2i}{d}}}) 的平移不变性证明

1. 正弦位置编码解读

在自然语言处理的 Transformer 模型中,位置编码用于赋予模型输入序列中元素的位置信息。正弦位置编码公式为: PE(pos, 2i) = \sin(\frac{pos}{10000^{\frac{2i}{d}}})PE(pos, 2i + 1) = \cos(\frac{pos}{10000^{\frac{2i}{d}}}) 。 其中,pos表示位置,即序列中元素的顺序;i是维度索引;d是位置编码的维度。这意味着每个位置在不同维度上都有对应的正弦或余弦值编码,为模型识别位置关系提供依据。

2. 平移不变性含义

平移不变性指当输入序列发生整体平移时,位置编码间的相对关系保持不变。即若将序列平移k个位置,原位置pos_1pos_2与平移后位置pos_1' = pos_1 + kpos_2' = pos_2 + k的编码差异特性一致,保证模型对位置信息的稳定处理。

3. 证明过程

pos_1pos_2为原始位置,pos_1' = pos_1 + kpos_2' = pos_2 + k为平移后的位置。 对于第2i维度的正弦位置编码: PE(pos_1, 2i) = \sin(\frac{pos_1}{10000^{\frac{2i}{d}}})\) \\ \(PE(pos_2, 2i) = \sin(\frac{pos_2}{10000^{\frac{2i}{d}}})\) \\ \(PE(pos_1', 2i) = \sin(\frac{pos_1 + k}{10000^{\frac{2i}{d}}})\) \\ \(PE(pos_2', 2i) = \sin(\frac{pos_2 + k}{10000^{\frac{2i}{d}}})

根据三角函数的和角公式\sin(A + B) = \sin A\cos B + \cos A\sin B,对PE(pos_1', 2i)展开: \begin{aligned}PE(pos_1', 2i) &= sin((\frac{pos_1}{10000^{\frac{2i}{d}}}) + (\frac{k}{10000^{\frac{2i}{d}}})) \\ &= \sin(\frac{pos_1}{10000^{\frac{2i}{d}}})\cos(\frac{k}{10000^{\frac{2i}{d}}}) + \cos(\frac{pos_1}{10000^{\frac{2i}{d}}})\sin(\frac{k}{10000^{\frac{2i}{d}}}) \end{aligned}

同理,PE(pos_2', 2i)也有类似展开。 通过计算PE(pos_1', 2i) - PE(pos_2', 2i)PE(pos_1, 2i) - PE(pos_2, 2i),可发现两者的关联仅与平移量k有关,与具体pos_1pos_2无关,体现了平移不变性。

4. 在 LLM 中的使用

4.1 文本生成

在故事创作场景中,假设一个儿童故事文本原本是 “小兔子在森林里采蘑菇,它采了很多蘑菇,开心地回家了。”,当作者想要在中间添加情节 “小兔子遇到了小松鼠,它们一起玩耍了一会儿”,文本长度发生了变化。在使用大语言模型进行文本生成辅助时,模型会将每个词语作为序列中的一个元素。正弦位置编码的平移不变性使得模型在处理添加内容后的文本时,能够准确识别 “小兔子遇到了小松鼠,它们一起玩耍了一会儿” 与前后内容的位置关系,从而保证故事的逻辑连贯性,例如后续生成的内容可能是 “之后它们一起带着蘑菇开心地回家了”,不会出现逻辑混乱的情况。

4.2 问答系统

比如在一个知识问答的场景中,用户第一次提问 “中国的四大发明是什么?”,大语言模型会根据已有的知识和位置编码对问题中的每个词进行处理并给出答案。当用户再次提问 “中国的四大发明是什么,它们对世界有什么影响?”,相较于第一个问题,第二个问题的长度增加了。正弦位置编码的平移不变性让模型在处理第二个问题时,能够精准定位 “它们对世界有什么影响” 与前面 “中国的四大发明是什么” 的位置关系,从而准确地从知识库中提取相关信息并给出完整的回答,如 “中国的四大发明是造纸术、印刷术、火药和指南针。造纸术和印刷术促进了知识的传播,火药改变了战争的形式,指南针则推动了航海事业的发展”。

4.3 机器翻译

以将中文句子 “这个美丽的花园里有各种各样的花朵,它们在春天盛开。” 翻译成英文为例,中文和英文的句子结构和长度存在差异。在翻译过程中,大语言模型利用正弦位置编码来处理每个中文词语的位置信息。如果句子变为 “在这个美丽的花园里,有各种各样色彩斑斓的花朵,它们在温暖的春天里盛开。”,句子长度增加。正弦位置编码的平移不变性使得模型能够在处理更长的句子时,依然准确把握每个词语的位置关系,将其准确地翻译成英文 “ In this beautiful garden, there are various colorful flowers, and they bloom in the warm spring.”,保证译文符合英文的语法规则和表达习惯。

4.4 摘要生成

假设一篇科技论文中描述了一种新型电池的研发过程,包括材料选择、实验步骤、性能测试等多个部分。在使用大语言模型生成摘要时,模型会根据正弦位置编码来识别每个部分内容在论文中的位置重要性。如果论文后续增加了对新型电池应用场景的描述,文本长度发生变化。正弦位置编码的平移不变性使得模型能够在文本长度改变的情况下,依然稳定地关注如材料选择、性能测试等关键部分的位置信息,从而生成准确、简洁的摘要,例如 “本文介绍了一种新型电池,阐述了其材料选择和性能测试结果,并提及了潜在应用场景”。

5. 代码示例(Python)

import numpy as np

def positional_encoding(max_len, d_model):
    pos = np.arange(max_len)[:, np.newaxis]
    i = np.arange(d_model)[np.newaxis, :]
    div_term = 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model))
    pe = np.zeros((max_len, d_model))
    pe[:, 0::2] = np.sin(pos * div_term[:, 0::2])
    pe[:, 1::2] = np.cos(pos * div_term[:, 1::2])
    return pe

6. 代码解释

  • 首先,使用np.arange分别生成位置向量pos和维度向量ipos记录每个位置的编号,i记录每个维度的编号。
  • 接着计算div_term,即公式中的分母部分,用于确定每个位置在不同维度上的编码规则。
  • 然后通过np.zeros初始化位置编码矩阵pe,为后续填充编码做准备。
  • 最后依据正弦和余弦公式,分别对pe的偶数维度和奇数维度赋值,生成完整的位置编码矩阵。

7. 总结

正弦位置编码的平移不变性为 Transformer 模型处理序列数据提供了稳定的位置信息表征。通过数学证明、LLM 中的多场景应用及代码示例,我们深入理解了这一特性。在 LLM 应用中,它助力模型更好地处理文本位置信息,提升性能。未来,随着模型发展,位置编码特性有望进一步优化拓展,以适应更复杂任务需求。

您可能感兴趣的与本文相关的镜像

Qwen3-8B

Qwen3-8B

文本生成
Qwen3

Qwen3 是 Qwen 系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令执行、代理能力和多语言支持方面取得了突破性进展

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值