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

word2vec_中的数学原理详解

一般编程问题

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

实例介绍

【实例简介】
word2vec_中的数学原理详解 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
wordzvec 中的数学 hoty@163.com 2014年7月 目录 前言 2预备知识 2.1 sigmoid函数 2.2逻辑回归 3 Bayes公式 2.4 Huffman编码,,,,,,,, 5 24.1Humu树 242 Huttman树的构造 6 2.4.3 Huffman编码..,. 3背景知识 3.1统计语言模 3.2n-gram模型 10 3.3神经概率语言模型 12 3.4词向量的理解 4基于 Hierarchical softmanⅹ的模型 41CBOW模型.. 19 1.1.1网络结构 41.2梯度计算 20 1.2 Skip-gram 模型 42.1网络结构 42.2梯度计算 25 5基于 Negative sampling的模型 28 5.1CBOW模型 28 5.2 Skip-gram模型 53负采样算法 32 6若干源码细节 34 6.1a(x)的近似计算 62词典的存储 63换行符 35 64低频词和高频词 36 6.5窗口及上下文 37 66自应学习率 37 67参数初始化与训练 38 6.8多线程并行 38 69几点疑问和思考 11m 38 81前言 word2vec是 Google于2013年开源推出的一个用于获取 word vector的工具包,它简 单、高效,因此引起了很多人的关注,由于word2vec的作者 Tomas nikolov在两篇相关的 论文(,[4)中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感 些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟 第一次接触word2ve是2013年的10月份,当时读了复且大学郑骁庆老师发表的论文 7,其主要工作是将SENA的那套算法(8])搬到中文场景.觉得挺有意思,于是做了一个 实现(可参见[20),但苦于其中字向量的训练时间太长,便选择使用word2we来提供字向 量,没想到中文分词效果还不错,立马对word2vec刮目相看了一把,好奇心也随之增长 后来.陆陆续续看到∫word2ve的一些具体应用,而 lomas nikolov团队本身也将其 推广到了句子和文档(),因此觉得确实有必要对word2vec里的算法原理做个了解,以便 对他们的后续研究进行追踪.于是,沉下心来,仔细读了一回代码,算是基本搞明臼里面的做 法了.筼一个感觉就是,“明明是个很简单的浅层结构,为什么被那么多人沸沸扬扬地说成是 Decp Learning呢?” 解剖word2vec溟代码的过程中,除了算法层面的收获,其实编程技巧方面的收获乜颇 多.既然花了功夫来读代码,还是把理解到的东西整理成文,给有需要的朋友提供点参考吧 在整理本文的过程中,和深度学习群的群友北流浪子(15,16)进行了多次有益的讨论 在比表示感谢另外,也参考了其他人的一些资料,鄱列在参考文献了,在此对他们的工作也 并表示感谢 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模型 【实例截图】
【核心代码】

标签:

实例下载地址

word2vec_中的数学原理详解

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

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

网友评论

发表评论

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

查看所有0条评论>>

小贴士

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

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

关于好例子网

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

;
报警