对于了解深度学习、自然语言处理NLP的读者来说,Word2Vec可以说是家喻户晓的工具,尽管不是每一个人都用到了它,但应该大家都会听说过它——Google出品的高效率的获取词向量的工具。

I. Word2Vec不可思议?

大多数人都是将Word2Vec作为词向量的等价名词,也就是说,纯粹作为一个用来获取词向量的工具,关心模型本身的读者并不多。可能是因为模型过于简化了,所以大家觉得这样简化的模型肯定很不准确,所以没法用,但它的副产品词向量的质量反而还不错。没错,如果是作为语言模型来说,Word2Vec实在是太粗糙了。

但是,为什么要将它作为语言模型来看呢?抛开语言模型的思维约束,只看模型本身,我们就会发现,Word2Vec的两个模型 —— CBOW和Skip-Gram —— 实际上大有用途,它们从不同角度来描述了周围词与当前词的关系,而很多基本的NLP任务,都是建立在这个关系之上,如关键词抽取、逻辑推理等。这几篇文章就是希望能够抛砖引玉,通过介绍Word2Vec模型本身,以及几个看上去“不可思议”的用法,来提供一些研究此类问题的新思路。

说到Word2Vec的“不可思议”,在Word2Vec发布之初,可能最让人惊讶的是它的Word Analogy特性,即诸如 king-man ≈ queen-woman 的线性特性,而发布者Mikolov认为这个特性意味着Word2Vec所生成的词向量具有了语义推理能力,而正是因为这个特性,加上Google的光环,让Word2Vec迅速火了起来。但很遗憾,我们自己去训练词向量的时候,其实很难复现这个结果出来,甚至也没有任何合理的依据表明一份好的词向量应该满足这个Word Analogy特性。不同的是,这里笔者介绍的若干个用途,可复现性是非常高的,读者甚至在小语料中训练一个Word2Vec模型,然后也能取到类似的结果。

II. 数学原理:网络资源

有心想了解这个系列的读者,有必要了解一下Word2Vec的数学原理。当然,Word2Vec出来已经有好几年了,介绍它的文章数不胜数,这里我推荐peghoty大神的系列博客:
http://blog.csdn.net/itplus/article/details/37969519
另外,本博客的《词向量与Embedding究竟是怎么回事?》也有助于我们理解Word2Vec的原理。

为了方便读者阅读,我还收集了两个对应的PDF文件:
word2vector中的数学原理详解.pdf
Deep Learning 实战之 word2vec.pdf
其中第一个就是推荐的peghoty大神的系列博客的PDF版本。当然,英文好的话,可以直接看Word2Vec的原始论文:

[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. In Proceedings of Workshop at ICLR, 2013.

[2] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. Distributed Representations of Words and Phrases and their Compositionality. In Proceedings of NIPS, 2013.

但个人感觉,原始论文并没有中文解释得清晰。

III. 数学原理:简单解释

简单来说,Word2Vec就是“两个训练方案+两个提速手段”,所以严格来讲,它有四个备选的模型。

两个训练方案分别是CBOW和Skip-Gram,如图所示
Word2Vec的两个模型.png
用通俗的语言来说,就是“周围词叠加起来预测当前词”(P(wt|Context)P(wt|Context))和“当前词分别来预测周围词”(P(wothers|wt)P(wothers|wt)),也就是条件概率建模问题了;两个提速手段,分别是层次Softmax和负样本采样。层次Softmax是对Softmax的简化,直接将预测概率的效率从?(|V|)O(|V|)降为?(log2|V|)O(log2⁡|V|),但相对来说,精度会比原生的Softmax略差;负样本采样则采用了相反的思路,它把原来的输入和输出联合起来当作输入,然后做一个二分类来打分,这样子我们可以看成是联合概率P(wt,Context)P(wt,Context)P(wothers,wt)P(wothers,wt)的建模了,正样本就用语料出现过的,负样本就随机抽若干。更多的内容还是去细看peghoty大神的系列博客比较好,我也是从中学习Word2Vec的实现细节的。

最后,要指出的是,本系列所使用的模型是“Skip-Gram + 层次Softmax”的组合,也就是要用到P(wothers|wt)P(wothers|wt)这个模型的本身,而不仅仅是词向量。所以,要接着看本系列的读者,需要对Skip-Gram模型有些了解,并且对层次Softmax的构造和实现方式有些印象。

不可思议的Word2Vec系列一数学原理相关推荐

  1. 【转载】word2vec 中的数学原理详解

    文章目录 一.前言 二.预备知识 三.背景知识 四.基于 Hierarchical Softmax 的模型 五.基于 Negative Sampling 的模型 六.若干源码细节 原文传送门: wor ...

  2. 转:word2vec 中的数学原理详解

    1,目录和前言 https://blog.csdn.net/itplus/article/details/37969519 2,预备知识:逻辑回归.贝叶斯公式.霍夫曼树 https://blog.cs ...

  3. word2vec 中的数学原理详解(二)预备知识

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/peghoty/article/details/37969635 https://blog.csdn. ...

  4. word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas Mik ...

  5. word2vec 中的数学原理详解(三)背景知识

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...

  6. word2vec 中的数学原理详解(六)若干源码细节

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...

  7. word2vec 中的数学原理详解(一)目录和前言

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...

  8. word2vec 中的数学原理详解

    https://www.cnblogs.com/peghoty/p/3857839.html

  9. word2vec中数学原理详解以及原理思考

    很久没有写博客了,也没有写过相关总结.最近,工作中又开始用到了word2vector,正好就做个相关总结.这方面相关的博客有很多,我看过的讲的最清楚的就是@peghoty的博客. 要理解wordvec ...

最新文章

  1. 助力5G行业应用扬帆启航,第二届5G毫米波产业高峰论坛圆满召开
  2. 在新的数学证明中,人工智能取胜
  3. 九维 Addon for SBO 功能说明及新版软件下载
  4. linux启动报错+centos关闭和开启ipv6
  5. 计算机秋招必备!北京互联网大厂企业整理清单!
  6. Java加入背景音乐
  7. 前端学习(2598):按钮控制操作
  8. 基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc
  9. Docker精华问答 | Consul是什么?
  10. PDF格式分析(六十五) Text 文字——字体数据结构
  11. xjad使用中的几个问题
  12. storage ( initial 64K minextents 1 maxextents unlimited );
  13. DIY装机用单条8GB还是2条4GB双通道内存好?选错当心速度会变慢!
  14. python爬取携程景点_python爬取携程景点评论信息
  15. python 大气污染物模型_Python AQI空气污染指数数据分析与机器学习
  16. 【原生Ajax】全面了解xhr的概念与使用。
  17. 第一章:Java语言概述与环境开发
  18. BIM模型文件下载——轻轨站模型
  19. Gin + gRPC双向流模式 + sse实现grpc客户端到前端界面的消息推送
  20. unicloud aggregate的group保留查询数据,提取每个分组第一条数据某个字段值

热门文章

  1. FPGA黑金开发板mini版新鲜出炉!!!
  2. 推荐个玩的:《罪案现场》你能走出来吗?
  3. Eclipse利用Maven的插件部署web项目到远程tomcat服务器
  4. Beta 冲刺(6/7)
  5. Mysql基础知识—索引
  6. 5月23日 JavaScript
  7. [转]通过脚本添加登陆/注销/开机/关机脚本
  8. 3D几何图形的生成算法
  9. 你应该知道的15个Silverlight诀窍
  10. EPSON机器人SPLE+语言_简单实例