Contextual Position Encoding: Learning to Count What's Important
| 2024-6-11
0  |  阅读时长 0 分钟
Reading Status
In Progress
Item Type
预印本
Title
Contextual Position Encoding: Learning to Count What's Important
Authors
Golovneva, Olga Wang, Tianlu Weston, Jason Sukhbaatar, Sainbayar
Year
2024
Full Citation
[1] O. Golovneva, T. Wang, J. Weston, and S. Sukhbaatar, “Contextual Position Encoding: Learning to Count What’s Important.” arXiv, May 30, 2024. doi: 10.48550/arXiv.2405.18719.
Relevance
Problem or Purpose
Theoretical/Conceptual Framework
Sample
Key Findings
Recommendations
Related References
Tags
Date Added
Editors
Methods
My Comments
Own?
Abstract
The attention mechanism is a critical component of Large Language Models (LLMs) that allows tokens in a sequence to interact with each other, but is order-invariant. Incorporating position encoding (PE) makes it possible to address by position, such as attending to the i-th token. However, current PE methods use token counts to derive position, and thus cannot generalize to higher levels of abstraction, such as attending to the i-th sentence. In this paper, we propose a new position encoding method, Contextual Position Encoding (CoPE), that allows positions to be conditioned on context by incrementing position only on certain tokens determined by the model. This allows more general position addressing such as attending to the $i$-th particular word, noun, or sentence. We show that CoPE can solve the selective copy, counting and Flip-Flop tasks where popular position embeddings fail, and improves perplexity on language modeling and coding tasks.
Due Date
File Path
D:\zotero_store\storage\GUM9WZ8G\Golovneva 等 - 2024 - Contextual Position Encoding Learning to Count Wh.pdf
Date
2024-05-30
Collections
Notero ▸ 经典方法

思维导图

Abstract

注意力机制是大型语言模型(LLM)的一个关键组件,它允许序列中的标记相互作用,但具有顺序不变性。结合位置编码(PE)使得可以按位置寻址,例如关注第i个令牌。然而,当前的PE方法使用标记计数来推导位置,因此不能推广到更高级别的抽象,例如关注第i个句子。在本文中,我们提出了一种新的位置编码方法,上下文位置编码(CoPE),该方法允许通过仅在模型确定的某些标记上增加位置来根据上下文来调整位置。这允许更通用的位置寻址,例如关注第i个特定单词、名词或句子。我们证明了CoPE可以解决流行位置嵌入失败的选择性复制、计数和Flip-Flop任务,并改善了语言建模和编码任务的困惑。

1. Introduction

许多常见的数据源,如文本、音频、代码和事件的时间线,都是有序序列。在处理这样的序列时,排序信息显然是至关重要的。在文本的情况下,位置信息不仅对解码单词之间的含义至关重要,而且在每个尺度上都是必要的,例如句子和段落级别。Transformer架构是当前大型语言模型(LLM)的主要支柱,它依赖于注意力机制[Bahdanau et al.,2014],该机制本质上缺乏排序信息,并将序列视为集合。因此,有必要具有用于对位置信息进行编码的附加机制。位置编码(PE)[Collobert和Weston,2008,Sukhbaatar等人,2015]通过将嵌入向量分配给每个位置并将其添加到相应的令牌表示中来实现这一点。位置本身可以通过两种方式测量:从序列开始计数标记的绝对PE和从当前标记开始向后计数的相对PE。PE方法已成为LLM的一个组成部分,并提出了这些基本主题的几个变体[Dufter等人,2022]。
现有PE方法的一个共同特征是使用令牌作为测量单位。然而,标记是一个可变单元,根据标记化方法,它可以是整个单词,也可以是单词的一部分,甚至可以是字符。对于字节对编码(BPE)标记化[Sennrich et al.,2016],一个单词可以是1个或多个标记,这取决于单词本身。对于像句子这样的抽象元素,这种位置变化会增加,句子可以有十到几百个标记。因此,标记位置不适合于一般位置寻址,例如查找第i个单词或句子。
为了将位置测量与更有语义意义的单元(如单词或句子)联系起来,需要考虑上下文。然而,这在当前的PE方法中是不可能的,因为位置寻址是独立于上下文计算的,然后与上下文寻址合并。我们认为位置寻址和上下文寻址的分离是核心问题,相反,我们提出了一种新的PE方法,将上下文寻址和位置寻址集成在一起。特别是,我们对依赖于上下文的位置编码感兴趣,因此它可以同时表示从标记位置到句子位置的不同级别的位置抽象。通过这种方式,例如可以使用记号位置来关注前几个记号,同时使用句子位置来关注先前的句子以更好地理解当前句子。我们将我们的方法称为上下文位置编码(CoPE)。CoPE首先使用其上下文向量来确定要计数哪些令牌。具体来说,给定当前令牌作为查询向量,我们使用它们的密钥向量来计算每个先前令牌的门值。然后,我们聚合这些门值,以确定每个令牌相对于当前令牌的相对位置,如图1所示。与标记位置不同,此上下文位置可以采用分数值,因此不能指定嵌入。相反,我们对分配给整数值的嵌入进行插值,以计算位置嵌入。与其他PE方法一样,这些位置嵌入随后被添加到关键向量中,因此查询向量可以在注意力操作中使用它们。由于上下文位置可能因查询和层而异,因此模型可以同时以多个单位测量距离。我们首先将CoPE应用于几个玩具任务:计数、选择性复制和Flip-Flop任务,在这些任务中,它优于基于令牌的PE方法,尤其是在域外泛化的情况下。为了测试现实世界的适用性,我们在维基百科文本上使用了一个语言建模任务,我们在其中展示了CoPE也能带来更好的性能。当对代码进行训练时,也可以观察到相同的性能增益。
图1:上下文位置编码(CoPE)。诸如相对PE之类的标准位置编码方法是基于标记位置的。相反,CoPE首先计算以上下文为条件的门值,然后使用该门值来使用累积和为令牌分配位置。这允许将位置置于上下文中,并表示单词、动词或句子等不同单元的计数。CoPE对每个注意力头进行操作,因此可以处理每个注意力头上的不同位置类型。在这个例子中,使用相对PE来处理最后一句话是很有挑战性的,它能做的最好的事情就是衰减注意力(“近因偏见”)。CoPE可以计算句子的结尾,只需关注位置“0”。
图1:上下文位置编码(CoPE)。诸如相对PE之类的标准位置编码方法是基于标记位置的。相反,CoPE首先计算以上下文为条件的门值,然后使用该门值来使用累积和为令牌分配位置。这允许将位置置于上下文中,并表示单词、动词或句子等不同单元的计数。CoPE对每个注意力头进行操作,因此可以处理每个注意力头上的不同位置类型。在这个例子中,使用相对PE来处理最后一句话是很有挑战性的,它能做的最好的事情就是衰减注意力(“近因偏见”)。CoPE可以计算句子的结尾,只需关注位置“0”。
注意力机制的核心是对序列中的令牌进行softmax操作[Bahdanau et al.,2014]。设{x1,…,xT}是输入标记的序列,{h1,…,hT}是它们的隐藏表示。通过hi的线性变换来构建查询qi、关键字ki和值vi向量。每个第i个令牌的注意力输出oi为
notion image
这种注意力操作对位置信息j是不变的,因此有必要具有额外的位置编码(PE)机制[Skhbaatar等人,2015]。PE方法可分为两大类:绝对法和相对法。绝对PE简单地将表示绝对位置j的向量添加到隐藏状态,通常在令牌嵌入之后:hj←hj+P(j)。这里,P(i)可以通过嵌入层来实现,该嵌入层将唯一的可学习向量e[i]分配给每个位置值i。或者,P(i)可以是使用具有不同频率的正弦函数的固定映射[Vaswani等人,2017]。
相对PE[Shaw et al.,2018]取决于所关注的令牌位置j以及当前令牌i。因此,它必须在关注层内实现
notion image
在这里,我们只将其添加到关键向量中,但还有其他变体。同样,P可以是嵌入层,因此我们对每个位置都有一个可学习的向量:
notion image
也可以使用固定函数,例如在RoPE[Su等人,2024]中。现在,我们可以将qi⊤kj术语视为上下文寻址,因为它取决于xj令牌的实际内容,并将qi T e[i−j]视为位置寻址,因为其仅依赖于xj的位置信息。尽管已经提出了许多不同的位置编码方法(见Dufter等人[2022]的调查),其中大多数侧重于提高效率,但它们都是基于标记位置的。

3. Motivation

标准位置编码在简单的任务中失败

在这里,我们分析了一个简化的注意力机制和一个玩具任务,以说明当前基于标记位置的位置寻址技术的缺点。让我们考虑由两种类型的标记x和y组成的简单序列,以说明上下文和位置寻址机制的相互作用。例如,给定序列yyyyxyyy,上下文寻址可以通过生成关键字和查询向量来将注意力集中在令牌x上,从而
notion image
这将给出注意力权重ax/ay=exp∆。假设∆=1,那么x上的注意力将大约是y的2.7倍。类似地,位置寻址允许我们使用位置嵌入提取第i个令牌(在相对位置,因此i=0是最后一个令牌),使得
notion image
更有趣的是,上下文和位置寻址可以协同工作来进行更复杂的关注,例如找到序列yyxyyxyy中的最后一个x。如果我们假设x个令牌具有相同的上下文表示(即相同的关键向量),则它们的注意力差异将仅取决于它们的位置i和j:
notion image
为了使位置i处的最后一个x具有更大的关注度,它们的差异应该大于一些δ>0。由于位置i和j事先是未知的,因此上述不等式必须适用于任何i<j,包括当j=i+1时。然后我们可以推导
notion image
现在让我们使用等式(2)中的∆,并将其与位置0处y上的注意力进行比较。
notion image
由此,我们可以看出,当i>∆/δ时,y将比x具有更大的关注度,因此,如果最后一个x离得太远,则模型无法关注它。这给了我们一种直觉,为什么独立的立场和上下文处理可能会在非常简单的任务中失败。

最先进的LLM在计数问题上失败

即使在最先进的LLM中也可以观察到标准位置编码的基本故障。在表1中,我们展示了一个简单的单词计数任务,该任务对于有能力的LLM来说应该是微不足道的。令人惊讶的是,GPT4和Llama-2 70B聊天都无法完成此任务。这项任务对PE来说具有挑战性的是,模型需要关注最后一句,而忽略前一句。一个句子中的记号数量变化很大,使得记号的位置不精确。然而,如果位置是根据句子的数量而不是标记来衡量的,我们认为这项任务很容易,因为模型会正确参与。有关此实验的更多详细信息,请参见附录A。
表1:即使是强大的LLM也很难根据其位置来关注句子等抽象元素。在这个例子中,“爱丽丝”和“书”这两个词都是在第一句中提到的,而不是最后一句。在这种情况下,通过标记位置进行寻址不是很有用,因为我们不知道最后一句有多少标记。对句子位置进行编码可能会使这项任务变得琐碎
notion image

3. Methodology

在CoPE中,位置是以上下文相关的方式测量的,而不是简单的令牌计数。该方法的工作原理是,在使用上下文向量测量距离时,首先决定应包括哪些标记。为此,为每个查询qi和密钥kj对计算一个门值
notion image
其中j<i和σ是sigmoid函数。门值为1表示该键将在位置测量中计数,而0表示它将被忽略。例如,要计算标记i和j之间的句子,只有句子分隔标记(如“.”)的门值应为1。闸门还对查询进行调节,因此如果需要,每个查询都可以具有不同的位置测量值。软门控功能允许区分,从而可以使用反向传播来训练系统。接下来,我们通过将当前令牌和目标令牌之间的门值相加来计算位置值
notion image
注意,如果门总是1,那么pij=i−j+1,我们恢复基于令牌的相对位置。因此,CoPE可以被视为相对PE的概括。然而,一般来说,pij可以是特定单词或单词类型的计数,如名词或数字、句子数量或Transformer认为在训练中有用的其他概念。与标记位置不同,我们的位置值pij不限于整数,并且由于sigmoid函数,可以取分数值。这意味着我们不能像在相对PE中那样使用嵌入层将位置值转换为向量。相反,我们使用整数值之间的插值。首先,我们将可学习嵌入向量e[p]分配给每个整数位置p∈[0,T]。那么位置pij的嵌入将是两个最接近的整数嵌入的简单插值
notion image
最后,我们可以计算类似于等式的注意力权重。(1)
notion image
然而,在实践中,计算和存储向量e[pij]需要额外的计算和内存。我们可以通过首先计算所有整数位置p的qi⊤e[p]乘法,然后对结果值进行插值来提高效率:
notion image
Limited positions:从等式(4)中,我们可以看到pij的最大值是上下文大小T,这意味着我们需要T+1个位置嵌入(包括位置0)。然而,如果门被稀疏地激活(例如计数句子),我们可以用更少的位置覆盖整个上下文T。因此,我们可以通过设置pij←min(pij,pmax)在最大可能位置上设置限制pmax<T。
多头注意力:到目前为止,CoPE被定义为单头注意力。多头扩展很简单,因为每个头都将独立地执行自己的CoPE。头之间的键和查询向量不同,这意味着它们可以实现不同的位置测量。例如,头1可以具有打开所有门的键,使得位置计数标记,而头2的门仅针对单词开始标记打开,以将单词计数为位置。虽然位置嵌入e[p]仅在头部之间共享,但我们也对跨层共享的位置嵌入进行了实验。
计算:自注意模块中计算成本最高的运算是具有O(T2dh)FLOPS的键(或值)和查询乘法,其中dh是头部维度。CoPE最昂贵的操作是等式中的门计算。(3),但我们可以从注意力期间已经计算的查询和密钥乘法中受益,并将门计算简化为简单地应用softmax函数。CoPE中下一个最昂贵的运算是等式(7)中的矩阵乘法,其具有O(T pmaxdh)FLOPS。这种计算可以通过选择一个小的pmax来减少,我们在实验中证明了这一点。
计算门:注意,在计算等式(3)中的门时使用与等式(9)的最终注意力计算相同的密钥。这也使高度关注的令牌在位置计算中被计数。为了将位置与注意力本身区分开来,我们可以在计算门时使用单独的键,这些键是通过额外的投影ki=Wghi计算的。在我们的实验中,我们将这个版本表示为sep-keys。另一种选择是使用值向量,使gij=σ(qi⊤vj),我们称之为val门。然而,这些版本将需要更多的计算,因为我们不能重用密钥查询乘法
 

4. Experiments

 

5. More discussion

6. Conclusion

 
 
Loading...
目录