首发于NLP工作站
论文阅读笔记:文本蕴含之BiMPM

论文阅读笔记:文本蕴含之BiMPM

之前一直在看别人写的东西,积累了一定的经验后,自己就情不自禁地也想写点什么。正好最近一直在做文本蕴含和自然语言推理的相关工作,看了一些经典的论文,就在这里分享一下,也是为了自己可以更好地去理解其中的细节。如果有错误的地方,请大家及时指正。首次分享,真的是既兴奋又紧张。

一、背景介绍

文本蕴含或者自然语言推理任务,就是判断后一句话(假设句)能否从前一句话(前提句)中推断出来。在BiMPM论文提出前,大量的学者在对两句话进行匹配时,常常仅考虑到前一句话对后一句话,或后一句话对前一句话的单向语义匹配,忽略了双向语义匹配的重要性;并且一般只考虑单一粒度的语义匹配(逐字或逐句)。基于以上不足,该论文作者提出了bilateral multi-perspective matching (BiMPM)model,即双向多视角匹配模型。

对于两个给出的句子P和Q,本模型首先对两个句子中的词和字进行Embedding编码,其次通过一个双向LSTM对其进行表征得到上下文向量,再从两个方向(P->Q和Q->P)对P和Q和上下文向量进行语义匹配,然后在用一个双向LSTM对匹配过后的结果进行聚合,得到一个固定长度的匹配向量,最后加入全连接层进行预测。

二、模型介绍

模型主要包括五层:词表示层(Word Representation Layer)、上下文表示层(Context Representation Layer)、匹配层(Matching Layer)、聚合层(Aggregation Layer)和预测层(Prediction Layer),如图1所示。

图1 模型框架图

下面将对各层进行介绍:

1、词表示层(Word Representation Layer):

在这一层中,模型将在句子P和句子Q中的每个词映射成一个d维的向量,而这d维的向量由word embedding和character-composed embedding拼接组成。word embedding来自提前预训练好的词向量。character-composed embedding是由组成词的每一个字向量经过LSTM编码得到,取最后一个time step作为character-composed embedding。

2、上下文表示层(Context Representation Layer):

这一层的主要目的是将上下文信息融入到句子P和句子Q的每一个time step中。首先用一个双向LSTM编码句子p中每一个time step的上下文embedding(由于知乎公式编辑器有一些公式编辑不出来,因此部分公式采用截图的方式,请见谅):

然后用同一个双向LSTM编码句子p中每一个time step的上下文embedding:

这里所说的使用同一个双向LSTM,即将该双向LSTM进行权值共享;权值共享的目的有两个:(1)减少参数量,减小模型的复杂度;(2)将两个不同空间维度的向量映射到同一个空间维度上,使其数据分布保持一致。

3、匹配层(Matching Layer)

这一层是本模型的核心,也是亮点。本层的目的是用一句话中每一个time step的上下文向量去匹配另一句话中所有time steps的上下文向量。如图1所示,本模型从两个方向(P->Q和Q->P)去匹配句子P和句子Q的上下文向量。下面仅从一个方向P->Q,详细讲一下多视角匹配算法,另一方向Q->P与其相同。

多视角匹配算法包含两步:

(1)定义了多视角余弦匹配函数 f_{m} 去比较两个向量,即 m=f_{m}(v_{1},v_{2};W) ,其中, v_{1}v_{2}d 维的向量, W\in R^{ l \times d} 是一个可训练的权重参数, l 是视角的数目,也就是共有几个视角(可以理解成CNN做卷积时的多个filters)。返回值 ml 维的向量 m=[m_{1},...m_{k},...m_{l}] , 其中m_{k} 是第 k 个视角的向量余弦匹配值,即 m_{k}=cosine(W_{k}\circ v_{1},W_{k}\circ v_{2}) , 其中W_{k} 是第 k 行的 W 值。

(2)基于 f_{m} 函数,本模型给出了四种匹配策略,分别是full-matching、maxpooling-matching、attentive-matching和max-attentive-matchong,如图2所示。

图2 四种匹配策略

(a)full-matching

在这中匹配策略中,我们将句子P中每一个time step的上下文向量(包含向前和向后上下文向量)分别与句子Q中最后一个time step的上下文向量(向前和向后上下文向量)计算余弦匹配值,即

(b)maxpooling-matching

在这种匹配策略中,我们将句子P中每一个time step的上下文向量(包含向前和向后上下文向量)分别与句子Q中每一个time step的上下文向量(向前和向后上下文向量)计算余弦匹配值,但最后在与句子Q的每一个time step中选取最大的余弦匹配值,即

(c)attentive-matching

在这种匹配策略中,我们先对句子P和句子Q中每一个time step的上下文向量(包含向前和向后上下文向量)计算余弦相似度(这里值得注意的一点是,余弦匹配值与余弦相似度是不一样的,余弦匹配值在计算时对两个向量赋予了权重值,而余弦相似度则是直接对两个向量进行计算),得到相似度矩阵,即

我们将相似度矩阵,作为句子Q中每一个time step的权值,然后通过对句子Q的所有上下文向量加权求和,计算出整个句子Q的注意力向量,即

最后,将句子P中每一个time step的上下文向量(包含向前和向后上下文向量)分别与句子Q的注意力向量计算余弦匹配值,即

(d)max-attentive-matching

这种匹配策略与attentive-matching的匹配策略相似,不同的是,该匹配策略没有对句子Q的所有上下文向量加权求和来得到句子Q的注意力向量,而是选择句子Q所有上下文向量中余弦相似度最大的向量作为句子Q的注意力向量。

4、聚合层(Aggregation Layer)

这一层的目的是将两个序列的匹配向量聚合成一个固定长度的匹配向量。本模型利用另一个双向LSTM,将其分别应用于两个序列的匹配向量。然后,通过将双向LSTM的最后一个time step的向量串联起来(图2中四个绿色的向量),聚合成固定长度的匹配向量。

5、预测层(Prediction Layer)

这一层的目的是为了得到最终的预测结果。本模型将聚合得到的匹配向量,连接两层全连接层,并且在最后输出做softmax激活,最后得到文本蕴含的结果。

三、模型参数

该论文中,word embedding为300维,character embedding为20维,得到的character-composed embedding为50维;所有的双向LSTM的隐层节点数为100,dropout rate为0.1,学习率为0.001,采用adam优化器。论文中,对五种(1, 5, 10, 15, 20)不同大小的视角进行实验分析,发现视角个数为20时,模型效果最好。

四、总结

以上就是我对该篇论文的理解,如果有不对的地方,请大家见谅并多多指教。以后会继续做文本蕴含方面的分享,下一篇应该是ESIM、DIIN或CAFE中的一篇。

BiMPM原文链接arxiv.org

编辑于 2019-07-27

文章被以下专栏收录