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)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
随机推荐
- 重新安装phpstudy之后出现了403的错误
1. httpd.conf 文件,找到如下代码: DocumentRoot "D:\WWW" <Directory /> Options +Indexes +Follo ...
- 递归、嵌套for循环、map集合方式实现树形结构菜单列表查询
有时候, 我们需要用到菜单列表,但是怎么样去实现一个菜单列表的编写呢,这是一重要的问题. 比如我们需要编写一个树形结构的菜单,那么我们可以使用JQuery的zTree插件:http://www.tre ...
- dxCalloutPopup 简单使用教程
Panel1.Visible := False; // 设置panel初始不显示 dxCalloutPopup1.PopupControl := Panel1; // 设置弹出窗口内容为哪个控件 dx ...
- echarts 实现tooltip双栏效果
实现效果如下: 代码: //option tooltip: { trigger: 'axis', axisPointer: { label: { show: true, fontSize: 15 } ...
- sqlserver把数据导入mysql
sqlserver库 navicat逆向表到模型 转换模型为... 选择mysql 建模转换后导出sql 导出sql后,再mysql库中执行该sql(该sql为表结构)执行sql后,使用navicat ...
- GENIA语料库学习【转载】
来自论文:GENIA corpus—a semantically annotated corpus for bio-textmining 2003 1.介绍 GENIA corpus, a sema ...
- SpringMVC的Model ModeMap ModelAndView @ModelAttribute @SessionAttribute区分
Spring MVC整理系列(05)————Spring MVC配置解析及整合SpriSpring MVC之@ModelAttribute.@SessionAttributes以及Model的使用介绍 ...
- SIP协议流程
1.注册流程: 2.注销流程: 3. 基本呼叫建立过程: 4. 会话更改流程: 5. 正常呼叫释放过程: 6. 被叫忙呼叫释放: 7.被叫无应答流程一: 8.被叫无应答流程二: 9.遇忙呼叫前转:
- [Guitar self-practising] 【吉他练习王-节奏练习】曲目1 基本扫弦节奏练习
这本书来自吉他练习王-节奏练习, 大家可以自行到网上搜搜电子版看看. 扫弦练习: 将左手轻轻靠着琴弦, mute琴弦.右手拿上拨片, 节拍器60,左脚踏着节拍练习. note: 注意 “轻”(幅度轻, ...
- Hybrid设计--离线更新
首先server端和前端做一个增量发布系统 ,1.就是把一个增量包发布到一个版本的Native上去,让他做更新.2.后台对这个增量包的到达率或者成功的更新做一个统计.这是比较复杂的. 离线更新的机制: ...