Bert系列:论文阅读Understanding the Behaviors of BERT in Ranking

这篇文章主要是清华大学刘知远组利用BERT模型做了一些排序任务的实验,主要是基于两个数据集:MS MARCO和ClueWeb,前者是QA问答数据集,主要是从Bing上的用户搜索日志中的一些query,以及对应的一些候选passage,该任务的要求便是从候选的passage中选择能够回答该query的正确passage,包含一百多万个query和一百多万个passage。而后者有点类似,主要是通过query检索相应的document。

文章中主要基于bert设计了四种模型:
1.BERT(Rep):这是一个representation based ranker,基本想法是将bert当做一个representation提取器,得到query和document的embedding后(对应的是BERT的cls位置),利用cosine距离进行排序。
计算公式
2.BERT(Last-Int): 这是一个interaction-based ranker,将query和document按照bert的pair sentence的形式输入,尔后利用cls位置得到的向量,利用一个参数矩阵w(最后一层的cls,将它们线性的拼接在一起组成权重w。这么理解也不知道对不对),计算得到一个分数。
计算公式
3.BERT(Mult-Int):将每一层的cls位置的embedding进行加权求和,
计算公式
4.BERT(Term-Trans):在24层的bert的每一层中,将query中各个词与document中的各个词计算一个cosine距离,然后再针对这些组合进行平均,尔后再将各个层的这些token级别的匹配分数进行加权求和。(在这里,为了避免出现负的cosine距离从而干扰匹配分数的平均值,所以做了一个relu层)
计算公式
为了作比较,使用了四类方法:

base版模型: MS MARCO上用的是BM25,ClueWeb上使用Galago SDM
Learning2Rank: MS MARCO上用的是RankSVM,ClueWeb上使用Coordinate Ascent
K-NRM: 核心思想是kernel pooling的一个query-document匹配模型
Conv-KNRM: K-NRM的n-gram版本

实验效果

  1. 整体表现
    在MS MARCO上,bert cls位置进行打分的效果最好,而把bert当做一个representation使用的效果不仅不好,效果接近于随机。这充分说明了BERT不适宜作为一个representation model,尤其是在这种排序问题当中。稍复杂的模型会比简单只用cls的模型效果会稍差一些。

而在ClueWeb数据集上的效果,则全然不同。bert模型的效果比几个base版模型都要差,尤其是在Bing click数据上进行了pretrain的Conv-KNRM模型效果是最好的。文中解释说ClueWeb数据集
实验结果
2. attention可视化
从下图中可以看到,类似于[SEP]这种标记位特别重要。
attention效果
3. 随机去掉一个词对效果的影响
下图中的x轴是未去掉词之前的分数,而纵轴是随机去掉某个词之后的效果,以此研究去掉某个词后对打分的影响程度,这里面有两个角度:

首先对于bert而言,bert打出来的分数比较偏向于0或1,这说明bert的学习效果比较好,而对于Conv-KNRM的效果则几乎在0到1之间都有分布,
bert去掉某个词之后对结果影响不是特别大,也就是原来是1的分数去掉某个词之后分数不会drop特别大,这也说明了bert是一个context信息学习特别好的模型。
去掉停用词对语义的影响
另外,bert做representation效果不好,可能是因为没有对向量进行归一化。不进行归一化,语句之间拉不开距离,影响其泛化能力。可使用训练数据生成embedding,然后求其方差和均值,再得到的向量,计算相似度,应该有效果。

Guess you like

Origin blog.csdn.net/pearl8899/article/details/117623092