在NLP上,CNN、RNN(认为LSTM等变体也是RNN)、最简单全连结MLP,三者相比,各有何优劣?
2016-05-23 03:37
441 查看
Reprinted from: https://www.zhihu.com/question/41625896
例如,我要做某个具体的任务,比如做关系抽取、实体识别、情感分类,总要先从一个入手。不考虑实现的难度的话,如何从理论、经验、直觉上去选择最优希望的那个?那么这些关于CNN、RNN、MLP取舍的理论、经验和直觉都是什么呢,提前感谢。
知乎用户 ,深度算命入门中,贝叶斯阴阳调参大法好
前段时间做过用不同的神经网络模型做文本分类/情感分析,都是基于词向量去做的,一些我自己的感受:
MLP:因为句子长度不固定,所以一般是用Bag-of-Word-Vectors 简单将词向量相加,然后使用MLP,这个方法比较简单,然后训练速度比较快,得到的结果也不是很差。只是没有利用到上下文信息。
RNN:对于这种句子或文本作为序列输入比较自然,可以利用到历史信息,将词的顺序也考虑进去。此外,RNN的使用有很多变化,最简单的是使用最基础的RNN将最后一个词的隐含层输出进行softmax,但这样越往后的词会显得越重要(因为从前向后,最后一个输入的信息会更多地留下来),或者将每个隐含层的输出的和和均值进行softmax。也可以将基础的RNN变化为使用LSTM(很容易过拟合)或GRU单元,或使用bi-RNN获取更多的上下文信息。最后结果上并没有比MLP的结果好很多,但训练速度上慢了很多。(PS: 我这里的RNN指Recurrent
Neural Network)
CNN:这个方法看起来对处理这种序列输入不是很自然,所以一般是对句子的所有词的词向量使用不同大小的窗口(能获取一定前后文信息,有点像隐式的n-gram)进行一维的卷积,然后用最大池化获得最重要的影响因子(我个人觉得这个比较讲得通,因为文本中不是所有词对分类结果都有贡献)和定长输出。CNN的方法也训练起来也比较简单,现阶段最后实验的效果也是最好。但有一些窗口大小上选取的经验问题,对文本长程依赖上的问题也并不是很好解决,因为窗口大小一般不会选很大。
以上是我自己试验中得到的结果,结果根据不同的网络架构和参数可能会有变化,感觉还是得继续修炼好深度suan调ming参大法。
Reference:
Tang, Duyu, Bing Qin, and Ting Liu. "Document modeling with gated recurrent neural network for sentiment classification." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015.
Zhang, Ye, and Byron Wallace. "A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification." arXiv preprint arXiv:1510.03820 (2015).
Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).
例如,我要做某个具体的任务,比如做关系抽取、实体识别、情感分类,总要先从一个入手。不考虑实现的难度的话,如何从理论、经验、直觉上去选择最优希望的那个?那么这些关于CNN、RNN、MLP取舍的理论、经验和直觉都是什么呢,提前感谢。
知乎用户 ,深度算命入门中,贝叶斯阴阳调参大法好
前段时间做过用不同的神经网络模型做文本分类/情感分析,都是基于词向量去做的,一些我自己的感受:
MLP:因为句子长度不固定,所以一般是用Bag-of-Word-Vectors 简单将词向量相加,然后使用MLP,这个方法比较简单,然后训练速度比较快,得到的结果也不是很差。只是没有利用到上下文信息。
RNN:对于这种句子或文本作为序列输入比较自然,可以利用到历史信息,将词的顺序也考虑进去。此外,RNN的使用有很多变化,最简单的是使用最基础的RNN将最后一个词的隐含层输出进行softmax,但这样越往后的词会显得越重要(因为从前向后,最后一个输入的信息会更多地留下来),或者将每个隐含层的输出的和和均值进行softmax。也可以将基础的RNN变化为使用LSTM(很容易过拟合)或GRU单元,或使用bi-RNN获取更多的上下文信息。最后结果上并没有比MLP的结果好很多,但训练速度上慢了很多。(PS: 我这里的RNN指Recurrent
Neural Network)
CNN:这个方法看起来对处理这种序列输入不是很自然,所以一般是对句子的所有词的词向量使用不同大小的窗口(能获取一定前后文信息,有点像隐式的n-gram)进行一维的卷积,然后用最大池化获得最重要的影响因子(我个人觉得这个比较讲得通,因为文本中不是所有词对分类结果都有贡献)和定长输出。CNN的方法也训练起来也比较简单,现阶段最后实验的效果也是最好。但有一些窗口大小上选取的经验问题,对文本长程依赖上的问题也并不是很好解决,因为窗口大小一般不会选很大。
以上是我自己试验中得到的结果,结果根据不同的网络架构和参数可能会有变化,感觉还是得继续修炼好深度suan调ming参大法。
Reference:
Tang, Duyu, Bing Qin, and Ting Liu. "Document modeling with gated recurrent neural network for sentiment classification." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015.
Zhang, Ye, and Byron Wallace. "A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification." arXiv preprint arXiv:1510.03820 (2015).
Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).
相关文章推荐
- 深入windows的关机消息截获-从XP到Win7的变化
- IDEA 常见问题
- 关于SDWebImage的使用和相关面试题
- LeetCode 101. Symmetric Tree(对称的树)
- IntelliJ IDEA WEB项目的部署配置
- zabbix 安装配置详解
- python创建简单的http服务器
- 机器学习-RBF高斯核函数处理
- Geekband012第十二周笔记分享
- Hibernate_并发(悲观锁&乐观锁)_Demo
- Topic Model 的复杂度计算(时间和空间)
- 分布式文件系统简介
- 以太坊(Ethereum)开发框架 Truffle 入门(二):选择一个以太坊客户端
- Unity实现json格式的序列化并发布
- Hortworks Hadoop 2.4.2安装、配置
- 冗余代码都走开——前端模块打包利器 Rollup.js 入门
- 素数回文 ---- 有点暴力.....
- ESL python调用C模块时传递unicode字符串报错问题解决
- OSChina 周一乱弹 ——女妖精,吃俺老孙一棒!呃……
- 7.css盒模型