论文阅读
文章大概提出了两个问题:
1.对于原来的transformer或者bert的embedding中,直接将word embedding(词向量)和positional embedding (位置编码)相加是不合理的,因为二者是异构的信息资源,相加可能会带来随机的混合相关性,导致效果变差。
2.在Bert中的[CLS]标识符的位置信息和词向量的位置信息一概而论是不合理的。因为[CLS]的上下文表示将用作下游任务中句子的表示。由于[CLS]符号的作用不同于自然包含语义的常规单词,如果将其位置与句子中的单词位置相同,它将是无效的。例如,如果对这个符号应用相对位置编码,一些头部的注意力分布可能会偏向于前几个单词,这会影响整个句子的理解。
基于此,文章提出了一种 Untied Positional Encoding,这种联合位置编码方式能够解决上述的两个问题,并且通过消融实验证明方法的有效性。
首先回顾一下自注意力机制:
再回顾一下原始transformer的位置编码(绝对位置编码)的注意力权重的计算方式(2017)
了解transformer的话应该可以看得出,原始的transformer的位置编码是通过上述公式计算出来固定的,并不会随着训练而改变。
但是绝对位置编码对于模型捕获相对词序是无效的,因此就有了相对位置编码的方式(2018)
其中的α是可以训练的。
然后还有个简化版的相对位置编码(2019)
其中b是个可学习的参数。
因为bert是基于transformer encoder架构的用的就是绝对位置编码。
可以展开分析一下绝对位置编码:
原始Bert里token和segment应该是同构的,都表示语义,这里可以看成wi即可,position就是pi了。
那么绝对位置的注意力权重展开如下四项:
首先,很容易看出第一项和最后一项分别表征单词和位置位置关系。然而,投影矩阵WQ,l和WK,l在两项中是共享的。由于位置嵌入和单词嵌入编码显著不同的概念,将相同的投影应用于这样不同的信息是不合理的。
此外,我们还注意到,第二个和第三个术语使用位置(单词)作为query,以获得由单词(位置)组成的关键字。据我们所知,几乎没有证据表明这个词和它在句子中的位置有很强的相关性。此外,在BERT和最近开发的高级方法(如RoBERTa(Liu等人,2010))中,句子以随机方式进行修补。例如,在BERT中,每个输入包含多个句子,其中一些句子从其他文档中进行负采样,以形成下一个句子预测任务。
由于批处理的随机过程,单词甚至可能出现在任何位置,单词和位置之间的相关性可能很弱。为了进一步研究这一点,我们在预训练的BERT模型上可视化等式(6)中的四个相关性。我们发现第二项和第三项在位置上看起来是一致的,如图2所示。这一现象表明,单词和绝对位置之间没有强相关性3,使用这种有噪声的相关性可能对模型训练无效。
将这四项分别可视化得到如下结果:
这个是个bert的选了些句子结果画的图。
第一张是词和词之间的相关矩阵
第二张是词和位置信息的相关矩阵
第三张是位置信息和词的相关矩阵
第四张是位置和位置的相关矩阵
看图可以发现,2和3确实没什么相关性。
为了克服这些问题,文章建议通过使用不同的投影矩阵直接对一对单词或位置之间的关系进行建模,并删除中间的两个项。也就是说,使用:
就是说,文章另开一组位置权重,专门来对位置信息进行训练。
不仅如此,再融入前面提到的相对位置编码的思想:
联合位置编码一半已经介绍完了,目前已经解决第一个问题了,因为位置编码和词向量不能直接相加,因此这里就没相加了,而是重开一组权重去计算位置编码,直接加到注意力机制层。
那么接下来解决[CLS]位置编码和词向量一概而论的问题。
文章是这么设计的:
当i和j都不是[CLS]的时候,即正常单词之间,就使用上面得出的计算方法。
当[CLS]看别的词和别的词看[CLS]的时候,又是另外两组可学习得参数方式了。
如下图所示:
这样就将[CLS]的位置编码和普通单词的区分开来了。
那么
文章提出的TUPE如下:
在TUPE中,Transformer仅使用单词嵌入作为输入。在自我注意模块中,不同类型的相关性被分别计算以反映信息的不同方面,包括单词上下文相关性和绝对(和相对)位置相关性。每一种相关性都有自己的参数,并将被加在一起以生成注意力分布。进一步为[CLS]符号设置专门的位置相关性,以正确捕获句子的全局表示。在TUPE中,位置相关性和单词上下文相关性是分离的,并使用不同的参数进行计算。这种设计成功地消除了单词与位置(或位置与单词)相关性中的随机性,并提供了更多的表现力来表征一对单词或位置之间的关系。其次,TUPE使用不同的函数来计算[CLS]符号和其他位置之间的相关性。这种灵活性可以帮助模型学习整个句子的准确表示。
为了证明在这里面相对位置编码是有效的,实验尝试了绝对位置和相对位置
从结果上看,确实相对位置大多数情况都会好一些。
此时可视化出位置的相关性
看的出来主要有五种
总结
这篇文章的联合位置编码,发现其实并不复杂,就是去掉了两项无关项,给[CLS]相关的单独开了两组权重计算位置编码,然后加上相对位置编码。不过分析的过程是满详细的,可视化展示也是很不错,总结的也不错,主要是会感觉附带了一些思考的过程,让你觉得这文章说的确实有道理,最后结果也是好的,因此我感觉这是一篇很不错的文章。
参考
RETHINKING POSITIONAL ENCODING IN
LANGUAGE PRE-TRAINING
转载:https://blog.csdn.net/qq_52785473/article/details/127646426