CNN和RNN在NLP任务中的对比实验
Posted 大愚若智_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CNN和RNN在NLP任务中的对比实验相关的知识,希望对你有一定的参考价值。
这篇博客主要是拜读IBM Research发表的论文“Comparative Study of CNN and RNN for Natural Language Processing”,结合自己的体会做一个阅读笔记。
目前深度学习主要包括CNN(卷积神经网络)和RNN(递归神经网络)两大阵营,基于卷积的CNN对识别目标任务的结构具有一定的优势,而RNN由于其记忆功能对序列识别建模具备优势。对应到NLP(自然语言处理)应用任务,CNN和RNN也各具优势,主要看具体的任务了。
IBM Research的这篇论文则总结了CNN和RNN在各种不同的NLP任务上的效果。
DNN主要的两大类模型CNN和RNN在此简单回顾一下:
CNN模型结构还是比较简单的,主要是前置的卷积层和后置的全连接层,早期的RNN由于难于训练进而发展出了结构更优的GRU和LSTM等若干变种。
文章同时也贴出了包括在情感分析、句子分类、实体识别、问答系统等等一系列任务上,CNN、RNN(GRU、LSTM)等模型的效果:
总体来看,三者在情感分析任务的效果基本接近了,在句子配对上CNN占有一定的优势,而在序列化的任务上,如命名实体识别、具备上下文的问答当中RNN颇具优势。
在不同的句子长度上:
这个结果很有意思了,模型的效果和实际的句长息息相关。直观来看,在短句长的任务上,CNN由于其卷积的功能对句子的整体结构有一个总揽的能力,但在长句长时,CNN只能处理其窗口内的信息,相邻窗口的信息只能借助后一层的卷积层来达到信息的融合,这对卷积窗口和移动的步长等等参数依赖是很大的,因此CNN处理NLP任务实际上是建模容易、调参难的一个特点。而RNN则训练时间会相对长很多。可以说各具优势吧。
关于CNN做短文本的文本分类,本人使用tensorflow做了一个简单的实验,有兴趣可以看看:
CNN在中文文本分类的应用
以上是关于CNN和RNN在NLP任务中的对比实验的主要内容,如果未能解决你的问题,请参考以下文章