ESIM(Enhanced Sequential Inference Model)是一个综合应用了BiLSTM和注意力机制的模型,在文本匹配中效果十分强大,也是目前为止我见过结构最复杂的模型,下面将会结合公式和感性的理解去一步步推导这个模型。
首先什么是文本匹配,简单来说就是分析两个句子是否具有某种关系,比如有一个问题,现在给出一个答案,我们就需要分析这个答案是否匹配这个问题,所以也可以看成是一个二分类问题(输出是或者不是)。现在主要基于SNIL和MutilNLI这两个语料库,它们包含两个句子premise和hypothesis以及一个label,label就是判断这两个句子的关系,本文主要讲解的就是如何利用ESIM分析这个问题。
就像上面提到的,这个问题简单来说就是输入两个句子,输出一个label,这里一共有三个label(neutral、contradiction、entailment),那么我们就可以简单地用下图表示这个模型:
![](https://img-blog.csdnimg.cn/20190906145619311.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2plc3NleXVsZQ==,size_16,color_FFFFFF,t_70)
既然输入是两个句子,首先肯定是做word embedding了,方法有很多,这里假设直接用预训练的glove把句子转换成矩阵,注意,这时候我们得到的向量因为是基于glove预训练的向量得到的,并没有反映出句子中的前后文联系,所以我们这里继续利用BiLSTM再重新转换一下,得到最终的输入变量:
v=[va,ave;va,max;vb,ave;vb,max]
最终,终于来到最后一步了,那就是把向量v扔到一个多层感知器分类器,在输出层使用softmax函数。
以上,就是ESIM的完整模型了。
关于ESIM的python实现在我github的自然语言教程中有详细介绍:NLPBeginner, 主要是基于tensorflow实现。
想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
</div>
</article>