(Deep) Neural Networks (Deep Learning) , NLP and Text Mining
最近翻了一下关于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).
(Deep) Neural Networks (Deep Learning) , NLP and Text Mining的更多相关文章
- Why are Eight Bits Enough for Deep Neural Networks?
Why are Eight Bits Enough for Deep Neural Networks? Deep learning is a very weird technology. It evo ...
- [C1W4] Neural Networks and Deep Learning - Deep Neural Networks
第四周:深层神经网络(Deep Neural Networks) 深层神经网络(Deep L-layer neural network) 目前为止我们学习了只有一个单独隐藏层的神经网络的正向传播和反向 ...
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Initialization)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. Initialization Welcome to the first assignment of "Improving D ...
- (转)Understanding, generalisation, and transfer learning in deep neural networks
Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017 Thi ...
- 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks) —— 3.Programming Assignments: Deep Neural Network - Application
Deep Neural Network - Application Congratulations! Welcome to the fourth programming exercise of the ...
- 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks)—— 0.学习目标
Understand the key computations underlying deep learning, use them to build and train deep neural ne ...
- This instability is a fundamental problem for gradient-based learning in deep neural networks. vanishing exploding gradient problem
The unstable gradient problem: The fundamental problem here isn't so much the vanishing gradient pro ...
- Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)
1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...
随机推荐
- 使用FOR循环语句在屏幕上输出一个由星号组成的直角三角形
题目要求: 请用C++的信息输出方式,使用循环语句在屏幕上输出一个由星号组成的直角三角形,形状如下: * ** *** **** ***** 要求: 完全使用C++的信息输出方式,即cout以及流插入 ...
- nodejs-fs使用
(1)读取文本文件时须添加上'encoding'才能输出可读的内容. 02.txt hello,world! nodejs_readfile.js var fs = require('fs'); fs ...
- C++输入结束
通过判断输入是否等于EOF,可以结束输入. EOF 是个宏,其意思是:End Of File,文件尾标志. 从数值上来看,就是整数-1. 在C语言的头文件中对其进行了宏定义: libio.h: ...
- 24种设计模式--访问者模式【Visitor Pattern】
今天天气不错,绝对是晴空万里,骄阳似火呀,好,我们今天来讲访问者模式,我们在前面讲了组合模式和迭代器模式,通过组合模式我们能够把一个公司的人员组织机构树搭建起来,给管理带来非常大的便利,通过迭代器模式 ...
- 使用XmlPullParser对xml进行读取
XML文件是一种标记性语言;在开发中经常在接口交互时被用作报文传输或者把自定义的类序列化为XML的形式存储到数据库.正因为XML文件这么常用,使用JAVA对XML文件进行读写操作是每一个开发人员必须掌 ...
- php 调用 webservice服务
class data{ $a = 123; $b = 456; } //直接php的SoapClient类 $client = new SoapClient('http://xxx.com/xx.as ...
- PHP 生成随机浮点数
<?php /** * @desc 获取随机浮点数(支持最大最小值参数互换) * @date 2014-11-07 17:04:21 * * @param int|\最小浮点数 $min 最小浮 ...
- Android开发第1篇 - Android开发环境搭建
归结一下,需要进行Android开发所需要的工具或软件: Eclipse - Android是基于JAVA的开发,所以选用目前来说使用较高的Eclipse作为IDE. ADT (Android Dev ...
- 字符编码笔记:ASCII,Unicode和UTF-8【转载】
作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...
- Django初体验
为什么使用Django 快速开发 使用python 数据库ORM系统 大量内置应用 后台管理系统 admin 用户认证系统 auth 会话系统 sessions 安全性高 表单验证 SQL注入 跨站点 ...