首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于句子embedding的一些工作简介(四)-Quick Thoughts

Quick Thoughts(以下简称QT 论文)可以理解为升级版本的Skip-thought,方法简单很多,但是效果上略优于InferSent等算法。

Skip-thought

了解QT绕不开Skip-thought(论文)。Skip-thought顾名思义,可以理解为句子版本的Skip-gram(word2vec论文)。在word2vec算法的skip-gram版本中,中心词可以用来预测context中的词汇; 对应的,Skip-thought利用中心词预测context中的句子。

如图所示,中间的句子”I could see the cat on the steps” 可以拿来预测前面的句子”I got back home”和后面的句子”This was strange”。

那么这种预测具体怎么实现呢?

作者利用了一个encoder来压缩中心句子的信息,然后用一个decoder来产生context里的句子。对于这种sequence modeling, 一般的最佳选择是LSTM或者GRU,论文中encoder和decoder都是GRU。相应的,负的loss function是:

这个公式的两项分别对应了下一句和上一句出现的概率。本质上,(在decoder这部分)这个问题是作为language modeling来处理的。 (另外,论文里提供了一个小“彩蛋”:如果encoder遇到在training set里从未出现的词怎么办呢?这里不写了,原论文里有一个很简单的办法)

改进

看上去,Skip-thought和Skip-gram挺象。唯一的遗憾是Skip-thought的decoder那部分,它是作为language modeling来处理的。而Skip-gram则是利用一个classifier预测周围的词(通过hierarchical softmax 或者negative sampling)。QT针对这个问题,对decoder部分做了大的调整,它直接把decoder拿掉,取而代之的是一个classifier。这个classifier负责预测哪些句子才是context sentences。

假设f和g是encoder,s是中心句子,Scxt是context sentences, Scand是candidate sentences, 它包括Scxt, 也包括不相关的句子。

目标函数可以写为:

式中的概率p可以表达为:

f, 和g在这里是encoder, c是classifier。c的形式和word2vec保持一致为内积数。

对比而言,这两种方法可以用论文中的图表示为:

QT的classifier取代了Skip-thought的Decoder。这样做的好处是运行的速度大大提升了,用判别问题取代了生成式问题。有趣的是,虽然QT出现的比Skip-thought更晚,但是方法更简单,也更加接近Word2Vec算法。

实验

和unsupervised representation learning方法的比较:

在大多数情况下,uni/bi/combine-QT的表现好于其他模型,并且训练时间大大缩短。这里uni-QT和bi-QT分别指使用了单向和双向RNN作为encoder的模型。combine-QT在test time使用了uni-QT和bi-QT学习得到的句子表征(由于它同时使用了两种表征,我们可以看到在dim一栏值是其它值的两倍)。在这里uni/bi/combine-QT都没有使用pre-trained word vectors。

注意MC-QT模型在各个任务上最优。MC-QT就是MultiChannel-QT,作者模仿了Yoon Kim 在Convolutional neural networks for sentence classification(2014)中的做法,分别用一个pretrained word embedding(Glove)和一个tunable word embedding(trained from scratch)来作为输入。

和supervised representation learning方法的比较:

注意和

前文

中介绍过的InferSent的比较,MC-QT在多数任务中效果更好。但是我个人在这里存有疑虑:InferSent仅使用了pre-trained word vectors(Glove)。 如果也采取MultiChannel embedding的做法,不知道会不会有同样的提升?

和Skip-thought进行Nearest neighbors提取的比较:

感受以下两种方法从Wikipedia里1M个句子中寻找最近邻的表现。

总结

QT是一种新的state-of-art的算法。它不光效果好,而且训练时间要远小于其他算法。在算法方法上和效果上,都可称为是句子表征界的Word2Vec一般的存在。和前面几篇介绍的不同算法放在一起比较,同样都是为了找到好的句子表征,它们采取了不同的路径:InferSent在寻找NLP领域的ImageNet, 它的成功更像是在寻找数据集和任务上的成功,当然它成功的找到了SNLI; Concatenated p-means在寻找NLP领域的convolutional filter, 即怎样才能更好的提炼出句子级别的特征,它找到了p-means操作,以及利用了不同的embeddings; QT则是直接在算法层面上,寻找句子级别的Word2Vec, 算法上的改进让它受益。我们看到不同的方法在不同的方向上都作出了努力和取得了成效,很难讲哪种努力会更有效或者更有潜力。唯一可以肯定的是,从应用层面上来讲,合适的才是最好的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180813G03OB200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券