在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Google word2vec算法 数学原理

Google word2vec算法 数学原理

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:13.37M
  • 下载次数:12
  • 浏览次数:116
  • 发布时间:2020-06-14
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
文档是 word2vec 算法 数学原理详解。 word2vec是google的一个开源工具,能够仅仅根据输入的词的集合计算出词与词直接的距离,既然距离知道了自然也就能聚类了,而且这个工具本身就自带了聚类功能,很是强大。
32预备知识 本节介绍word2v中将用到的一些重要知识点,包括 sigmoid函数、 Bccs公式和 Huffman编码等 821 sigmoid函数 sigmoid函数是神经网络中常用的激活函数之一,其定义为 1+e 该函数的定义域为(-∞,+∞),值域为(0,1).图1给出了 sigmoid函数的图像 0.5 6 图1 sigmoid函数的图像 sigmoid函数的导函数具有以下形式 (x)=0(x)1-0(x) 由此易得,函数loga(x)和log(1-0(x)的导函数分别为 log a(a)-1 a(a),log(1 o(a))l-a(a), (2.1) 公式(2.1)在后面的推导中将用到 32.2逻辑回归 生活中经常会碰到二分类问题,例如,某封电子邮件是否为垃圾邮件,某个客户是否为 潜在客户,某次在线交易是否存在欺诈行为,等等设{(x;)}温1为一个二分类问题的样本 数据,其中x∈Rn,∈{0,1},当v=1时称相应的样本为正例当v=0时称相应的样 本为负例 利用 sigmoid函数,对于任意样本x=(x1,x2,…,xn),可将二分类问题的 hypothesis 函数写成 h(x)=o(6o+b1x1+62+…+bnxn) 其中θ=(0,61,…,On)为待定参数.为了符号上简化起见,引入x0=1将x扩展为 (x0,x1,x2,……,xn),且在不引起混淆的情况下仍将其记为ⅹ.于是,he可简写为 取阀值T=0.5,则二分类的判别公式为 ho(x)≥0.5: X)= 0,ha(x)<0.5 那参数θ如何求呢?通常的做法是,先确定一个形如下式的整体损失函数 (6)=∑ cost(Xi, y 然后对其进行优化,从而得到最优的参数θ* 实际应用中,单个样本的损失函数cost(x2,)常取为对数似然函数 log (he(xi)), yi=1: cost(xi, yi) g(1-h0(x),v=0 注意,上式是一个分段函数,也可将其写成如下的整体表达式 cost(x,)=-·log(ha(x)-(1-y)·log(1-he(x) 823 Bayes公式 贝叶斯公式是英国数学冢贝叶斯( Thomas Bayes)提出来的,用来描述两个条件概率之 间的关系.若记P(A),P(B)分别表示事件A和事件B发生的概率,P(AB)表示事件B 发生的情况下事件A发生的概率,P(A.,B)表示事件A,B同时发生的慨率,则有 PCA. B P(AB P(AB) P(B P(BA) P(A 利用上式,进一步可得 P(AIB)=P(A)P(BLA P(B 这就是 Bayes公式 32.4 Huffman编码 本节简单介绍 Huffman编码(具体内容主要来自百度百科的词条,10),为此,首先介绍 Huffman树的定义及其构造算法 2.4.1 Huffman树 在计算机科学中,树是一种重要的非线性数据结构,它是数据元素(在树中称为结点)按 分支关系组织起来的结构.若干棵互不相交的树所构成的集合称为森林.下面给出几个与树 相关的常用概念 路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径.通 路中分支的数目称为路径长度.若规定根结点的层号为1,则从根结点到第L层结点的 路径长度为L-1 ·结点的权和带权路径长度 若为树中结点赋予一个具有某种含义的(非负)数值,则这个数值称为该结点的权 结点的带权路径长度是指,从根结点到该结点之间的路径长度与该结点的权的乘积 ·树的带权路径长度 树的带权路径长度规定为所有叶子结点的带权路径长度之和 二叉树是每个结点最多有两个子树的有序树.两个子树通常被称为“左子树”和“右子 树”,定义中的“有序”是指两个子树有左右之分,顺序不能颠倒 给定π个权值作为π个叶子结点,构造一棵二叉树,若它的带权路径长度达到最小,则 称这样的二叉树为最优二叉树,也称为 Huffman树 32.4.2 Huffman树的构造 给定n个权值{mn,m2,…,mn}作为二叉树的n个叶子结点,可通过以下算法来构造 一颗 Huffman树 算法2.1( Huffman树构造算法) (1)将{U1,U2,……,wn}看成是有n棵树的森林(每棵树仅有一个结点) (2)在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的 根结点权值为其左、右子树根结点权值之和 (3)从森林中删除选取的两棵树,并将新树加入森林 (4)重复(2)、(3)步,直到森林中只剩-棵树为止,该树即为所求的 Huffman树. 接下来,给出算法2.1的一个具体实例 例2.1假设思14年世界杯期间,从新浪微博中抓取了若干条与足球相关的微博,经统计, 我”、“喜欢”、“观看”、“巴西”、“足球”、“世界杯”这六个词岀现的次数分別为15,8,6,5, 3,1.请以这⑥个词为叶子结点,以相应词烦当权值,构造一棵Humn树 ⊙⊙⊙⊙ 只 6⊙ 图2 Huffman树的构造过程 利用算法2.1,易知其枃造过程如图g所示,图中第六步给出了最终的Hu「mam树,由 图可见词频越大的词离根结点越近 杓造过程中,通过合并新增的结点被标记为黄色.由于每两个结点都要进行一次合并,因 此,若叶子结点的个数为n,则构造的HumⅦn树中新增结点的个数为n-1.本例中n 6,因此新增结点的个数为5 注意,前面有捉到,二又树的两个子树是分左右的,对于某个非叶子结点来说,就是其两 个孩子结点是分左右的,在本例中,统一将词频大的结点作为左孩子结点,词频小的作为右 孩子结点.当然,这只是一个约定,你要将词频大的结点作为右孩子结点也没有问题 324.3 Huffman编码 在数据通信中,需要将传送的文宇转换成二进制的宇符串,用0,1码的不同排列来表示 字符.例如,需传送的报文为“ AFTER DATA EAR ARE ART AREA”,这里用到的字符集 为“A,E,R,T,F,D”,各字母出现的次数为8,4,5,3,1,1.现要求为这些字母设计编码 要区别6个字母,最简单的二进制编码方式是等长编码,固定采用3位二进制(2=8> 6),可分别用000001、010、011、100、101对“A,E,R,T,F,D”进行编码发送,当对方接 收报文时再按照三位一分进行译码 显然编码的长度取决报文中不同字符的个数.若报文中可能出现26个不同字符,则固 定编码长度为5(25=32>26).然而,传送报文时总是希望总长度尽可能短.在实际应用中 各个字符的出现频度或使用次数是不相同的,如A、B、C的使用颗率远远高于X、Y、Z,自 然会想到设计编码时,让使用频率高的用短码,使用频率低的用长码,以优化整个报文编码 为使不等长编码为前缀编码(即要求一个字符的编码不能是另一个字符编码的前缀),可 用字符集中的每个字符作为叶子结点生成一棵编码二叉树,为了获得传送报文的最短长度, 可将每个字符的岀现频率作为字符结点的权值赋于该结点上,显然字使用频率越小权值起 小,权值越小叶子就越靠下,于是频率小编码长,频率高编码短,这样就保证了此树的最小带 权路径长度,效果上就是传送报文的最短长度.因此,求传送报文的最短长度问题转化为求 由字符集中的所有字符作为叶子结点,由字符出现频率作为其权值所产生的 Huffman树的 问题.利用 Huffman树设计的二进制前缀编码,称为 Huffman编码,它既能满足前缀编码 的条件,又能保证报文编码总长最短 本文将介绍的word2ve工具中也将用到 Huffman编码,它把训练语料中的词当成叶 子结点,其在语料中岀现的次数当作权值,通过构造相应的 Huffman树来对每一个词进行 Huffman编码 图3给岀了例2.1中六个词的 Huffman编码,其中约定(词频较大的)左孩子结点编码 为1,(词频较小的)右孩子编码为0.这样一来,“我”、“喜欢”、“观看”、“巴西”、“足球”、“世 界杯”这六个词的 Huffman编码分别为0,111,110,101,1001和1000 0 0 欢 观有 巴西 足球 图3 Huffman编码示意图 注意,到目前为止关于 Huffman树和 Huffman编码,有两个约定:(1)将权值大的结 点作为左孩子结点,权值小的作为右孩子结点;(②)左孩子结点编码为1,右孩子结点编码为 0.在word2vee源码中将权值较大的孩子结点编码为1,较小的孩子结点编码为θ.为亐上 述约定统一起见,下文中提到的“左孩子结点”都是指权值较大的孩子结点 3背景知识 word2vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系,为此,不妨 先来了解一些语言模型方面的知识 83.1统计语言模型 当今的互联网迅猛发展,每天都在产生大量的文本、图片、语音和视频数据,要对这些数 据进行处理并从中挖掘出有价值的信息,离不开自然语言处理( Nature Language processing NIP)技术,其中统计语言模型( Statistical language model)就是很重要的一环,它是所有 NLP的基础,被广泛应用于语音识别、机器翻译、分词、词性标注和信息检索等任务 例3.1在语音识别亲统中,对于给定的语音段Voie,需要找到一个使概率p(Tcrt| Voice 最大的文本段Tert.利用 Bayes公式,有 P(Teact Voice) p(VoiceTert)p(Text) P(Ve once 其中p( Voice Teat)为声学模型,而p(Tert)为语言模型(l8]) 简单地说,统计语言模型是用来计算一个句子的概率的概率模型,它通常基于一个语料 库来构建那什么叫做一个句子的概率呢?假设W=m1:=(n1,w2,…,tr)表示由T个 词1,2,…,ur按顺序构成的一个句子,则n,U2,…,wr的联合概率 p(W)=p(u1)=p(u1,u2,…,r) 就是这个句子的概率.利用 Baves公式,上式可以被链式地分解为 1)=p(u1)·p(u2l1)·p(vai)…p(ur1-) 3.1 其中的(条件)概率p(1),p(U2mn1),p(u3),…,p(urln1-1)就是语言模型的参数,若这 些参数巳经全部算得,那么给定一个句子1,就可以很快地算出相应的p(1)了 看起来妤像很简单,是吧?但是,具体实现起来还是有点麻烦.例如,先来看看模型参数 的个数.刚才是考虑一个给定的长度为T的句子,就需要计算T个参数.不妨假设语料库对 应词典D的大小(即词汇量)为N,那么,如果考虑长度为T的任意句子,理论上就有N 种可能,而每种可能都要计算T个参数,总共就需要计算TN个参数.当然,这里只是简单 估算,并没有考虑重复参数,但这个量级还是有蛮吓人.此外,这些概率计算好后,还得保存 下来,因此,存储这些信息也需要很大的內存开销 此外,这些参数如何计算呢?常见的方法有 II-gram模型、决策树、最大熵模型、最大熵 马尔科夫模型、条件随杋场、神经网络等方法.本文只讨论n-gram模型和神经网络两种方 法.首先来看看n-gram模型 32n-gram模型 考虑pko4-)(k>1)的近似计算.利用 Baves公式,有 p(wr wi) P(u P(w 根据大数定理,当语料库足够大时,p(k4-1)可近似地表示为 P(wwi) count(wi) (3.2) count(a 其中 count(u4)和 count-)分别表示词串t和v-在语料中出现的次数,可想而知, 当k很大时, count(o4)和 count(4-1)的统计将会多么耗时 从公式(3.1)可以看出:一个词出现的慨率与它前面的所有词都相关.如果假定一个词 出现的概率只与它前面固定数目的词相关呢?这就是n-gran模型的基本思想,它作了一个 n-1阶的 Markov假设,认为一个词出现的概率就只与它前面的n-1个词相关,即 -1)≈p(kk-1+), 于是,(3.2)就变成了 p(wxJuk-) count( n+1 countri (3.3 以〃=2为例,就有 p(uk4-1)≈ count(k-1, Wk) count(Wk-1) 这样一简化,不仅使得单个参数的统计变得更容易(统计时需要匹配的词串更短),也使得参 数的总数变少了 那么, n-gran中的参数n取多大比较合适呢?一般来说,n的选取需要同时考虑计算复 杂度和模型效果两个因素 表1模型参数数量与n的关系 模型参数数量 1( ingram)2×105 2(bigram) 4×10 10 3( trigram)8×1015 4(4grm)16×10 在计算复杂度方面,表1给出了n-gram模型中模型参数数量随着n的逐渐增大而变化 的情况,其中假定词典大小N=2000(汉语的词汇量大致是这个量级).事实上,模型参数 的量级是N的指数函数(O(N"),显然n不能取得太大,实际应用中最多的是采用n=3 的三元模型 在模型效果方面,理论上是π越大,效果越奷.现如今,互联网的海量数据以及机器性能 的提升使得计算更高阶的语言模型(如n>10)成为可能,但需要注意的是,当n大到一定 程度时,模型效果的提升幅度会变小.例如,当n从1到2,再从2到3时,模型的效果上升 显著,而从3到4时,效果的提升就不显著了(具体可参考吴军在《数学之美》中的相关章 节).事实上,这里还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时 单个参数的实例变少从而降低了可靠性,因此需要在可靠性和可区别性之间进行折中 另外, n-gran模型中还有一个叫做平滑化的重要环节.回到公式(3.3),考虑两个问题: 若 count(uk-n+1)=0,能否认为p(kln1-1)就等于0呢? 若 count(kn+)= count(uk-+1,能否认为p(uur-)就等于1呢? 显然不能!但这是一个无法回避的问题,哪怕你的语料库有多么大.平滑化技术就是用来处 理这个问题的,这里不展开讨论,具体可参考[11 总结起来,n-gram模型是这样一种模型,其主要工作是在语料中统计各种词串岀现的次 数以及平滑化处理.概率值计算好之后就存储起来,下次需要计算一个句子的概率时,只需 找到相关的概率参数,将它们连乘起来就好了 然而,在机器学习领域有一种通用的招数是这样的:对所考虑的问题建模后先为其构造 一个目标函数,然后对这个目标函数进行优化,从而求得一组最优的参数,最后利用这组最 优参数对应的模型来进行预測 对于统计语言模型而言,利用最大似然,可把目标函数设为 plwlConteat(w)) ∈C 其中C表示语料( Corpus), Context(u)表示词U的上下文( Context),即周边的词的集 合.当 Context(u)为空时,就取p( Context(w)=p(u).特别地,对于前面介绍的 n-gran 模型,就有 Context(mn)=2-n+1 注3.1语料¢和词典仍的区别:词典仍是从语料¢中抽取岀来的,不存在重复的词;而语 料C是指所有的文本內容,包括重复的词 当然,实际应用中常采用最大对数似然,即把目标函数设为 ∑ logp(u( ontext(o) (3.4) 然后对这个函数进行最大化 从(3.4)可见,概率p( CONtex()已被视为关于和 Context()的函数,即 p(w Context(w))= F(w, Conteact(w), 0) 【实例截图】
【核心代码】

标签:

实例下载地址

Google word2vec算法 数学原理

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警