Hi,朋友们晚上好~,周末躺了两天,今天把欠下的给补上~
简单介绍下短文本匹配任务,就是两个句子送入模型,然后做一个二分类,判断两个句子是否相识。
短文本匹配在很多场景都会使用到,例如问答、信息检索等系统中都会用到,但是由于短文本可能缺乏一些关键元素信息,所以模型可能不是很好的能理解短文本的语义信息,很容易想到的一个办法就是能不能对短文本做一个信息补充,比如增加一些上下文信息之类的,今天主要是给大家介绍如何引入外部信息来增强短文本信息。

论文地址:https://export.arxiv.org/pdf/2203.01849.pdf
一、解决了什么问题
这个可以拿文中给出的案例说明
s1 = 怎么计息? s2 = 贷款利率一般是多少?
其实这两个短文本想要表达的意思是一样的,但是基于词级别的语义匹配不足以判断它们俩是否相识,于是文中通过引入外部知识来增强短语的表达,例如引入的外部知识为:s1' = 银行贷款怎么计算利息? s2' = 银行贷款利息一般是多少?怎么算? 通过引入外部知识后匹配模型很容易判断这两个短语是否匹配相似,下面我们一起来看看具体是如何引入外部知识的来增强短文本匹配的。
二、核心idea

2.1 上下文(外部知识)引入
这部分主要是使用搜索引擎为每一个短文本搜索一个外部知识集合
,然后使用一定的规则进行清洗得到集合
。
这里作者没有说明搜索引擎是啥,我盲猜应该是ES之类的,也没有说明外部知识具体的数据集是哪个(这个应该根据自己的具体任务来设定自己的外部知识库),清洗规则可以是正则之类的。
2.2 上下文选择器
上诉过程得到的外部知识是比较粗糙的我们需要进行进一步的清洗,作者在这部分解释了一大堆,其实就是使用一个bert 对输入三元组()做一个二分类,
指的是短语a,
指的是短语b,
指的是短语a,b在2.1章节搜索到的候选外部知识集,这里需要卡一个阈值,来判断是否采用当前
。
最后上下文选择器将所有相关的上下文集成到 中。
2.3 上下文增强型文本匹配器
这部分主要是利用2.2小节提取的上下文引入到短文本中。
具体做法是,首先使用sentence BERT对短文本对、
进行编码分别得到句向量
,然后使用context BERT对上下文
进行编码得到句向量
。接着
,分别送入一个三层Transformer,最后得到融入上下文知识表示的
。
不是很清楚文章所提及的sentence BERT和context BERT是否是参数共享,具体大家也可以自己实现一把看看是否需要参数共享。
2.4 匹配分类器

将上述得到的向量进行拼接[h_a;h_b;|h_a-h_b|]$,然后送入两层隐藏层一层输出层前馈神经网络(每一隐藏层后面接relu激活函数)。优化目标是BCE loss。

这里作者后面的p少打了个下标i.
2.5 匹配结果刷选
这一部分作者觉得并不是所以的短文本都需要引入外部上下文去做补充, 如果短文本对在baseline(BERT) 模型得到的置信度得分很高,那么我们可以保留baseline计算所得的结果,决定最后预测的结果。

。这里有点启发式规则的味道
三、实验结果

作者使用了不同的预训练模型作为基准进行了实验,打*号表示是作者自己的实验结果,其实我觉得作者应该贴出BERT,ROBERTA-wwm-ext-large原文在该数据集的结果,这样方便对比。
三、总结
本文通过引入外部知识来增强短语信息,从而增强模型对短语的理解,使得匹配结果更加准确。通篇文章读起来也很短只有五页,但是读起来给我的感觉整体架构就是Boosting集成模型的感觉,不知道各位朋友有没有这种感觉。欢迎食用~