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任务中的对比实验的主要内容,如果未能解决你的问题,请参考以下文章

NLP基础

BERT关系抽取之R-BERT模型

系统学习NLP(三十一)--基于CNN句子分类

系统学习NLP(三十一)--基于CNN句子分类

在做语音识别时,RNN和CNN各有啥优缺点

入门 | CNN也能用于NLP任务,一文简述文本分类任务的7个模型