Supervised Word Mover’s Distance (可监督的词移距离) – NIPS 2016论文精选#2

如果抽象能力足够强, 世间一切关系, 是否都能用距离(Distance)表达? — David 9

接着上一讲, 今天是David 9 的第二篇”NIPS 2016论文精选”: Supervised Word Mover’s Distance (可监督的词移距离). 需要一些nlp自然语言处理基础, 不过相信David 9的直白语言可以把这篇论文讲清晰.

首先, 整篇论文的最大贡献是: 为WMD(词移距离) 提出一种可监督训练的方案, 作者认为原来的WMD距离算法不能把有用的分类信息考虑进去, 这篇论文可以填这个坑 !

但是, 究竟什么是Word Mover’s Distance(WMD) ? 这还得从word2vec说起:

还记得这张图吧? 在 “究竟什么是Word2vec ?” 这篇文章中我们谈到过word2vec其实是把一切word单词映射(压缩)到一个一个隐含的词向量(这里的h层). 在这个向量空间中, 我们可以做一些有意思的事情:

比如我们很容易知道, 空间中 Sicilian(西西里岛人) 和 Italian(意大利人) 距离上很接近, gelato(意式冰激凌)和ice-cream(冰激凌)在距离上也很接近.

Word Mover’s Distance(WMD) 词移距离正是基于word2vec. 

WMD考虑文章间的距离而不是词间的距离, 上图左边文章说的是: The Sicilian gelato was extremely rich(西西里岛人的意式冰激凌很美味) , 右边文章说的是:  The Italian ice-cream was very velvety(意大利人的冰激凌很嫩滑). 要从左边文章转换到右边文章, 我们需要的是图中转移箭头代表的转移向量构成的转移矩阵  所以, 两篇文章的WMD距离为:

这里的xi其实是被word2vec压缩过的d维的隐藏层词向量.

D(xi, xj)代表两篇文章最短距离的实际意义是: 所有文档a中单词转移到文档b中单词的最短总距离. 换句话说, 两篇文档总距离中的每个单词距离分两部分计算:

1. 单词间的word2vec距离

2. 单词xi放到另一篇文档中应该转换为单词xj的权重:

比如Sicilian真的很应该转换为Italian, 所以在转换时我们应该给Italian更大权重.

我们理解了WMD距离, 那么问题来了, 学习这个权重矩阵用来聚类虽好(告诉我们哪些文档比较相近),  但是,  用来分类却很差!

为什么? 因为一些文章虽然近义词很多, 但是表达的不是一个语义和主题. 比如: I love playing football 和 I like playing piano . 虽然看起来句式差不多, 可能会归为同类, 但是如果打标签时如果是”运动”和”艺术”两类, 显然就不能用WMD直接分类了. 因为, WMD没有加入 football和”运动” 是强相关的信息.

所以, 论文给出的解决方案就是在WMD距离中加入可以训练类别权重的功能:

这里的di加入了类别权重wi:

单词间距离也要进行调整(单词间距离也因为类别不同需要调整距离), 加入训练参数矩阵A.

最后, 看一下实验效果, S-WMD正是本论文提出的对应算法名:

参考文献:

  1. http://papers.nips.cc/paper/6139-supervised-word-movers-distance.pdf
  2. https://en.wikipedia.org/wiki/Conference_on_Neural_Information_Processing_Systems
  3. https://nips.cc/Conferences/2016/Schedule?type=Poster
  4. http://tech.opentable.com/2015/08/11/navigating-themes-in-restaurant-reviews-with-word-movers-distance/
  5. http://vene.ro/blog/word-movers-distance-in-python.html

本文章属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

《Supervised Word Mover’s Distance (可监督的词移距离) – NIPS 2016论文精选#2》上有4条评论

  1. > 我们理解了WMD距离, 那么问题来了, 学习这个权重矩阵用来聚类虽好(告诉我们哪些文档比较相近), 但是, 用来分类却很差!

    这个地方用“学习”这个词是否不妥,WDM只是计算两句话的距离,计算完没有重用也没生成模型,是否用“计算”更合适?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注