大型语言模型(LLM)在处理文本、音频、代码等序列数据时,往往需要理解其中的顺序信息。例如,在理解一段文字时,我们需要知道每个词语的位置,才能准确地理解其含义。然而,传统的注意力机制无法直接捕捉到序列中的顺序信息,因此需要引入位置编码(PE)来解决这个问题。
传统的 PE 方法通常将每个词语的位置信息直接编码成一个向量,并将其添加到词语的表示中。这种方法虽然简单有效,但存在一个问题:它无法根据上下文来灵活地调整位置信息。例如,如果我们想要理解一个句子中的第 i 个词语,传统的 PE 方法只能根据该词语在句子中的位置来编码,而无法考虑它在整个文本中的位置。
为了解决这个问题,本文介绍了一种新的位置编码方法:上下文位置编码(CoPE)。CoPE 的核心思想是将位置信息与上下文信息结合起来,根据上下文来动态地调整位置编码。
为什么需要上下文位置编码?
想象一下,你正在阅读一篇长篇小说。你想要知道某一个人物在小说中出现的次数,你会怎么做?你可能会逐字逐句地阅读,并记录下该人物出现的次数。然而,如果你想要知道该人物在每一章中出现的次数,你可能需要先找到每章的开头和结尾,然后才能进行统计。
传统的 PE 方法就相当于逐字逐句地阅读,它只能根据每个词语在句子中的位置来进行编码。而 CoPE 则相当于先找到每章的开头和结尾,然后根据上下文来动态地调整位置编码。
CoPE 的工作原理
CoPE 的工作原理可以概括为以下几个步骤:
- 计算门控值: 对于每个词语,CoPE 会根据其上下文信息计算一个门控值。门控值是一个介于 0 到 1 之间的数值,表示该词语是否应该被计入位置编码。
- 计算位置值: CoPE 会根据门控值来计算每个词语的位置值。如果门控值为 1,则该词语会被计入位置编码;如果门控值为 0,则该词语不会被计入位置编码。
- 插值位置嵌入: 由于位置值可以是分数,因此 CoPE 使用插值方法来计算位置嵌入。
CoPE 的优势
CoPE 具有以下几个优势:
- 上下文感知: CoPE 可以根据上下文信息来动态地调整位置编码,从而更准确地反映词语在序列中的位置信息。
- 多层级抽象: CoPE 可以同时表示不同层级的抽象信息,例如词语、句子、段落等。
- 灵活可控: CoPE 的门控值可以根据不同的任务需求进行调整,从而实现不同的位置编码策略。
实验结果
本文对 CoPE 在多个任务上的表现进行了评估,包括:
- Flip-Flop 任务: 该任务要求模型能够记住一个序列中的最后一次写入操作。CoPE 在该任务上取得了显著的提升,尤其是在泛化能力方面。
- 选择性复制任务: 该任务要求模型能够从一个序列中选择性地复制一些词语。Co