码迷,mamicode.com
首页 > 其他好文 > 详细

多级神经网络结构表达文档语义性能更好吗

时间:2016-03-31 23:38:26      阅读:824      评论:0      收藏:0      [点我收藏+]

标签:

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/

                                                     author: 张俊林


推导和表示一篇文章的语义对于自然语言处理来说是个很基础也很重要的工作。推导文档语义可以用无监督的方法,也可以用有监督的方法。所谓“无监督的方法”,就比如可以直接把构成文档的单词Word Embedding直接累加或者累加后求均值这种简单粗暴的方式来推导文档语义。而有监督的方法,则是对于某个特定的分类任务,通过训练实例来训练模型参数的方式来学习推导出文档的语义,其实也就是文档级别的特征来表达的文档语义。这个其实简单想一想也可以推导出有监督的效果肯定比无监督的效果好,毕竟有监督任务学习目标很明确而不是像无监督学习那么漫无目的的乱学习。


那么我们把注意力的焦点放在有监督任务中,对于这类任务,如何推导出文档的语义表示呢?一篇文档和单纯一个句子有很大的不同,因为句子是由线型序列陆续出现的字词构成的,而文档是由多个句子序列构成的,明显相对句子而言包含更丰富以及粒度更大的一些信息,比如句子关系等。


|一级/二级/三级神经网络结构


一种最直接的表达是在看待文档的时候,也不用考虑它是怎么构成的,直接把句子这个级别忽略掉,不论文章包含多少个句子,只把文档看做是由单词的线性序列构成的。其实就是把一篇文章看成一个非常长的句子,概念上类似于图1展示的两层一级结构。目前很多工作其实都是这么做的。

技术分享

  图一级文档结构


另外一种比较符合直觉的思路是要考虑到文章的层级结构关系,就是说文章是由段落构成的,段落是由句子构成的,而句子是由单词序列构成的(图2)。就是把文章整体看做是一个四层的树状网络结构,可以称之为“三级结构”。当然,也可以把段落这个级别忽略掉,把文章看做是由句子构成的,而句子是由单词序列构成的,也就是把三级结构简化成(单词-句子-文档)两级结构。


技术分享

2 三级文档结构


对于文章级别的建模来说,标准的三级结构应该是:


 第一级:ComposeModelLevel1(字词)->Semantic(句子)

第二级:ComposeModelLevel2(句子)->Semantic(段落)

第三级:ComposeModelLevel3(段落)->Semantic(文章)


当然,也可以忽略掉段落这个层级,简化成二级结构:

第一级:ComposeModelLevel1(字词)->Semantic(句子)

第二级:ComposeModelLevel2(句子)->Semantic(文章)


第一级是通过模型来研究如何根据字词来组成一个句子的语义;第二级是探讨如何根据句子的语义表达来综合出段落的语义;第三级别是探讨如何根据段落来组合出文章的语义;理论上,三个ComposeModel可以是不同的模型,比如有些地方用CNN,有些地方用RNN,当然也可以是相同的模型,比如统一用LSTM来建模,但是模型参数不同,所以本质上其实也是不同的模型。当然,目前的研究一般会省略掉段落这个级别,将问题简化为二级结构,其神经网络结构如图3所示,其中由字词推导句子语义的第一级结构可以用CNN/RNN等网络结构,由句子推导文档语义的第二级结构也可以用可能的网络结构,比如CNN或者RNN等模型来构建。


技术分享

3 二级神经网络结构


本质上这三个ComposeModel都是探讨如何由小粒度的语言单位组合出更高力度语言单位的语义表示的方法,但是因为语言的复杂性,很明显单词语义如何构造出句子语义和由句子语义组合构造文章语义应该是有差别的。最简单的例证是由字词构成句子要考虑单词之间的语法关系;而句子之间的关系则是另外一种思路,一般是考虑句子之间的顺序关系及句子间的语义一致性,所谓“语义一致性(Coherence)”也就是说相互连接的句子在语义上是平滑的而且接近于讲的是一个事情,而不是像下面的三个连续句子表达的语义:

   句子1:看了《太阳的后裔》,终于可以换新老公了,宋仲基欧巴等我思密达。

   句子2:热烈庆祝特朗普当选最后一届美国总统啊。

   句子3:宋慧乔其实长得也就那样吧,居然敢跟本宫抢老公,也不照照镜子思密达。


看完给人神经病院发生暴动后成功越狱人士在发言的感觉,这种感觉其实就是“语义不一致”给人的感觉。但是很明显的一点是:第二个层级的Compose Model在组合时考虑的因素应该不会是句法关系,而是句子间关系。


另外,从感觉上看,因为句子表达顺序对于文章语义是有意义的特征,所以第二级和第三级,尤其是第二级和第三级在推导文章语义过程中,直觉上应该采用RNN模型,这样可以把顺序关系表达进文章语义中。尤其是对于有些应用来说,顺序关系是重要的特征,比如情感分类任务。


|二级结构性能确实比一级结构好吗


上面提到了两种不同的看待文档的视角:长句子视角(一级结构)和树状结构(二级和三级结构)。那么我现在关心的问题是:对于分类问题,到底是用一级结构分类任务性能就足够好了?还是说三级结构优于二级结构,且二级结构优于一级结构?所以找到了相关的论文,重点关注其实验部分,因为这可以分析出上面问题的答案,我能找到的有三篇讲述层级结构的论文,基本都是(单词-句子-文档)二级结构,这不重要,我们关心二级结构性能是否优于一级结构就可以了。


首先看第一篇论文:Modelling,Visualising and Summarising Documents with a Single Convolutional Neural Network这篇论文采用了二级结构,一级句子建模和二级文档建模都采用CNN来做,我个人觉得如果两级都采用CNN感觉意义不大,因为感觉第二级CNN并没有引入什么新的信息,本质上CNN都是学的N-GRAM片段作为特征,CNN从其机制上学不了特征间的顺序关系,所以套上多层感觉意义不太大。这个论文实验部分只对比了这个模型和随机模型的效果是有提升的,但是并没有做二级结构和一级结构的对比,所以感觉说服力不足,因为也许这个提升完全是因为引入了CNN而不是由于二级结构导致的,所以感觉总体而言从方法到实验都有点问题。


这个论文基本上不太能回答上述的问题。


再来看第二篇论文,A Hierarchical Neural Autoencoder for Paragraphsand Documents 这个论文使用二级结构构建Autoencoder来学习再现文章内容,实验部分结果如下图:

技术分享


说明了采用两级结构(Hierarchical)的神经网络效果要优于一级(Standard)的结构,加上Attention效果更好(Hierarchical+Attention)。但是毕竟这是一个非监督的生成任务,至于用在监督环境下是否二级结构优于一级结构其实这个论文并没有给出答案。而且我个人觉得有一种解释在这种生成型任务中二级效果好于一级的原因:可能是一级结构的Decoder生成内容太长所以效果不好,而二级结构每个句子都分别生成内容,长度自然减少到句子级。这很可能是二级优于一级的原因。所以,其实这个论文也不太能回答上面提到的问题。


然后来看第三篇论文,Document Modeling with Gated Recurrent Neural Network for Sentiment Classification ,这是用多级文档结构来做文档级的情感分类问题的,在一级结构分别采用了CNNLSTM,而二级结构采用了类似于LSTMGRU的模型。


技术分享


这个论文的实验比较丰富, 从上面的实验数据中可以分析得出如下结论:有监督的CNN一级文档建模(蓝框Convolutional NN一行)效果明显好于无监督的单词Word Embedding直接叠加求均值的方式(蓝框SVM+AverageSG),这个符合预期,因为毕竟一个是有监督的一个是无监督的,有监督的好于无监督的很正常,而且SVM+AverageSG比其它简单选取特征但是有监督的效果都差也说明了这点;层级建模(红框的两个模型)效果也要显著好于非层级建模(Convolutional NN),而第一级用LSTM(LSTM-GRNN那行)效果要稍微好于CNN模型(Conv-GRNN),这说明单词级的顺序关系对于情感分类也是有意义的。而如果将Conv-GRNN效果和Convolutional NN效果对比也能分析出一些结论,因为两者的区别是:Conv-GRNN采用两层结构,第一层句子语义组合采用CNN,第二级句子推导文档语义采用类似于GRU的策略;而Convolutional NN类似于用CNN来只做一级语义推导的模型。而两者的性能差异完全是由于第二级的RNN策略产生的,所以这说明句子级的RNN模型对于情感分析是很重要的。


这个实验感觉应该缺少一个基于LSTM的一级层级结构实验效果做对比,尽管可以证明一级层级结构使用CNN是明显不如多层结构的,但是如果是一级层级结构使用LSTM,比CNN能够多捕获单词顺序依赖信息,按理说应该比那个Convolutional NN效果好,如果能够补充这个实验那么多层结构效果优于单层结构就能够更有说服力,因为也许有可能红框内两个实验效果好于一级CNN模型是由于RNN能够捕获特征顺序信息导致的提升,而并不一定是由于二级结构优于一级结构导致的。虽然在一定程度上说明了层级结构的优势,但是其实说服力也不足够强,也不能完全回答最初提出的那个问题。


综合上面文献的实验结果,其实目前我觉得这个问题起码对于我来说还没有太明确的答案,那么到底是否在有监督学习任务下二级结构效果明确就比一级结构好呢?这个问题还需要继续关注。



技术分享扫一扫关注微信号:“布洛卡区” ,深度学习在自然语言处理等智能应用的技术研讨与科普公众号


多级神经网络结构表达文档语义性能更好吗

标签:

原文地址:http://blog.csdn.net/malefactor/article/details/51009042

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!