百分点认知智能实验室出品:基于BERT的问题语义等价新模型

前言

问题的语义等价判断是智能对话系统中的典型难题,百分点认知智能实验室提出了一种新的问题语义层次匹配模型,该模型借鉴了域适应的MMD思想,创新的结合了BERT时代的预训练模型和BIMPM上层架设网络,通过抽取语言模型中不同层的表示而达到更好的效果。在公开的Quora和SLNI两个数据集上分别进行实验,该模型的效果都达到了目前的State-of-the-art。

智能对话系统因其巨大的潜力和商业价值受到越来越多研究者和从业者的关注,对话的主要种类包括闲聊型、任务型、知识型、阅读理解型等,目前已经广泛应用在智能客服、智能音箱、智能车载等众多场景。

近年来,智能对话还出现了新的应用场景,例如可以将自然语言转换为各种程序性语言,如SQL,从数据库中找到相应的答案,让用户和数据库的交互变得更加直接和方便。

1问题语义等价的重要性

尽管智能对话系统取得了长足的进展,但对于专业性非常强的对话系统,自动构建回答对的技术尚不能保证其回答的绝对正确性。另一方面,专业性非常强的对话系统相比以闲聊为目的的对话系统而言,是更有业务价值的。对于专业性非常强的对话系统,其挑战在于,问题回答稍有不慎,往小了说可能对用户造成困惑,往大了说甚至会引起法律纠纷,这种情况对于政府机构、金融机构和大型企业都是存在的。在这种情况下,目前最可靠的方法仍然是通过人工构建问答对来获取答案。然而针对基于问答对的问答系统,虽然我们可以采取人工扩充问答对的方式来提高系统系统匹配的准确性,但是由于自然语言本身的复杂性,采用穷举的方式去列出用户对于同一问题所有可能的问法需要耗费大量人力物力,这是不现实的。举例来说,即使对于询问天气这样的简单问题,其问法可能也是多种多样的。比如说,用户可能会采用”请问,北京明天天气怎么样?”,”北京明天多少度?”,”北京明天天儿咋样?”等等问法。在这种情况下,所需要的算法是一种能够判别给定的问题和问题库中的问题是否语义上等价的模型。

简单的看起来,似乎只需要判断两个句子的相似度,例如其重合词语的个数即可以解决。但事实上,判断句子是否等价的任务要远远比单纯的词语匹配复杂。举例来说,问题”市政府的管辖范围是什么?”和”市长的管辖范围是什么?”仅有两个字的差异,但两者语义是不相同的,因此其回答也应该不一样的。另一方面来说,”市政府的职责是什么”和”请问,从法律上来讲,市政府究竟可以管哪些事情”这两个问题,除去在”市政府”一词外,几乎是没有任何重合的,但两者语义是等价的,因此其答案也应该是一样的。

从这几个例子来看,句子匹配的任务需要模型能够真正理解其句子的语义。而今天我们所介绍的模型就是如何让机器更有效的理解和分析两个句子的含义,并进行语义等价比较。而我们采用的方法借鉴了MMD在图像处理时用到的深度匹配思想,并将此思想运用在了BERT多层网络模型上。

2基于BERT和BIMPM的问题语义等价新模型

在BERT等预训练模型出现之前,语义本身的表达一般是用word vector来实现。为了得到句子的深层语义表达,所采用的方法往往是在上层架设网络,以BIMPM为例,BIMPM是一种matching-aggregation的方法,它对两个句子的单元做匹配,如经过LSTM处理后得到不同的time step输出,然后通过一个神经网络转化为向量,然后再将向量做匹配。下面来详细介绍一下BIMPM的大体流程,如图中所示,从Word Representation Layer 开始,将每个句子中的每个词语表示成d维向量,然后经过Context Representation Layer 将上下文的信息融合到需要对比的P和Q两个问题中的每个time-step表示。Matching Layer 则会比较问题P和问题Q的所有上下文向量,这里会用到multi-perspective 的匹配方法,用于获取两个问题细粒度的联系信息,然后进入Aggregation Layer 聚合多个匹配向量序列,组成一个固定长度的匹配向量,最后用于Prediction Layer 进行预测概率。     

通过BIMPM模型可以捕捉到句子之间的交互特征,但是这样的匹配仅仅也只是在表层特征进行比较,并不涉及深层次的特征比较。为了进行深层次的特征比较,我们借鉴了图像中的MMD思想,Maximum Mean Discrepancy,即最大平均差异,通过深度神经网络的特征变换能力,对变换后的特征分布进行匹配。MMD的最大优点在于它不仅进行表层特征的匹配,还进行深层次特征的匹配,这样可以更精确地计算出特征之间的匹配程度,提升模型的效果。拿图像对比来举例,图像中所蕴含的信息不单单是由表层特征就可以来涵盖的,往往是通过表层、多个隐藏层以及它们之间不同的参数相加得到的结果。可是为什么这种方法很少在NLP领域听闻呢?因为之前的模型如BIMPM 是总结表层的特征,而并非深层特征。BIMPM将每个句子中的每个词语表示成d维向量,然后经过Context Representation Layer,将上下文的信息融合到需要对比的P和Q两个句子中的time-step表示,最终比较句子P和句子Q的所有上下文向量,但它也只是对表层特征进行匹配,从而忽略很多额外的语义特征,但是BERT 预训练模型的流行,让深层特征匹配成为了现实。

如果我们将MMD的思想应用到句子匹配的任务上,并用BERT预训练深层模型来实现,就会得到一个重要的启发,MMD思想的主要效果来源于它将BERT预训练深层模型的不同层表示进行匹配,形象地来说,这是一种”向下匹配”的思维。而BIMPM由于在BERT之前出现,其语义表示只能通过词(字)向量和LSTM等网络进行,因此它捕捉特征表示的方法只能通过”向上匹配”。这是否意味着自从BERT出现以后,将这两种方式进行结合呢?

基于这个思路,我们在本文中提出了问题语义等价的层次匹配模型,它的思想是将特征”向下匹配”和”向上匹配”相结合。在具体的实现上,我们分别从BERT深层模型的最后几层中提取特征通过加法进行拼接,替代原始的字向量输入到BIMPM模型当中。这种做法是和MMD很相似的,只不过MMD中采用各种距离函数,而在这里我们采用的是多种匹配函数。除此之外,我们对BIMPM模型也做了以下修改:

首先,我们去掉了原始BIMPM模型中接在字向量层的Bi-LSTM模型,之所以这样做,其原因在于LSTM并没有设计机制保证梯度向深度模型的后向传导;其次,我们用Transformer模型替代了BIMPM最上层的Bi-LSTM模型。这样做的原因主要是考虑到Bi-LSTM能够捕捉数据当中的序列特征。但是由于BIMPM采用多种匹配后,其序列性并不强,所以Transformer更适合该模型。

3模型的实验结果实验一:Quora数据集上的问题语义等价我们提出的问题层次匹配模型在公开的Quora数据集达到了目前的State-of-the-art,这个数据集包括了超过400,000问题组,专门用来研究两个句子是否语义等价的二分问题。因为该数据集的标注质量非常高,它经常用来测试语义理解的模型效果,我们按照7:2:1的比例来分配训练集、验证集和测试集,测试集上的具体实验结果如下:

为了进行对比,我们第一个结果为BERT单模型的的结果,第二个、第三个则分别为BERT和ABCNN、BERT和BIMPM的结果。在配对深度方面,我们选择了BERT预训练模型的表层一层、表面两层和表面三层,随着层数的增加我们应用了横向合并和纵向合并。

如上表中结果所示,BERT和BIMPM的结合已经比两个单模型的表现要出色。在BIMPM中,我们先去除了Bi-LSTM,其模型的表现降低到了88.55%,如果我们在配对层之后继续去除Bi-LSTM,其模型的表现会降低到87.8%。我们还可以看出,在预训练模型中增加上层模型可以提升几个点的表现,随着层数的增加,可以得到更高的F1值和准确率。

 实验二:SLNI子数据集上的问题语义等价为了确保实验结论的有效性,除去Quora的数据集之外,我们还采用了SLNI数据集当中包含句子等价性的数据集,该数据集包括55万条训练集和10000条测试集。很多学者都用了这些数据来测试他们的模型包效果,对比这些模型,我们的准确率上有将近两个点的提升,达到了目前的State-of-the-art,具体实验结果如下表所示:

4问题语义等价的延伸思考

在本文中,我们介绍了一种新的问句语义匹配模型,在后BERT时代,该模型的核心思想是通过抽取语言模型中不同层的表示而达到更好的匹配效果。针对目前层出不穷的深层预训练语言模型,例如Roberta、ERNIE、XLNet等,这种思路无疑是值得尝试和探索的。从简单的层面来说,对于一些不同的基础NLP任务,例如文本分类、序列标注、关系提取、语义分析等,我们完全可以通过提取不同层面的特征来提升效果。从更广的角度而言,MMD在计算机视觉领域的域迁移取得了良好的效果,而在NLP领域目前尚无采用深层提取特征的尝试,而这种尝试从逻辑上来说应该是完全可行的。在目前半监督学习和域迁移正成为NLP研究热点的情况下,这种思维可以作为一种重要的尝试方向。从一个角度来说,对于问句语义匹配来说,虽然我们提出的新模型达到了很好的效果,但是对于智能对话系统来说,仅仅应用一个等价性模型并不能解决全部问题。举例来说,由于问题库当中的候选问句较多,如果每次用户提出问题都要匹配问题库中的全部问句,显然是不现实的。这种情况下,有至少两种解决方案:一种是通过network distillation的方法或其它网络,降低单次推理所耗费的算力和时间,但是这种方法所带来的效果往往是有限的;更现实的一种方法是先通过简单的算法召回一部分候选问题,但是这种情况下如何平衡召回率和效率却并不简单。

此外,在本文中,我们只考虑了问题语义等价或不等价的情况。但如果问题库不够完整,在没有识别出等价问题的情况下,仅返回安全回答常常会降低用户的体验。在这种情况下,通常的做法是返回相似或相关的问题,这是一个问句语义相似度的计算问题,也是我们需要进一步研究的。

来源:百分点认知智能实验室