百科问答小站 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机器学习科学家马永宁。




  

相关话题

  在机器学习模型的训练期间,大概几十分钟到几小时不等,大家都会在等实验的时候做什么? 
  什么是大模型?超大模型?Foundation Model? 
  为什么说深度学习没有理论基础? 
  在文本分类任务中,有哪些论文中很少提及却对性能有重要影响的tricks? 
  工作之后,顶会还重要吗? 
  2017年1月18日Facebook发行的PyTorch相比TensorFlow、MXNet有何优势? 
  如何理解Inductive bias? 
  Transformer中的Mask矩阵已经有顺序了,能去掉position embedding吗? 
  为什么我用相同的模型,数据,超参,随机种子,在两台服务器会得到不同的结果? 
  如何看待何恺明最新一作论文Masked Autoencoders? 

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





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