word2vec生成词向量原理
假设每个词对应一个词向量,假设:
1)两个词的相似度正比于对应词向量的乘积。即:$sim(v_1,v_2)=v_1\cdot v_2$。即点乘原则;
2)多个词$v_1\sim v_n$组成的一个上下文用$C$来表示,其中$C=\sum_{i=1}^{n}v_i$。$\frac{C}{|C|}$称作上下文C的中心向量。即加和原则;
3)在上下文$C$中出现单词$A$的概率正比于能量因子$e^{-E(A,C)},where E=-A\cdot C$。即能量法则(可参看热统中的配分函数)。
因此:
\[p(A|C)=\frac{e^{-E(A,C)}}{\sum_{i=1}^Ve^{-E(v_i,C)}}=\frac{e^{A\cdot C}}{\sum_{i=1}^Ve^{v_i\cdot C}}~~~~(1)\]
其中$V$是整个词汇空间。
$ref{1}$的分母计算是非常耗时的,下面推导比较方面快速的计算$ref{1}$的方法。
把整个词汇空间分成两部分$G$和$H$,同时在下面的公式中$G$和$H$也表示各自的词向量中心,并且设$A$存在于$G$中,则:
\[p(A|C)=p(A|G,C)\cdot p(G|C) ~~~~(2)\]
where,
\[p(G|C)=\frac{e^{G\cdot C}}{e^{G\cdot C}+e^{H\cdot C}}=\frac{1}{1+e^{(H-G)\cdot C}}~~~~(3)\]
and,
\[p(A|G,C)=\frac{e^{A\cdot C}}{\sum_{w\in G}e^{w\cdot C}}~~~~(4)\]
引入$sigmoid$函数$\sigma(x)=1/(1+e^{-x})$,则
\[p(G|C)=\sigma(-(H-G)\cdot C)=\sigma((G-H)\cdot C)\]
$p(G|C)$只是简单的计算两部分向量之差,不能再简化了。
另外,根据上述定义,很容易得到这个关系$p(G|C)=1-(H|C)$,因为$C$要么落在$G$要么落在$H$。
观看$ref{4}$,则知$p(A|G,C)$是另一个版本的$p(A,C)$,只是词汇空间从$V\rightarrow G$而已。然后我们继续拆分$G$递归的计算下去,最后只需要计算各兄弟部分的向量差而已。这是一个典型的二叉树,划分规则在开始就可确定,如果考虑查询效率的话,就是一个霍夫曼树。其中每个叶子节点表示一个单词,每个中间节点$G~ or~ H$的向量为所有子向量的中心。
展开来就是:
\[p(A|C)=\prod \sigma((G_i-H_i)\cdot C)\]
那么问题来了,这个词向量是怎么搞出来了?学习词向量哪家强?
现在我们这里有一堆的语料,一行一行分好词的,语料那是相当的多,以至于它涵盖了自然语言中的所有正确句子,每个单词在它所在的位置都是恰到好处。现在每个单词我们有一个对应的词向量,我们怎么来衡量这批词向量的好坏呢。
这批词向量张成一个自然语言的空间(从线性代数来说这样描述可能不太准确),它自己规定的自然语言空间,在这个空间中,它可以导出给定语料在它的空间中出现的概率。熟悉吧,这就是语言模型。
我们可以根据词向量计算出来每个单词在它的位置出现的概率,然后这整个语料在这个向量空间中出现的概率就等于每个词在其位置出现概率的乘积。
即,
\[p(T)=\prod p(w_i|Context_i)~~~~(5)\]
$T$为整个语料样本,$Context_i$为单词$i$的上下文,理论上是扣除该单词后剩下的所有单词包括位置。当然了,我们只考虑它的前后$c$个邻居。
我们的目标是使$ref 5$最大化,实际中是加$log$加负之后的最小化。怎么以高效率优化这个目标函数呢,这是一个典型的运筹学问题,而且还是非线性规划。我要翻一下运筹学的教材了。
word2vec生成词向量原理的更多相关文章
- word2vec生成词向量和字向量
生成字符向量的过程中需要注意: 1)在收集数据生成corpus时候,通过Word2Vec生成字向量的时候,产生了“ ”空格字符向量,但是加载模型是不会成功的.那么你不是生成的binary文件,就可以修 ...
- 基于word2vec训练词向量(二)
转自:http://www.tensorflownews.com/2018/04/19/word2vec2/ 一.基于Hierarchical Softmax的word2vec模型的缺点 上篇说了Hi ...
- 基于word2vec训练词向量(一)
转自:https://blog.csdn.net/fendouaini/article/details/79905328 1.回顾DNN训练词向量 上次说到了通过DNN模型训练词获得词向量,这次来讲解 ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- 文本分布式表示(二):用tensorflow和word2vec训练词向量
看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...
- DNN模型训练词向量原理
转自:https://blog.csdn.net/fendouaini/article/details/79821852 1 词向量 在NLP里,最细的粒度是词语,由词语再组成句子,段落,文章.所以处 ...
- CountVectorizer,Tf-idfVectorizer和word2vec构建词向量的区别
CountVectorizer和Tf-idfVectorizer构建词向量都是通过构建字典的方式,比如在情感分析问题中,我需要把每一个句子(评论)转化为词向量,这两种方法是如何构建的呢?拿CountV ...
- Python Word2Vec使用训练好的模型生成词向量
# 文本文件必须是utf-8无bom格式 from gensim.models.deprecated.word2vec import Word2Vec model = Word2Vec.load( ' ...
- 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec
人工神经网络,借鉴生物神经网络工作原理数学模型. 由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息.信息检索领域,模型训练合理排序模型,输入特征,文档质量.文档点击历史.文档 ...
随机推荐
- 【Java】对Web Service的理解
WSDL(Web Service Description Language)是描述Web Service的语言. 你会怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你 ...
- K Smallest Sums
uva11997:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- 【HDOJ】3459 Rubik 2×2×2
模拟+DFS. /* 3459 */ #include <cstdio> #include <cstring> #include <cstdlib> #define ...
- 【HDOJ】1813 Escape from Tetris
bfs预处理一点到边界的最小距离,IDA*求出可行方案.注意按字典序初始化dir数组.并且存在中间点全为1,边界含0的可能性(wa了很多次).此时不输出任何命令. /* 1813 */ #includ ...
- 服务器端打开office然后采用虚拟打印 转换成pdf
服务器端打开office然后采用虚拟打印 转换成pdf [WebMethod] public bool ConvertWordTOPDF(string WordPath) { bool ret=fal ...
- ubuntu下新建VPN连接
1. 安装VPN Client#sudo apt-get install pptp-linux2. 安装网络管理器对VPN的支持#sudo apt-get install network-manage ...
- 浅度围观SBJson
JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不 ...
- 【动态规划】【二分】【最长上升子序列】HDU 5773 The All-purpose Zero
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5773 题目大意: T组数据,n个数(n<=100000),求最长上升子序列长度(0可以替代任何 ...
- oracle 表查询(2)
使用逻辑操作符号 问题:查询工资高于500 或者是岗位为MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的J? or job = 'MANAGER') and ename LIKE 'J%' ...
- ubuntu 下修改host文件
原文地址:http://www.cnblogs.com/kingcat/archive/2012/02/23/2364509.html 有些时候,我们需要让某些域名指向本地,来实现调试,下面介绍下ub ...