赞
踩
论文链接:https://arxiv.org/html/2405.18719v2
个人理解,Transformer 架构的位置编码,是解决注意力机制缺乏序列信息的问题,但是以往的位置编码是基于Token级别的,所以LLM难以建立句子级别的更高层次的序列信息,也就很难关注到句子的概念。
本文的基于上下文的位置编码,解决了这个问题。
本文提出了一种新的位置编码方法,称为上下文位置编码(Contextual Position Encoding, CoPE),它允许位置信息根据上下文条件进行调整,通过模型确定的特定标记来递增位置。这种方法使得位置编码能够更普遍地应用于关注序列中的第i个特定词、名词或句子等。CoPE通过解决选择性复制、计数和Flip-Flop任务,在这些任务中流行的基于标记的位置嵌入失败,并且在语言建模和编码任务中降低了困惑度。
直接看文章的图1,可以对文章方法有快速直观的认识。
图1在文章中展示了上下文位置编码(CoPE)的工作原理,并将其与标准的位置编码方法(如相对位置编码,Relative PE)进行了对比。下面是对图1的详细解释:
门值计算:CoPE首先根据上下文计算门值(gates)。这是通过使用当前标记的查询向量(query vector)和先前标记的键向量(key vectors)计算点积,然后应用sigmoid函数来实现的。门值决定了哪些标记在计算位置时应被考虑。
累积求和:接着,CoPE使用这些门值来确定每个标记相对于当前标记的位置。这是通过在当前标记和目标标记之间的门值上进行累积求和来实现的。
位置插值:与基于标记的位置编码不同,CoPE的位置值可以是小数,因此不能直接分配嵌入向量。CoPE通过对最接近的整数值的嵌入向量进行插值来计算位置嵌入。
注意力计算:最后,CoPE使用这些位置嵌入来调整注意力权重,使得查询向量可以在注意力操作中使用它们。
相对位置编码:在传统的相对位置编码中,位置是基于标记的索引来计算的,它依赖于标记的绝对位置或相对于其他标记的位置。
CoPE:与之不同,CoPE首先根据上下文信息计算门值,然后使用这些门值来为标记分配位置,这允许位置表示更加抽象的单元,如单词、动词或句子。
图1通过对比CoPE和传统位置编码方法,展示了CoPE如何使模型能够更加灵活和有效地处理序列数据中的上下文信息。
当然,图1的示例容易让人产生误解,sigmoid的输出值在0和1之间,而图1中CoPE的gates只有0和1,没有0和1之间的小数值。个人猜测,这主要是为了简化表示,为了直观理解,作者可能选择了只展示极端情况,即门完全打开(1)或完全关闭(0)。图1是一个示例,用于说明CoPE的概念和工作原理,通过控制阈值,让句子的结尾对应为1,其他位置为0,表明CoPE的设计很好的建立了句子级别的位置编码,CoPE的设计也允许模型根据上下文动态地调整门值,能够产生不同级别的位置编码。
门值计算:CoPE首先根据上下文计算门值(gates)。通过使用当前标记的查询向量(query vector)和先前标记的键向量(key vectors)计算点积,然后应用sigmoid函数来实现的。门值决定了哪些标记在计算位置时应被考虑。这个门值计算允许微分,所以可以通过反向传播来训练。
累积求和:接着,CoPE使用这些门值来确定每个标记相对于当前标记的位置。这是通过在当前标记和目标标记之间的门值上进行累积求和来实现的。
位置插值:与基于标记的位置编码不同,CoPE的位置值可以是小数,因此不能直接分配嵌入向量。CoPE通过对最接近的整数值的嵌入向量进行插值来计算位置嵌入。e [
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。