返回 登录
0

在NLP上,CNN、RNN、MLP三者相比各有何优劣

本文为知乎温颖就如下问题的回答,已授权CSDN转载
若想要实现某个具体的任务,如做关系抽取、实体识别、情感分类等。在不考虑实现的难度的情况下,如何从理论、经验、直觉上去选择最有希望的模型?

前段时间做过用不同的神经网络模型做文本分类/情感分析,都是基于词向量去做的,以下是我自己的一些感受:

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参大法。


130+位讲师,16大分论坛,中国科学院院士陈润生、滴滴出行高级副总裁章文嵩、联想集团高级副总裁兼CTO芮勇、上交所前总工程师白硕等专家将亲临2016中国大数据技术大会,票价折扣即将结束,预购从速

图片描述


想要更多干货?请关注CSDN人工智能公众号AI_Thinker。

图片描述

评论