不可思议的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,如图所示
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的构造和实现方式有些印象。

目录
相关文章
|
11月前
|
机器学习/深度学习 自然语言处理 索引
瞎聊机器学习——从词袋模型到word2vec
瞎聊机器学习——从词袋模型到word2vec
|
机器学习/深度学习 存储 自然语言处理
基于 word2vec TextCNN 的新闻文本分类
基于 word2vec TextCNN 的新闻文本分类
279 0
基于 word2vec TextCNN 的新闻文本分类
|
自然语言处理 搜索推荐 算法
word2vec模型原理及实现词向量训练案例(二)
word2vec模型原理及实现词向量训练案例
393 0
word2vec模型原理及实现词向量训练案例(二)
|
机器学习/深度学习 Serverless Windows
word2vec模型原理及实现词向量训练案例(一)
word2vec模型原理及实现词向量训练案例
157 0
word2vec模型原理及实现词向量训练案例(一)
|
机器学习/深度学习 自然语言处理 算法
利用机器学习探索食物配方:通过Word2Vec模型进行菜谱分析
利用机器学习探索食物配方:通过Word2Vec模型进行菜谱分析
173 0
利用机器学习探索食物配方:通过Word2Vec模型进行菜谱分析
|
机器学习/深度学习 存储 数据采集
词向量word2vec(图学习参考资料1)
词向量word2vec(图学习参考资料1)
|
机器学习/深度学习 存储 人工智能
NLP教程(1) - 词向量、SVD分解与Word2Vec
本文介绍自然语言处理(NLP)的概念及其面临的问题,进而介绍词向量和其构建方法(包括基于共现矩阵降维和Word2Vec)。
1290 1
NLP教程(1)  -  词向量、SVD分解与Word2Vec
|
机器学习/深度学习 存储 自然语言处理
|
机器学习/深度学习 存储 自然语言处理
深度学习word2vec笔记之基础篇
深度学习word2vec笔记之基础篇
570 0
|
机器学习/深度学习 自然语言处理 算法
【机器学习】图解Word2vec
原标题:图解Word2vec,读这一篇就够了 嵌入(embedding)是机器学习中最迷人的想法之一。 如果你曾经使用Siri、Google Assistant、Alexa、Google翻译,甚至智能手机键盘进行下一词预测,那么你很有可能从这个已经成为自然语言处理模型核心的想法中受益。
3196 0