word2vec原理介绍

一,词向量的概念将word映射到一个新的空间中,并以多维的连续实数向量进行表示叫做“Word Represention”或“Word Embedding”。自从21世纪以来,人们逐渐从原始的词向量稀疏表示法过渡到现在的低维空间中的密集表示。用稀疏表示法在解决实际问题时经常会遇到维数灾难,并且语义信息无法表示,无法揭示word之间的潜在联系。而采用低维空间表示法,不但解决了维数灾难问题,并且挖掘了word之间的关联属性,从而提高了向量语义上的准确度。

二,词向量模型

a)LSA矩阵分解模型

采用线性代数中的奇异值分解方法,选取前几个比较大的奇异值所对应的特征向量将原矩阵映射到低维空间中,从而达到词矢量的目的。

b)PLSA潜在语义分析概率模型

从概率学的角度重新审视了矩阵分解模型,并得到一个从统计,概率角度上推导出来的和LSA相当的词矢量模型。

c)LDA文档生成模型

按照文档生成的过程,使用贝叶斯估计统计学方法,将文档用多个主题来表示。LDA不只解决了同义词的问题,还解决了一次多义的问题。目前训练LDA模型的方法有原始论文中的基于EM和差分贝叶斯方法以及后来出现的Gibbs Samplings采样算法。

d)Word2Vector模型

最近几年刚刚火起来的算法,通过神经网络机器学习算法来训练N-gram语言模型,并在训练过程中求出word所对应的vector的方法。本文将详细阐述此方法的原理。

三,word2vec的学习任务

假设有这样一句话:今天下午2点钟搜索引擎组开组会。

任务1:对于每一个word,使用该word周围的word来预测当前word生成的概率。如使用“今天、下午、搜索、引擎、组”来生成“2点钟”。

任务2:对于每一个word,使用该word本身来预测生成其他word的概率。如使用“2点钟”来生成“今天、下午、搜索、引擎、组”中的每个word。

两个任务共同的限制条件是:对于相同的输入,输出每个word的概率之和为1。

Word2vec的模型就是想通过机器学习的方法来达到提高上述任务准确率的一种方法。两个任务分别对应两个的模型(CBOW和skim-gram)。如果不做特殊说明,下文均使用CBOW即任务1所对应的模型来进行分析。Skim-gram模型分析方法相同。

四,使用神经网络来训练

此图是原始的未经过优化的用于训练上节提到的任务的神经网络模型。该模型有三层结构,输入层(投影层),隐藏层,输出层。

其中输入层和传统的神经网络模型有所不同,输入的每一个节点单元不再是一个标量值,而是一个向量,向量的每一个值为变量,训练过程中要对其进行更新,这个向量就是我们所关心的word所对应的vector,假设该向量维度为D。该层节点个数为整个语料库中的不同word的个数,设为V。

隐藏层和传统神经网络模型一样,使用激活函数为tanh或sigmoid均可。假设该层节点个数为H。

输出层同样和传统神经网络模型一样,节点个数为整个语料库中的不同word的个数,即V。另外如果你认认真真的学过神经网络稀疏自编码的知识就会知道,如果将输入层和输出层之间再构建一层传递关系,更有利于提高该模型的准确度。

时间复杂度分析,对于上一节中所举得例子,我们知道输入是N个word,输出是“2点钟”。它所对应的时间复杂度为N * D + N * D * H + N *D * V + H * V。其中D和H大约在100和500之间,N是3到8,而V则高达几百万数量级。因此该模型的瓶颈在后面两项。接下来我们要讨论的问题就是如何解决这个时间复杂度的问题。

对于输入层到输出层的网络,我们可以直接将其剔除掉,实验证明,该措施并不会带来很多效果上的下降,反而省去了大部分计算时间。之所以隐藏层到输出层计算量最大是因为我们对于每一个输出的word均要进行验证并使用梯度下降更新。正确的word所对应的节点为正例,其他为反例,从而达到快速收敛的目的。下两节将介绍两种不同的方法来解决此问题。

五,Hierarchical Softmax

如果我们将字典中的词分成2类,则在预测的时候我们可以先预测目标词所在的类别,这样就将直接去掉一半的测试,如果再在剩下的一半中再分成两类,则又可以去除一半的测试,一直分下去直到元素个数达两个为止。聪明的你,肯定想到了完全二叉树这个数据结构。没错!我们可以对字典建立一颗完全二叉平衡树,内部节点为分类节点,叶节点为代表每个词的节点。其中叶节点无需保存,没有实际意义,只需要保存V-1个内部节点,因为叶节点是由内部节点所确定的。

更有意思的是,我们无需根据某些语义上的区别来分类每一个词,而是随意的进行分类,神经网络模型会自动的挖掘各个类别所代表的属性。

因此,我们可以记录每个词到根节点的路径,然后每次只需对路径上的节点进行预测,并采用梯度下降的算法对神经网络的参数进行更新,就可以将复杂度从原来的H*V变为H*log(V)。如果考虑词频,适用Huffman编码,则效率可再提升2到3倍。

六,Negative Sampling

首先,有一个非常重要的定理叫Noise Contrastive Estimation,是由Gutmann和Hyvarinen等人提出,之后被Mnih和The等人应用到语言模型中来。该定理的推倒证明已经超出本文所讲内容,有兴趣的读者可以自行阅读。

应用到这里,只需要将各个词按照其对应的TF大小来随机选取并进行反例的更新。具体如下:将各个词的TF累和设为S,算出每个词的TF所占的比例,将长度为1的区间进行划分。之后随机产生一个数r(0

总结起来就是,除了更新正确的word所对应的节点外,不在更新其他的所有反例节点,而是只选取几个反例节点进行更新。一般是10个左右。即复杂度变为10 * H。

七,退变为多个logistic regression或Softmax模型

Google research等人又对上述模型进行改进,去除了隐藏层,重新拾起输入层到输出层的网络,并将原来的输入层起名投影层(projection layer),而且所有节点共享同一个投影层。重新加入原始的标量输入层节点表示每一个word。之后形成的神经网络和传统的神经网络几乎相同,唯一不同的是投影层没有激活函数,只有输出层有激活函数。同样使用上两节所用到的优化算法,我们可以得到以下模型。摘自网络

八,加速方法总结

a)删除隐藏层

b)使用Hierarchical softmax或negative sampling

c)去除小于minCount的词

d)根据一下公式算出每个词被选出的概率,如果选出来则不予更新。此方法可以节省时间而且可以提高非频繁词的准确度。

其中t为设定好的阈值,f(w)为w出现的频率。

e)选取邻近词的窗口大小不固定。有利于更加偏重于离自己近的词进行更新。

f)多线程,无需考虑互斥。

九,特性

Vectors(man)–vectors(woman) + vectors(daughters) = vectors(son)

LDA等其他模型无此性质。

原文参考:http://blog.sina.com.cn/s/blog_4bec92980102v7zc.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容