最近翻了一下关于Deep Learning 或者 普通的Neural Network在NLP以及Text Mining方面应用的文章,包括Word2Vec等,然后将key idea提取出来罗列在了一起,有兴趣的可以下载看看:
http://pan.baidu.com/s/1sjNQEfz
我没有把一些我自己的想法放到里面,大家各抒己见,多多交流。
下面简单概括一些其中的几篇paper:
- Bengio, Yoshua, RéjeanDucharme, Pascal Vincent, and Christian Jauvin. "A Neural Probabilistic Language Model." Journal of Machine Learning Research 3 (2003): 1137-1155.
神经网络语音模型重要工作之一,后面的工作word2vec其实都是对他的一种优化了。因为这个模型当中的softmax过程复杂度太高,计算一个word的条件概率,需要计算词典中每个word的条件概率,才能做normalization。所以就有了很多paper,包括word2vec对其进行优化。
- Morin, Frederic, and Yoshua Bengio. "Hierarchical probabilistic neural network language model." In AISTATS, vol. 5, pp. 246-252. 2005.
- Mnih, Andriy, and Geoffrey E. Hinton. "A scalable hierarchical distributed language model." In Advances in neural information processing systems, pp. 1081-1088. 2009.
这两篇paper,一篇Yoshua Bengio的,一篇Geoffrey Hinton的,都是从Hierarchical角度来降低原模型的时间复杂度。http://blog.csdn.net/mytestmy/article/details/26969149 这篇paper的讲解不错。
- Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean. "Efficient estimation of word representations in vector space." ICLR (2013).
用一颗Huffman Tree来做Hierarchical Softmax, 因为词频大的word编码比较短,所以可以减少很多的矩阵乘法的操作。如何用tree来表示p(w|context(w))要看明白,很简单,左右分枝看作一个二分类问题,那么分到左边的概率可以定义为σ(θTx), 那么右边的概率就是1−σ(θTx), 最后的条件概率就是顺着分枝连乘起来。文中提出了CBOW和Skip-gram两种模型,结构有差异,求解方法类似,最大似然,求导,sgd。
什么时候用CBOW,什么时候用Skip-gram呢? 文章实验说明Skip-gram在word semantic相关task中表现较好,CBOW在syntactic方面比较比较好。
- Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." NIPS(2013).
是上篇paper的继续优化,把原问题直接表示成了二分类问题,Negative Sampling就是如何采负样本,方法很简单,就是一个赌盘,作者说的放法应该是工程实现的时候的trick,效率更高,可以用map存随机数到word的映射。
Mikolov, Tomas跳槽去了Facebook了,挺Joey说,他是一个非常聪明的人。。
Word2Vec有很多有用的属性,属性之一自然是vector,基于此可以做一些诸如machine translation的事情:
- Mikolov, Tomas, Quoc V. Le, and IlyaSutskever. "Exploiting similarities among languages for machine translation." arXivpreprint arXiv:1309.4168 (2013).
每种语言的语料库训练出word2vec的model,英语和西班牙语为例,处于两种向量空间中,向量维度可以相同也可以不同。目标很简单,学习一个mapping matrix优化||Wx−y||2即可。矩阵是什么来着?就是一个线性变换吧。
Word2Vec的另外一个属性很有意思,V(king) – V(queen) + V(woman) ≈ V(man)。 使用这个属性就可以做很多事情了,例如:
- Fu, Ruiji, Jiang Guo, Bing Qin, WanxiangChe, Haifeng Wang, and Ting Liu. "Learning semantic hierarchies via word embeddings." ACL, 2014.
word2vec表示word之后,学习他们的hypernym-hyponym这种语义上下位关系。方法很简单,不过文章先用了一个聚类,也是挺make sense的。将y-x得到的向量k-means聚类,意思是cluster中的关系应该是类似的。
每个cluster学习出一个词关系的映射矩阵W。本文中用的word2vec的skip-gram模型来表示word feature。
关于CNN在sentences方面的应用,有几篇paper,首先:
- Blunsom, Phil, Edward Grefenstette, and NalKalchbrenner. "A Convolutional Neural Network for Modelling Sentences." ACL 2014.
来自Blunsom的作品。CNN往句子上面套的过程很简单,CNN的卷基层,在句子中体现为一个窗口,可以把几个词一起卷积一下,这样就将word order, word context考虑进去了。
CNN还有pooling的环节,上面论文中作者提出了一种k-max pooling,不仅仅取一个最大值。
- Kim, Yoon. "Convolutional Neural Networks for Sentence Classification. “ arxiv : 2014
这篇paper的思想就相对简单些了,没啥说的。
Sentence Classification相关的task很多啊,例如sentiment Classification等。
- Zeng, Daojian, Kang Liu, Siwei Lai, Guangyou Zhou, and Jun Zhao. "Relation Classification via Convolutional Deep Neural Network.“ COLING 2014 Best Paper
Coling今年的best paper,为了描述word之间的关系,提取了很多特征。其中提取句子特征使用的CNN。卷积,pooling,softmax,就这么几个过程。
- Le, Quoc V., and Tomas Mikolov. "Distributed Representations of Sentences and Documents." ICML (2014).
word2vec模型的扩展。
其实大家都会觉得deep model既然能够抽取图像等信号的latent variables, 那么应该很自然的也会抽取text的topic出来, lda等无非就是用词典大小的多项分布来描述topic,deep model应该可以用更短的向量来描述latent topic,当然类似的工作也是有的,这里先list一下:
Wan, Li, Leo Zhu, and Rob Fergus. "A hybrid neural network-latent topic model." ICAIS. 2012.
Larochelle, Hugo, and Stanislas Lauly. "A neural autoregressive topic model." NIPS. 2012.
Hinton, Geoffrey E., and Ruslan Salakhutdinov. "Replicated softmax: an undirected topic model." NIPS 2009.
Srivastava, Nitish, Ruslan R. Salakhutdinov, and Geoffrey E. Hinton. "Modeling documents with deepboltzmann machines." UAI(2013).
Hinton, Geoffrey, and Ruslan Salakhutdinov. "Discovering binary codes for documents by learning deep generative models." Topics in Cognitive Science 3, no. 1 (2011): 74-91.
Salakhutdinov, Ruslan, Joshua B. Tenenbaum, and Antonio Torralba. "Learning to learn with compound hdmodels." NIPS (2011).