实例介绍
word2vec 中的数学原理详解,由于CSDN上的文章作者仅仅贴了图片,不方便读者打印查阅,这里给出了可以直接打印的pdf文档,供读者查阅和收藏。 CSDN上文章链接:http://www.cnblogs.com/peghoty/p/3857839.html 最后,再次感谢这篇文章的作者,使我们小白少走弯路,可以说是目前最好的word2vec入门教材。
2预备知识 本节介绍word2vee中将用到的些重要知识点,包括 sigmoid函数、 Beyes公式和 Huffman编码等 821 sigmoid函数 sigmoid函数是神经网络中常用的激活函数之一,其定义为 1+e 该函数的定义域为(-x,+x),值域为(0,1).图1给出了 sigmoid函数的图像 0.5 图1 sigmoid函数的图像 sigmoid数的导函数具有以下形式 )=0(x)1-0(x) 由此易得,函数logo(a)和log(1-0(x)的导函数分别为 log o(a) (21) 公式(2.1)在后面的推寻中将用到 822逻辑回归 生活中经常会碰到二分类问题,例如,某封电子邮件是否为垃圾邮件,某个客户是否为 在客户,某次在线交易是舌仔在诈行为,等等.设{(x,)}1为一个二分类问题的样本 数据,其中x∈R",∈{0,1},当1=1时称相应的样本为正例,当v=0时称相应的样 本为负例 利用 sigmoid函数,对于任意样木x=(x1,x2,…,xn),可将二分类问题的 hypothesis 函数写成 h(x)=0(o+61x1+622+…+nxn), 其中0=(0o,01,…,O)为待定参数.为了符号上简化起见,引入x0=1将x扩展为 (x0,x1,x2,…,xrn)},且在不引起混淆的情况下仍将其记为ⅹ.于是,he可简写为 取阀值T-0.5,则二分类的判别公式为 1,b(x)≥0.5 y(x 0.5 那参数θ如何求呢?通常的做法是,先确定一个形如下式的整体损失函数 ∑co(x,v) 然后对其进行优化,从而得到最优的參数θ 实际应用中,单个样本的损失函数cost(x,)常取为对数似然函数 cosl(xi, yi) ),v-1; (1-(x),v=0 注意,上式是一个分段函数,也可将其写成如下的整体表达式 cost(x2,3)=·log(ho(x)(1y1)·log(1h(x) 323 Baves公式 贝叶斯公式是英国数学家贝叶斯( Thomas Bayes)提出来的,用来描述两个条件概率之 间的关系.若记P(A),P(B)分别表示事件A和事件B发生的概率,P(AB)我示事件B 发生的情况下事件4发生的慨率P(A,B)表示事A.B同时发生的概率.则有 P(AB) P(B), P(BLA)=P(A, B) P(A, B 利用上式,进一步可得 P(B A P(AB)-P(A)P(B) 这就是 Bayes公式 g2.4 Huffman编码 本节简单介绍Humn编码(具体内容主要来白百度百F的词条.[10),为此,首先介绍 Huffman树的定义及其构造算法 §24.1 Huffman树 在计算机科学中,树是一种重要的非线性数据结构,它是数据元素(在树中称为结点)按 分支关系组织起来的结构.若干棵互不相交的树所构成的集合称为森林.下面给出几个与树 相关的常用概念 ·路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径.通 路中分支的数目称为路径长度.若规定根结点的层号为1,则从根结点到第L层结虑的 路径长度为L-1 ●结点的权和带权路径长度 若为树中结点赋予一个具有某种含义的(非负)数值,则这个数值称为该结点的权 结点的带权路径长度是指,从根结点到该结点之间的路径长度亐该结点的杈的乘矾 ·树的带权路径长度 树的带权路径长度规定为所有叶子结点的带权路径长度之和 二叉树是每个结点最多有两个子树的有序树.两个子树通常被称为“左子树”和“右子 树”,定义中的“有序”是指两个子树有左石之分,顺序不能颠倒 给定n个权值作为n个叶子结点,树造一棵二叉树,若它的带权路径长度达到最小,则 称这样的二叉树为最优二叉树,也称为 Huffman树 82.4.2 Huffman树的构造 给定m个权值{mn,m2;…,mn}作为二叉树的m个叶子结点,可通过以下算法来构造 颗 Huffman树 算法2.Ⅰ(Hu「man树构造算法) (1)将{1,2,……,wn}看成是有n棵树的表林(每树仅有一个结点) 2)在森林中选出两个根结,的权值最小的树合并,作为-棵新树的左、右子树,且新树的 根结点权值为其左、右子树根结点权值之和 〔3)从森林中燜除选取的两樑树,并将新树加入森林 (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求的 luffman树 接下来,给出算法2.1的一个具体实例 例2.1假设2114年世界杯期间,从新浪毀博中抓取了若干条与足球相关的微博,经统计, “我”、“喜欢”、“观看”、“巴西”、“足球”、“世界杯”这六个词岀现的次薮分别为15,8,6,5, 3,1.请以这6个词为叶子结点,以相应词频当权值,构造一棵Hu∥n树. ⊙Q⑨Q⊙只 66如→只只 ③⊙ 图2 Huffman树的构造过程 利用算法.,易知其枃造过程如国g所示,团中第六步给出了最终的 Hutman树,由 囚可见词频越大的词离根结点越近 构造过程中,通过合并新増的结点被标记为黄色.由于每两个结点邡要进行一次合并,因 此,若叶子结点的个数为η,刘枃造的H們πω树中新増结点的个数为π-1.本例中n 6,因此新增结,的个数为5 注意,前面有捉到,二叉树的丙个子树是分左右的,对于某个非叶子结点来说,就是其两 个孩子结点是分左右的,在本例中,统一将词频大的结点作为左孩子结点,词频小的作为右 孩子结点当然,这只昃一个约定:你要将词頻大的结点作为右孩子结点也浸有问题 §24.3 Huffman编码 在数据通倍中,需要将传送的文宁转换成二进制的字符串,用0,1码的不同排列米表示 字符.例如,需传送的报文为“A上 TER DATA EAR ARE ART AREA”,这里用到的字符集 为“A,E,R,T,F,D”,各字母出现的次数为84,5,3,1,1,现要求为这些字母设计编码 要区别6个字母,最简单的二进制编码方式是等长编码,固定采用3位二进制(23=8> 6),可分别用000.001、010、011、100、101对“A,E,R,T,F,D”进行编码发送,当对方接 收报文时再按照三位一分进行译码 显然编码的长度取决报文中不同字符的个数,若报文中可能出现26个不同字符,则固 定编码长度为5(2=32>26).然而,传送报文时总是希望总长度尽可能短.在实际应用中, 各个字符的出现频度或使用次数是不相同的,如A、B、C的使用频率远远高于X、Y、7,自 然会想到设计编码时,让使用频率高的用短码,使用频率低的用长码,以优化整个报文编码. 为使不等长编码为前缀编码(即要求一个字符的编码不能是另一个字符編码的前缀),可 用字符集中的每个宇符作为叶子结点生成一棵编码二叉树,为了获得传送报文的最短长度, 可将每个字符的岀现频率作为字符结烹的权值赋予该结点上,显然字使用频率越小权值越 小,权值越小叶子就越靠下,于是颎率小编码长,频率高编码短,这样就保证了此树的最小带 权路径长度,效果上就是传送报文的最短长度.因此,求传送报文的最短长度问题转化为求 由字符集中的所有字符作为叶子结点,由字符出现频率作为其权值所产生的Hman树的 问题.利用 Hultman树设计的二进制前缀編码,称为 LuminaL编码,它既能满足前缀编码 的条件,又能保证报文编码总长最短 本文将介绍的word2ve工具中也将用到 Huffman编码,它把训练语料中的词当成叶 子缩点,其在语料中出现的次数当作权值,通过构造相应的 Huttman树来对每一个词进行 Huffman编码 图3给岀了例2.1中六个词的 Huffman编码,其中约定(词频较大的)左孩子结点编码 为1,(词频较小的)石孩子编码为θ.这惮一米,“我”、“喜欢”、“观看”、“巴西”、“足球”、“世 界杯”这六个词的 Huffman编码分别为0.111,110,101,1001和1000 0 我 告欢 巴匹 0 足球 图3 Huffman编码示意图 注意,到目前为止,关于 Huttman树和 Huttman編码,有两个约定:(1)将权值大的结 点作为左孩子结点,权值小的作为右孩子结点(2)左孩子结点编码为1,右孩子结点编码为 0.在word2vec源码中将权值较大的孩子结点编码为1,较小的孩子结点编码为0.为与上 述约定统一起见,下文中提到的“左孩了结点"都是指权值较大的孩了结点 83背景知识 word2vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系,为此,不妨 先了解一些语言模型方面的知识 83.1统计语言模型 当今的互联网迅猛发展,每天都在产生大量的文本、图片、语音和视频数据,要对这些数 据进行处理并从中挖掘岀有价值的信息,离不开自然语言处理( Nature Language processing, NP)技术,其中统计语言模型( Statistical language model)就是很重要的一环,它是所有 NLP的基础,被广泛应用于语音识别、机器翻译、分词、词性标注和信息检索等任务. 例.1在语音识别糸统中,对于给定的语音段Vire,霄要找到一个使概率p( TertVoice 最大的文本段Tert.利用 Bayes公式,有 P(Teat voice) p(VoiceText). p(Text p(Voice) 其中p( CicetE.c)为声学模型,而 elEct)为语言模型(18]) 简单地说统计语言模型是用来计算一个句子的概率的概率模驷,它通常基于一个语料 库来构建.那什么叫做一个句子的概率呢?假设W=m1:=(m1,2,…,mr)表示由T个 词,2,……,按顺序构成的一个句子,则1,c2…,w的联合慨率 p()=p(x1)=p(01,t2,…,r) 就是这个句子的概率利用 Bayes公式,上式可以被链式地分解为 p(uh)-p(1)·p(u2lu1)p(u3lu2)…p( wru-1), (3.1) 其中的(条件)概率p(1),p(2t1),p(un),…,p(mr1-)就是语言模型的参数,若这 些参数已经全部算得,那么给定一个句子U1,就可以很快地算出相应的p(1)了 看起来奷像很简单,是吧?但是,具体实现起来还是有点麻烦.例如.先来看看模型参数 的个数.剛刚才是考虑一个给定的长度为T的句子,就需要计算T个参数.不妨假设语料库对 应词典D的大小(即词汇量)为N,那么,如果考虑长度为T的任意句子,理论上就有M 种可能.而每种可能都要计算T个参数,总共就需要计算TN7个参数.当然,这里只是简单 估算,并没有考虑重复参数,但这个量级还是有蛮吓人.此外,这些概率计算好后,还得保存 下来,因此,存储这些信息乜需要很大的內存开销 此外,这些参数如何计算呢?常见的方法有n-gram模型、决策树、最大熵模型、最大熵 马尔科夫模型、条件随机场、神经网络等方法,本文只讨论n-gram模型和神经网络两种方 法.首先来看看 n-gram模型 83.2n-gram模型 考yko-1)(k>1)的近似计算.利用Bvs公式,有 p(wk U 根据大数定理,当语料库足够大时,p(mkm-1)可近似地表示为 k-1) count(a'i 其中 count(n4)和cont()分别表示词串和1-在语料中出现的次数.可想而知, 当k很大时,coun(w)和con(w-)的统计将会多么耗时 从公式(3.1)可以看出:一个词出现的慨率与它前面的所有词都相关.如果假定一个词 出现的概率只与它前面固定数目的词相关呢?这就是n-gram模型的基本思想它作〔二个 n-1阶的 Markov假设,认为一个词出现的概率就只与它前面的n-1个词相关,即 ≈D(|0 于是,(32)就变成了 court(w n+1 P(wk W1 count(a-1 (33 以〃=2为例,就有 p(hln1-)≈ count(wk-1, Wr:) count(wk-1 这样一简化不仅使得单个参数的统计变得更容易(统计时需要匹配的词串更短),乜使得参 数的总数变少了 那么,n-gram中的参数n取多大比较合适呢?一般来说,n的选取需要同时考虑计算复 杂度和模型效果两个因素 表1模型参数数量与n的关系 模型参数数量 1( Ingram)2×10 DIgram 4×1010 3 trigram) 8×1015 4(4gram)16×oe0 在计算复杂度方面,裘1给出了n-gram模型中模型参数数量随着n的诼渐增大而变化 的情况,其中假定词典大小N=2000(以语的词汇量大致是这个量级).事实上,模型参数 的量级是N的指数函数(O(N),显然n不能取得太大,实际应用中最多的是采用7-3 的三元模型 在模型效果方面,理谂上是π越大,效果越妤.现如今,互联网的海量数据以及机器性:能 的提升使得计算更高阶的语言模型(如n>10)成为可能,但需要注意的是,当n大到一定 程度时,模型效果的提升幅度会变小.例如,当η从1到2,再从2到3时,模型的效果上升 显著,而从3到4时,效果的提升就不显著了(具体可参考吴军在《数学之美》中的相关章 节).事实上,这里还涉及到一个可靠性和可区别性的冋题,参数越多,可区性越好,但同时 单个参数的实例变少从而降低了可靠性,因此需要在可靠性和可区别性之间进行折中 另外,n-gram模型中还有一个叫做平滑化的重要环节.回到公式(3.3),考虑两个问题 1.若 count(nk-+1)=0,能否认为p(mnln1)就等于0呢? 2.若 count(kn1)=ount(ukn1),能否认为p(n-)就等于1呢? 显然不能!但这是一个无法回避的同题,哪怕你的语料库有多么大,平滑化技术就是用采处 理这个问题的,这里不展开讨论,具体可参考[11 总结起来,I-gram模型是这样一和模型,其主要工作是在语料中统计各种词串出现的次 数以及滑化处理.概率值计算好之后就存储起来,下次需要计算一个句子的概率时,只需 找到相关的概率参数,将它们连乘起来就好了 然前,在机器学习领域有一种通用的招数是这样的:对所考虑的问题建模后先为其构造 一个目标函数,然后对这个目祘函数进行优化,从而求得一组最优的参数,最后利用这组最 优参数对应的模型来进行预测 对于统计语言模型而言,利用最大似然,可把目标函数设为 plwlConteat(w)) ∈C 其中C表示语料( Corpus, Contect()表示词的上下文( Context),即w周边的词的集 合,当 Contex+)为空时,就取 p( rt()=pro),特别地,对于前面介的xgam 模型,就有 Conte at((n)=}-n+ 注3.1语料C和河典D的区:詞典D是从语¢中抽岀来的,不存在重复的词;而语 料C指所有的 包括重复的词 当然,实际应用中常采用最大对数似然,即把目标函数设为 C=∑ logp(u Contect() (3.4 然后对这个函数进行最大化 从(.4)可见,概率p( cONtext()已被视为关于v和 Context()的函数,即 p(wlContezt())= F(w, Context(a),6 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论