5-word2vec架构分析及实践

来源:互联网 发布:linux打开大文件 编辑:程序博客网 时间:2024/04/28 05:47
转载自:http://www.douban.com/note/323504583/
Google目前开源了一款深度学习工具word2vec,该工具有很多有意思的特性。
顾名思义,word2vec就是将词语转换为向量,通过转换为向量,复杂的自然语言处理就可以转换为简单的向量代数运算。
word2vec技术基于神经网络模型,可以简单地将神经网络模型分为三层,分别为输入层、隐含层和输出层。
神经网络模型经历了很长时期的发展,以03年为分界点,03年Bengio等人提出了著名的NNLM模型(http://machinelearning.wustl.edu/mlpapers/paper_files/BengioDVJ03.pdf),算是总结了前面的研究工作,因此,03年之前的关于神经网络在自然语言处理中的研究论文拿来翻翻就可以了,不用细看。03年之后神经网络模型有了较大的改进和发展,发展出的技术千奇百怪,但是,总的而言,所有的改进和提高都紧紧围绕神经网络三层结构,分别在各层进行改进。
在输入层,有RNNLM模型,改进的思想是缓存上一次计算完毕之后的状态,这样计算当前词时就不需要重新计算已经输入的词,节省了计算量。具体可参考文献:http://www.fit.vutbr.cz/research/groups/speech/servite/2010/rnnlm_mikolov.pdf
在隐含层,有CBOW技术和Skip-gram技术。这也是神经网络模型核心架构方面的改进。CBOW技术很好理解,就是利用上下文预测当前词出现的概率;Skip-gram技术比较难理解,顾名思义,Skip-gram就是允许某些词被“跳过”,而不像CBOW那样按照顺序来。被跳过的结果就是语料更加丰富了,因为允许跳过的组合更多,变相增加了语料。有关Skip-gram技术可参考文献:http://www.cs.brandeis.edu/~marc/misc/proceedings/lrec-2006/pdf/357_pdf.pdf
在输出层,或者可以理解为在训练算法方面,有分层softmax技术和负采样技术。分层softmax技术使用二叉树(例如哈夫曼树)将词典里的词编码,这样使得访问每一个词语的平均步长缩短,大大加快了训练速度,分层softmax技术可以参考文献:http://arxiv.org/abs/1310.4546;负采样技术原理同NCE,NCE的原理本质是使用已知的概率密度函数估计未知的概率密度函数,设未知的概率密度函数位x,已知的为y,如果求的了x和y的关系,y又已知,那么x也就不难求出来了,有关负采样技术可参考:
http://dl.acm.org/citation.cfm?id=2188396
最后一点,在神经网络模型中,如”the”、”a”等频繁词会降低训练的速度以及损害训练结果准确性,为了解决这个问题,引入了欠采样技术,技术原理很简单,就是以某个随机的概率舍弃词典中的词,越频繁的词被舍弃的概率越大,因此,在不改变词频排列顺序的前提下,大大减小了频繁词与非频繁词的比例,从而突出了非频繁词,训练结果更加准确,训练的速度也更快。欠采样技术请参考文献: http://arxiv.org/abs/1310.4546
word2vec工具是上述技术的合集,分别学习了解上述技术就能够很好地理解word2vec工具的原理。




0 0
原创粉丝点击