不可思议的Word2Vec系列一数学原理
对于了解深度学习、自然语言处理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,如图所示
用通俗的语言来说,就是“周围词叠加起来预测当前词”(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系列一数学原理相关推荐
- 【转载】word2vec 中的数学原理详解
文章目录 一.前言 二.预备知识 三.背景知识 四.基于 Hierarchical Softmax 的模型 五.基于 Negative Sampling 的模型 六.若干源码细节 原文传送门: wor ...
- 转:word2vec 中的数学原理详解
1,目录和前言 https://blog.csdn.net/itplus/article/details/37969519 2,预备知识:逻辑回归.贝叶斯公式.霍夫曼树 https://blog.cs ...
- word2vec 中的数学原理详解(二)预备知识
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/peghoty/article/details/37969635 https://blog.csdn. ...
- word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas Mik ...
- word2vec 中的数学原理详解(三)背景知识
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解(六)若干源码细节
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解(一)目录和前言
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...
- word2vec 中的数学原理详解
https://www.cnblogs.com/peghoty/p/3857839.html
- word2vec中数学原理详解以及原理思考
很久没有写博客了,也没有写过相关总结.最近,工作中又开始用到了word2vector,正好就做个相关总结.这方面相关的博客有很多,我看过的讲的最清楚的就是@peghoty的博客. 要理解wordvec ...
最新文章
- 助力5G行业应用扬帆启航,第二届5G毫米波产业高峰论坛圆满召开
- 在新的数学证明中,人工智能取胜
- 九维 Addon for SBO 功能说明及新版软件下载
- linux启动报错+centos关闭和开启ipv6
- 计算机秋招必备!北京互联网大厂企业整理清单!
- Java加入背景音乐
- 前端学习(2598):按钮控制操作
- 基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc
- Docker精华问答 | Consul是什么?
- PDF格式分析(六十五) Text 文字——字体数据结构
- xjad使用中的几个问题
- storage ( initial 64K minextents 1 maxextents unlimited );
- DIY装机用单条8GB还是2条4GB双通道内存好?选错当心速度会变慢!
- python爬取携程景点_python爬取携程景点评论信息
- python 大气污染物模型_Python AQI空气污染指数数据分析与机器学习
- 【原生Ajax】全面了解xhr的概念与使用。
- 第一章:Java语言概述与环境开发
- BIM模型文件下载——轻轨站模型
- Gin + gRPC双向流模式 + sse实现grpc客户端到前端界面的消息推送
- unicloud aggregate的group保留查询数据,提取每个分组第一条数据某个字段值