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)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
随机推荐
- Git/GitHub基本操作
GitGit是分布式版本控制工具,SVN是集中式版本控制,有单点故障的问题GitHub是Git的代码托管中心,类似的国内有码云,是远程维护库Git的优势大部分操作在本地完成,不需要联网完整性有保证尽可 ...
- shell- 字符串处理 、 扩展的脚本技巧 、 正则表达式
字符串截取的方法 方法一:使用${}表达式 格式:${var:起始位置:长度} 方法二:使用expr substr 格式:expr substr "$var" 起始位置 长度 方法 ...
- winform里直接使用WCF,不需要单独的WCF项目
https://www.cnblogs.com/fengwenit/p/4249446.html 依照此法建立即可, 但是vs生成的配置有误,正确配置如下 <?xml version=" ...
- VMware下安装Ubuntu18.04时vmware tools安装问题
在VMware下安装Ubuntu18.04时vmware tools关键步骤: 1.快捷键Ctrl+Alt+T,启动命令框,然后切换到root用户(切换命令为:sudo su,回车然后会提示你输入当前 ...
- 《全栈性能Jmeter》-5JMeter负载与监听
- SQL Server 2008 R2下载地址
MS 发布了最新的SQL Server 2008 R2,似乎早在4.19就提供了下载,不过才到昨天放出下载地址: 这个是试用版的下载,于正式版的区别就只在一个序列号! 而MSDN的版本则集成了安装序列 ...
- CentOS6.5 安装Spark集群
一.安装依赖软件Scala(所有节点) 1.下载Scala:http://www.scala-lang.org/files/archive/scala-2.10.4.tgz 2.解压: [root@H ...
- HDU 2256 Problem of Precision(矩阵)
Problem of Precision [题目链接]Problem of Precision [题目类型]矩阵 &题解: 参考:点这里 这题做的好玄啊,最后要添加一项,之后约等于,但是有do ...
- CSU 1817 Bones’s Battery Submit(二分+Floyd)
Bones's Battery Submit [题目链接]Bones's Battery Submit [题目类型]二分+Floyd &题意: 有n个点,m条边,从点ui到点vi的费电量是di ...
- LeetCode107.二叉树的层次遍历II
给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 ...