word2vec原理知识铺垫
word2vec: 词向量计算工具====》训练结果 词向量(word embedding) 可以很好的度量词与词的相似性,word2vec为浅层神经网络
*值得注意的是,word2vec是计算word vector 的开源工具。 当说word2vec算法或模型时,是指背后用于计算word vector 的CBOW模型和Skip-gram
如何计算一段文本序列在某种语言下出现的概率?
对于一段文本序列S=w1,w2,...,wT,它的概率可以表示为:
P(S)=P(w1,w2,...,wT)=∏p(wt|w1,w2,...,wt−1)
即将序列的联合概率转化为一系列条件概率的乘积。问题变成了如何去预测这些给定previous words下的条件概率:p(wt|w1,w2,...,wt−1)
巨大的参数空间,这个原始模型在实际中并没有卵用,更多采用其简化版本,Ngram模型:
p(wt|w1,w2,...,wt−1)≈p(wt|wt−n+1,...,wt−1) ===>常见的如bigram模型(N=2)和trigram模型(N=3)。
事实上,由于模型复杂度和预测精度的限制,我们很少会考虑N>3的模型
我们可以用最大似然法去求解Ngram模型的参数——等价于去统计每个Ngram的条件词频。
值得注意的是:Ngram模型仍有其局限性。首先,由于参数空间的爆炸式增长,它无法处理更长程的context(N>3)。其次,它没有考虑词与词之间内在的联系性。
考虑"the cat is walking in the bedroom"这句话。如果我们在训练语料中看到了很多类似“the dog is walking in the bedroom”或是“the cat is running in the bedroom”这样的句子,那么,即使我们没有见过这句话,也可以从“cat”和“dog”(“walking”和“running”)之间的相似性,推测出这句话的概率[3]。然而, Ngram模型做不到 ====>Ngram本质上是将词,孤立的原子单元(atomic unit)去处理的,one-hot 方式, 在大数据词典的实际应用中,面临维度灾难。
解决方法:用一个连续的稠密向量去刻画一个word的特征, 这样既可以刻画词与词之间的相似度,也可以建立一个从向量到概率的平滑函数模型,使得相似的词向量可以映射到相近的概率空间上,
这个稠密的向量称为word的distributed representation ===> 向量空间模型 vector space model(VSM) ==>基于statistical semantic hypothesis, word2vec 基于 distribution hypothesis, 即上下文相似的两个词有着相近的语义
问题: VSM如何将离散的one hot词向量 映射到稠密连续的distribution representation??
bag of word hypothesis 构造一个term-document矩阵A:矩阵的行 Ai 对应着词典里的一个word,矩阵的列 Aj 对应着训练预料里的一篇文档,Ai,j代表word wi 在文档Dj中出现的次数,那么就可以提取行向量作为word的语义向量。
for example: the dog is walking in the bedrom , the cat is running in the bedroom
构造term-document矩阵A:
the 2 2
dog 1 0
cat 0 1
is 1 1
walking 1 0
running 0 1
in 1 1
bedrom 1 1
则提取行向量作为word的语义向量,思考:这是基于词频的,也可以基于此得到主题分布,但是缺少语义的考虑即上下文context
distributional hypothesis 构造word-context 的矩阵,与term-document相比,矩阵的列变成了context里的word,矩阵的元素也变成了一个context窗口里word的共现次数。
word-context矩阵 通过统计一个事先指定大小的窗口内的word共现次数,不仅可以刻画word的语义信息,还在一定程度上反映了word的语法结构信息。
for example:I like deep learning; I like NLP; I enjoy flying;
设置窗口的大小为1, 得到word-content矩阵
I like enjoy deep learning NLP flying .
I 0 2 1 0 省略后面
like 2 0 0 1
enjoy 1 0 0 0
deep 0 1 0 0
learning 0 0 0 1
NLP 0 1 0 0
flying 0 0 1 0
. 0 0 0 0
*注意:矩阵里的元素是列向量所代表的word出现在行向量所代表的word的上下文的次数。
得到word-context 矩阵后,可以用此矩阵的行向量来计算word之间的相似度。
*But, 词向量的维度等于词典的大小,会出现极大的资源消耗,伴随着高维向量出现的数据稀疏性问题,训练变得困难,总结起来就是两句话,数据稀疏性和维度灾难。
解决办法-----**********SVD分解:低维词向量的简接学习******-----------
就维度灾难和数据稀疏性,比较自然的方法就是降维,得到稠密的连续词向量。
方法:SVD奇异值分解(通过将原co-occurrence矩阵X分解为一个正交矩阵U,一个对角矩阵S,和另一个正交矩阵V乘积的形式,并提取U的k个主成分(按S里对角元的大小排序)构造低维词向量)、Hacks。
*SVD的优势:SVD分解得到的稠密词向量,也具有很多优美的性质。语义相近的词(比如"wrist"和"ankle")可以通过用词向量内积定义的相似度聚类到一起;同一动词的不同时态也往往出现在向量空间的同一片区域。词向量甚至可以一定程度上反应word之间的线性联系
*SVD的劣势:高额的计算复杂度花销,与deep learning 相比是两类不同的学习算法。
****将word表示为一个稠密的低维连续向量的思想被应用,将原始的稀疏矩阵分解为两个低秩矩阵乘积的形式。
***************Neural Network Language Model , NNLM
Bengio NNLM模型的基本思想:
假定词表中的每一个word都对应着一个连续的特征向量;
假定一个连续平滑的概率模型,输入一段词向量的序列,可以输出这段序列的联合概率;
同时学习词向量的权重和概率模型里的参数。
***************NNLM这一部分比较有意思
word2vec原理知识铺垫的更多相关文章
- word2vec原理(一) CBOW与Skip-Gram模型基础
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- word2vec原理(三) 基于Negative Sampling的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- word2vec原理(一) CBOW与Skip-Gram模型基础——转载自刘建平Pinard
转载来源:http://www.cnblogs.com/pinard/p/7160330.html word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与 ...
- word2vec原理(一) CBOW+Skip-Gram模型基础
word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系.本文的讲解word2vec原理以Githu ...
- word2vec原理CBOW与Skip-Gram模型基础
转自http://www.cnblogs.com/pinard/p/7160330.html刘建平Pinard word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量 ...
- word2vec原理(二) 基于Hierarchical Softmax的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- x64 番外篇——知识铺垫
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- 【转载】word2vec原理推导与代码分析
本文的理论部分大量参考<word2vec中的数学原理详解>,按照我这种初学者方便理解的顺序重新编排.重新叙述.题图来自siegfang的博客.我提出的Java方案基于kojisekig,我 ...
- 深入学习卷积神经网络(CNN)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
随机推荐
- ORM表操作
1.在python脚本中调用django环境 在根文件夹下,创建test.py文件 import os if __name__ == '__main__': os.environ.setdefault ...
- [py]python之信用卡ATM
python之信用卡ATM 参考: http://www.cnblogs.com/wushank/p/5248916.html 他的博客写的很ok 需求介绍 模拟实现一个ATM + 购物商城程序 额度 ...
- zabbix 配合钉钉群机器人(webhook) 报警
首先建钉钉群,添加一个自定义机器人拿到webhook zabbix添加一个报警媒介 搞一个shell脚本来启动Python脚本(直接用zabbix调Python脚本不行,不知道什么原因) vim di ...
- 一个toolkit或者一个开源项目如何学习它并使用它
一个toolkit或者一个开源项目如何学习它并使用它 一般一个流行的toolkit和开源项目,一般都会被广泛地被应用: 那么,我们如何学习它,如何应用它在自己的业务场景中呢? 答案就是:学习源码并借鉴 ...
- node使用 mongoose聚合 group
var mongoose = require('mongoose'); mongoose.connect("mongodb://localhost:27017/test", fun ...
- IntelliJ IDEA 配置tomcat 启动项目
1.打开file中setting中搜索Application Servers,如下图 2.添加服务器类型,例如tomcat,如下图,添加完成之后可以选定tomcat的目录,tomcat Home配置t ...
- css3--之HSL颜色
jQuery之家: CSS3中使用的HSL颜色指南:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201503281590.html 要理解HSL ...
- Cocos Creator iPhoneX适配的解决办法
研究了5个小时的iPhoneX适配. 从catalog,storyboard,safearea等一系列文章中发现.如果我们想完全撑满全屏.那直接建一个storyboard就好了.但撑满全屏后,流海就是 ...
- cocos2d-x JS 复选按钮checkBox的单选与多选
var HZ_createRoom = jx.BaseView.extend({//红中麻将 ctor : function() { this._super(); this.addLayout(res ...
- HDU 3306 Another kind of Fibonacci(矩阵+ll超时必须用int&输入必须取模&M必须是int类型)
Another kind of Fibonacci [题目链接]Another kind of Fibonacci [题目类型]矩阵+ll超时必须用int&输入必须取模&M必须是int ...