TUPE :重新思考语言预训练中的位置编码

2020-07-16 14:35:42 浏览数 (1)

作者 | sliderSun

知乎专栏 | 优选读、BERT巨人肩膀

整理 | NewBeeNLP

论文:https://arxiv.org/abs/2006.15595 代码:https://github.com/guolinke/TUPE

介绍

文中首先质疑在输入层添加单词嵌入和绝对位置嵌入的合理性。由于这两种嵌入显然是异构的,所以这种“add”操作带来了位置信息和单词语义之间的混合关联。例如,通过扩展第一层的self-attention模块,我们(均指论文作者们)发现有特定项使用“word”作为查询“position”的key,或者使用“position”作为查询“word”的key。但是在语言学中,很少有证据表明,词的语义和位置有很强的相关性,或者在不知道具体语境的情况下,一个词的位置是可以预测的。

其次,注意到Transformer模型并不总是只处理自然语言单词。特别是在预训练模型中,如BERT,通常在句子后面附加一个特殊的符号[CLS]。大家普遍认为这个符号是用来从所有位置接收和总结有用信息的,[CLS]的上下文表示将被用作下游任务中句子的表示。由于[CLS]符号的作用不同于自然包含语义的规则词,我们认为,如果把它的位置当作词在句子中的位置来对待,它将是无效的。例如,如果对这个符号进行相对位置编码,注意力的分布很可能会偏向于前几个单词,从而影响对整个句子的理解

本文针对BERT提出了一种新的位置编码方法—Transformer with Untied Positional Encoding(TUPE),如上图所示。TUPE只使用单词嵌入作为输入。在self-attention模块中,分别计算不同类型的相关性,以反映不同方面的信息,包括单词上下文相关性和绝对位置相关性(以及相对位置相关性)。每一种相关性都有其自身的参数,并将其相加产生注意力分布。进一步,为[CLS]符号设置专门的位置关联,目的是正确地捕获句子的全局表示。

首先,如下(b)图我们可以看到在TUPE中,位置相关性和单词相关性分别在self-attention模块中计算,然后相加。该设计成功地消除了词语和位置之间的关联。

其次,TUPE使用一个不同的函数来计算[CLS]符号和其他位置之间的相关性。这种灵活性可以帮助模型学习整个句子的准确表示。下面具体介绍TUPE模型。

TUPE

解开位置与词语之间的关联

从位置上解开[CLS]符号

实现细节及讨论

TUPE有两个版本:

  • 第一种版本是使用带有未绑定[CLS]符号的未绑定绝对位置编码,称为「TUPE-A」
  • 第二个版本是在第一版本的基础上额外的相对位置编码,「TUPE-R」

数学公式如下:

alpha_{i j}^{mathrm{TUPE}-mathrm{A}}=quad frac{1}{sqrt{2 d}}left(x_{i}^{l} W^{Q, l}right)left(x_{j}^{l} W^{K, l}right)^{T} operatorname{reset}_{theta}left(frac{1}{sqrt{2 d}}left(p_{i} U^{Q}right)left(p_{j} U^{K}right)^{T}, i, jright)
alpha_{i j}^{mathrm{TUPE}-mathrm{A}}=quad frac{1}{sqrt{2 d}}left(x_{i}^{l} W^{Q, l}right)left(x_{j}^{l} W^{K, l}right)^{T} operatorname{reset}_{theta}left(frac{1}{sqrt{2 d}}left(p_{i} U^{Q}right)left(p_{j} U^{K}right)^{T} b_{j-i}, i, jright)

「多头版本 & 参数共享」

实验

我们对展开后的四项做了可视化。如下图所示,可以看到中间两项看起来很均匀,说明position 和 token 之间确实没有太强的关联;token 和 position 用了相同的矩阵做 QKV 的变换。但 position 和 token 所包含的信息不一样,共享矩阵也不合理。

实验结果表明,按上面的式子把 positional embedding 从 input 拆开后,不仅 pre-training loss 收敛得更快,下游任务的表现也更好。另外,我们还特殊处理了 [CLS] token 的 position,使其不会因 positional locality 而忽略了整个句子的信息。这个也能带来不小的提升。整体的实验结果如下,可以看到,我们的方法不仅最后比 baseline 要好很多,并且可以在 30% (300k-step) 的时候,就达到 baseline 在 1000k-step 时的效果。

结论

本文提出了TUPE(具有不受约束的位置编码的Transformer),它通过两种方法改进了现有的方法:解开单词和位置之间的相关性,以及解开序列位置上的[CLS]。具体来说,首先从Transformer的输入中去除绝对位置编码,在自注意模块中分别使用不同的投影矩阵计算位置相关性和单词相关性。然后,通过重置与[CLS]相关的位置相关性来解除[CLS]。大量实验表明,TUPE具有较好的性能。

- END -

0 人点赞