夜里坐在椅子上发着呆,想着到底接下来学点什么比较合适,大脑里把知识列举了一遍,却突然间把之前一直没有想通的word2vec明白了一些。
大致说一下该算法的学习顺序所及参考文献。不会Latex的人只能截图了…..
1. 多层神经网络
熟悉神网的人就不用再看了,总之就是一个简单的FeedForward运算, 然后通过基本的BP算法来做训练。
2. 概率语言模型
需读的paper:
http://machinelearning.wustl.edu/mlpapers/paper_files/BengioDVJ03.pdf
该paper算是使用神经网络来做概率语言模型的始祖之作了,学习过LDA的同学不妨对照LDA来理解这篇paper的思路,不看其具体实现算法,其最不同的地方应该是通过N-gram引入了context的概念。
paper在第二节最初的时候就指明了我们需要优化的目标函数:
第六页的尾部及其第七页的顶部给出了待优化的参数:
优化算法就是基本的BP算法,虽然参数很多,但是别害怕,整体思路依旧是个链式的积分法则而已。
3. 通过分层优化语言模型
需读的paper:
http://www.iro.umontreal.ca/labs/neuro/pointeurs/hierarchical-nnlm-aistats05.pdf
这篇paper的核心思想是如何解决所有词遍历的时间复杂度问题,可以看第三页的右侧中部:
paper将上一篇paper中的优化问题通过编码改成了一个优化编码位的问题,而接下来则是将该问题作为了一个二分类问题来解,可以看第四页的右侧中部:
在paper的第五节中使用wordnet对词进行编码:
A very important component of the whole model is the choice of the words binary encoding, i.e. of the hierarchical word clustering. In this paper we combine empirical statistics with prior knowledge from the WordNet resource (Fellbaum, 1998). Another option
would have been to use a purely data-driven hierarchical clustering of words, and there are many other ways in which the WordNet resource could have been used to influence the resulting clustering
这个略作了解就可以了,并不重要。
4. Extensions of recurrent neural network language model
这篇paper从google上只能找到对应的slide,paper是麻烦在校的同学帮我下的,各位不妨去搜一下。
这篇paper主要讲了一些recurrent neural network来做language model的一些基础的方法及其优化函数,另外很重要的一点是该文在Speedup techniques的时候指出了,词出现的频率是不等的,如果将词分成20类的话,则第一类会出现很多类似“The”这种高频词,而最后一类则会是很多低频词。这也是word2vec优化效率的一个很重要的基础。
此外,该文章很重要的一个优化技术则是将词之间的条件概率模型转换成了类和词之间的条件概率模型,感兴趣的同学不妨看一下。
5. Word2vec
需读的paper:
http://arxiv.org/pdf/1301.3781.pdf
嗯,就是Word2vec最基础的那篇paper,其实paper上没有讲什么内容。
2.1部分说明了时间复杂度的主要瓶颈:
在新的模型改进时,主要是做了如下的两点:
6. 工程化实现
先吐个槽,Google的这个代码写的真心是让人不忍过目,所以读代码之间各位不妨先自行整理一下代码,把方法该拆的拆开,该删的删掉,该换行的给换个行.......
<1> ExpTable:这个地方如果读过LibFm代码的人应该清楚,就是利用了Pre-Computing的思想对一些之前的东西来做缓存。
<2> 霍夫曼编码,这个地方是我之前看的最纠结的一个地方,但是读了上面第三段说的paper各位应该就明白意思了,其实通过频率对词进行霍夫曼编码的一个好处是大多数的词编码长度都很短,所以在做 P(a,b,c) = P(a | b,c) * P(b|c) * P(c) 这种运算的时候所需的次数都比较少,有效地降低了时间复杂度。
最后关于Skip-gram实现原理上没有什么区别,只是优化函数上略有不同,看一下paper的3.2节以及第五页的配图应该就很容易懂了。
相关推荐
用twitter训练的word2vec的词嵌入表示 word2vec_twitter_model 自然语言处理可以用于文本分类 有word2vec_teitter_model.bin 基于https:www.fredericgodin 因word2vec_twitter_model.bin 4G大小,使用百度网盘传输
Word2vec,是为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本
在大量赞叹 word2vec 的微博或者短文中,几乎都认为它是深度学习在自然 语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。 互联网界很多公司也开始跟进,使用 word2vec 产出了不少成果...
该资源主要参考我的博客:word2vec词向量训练及中文文本相似度计算 http://blog.csdn.net/eastmount/article/details/50637476 其中包括C语言的Word2vec源代码(从官网下载),自定义爬取的三大百科(百度百科、互动...
word2vec Word2Vec in C++ 11 See main.cc for building instructions and usage....jackdeng-mac:word2vec jack$ sysctl -n machdep.cpu.brand_string Intel(R) Core(TM) i7-4850HQ CPU @ 2.30GHz
Word2Vec结果 Word2Vec结果 Word2Vec结果 Word2Vec结果
word2vec:使用word2vec改进搜索结果
word2vec数学原理,很强大的一个深度学习库。 它可以将语料库中的词转化为向量
Word2Vec的java版实现,可用于NLP领域的研究与学习。
这是word2vec( )的开源C实现的端口。 您可以通过浏览/提供资源库。 或者,您可以从中央Maven存储库中提取它: < groupId>com.medallia.word2vec</ groupId> < artifactId>Word2VecJava < version>0.10.3 ...
word2vec的实现源码,并加上中文注解!
word2vec_twitter word2vec_twitter_model.bin
深度学习word2vec博文的文档,整理了各位的意见,把错误的地方修改过了。
Word2Vec_Twitter 关于 该存储库使用代码和, 。 此zip包含在Twitter数据上训练的word2vec模型,如以下所述: 戈丁,F.,Vandersmissen,B.,De Neve,W.,&Van de Walle,R.(2015)。 多媒体实验室@ ACL W-NUT ...
The Inner Workings - of - word2vec, 国内唯一版本,重金购买于国外,谢绝转载。给喜欢研读word2vec原理的人。目前为止最清晰易懂版本。
word2vec:word2vec ++是单词的分布式表示(word2vec)库和工具的实现,从头开始用C ++ 11编写
为了能在聚类中更 准确地对文本进行相似度计算,本文采用 word2vec 将词语表示成词向量,并提出了一种基 10 于稠密特征的 DC-word2vec 算法,通过引入高频网络词组成的高维词表对特征向量进行扩维 映射,使其变得...
NLP之word2vec:利用 Wikipedia Text(中文维基百科)语料+Word2vec工具来训练简体中文词向量 word2vec_wiki.model
word2vec在PyTorch中的实现代码及其数据,代码注释详细,数据文件完整。
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。