语义相似度匹配模型-ESIM模型

语义相似度匹配模型-ESIM模型

ESIM是一个综合运用了BiLSTM和注意力机制的模型,在文本匹配中效果很好。

文本匹配简单来说就是分析两个句子之间的关系,比如有一个问题,现在给出一个答案,我们就需要分析这个答案是否匹配这个问题,所以本质上就是一个分类问题。

模型结构

在这里插入图片描述

ESIM是左边的模型,主要分为三部分:Input Encoding、Local Inference Modeling、Inference Composition。

Input Encoding

这部分主要是对于输入的两句话(Premise和Hypothesis)分别进行embedding和BiLSTM来解码。

img

$l_a$和$l_b$分别表示Premise和Hypothesis句子的长度,另外$a_i$、$b_i$就是Premise和Hypothesis的某个单词的表示。

使用BiLSTM可以学习如何表示一句话中的word和它上下文的关系,我们也可以理解成这是在wordEmbedding之后,结合当前局的语境encoding得到新的embedding向量。

Local Inference Modeling

接下来我们需要分析这两个句子之间的联系,我们得到句子和单词的表示向量是基于当前语境以及单词之间的意思综合分析得到的。如果两个单词之间的联系大,就意味着他们之间的距离和夹角越小。所以这里使用点积的方式来计算$a^→$和$b^→$的attention权重。

e_{ij}=\bar{a}_{i}^{T}\bar{b}_j

然后计算两个句子的交互表示:

\tilde{a}_{i}=\sum _{j=1}^{l_b}\frac{exp(e_{ij})}{\sum_{k=1}^{l_b}exp(e_{ik})}\bar{b_{j}},\forall i\in [1, ...,l_a]

\tilde{b}_{j}=\sum _{i=1}^{l_a}\frac{exp(e_{ij})}{\sum_{k=1}^{l_b}exp(e_{kj})}\bar{a_{i}},\forall j\in [1, ...,l_b]

这里就是用注意力机制来计算新的词向量表示,第一个公式代表对权重矩阵按行softmax求权重,然后求与b的加权和来代表a的新序列。比如premise中有一个单词“I”,首先让“I”与hypothesis中的各词相乘并且标准化后作为权重,用另一句话中的各个词向量按照权重去表示“I”。这样如此得到新的序列,以上称为Local Inference Modelling。这里的注意力机制实现了局部推断。

Inference composition

接下来就是分析差异,从而判断两个句子之间的联系是否足够大了,ESIM主要是计算新旧序列之间的差和积,并把所有信息合并起来储存在一个序列中,以此来增强局部推理信息。

m_a=[\bar{a};\tilde{a};\bar{a}-\tilde{a};\bar{a}\bigodot \tilde{a}]

m_b=[\bar{b};\tilde{b};\bar{b}-\tilde{b};\bar{b}\bigodot \tilde{b}]

Inference Composition

使用BiLSTM来提取m_am_b的局部推理信息,对于BiLSTM提取到的信息,作者认为求和对序列长度比较敏感,不太健壮,因此他们采用了:最大池化和平均池化的方案,并将池化后的结果连接为固定长度的向量。如下:

v_{a,avg}=\sum_{i=1}^{l_a}\frac{v_{a, i}}{l_a},\quad v_{a,max}=max_{i=1}^{l_a}v_{a,i}

v_{b,avg}=\sum_{j=1}^{l_b}\frac{v_{a, j}}{l_b},\quad v_{b,max}=max_{j=1}^{l_b}v_{b,j}

v=[v_{a,ave};v_{a,max};v_{b,ave};v_{b;max}]

然后将v放入一个全连接层分类器中进行分类。这里进行了全局推断。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!