该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集。
Q31 正弦位置编码
的平移不变性证明
1. 正弦位置编码解读
在自然语言处理的 Transformer 模型中,位置编码用于赋予模型输入序列中元素的位置信息。正弦位置编码公式为: ,
。 其中,pos表示位置,即序列中元素的顺序;i是维度索引;d是位置编码的维度。这意味着每个位置在不同维度上都有对应的正弦或余弦值编码,为模型识别位置关系提供依据。
2. 平移不变性含义
平移不变性指当输入序列发生整体平移时,位置编码间的相对关系保持不变。即若将序列平移k个位置,原位置、
与平移后位置
、
的编码差异特性一致,保证模型对位置信息的稳定处理。
3. 证明过程
设和
为原始位置,
,
为平移后的位置。 对于第2i维度的正弦位置编码:
根据三角函数的和角公式,对
展开:
同理,也有类似展开。 通过计算
与
,可发现两者的关联仅与平移量k有关,与具体
和
无关,体现了平移不变性。
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和维度向量i。pos记录每个位置的编号,i记录每个维度的编号。 - 接着计算
div_term,即公式中的分母部分,用于确定每个位置在不同维度上的编码规则。 - 然后通过
np.zeros初始化位置编码矩阵pe,为后续填充编码做准备。 - 最后依据正弦和余弦公式,分别对
pe的偶数维度和奇数维度赋值,生成完整的位置编码矩阵。
7. 总结
正弦位置编码的平移不变性为 Transformer 模型处理序列数据提供了稳定的位置信息表征。通过数学证明、LLM 中的多场景应用及代码示例,我们深入理解了这一特性。在 LLM 应用中,它助力模型更好地处理文本位置信息,提升性能。未来,随着模型发展,位置编码特性有望进一步优化拓展,以适应更复杂任务需求。
1867

被折叠的 条评论
为什么被折叠?



