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是:

这里的hihi
代表第i个句子通过encoder的输出,w<ti+1wi+1<t
代表第i+1个句子的前t-1个词,基于它们,得到wti+1wi+1t
即第i+1个句子的第t个词的概率为P(wti+1|wti+1,hi)P(wi+1t|wi+1t,hi)
。这个公式的两项分别对应了下一句和上一句出现的概率。本质上,(在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是中心句子,SctxtSctxt
是context sentences, ScandScand
是candidate sentences, 它包括SctxtSctxt
, 也包括不相关的句子。
目标函数可以写为:

这里的概率p可表达为下式:

f, 和g在这里是encoder, c是classifier。c的函数形式和word2vec保持一致:c(u,v)=uTvc(u,v)=uTv

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

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

实验

  1. 和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)来作为输入。

  2. 和supervised representation learning方法的比较:

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

  3. 和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, 算法上的改进让它受益。我们看到不同的方法在不同的方向上都作出了努力和取得了成效,很难讲哪种努力会更有效或者更有潜力。唯一唯一可以肯定的是,从应用层面上来讲,合适的才是最好的。

关注公众号《没啥深度》有关自然语言处理的深度学习应用,偶尔也有关计算机视觉

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

  1. 关于句子embedding的一些工作简介(一)

    对于NLP方面的工作来讲,毫无疑问词嵌入(word embedding)是最重要的基石.然而人们往往最关心的是如何利用词嵌入表达好一个句子或者一段话,也就是如何找到sentence embedding ...

  2. 关于句子embedding的一些工作简介(五)---- 从对话中学习

    这是<简介>系列的最后一篇文章.原本我是想写一下Universal Sentence Encoder这篇文章,但是我觉得其实很多工作包括之前介绍的几篇文章都是在寻找"Univer ...

  3. 关于句子embedding的一些工作简介(三)---- Concatenated p-mean Word Embeddings

    这篇论文产生sentence embedding的方法非常简单,但是效果并不差.整个方法完全避免了深度模型,个人认为在工业界会有好的前景.由于简单易操作,尽管过去一些论文自称为hard/tough-t ...

  4. 关于句子embedding的一些工作简介(二)---- InferSent

    这篇文章介绍一下2017年影响力非常大的一篇论文 : Supervised Learning of Universal Sentence Representation from Natural Lan ...

  5. 打脸!一个线性变换就能媲美“最强句子embedding”?

    文 | 苏剑林(追一科技) 编 | 小轶 小编:前几周小屋刚推完<还在用[CLS]?从BERT得到最强句子Embedding的打开方式!>,苏神就来打脸了_(:з」∠)_ BERT-flo ...

  6. IPv6 相关的工作简介

    这里说明下,仅仅是IPv6在开发板上的相关的工作简介,没有很详细,都是自己一边积累,一边实践的.能帮助其他人最好,也算是给自己做个备忘录. 一.首先说下DHCPv6相关的.这里我使用的是DHCP6s. ...

  7. 2021年终总结——工作第四年

    2021年的主色调是#add367,焦虑!缺钱! 前几年的年终总结链接 先验收下2020年终总结的期望吧 关于年终总结传统项目--减肥 ❌ 今年不但没有瘦下来,还胖了2斤,去年153,现在155 5- ...

  8. W ndows主进程已停止,windows主进程rundll32已停止工作的四种解决方法介绍

    操作系统出现:windows主进程rundll32已停止工作 这种出错的提示,一般是在Windows7操作系统之中,可能会有很多种原因导致的,所以还需要逐一排查,解决之. 这是一个很少见的问题,开机后 ...

  9. 信息系统管理项目监理工作:四控三管一协调

    信息系统管理项目监理工作:四控三管一协调 四控三管一协调,具体为投资.进度.质量.变更 四方面控制:信息.安全.合同 三方面管理:一协调,就是沟通与协调. 具体来说: 信息系统监理:简单的一句话解释& ...

最新文章

  1. Hibernate框架第二天
  2. 本科生去面试算法工程师心酸的故事
  3. 攻防世界-Reverse-666(图解详细)
  4. Flask实战----做了一个简易版CSDN
  5. Maven的发布plugin配置
  6. 个人代码库の全局快捷键
  7. html使用element ui_Kendo UI for jQuery使用教程:自定义小部件(二)
  8. UVA - 12096:The SetStack Computer
  9. 【Kaggle微课程】Natural Language Processing - 2.Text Classification
  10. 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
  11. [Unity] TortoiseSVN 的 CheckOut 未响应的解决记录
  12. 监控管理平台 OpenNMS
  13. thinkphp中join用法
  14. 数据管理之元数据管理
  15. Vim编辑器学习笔记
  16. 信安软考 第十六章 网络安全风险评估技术原理与应用
  17. linux下自动删除文件夹,如何在Linux中自动删除或清理/tmp文件夹内容?
  18. ubuntu 14.04 wifi peap 选择证书问题
  19. 蛟龙未遇,潜身于鱼虾之间;君子失时,拱手于小人之下。
  20. 江西计算机对口升学试题,2020年江西三校生对口升学考试真题+答案

热门文章

  1. 新服务器 一步一步 带你搭建docker 环境 (PHP 篇章)
  2. 通用串行总线控制器:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备
  3. 解决该页正在访问其控制范围之外的数据。这有些危险。是否继续?
  4. java实现一个简易网络聊天室
  5. 23 BeautifulSoup 方法选择器find()方的使用
  6. 用三种方法求三个正整数的最大公约数和最小公倍数(python3)。
  7. 渗透测试面试问题2021版,内含大量渗透技巧
  8. 你们做Android也这么闲吗?真的受不了了,想跑路!
  9. [[概率论与数理统计-2]:随机函数、概率、概率函数、概率分布函数
  10. 极端热浪席卷欧洲,高温冲至47度!欧洲市场将迎来哪些机遇?