InferSent——有监督的语句嵌入模型

目录

 

一、概述

二、原理

三、总结


一、概述

英语原文链接:https://pan.baidu.com/s/1GTlSjQGSPd-Om6nLrpa7Pw 密码:f6o5

英文论文名称:《Supervised learning of universal sentence representations from natural language inference data》

传统的语句嵌入方法(sentence2vec)往往采用的是无监督学习方法,然而无监督的学习方法在较长语句向量的获得方面表现得不够优异。这篇文章中,我们将介绍一种有监督的训练方法(以Stanford Natural Language Inference Datasets为训练集),实验表明,这种方法要优胜于skip-thought方法(一种encoder-decoder模型)。

如果你还不了解skip-thought,最好去了解一下(虽然本文用不到,但它确实是一个值得学习和研究的语句嵌入方法)。

 

二、原理

1、训练集介绍

本文采用的是Stanford Natural Language Inference Datasets,简称SNLI。SNLI包含570K个人类产生的句子对,每个句子对都已经做好了标签,标签总共分为三类:蕴含、矛盾和中立(Entailment、contradiction and neutral)。下面是这些数据集的一个例子(侵删):

从上图可以看出,每个句子对为(text, hypothesis),中间的judgments为它们的标签。

 

2、一些假设

我们假设建立在这个数据集上的有监督学习可以训练出通用的词向量表达:即假设这个训练集上训练得到的词向量能够迁移到其他数据集上使用(据我理解大概是这个意思)。具体的这个假设的英语原文如下:

3、原理

首先看图:

                         

输入:句子对(text,hypothesis)的向量表示。解释:首先,premise input应该代表数据集的text(参考上面的数据集示例图),hypothesis input代表数据集的hypothesis。二者用同一个sentence encoder进行编码,得到的U和V就是这两个句子的向量,也就是这个模型的输入。至于这个encoder怎么理解,下文会有讲。

中间层:为了获取这两个向量的特征,模型采用了三种操作:连接,差值和内积(我觉得应该是三选一)。

输出层:经过一个全连接层和softmax层,输出属于某一类别的概率。

然后用类似的BP算法进行优化即可。

encoder的理解:encoder的选择论文提到了好多种,像什么RNN,LSTM,biLSTM,GloVe等方法,每一个方法都涉及到了很多的论文和知识点,如果只是为了理解这篇文章,那么记住:encoder也是通过训练来获取句向量。

这样encoder+上面的模型合在一起构成了InferSent模型,放在一起优化就可以了。

三、总结

这是为数不多的有监督训练句向量的方法,而且效果也不错,值得学习。

猜你喜欢

转载自blog.csdn.net/cpluss/article/details/81460657