百科问答小站 logo
百科问答小站 font logo



在NLP上,CNN、RNN(认为LSTM等变体也是RNN)、最简单全连结MLP,三者相比,各有何优劣? 第1页

  

user avatar   zhu-jian-zhi-neng-emotibot 网友的相关建议: 
      

MLP咱们就不说了,显然这个是要垫底的,在此不做讨论。MLP可以被视作一个分类器,单纯用它的话当然不如采用CNN/LSTM做特征提取/句子表示的方法来的好。

我们可以先来看几种典型的架构。

首先是最经典的Richard Socher和Andrew Ng的这篇Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank : nlp.stanford.edu/~soche

这是一个RNN的结构,当时出来的时候刷新了Sentiment Analysis的STOA成绩好几个点,引起了轰动(到现在Stanford CS224d/n DL4NLP的课,标题上的图还是用的这一篇,可见其经典地位)


其次是CNN+Dynamic Pooling。最近有一篇极好的review paper: Deep Learning applied to NLP: arxiv.org/pdf/1703.0309


再其次是CNN+LSTM。比如这一篇C-LSTM:A C-LSTM Neural Network for Text Classification : arxiv.org/pdf/1511.0863

大致思路是先使用CNN网络做局部特征提取/denoising,再用LSTM提取contextual dependencies。在这里,不采用Maxpooling:LSTM会以更优化的方式将句子不同部位的特征做一个非线性的组合。


最后一种,是将CNN当成RNN来用(有点像wavenet):Language Modeling with Gated Convolutional Networks: david.grangier.info/pap


值得一提的是,现在有趋势(这个主要是针对英文)直接使用char-cnn来做word embedding,比如MIT media lab的这一篇Tweet2Vec: Learning Tweet Embeddings Using Character-level CNN-LSTM Encoder-Decoder: soroush.mit.edu/publica

另外,我们做这么多的工作其实就是为了从词的语义表示做到句子的语义表示。从这个角度来说,也有大量的非监督的方法来做sentence embedding,最后将这个embedding放进一个分类器即可。其中最有代表性的就是这两篇:skip-thought vector: arxiv.org/pdf/1506.0672

以及A Simple but Tough-to-Beat Baseline for Sentence Embeddings (ICLR’17): openreview.net/pdf?

OpenAI在前一段时间也发了一篇通过非监督的学习句子embedding发现”sentiment neuron”的文章,也挺有意思的:Unsupervised Sentiment Neuron: blog.openai.com/unsuper; Learning to Generate Reviews and Discovering Sentiment :arxiv.org/abs/1704.0144


具体到任务来说:

情感分析的话,虽然最初是用RNN取得的突破,但目前CNN的效果就很好,LSTM做的话也是可以做到接近的程度但是会比CNN慢不少。直觉上,CNN主要是做了局部特征的提取,类似n-gram。一般而言在情感分析的任务中,带有显著情感极性的词组会对结果有比较关键的影响,所以CNN网络可以很好地工作。(具体文章上面已经有贴)


关系抽取的话,一般还是RNN工作地比较好,因为涉及到高阶的依赖关系,比如:End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures: arxiv.org/pdf/1601.0077

当然,CNN依然是很有力的:Relation Extraction: Perspective from Convolutional Neural Networks :cs.nyu.edu/~thien/pubs/


实体识别:这是一个典型的序列标注问题,用LSTM (Bidirectional LSTM for Named Entity Recognition in Twitter Messages: noisy-text.github.io/20) /LSTM+CRF (End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF: arxiv.org/pdf/1603.0135) 是非常符合直觉的方法当然也不乏有混用LSTM和CNN的(Named Entity Recognition with Bidirectional LSTM-CNNs: arxiv.org/pdf/1511.0830


我们最后提一下多任务框架,这是一个很有力地解决NLP的多重任务之间互相依赖的方法。A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks: arxiv.org/pdf/1611.0158

一个model搞定大多数的NLP任务,再也不用东拼西凑一堆模型啦!神清气爽,有一种强迫症被治愈的感觉。


归根结底,现在深度学习应用到NLP上有非常多的手段,不过如您所知,all models are wrong, some are useful — 根据语言、数据集和任务的特点灵活运用才是关键,有时候调参一些小细节反而是比大的结构框架选择还重要的。在此祝您炼丹愉快!


本回答来自Emotibot机器学习科学家马永宁。




  

相关话题

  如何评价 NVIDIA 发布的 DGX-1? 
  TensorFlow的自动求导具体是在哪部分代码里实现的? 
  如何看待SIREN激活函数的提出? 
  NLP文本匹配问题的本质是不是 对于要预测的句子,遍历候选句子 从训练数据集里寻找最相似的pair? 
  2019年,计算机视觉领域,你推荐哪些综述性的文章? 
  AlphaGo「理解」围棋吗? 
  为什么多标签分类(不是多类分类)损失函数可以使用Binary Cross Entropy? 
  数据挖掘、机器学习、自然语言处理这三者是什么关系?这几个怎么入门啊? 
  image caption这个方向更偏向NLP还是CV? 
  nlp有哪些值得完整实现一遍的算法? 

前一个讨论
如何看待比特币沦为一种网络犯罪工具?
下一个讨论
你有什么话对一个考研目标是北大的普通二本大一学生说?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利