最好的五一? 看了三天论文。因为毕竟是劳动节,那我写一写劳动心得吧。
首先解释一下什么叫作语言模型,简单地讲就是计算文字序列的联合概率,即如这个公式进行表示:
先验分布好进行计算,按照n-gram的算法难以有效地表示语言模型,因为没有generality,忽视了语言语义的相似度,采用分布式表示所建立的语言模型往往更好。
1. Bengio Y, Ducharme R, Vincent P, et al.A neural probabilistic language model[J]. Journal of machine learning research, 2003, 3(Feb): 1137-1155.
算是很早的一篇涉及到word的分布式表示,采用Neural Network来建立语言模型。其实在这篇文章里面已经有了word Embedding的概念,分布式语言也比这篇文章提出的更早,所以看到这篇老文章时,心中感慨:如今的表示学习在学界火得一塌糊涂,是有历史积淀与原因的。
采用NN 来建语言模型时,一个很重要的问题是softmax层如何优化计算性能,提升训练与推理速度。
1) Data-parallel Processing,思想用多个processors对数据进行并行化处理, 有synchronization 与asynchronization 两种实现机制,前者在参数更新时会对参数加一个读写锁,以防多个进程同时更新参数,这种方法使得大量进程花在了等待的时间上,然而即使是采用后者来进行数据并行,虽然noise影响不会很大,但由于需要large shared-memory parallel computer,而这种computer的processer的速度往往会给主线上的cpu拖后腿(为什么?没弄明白.....orz....
2) Parameter-Parallel 思想是 softmax层的参数进行并行算,其余的结点每个processer重复进行计算。
2. Pennington J, Socher R, Manning C D. Glove: Global Vectors for Word Representation[C]//EMNLP. 2014, 14: 1532-1543.
这篇文章据说得到了最优的词的分布式表示,the state of art.
前人在得到词向量往往采用的local context的方式,如CBOW Skip-Gram,没有利用到word间的co-occurrence的全局信息,于是在文章中推导了如何将co-occurrence信息表示成模型的Object function,并给出了 CBOW、Skip-Gram与其的关系。
3. Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]//Advances in neural information processing systems. 2013: 3111-3119.
正式提出 Word Embedding?
重点看了针对Softmax训练时的优化方法:说白了就是改改Object function,确保不会太影响生成的词向量的质量(具有softmax的性质与优点),又没有softmax在训练时的巨大的计算代价
Hierarchy Softmax :
Negative Sampling:
Noise Contrastive Estimation: