最近人工智能随着AlphaGo战胜李世乭这一事件的高关注度,重新掀起了一波新的关注高潮,有的说人工智能将会如何超越人类,有的说将会威胁到人类的生存和发展,种种声音都在表明人工智能的又一个春天即将到来,但很多学者认为媒体的过度炒作,会引发民众对人工智能不切实际地期待,从而导致人工智能寒冬的又一次到来。Yann Lecun作为上一个人工智能寒冬时期还在坚持做冷门的神经网络研究的人,他对AI有一个非常理性的认知。
最近几年在人工智能领域中大热的工程技术deep learning,将机器对图像,语音,人类语言的认知能力都提升了不少,前前后后也涌现出不少不仅仅是很cool而且是非常实用的应用,比如人脸识别,猫脸识别,无人车,语义搜索等等。其中,深度学习技术对图像和语音的影响最大,但对人类语言的理解(NLP)做的没有那么那么好。所以,不必太过鼓吹人工智能将会如何如何,民众的期待不应太过接近科幻电影,不然只能换来无尽的失望,从而导致寒冬的来临。
However, I would encourage everyone to think about problems,
architectures, cognitive science, and the details of human language, how
it is learned, processed, and how it changes, rather than just chasing
state-of-the-art numbers on a benchmark task.
以上是一些简单的背景介绍,下面进入正题。
自动文摘(auto text summarization)是NLP中较难的技术,难点很多,至今并没有一个非常让人满意的、成熟的技术来解决这个问题。
想法
大家在查文献的时候,输入一个关键词之后,会返回一个paper列表,如果你只看paper的title可能会被一些标题党蒙骗,如果每篇paper都看abstract,时间会花太久,看着很烦。所以我在想,给rsarxiv添加一个功能,基于query的research
survey生成。当你输入一个keyword之后,返回的结果不仅仅是paper列表,还有一个非常精炼的survey,你可以通过阅读survey了解到每篇paper的最核心工作,如果你感兴趣的话,可以进一步查看paper的具体内容。(比摘要还要精炼)
基于这个idea,开始逐步地了解自动文摘技术,所以这一系列blog的目的是为了记录我在学习自动文摘过程中的一些点滴心得。
介绍
第一篇blog对自动文摘做一个简单的介绍。
自动文摘技术应用最广的领域在于新闻,由于新闻信息的过载,人们迫切地希望有这么一个工具可以帮助自己用最短的时间了解最多的最有用的新闻(为什么不直接看标题呢?因为很多新闻为了哗众取宠,故意将标题起的特别吸引人眼球,但却名不副实),因此就有了Yahoo
3000w$$
收购summly的交易。另外,搜索引擎也是应用之一,基于query的自动文摘会帮助用户尽快地找到感兴趣的内容。前者是单文档摘要技术,后者是多文档摘要技术,后者较于前者会更加复杂一些。
自动文摘出现的重要原因之一是信息过载问题的困扰,(当然个性化推荐系统是解决信息过载的另外一个好的办法)另外一个重要原因是人工文摘的成本较高。可以想象,如果计算机有能力写出一个topic下的综述paper,也就不需要survey作者去花大量的时间来读和写了。
自动文摘要解决的问题描述很简单,就是用一些精炼的话来概括整篇文章的大意,用户通过阅读文摘就可以了解到原文要表达的意思。问题包括两种解决思路,一种是extractive,抽取式的,从原文中找到一些关键的句子,组合成一篇摘要;另外一种是abstractive,摘要式的,这需要计算机可以读懂原文的内容,并且用自己的意思将其表达出来。现阶段,相对成熟的是抽取式的方案,有很多很多的算法,也有一些baseline的测试,但得到的摘要效果差强人意,对后者的研究并不是很多,人类语言包括字、词、短语、句子、段落、文档这几个level,研究难度依次递增,理解句子、段落尚且困难,何况是文档,这是自动文摘最大的难点。
自动文摘(二)
引:
自动文摘的方法主要分为两大类,extractive和abstractive。前者是目前最主流、应用最多、最容易的方法,后者相对来说更有一种真正人工智能的味道。还有另外一种分类方法是,单文档摘要和多文档摘要,前者是后者的基础,但后者不只是前者结果简单叠加那么简单。本文只介绍单文档的extractive方法。
Extractive (抽取式)Summarization
抽取式的方法基于一个假设,一篇文档的核心思想可以用文档中的某一句或几句话来概括。那么摘要的任务就变成了找到文档中最重要的几句话,也就是一个排序的问题。
排序是一个非常经典的问题,也是一个非常多解决方案的问题。比如:Google根据用户的query生成的网页列表,就是一个排序之后的结果;再比如Amazon的推荐系统推荐给用户的N个可能感兴趣的产品,也都是通过算法做了排序输出的。
排序针对不同的问题,需要提出不同的指标,比如有的应用关心的是相关性,有的关心的是时效性,有的关心的是新颖性等等,在这个层面上来讨论排序,会有不同的模型。
一般的抽取式摘要问题,会考虑相关性和新颖性两个指标。相关性是指摘要所用的句子最能够代表本文档的意思,而新颖性是指候选句子包含的冗余信息要少,尽可能每句话都可以独立地表达出一种独立的意思。
下面简单介绍一些思路。
1.预处理
NLP任务的标准流程中第一步都是预处理,将拿到的文本做分句,这里有两种可能性,一是用句点或者其他可以表达一句话结尾的符号作为分隔,另外一种是用逗号作为分隔符获取句子。
2.词、句表示
这一步的思路是:将词、句子表示成计算机能理解的量,然后计算一些指标进行排序。这个地方也是各种算法、模型最大的不同之处:
(1)Bag Of Words。词袋模型将词定义为一个维度,一句话表示成在所有词张成的空间中的一个高维稀疏向量。
(2)TFIDF。可以理解为带权重的词袋模型,计算出每个词的TFIDF值,作为该词的权重。
(3)LDA/LSI。将整篇文档利用TFIDF模型表示成一个矩阵,做SVD降维分解,生成两个矩阵,一个是文档-话题矩阵、另一个是词-话题矩阵。得到词-话题矩阵之后,可以得到句子-话题矩阵。
(4)Word Embedding。Tomas Mikolov提出的Word2Vec,用了很多技巧和近似的思路让word很容易地表示成一个低维稠密向量,在很多情况下都可以达到不错的效果。词成为了一个向量,句子也可有很多种方法表示成一个向量。
3.排序
这里介绍两种常见的方法。
(1)基于图排序
将文档的每句话作为节点,句子之间的相似度作为边权值构建图模型,用pagerank算法进行求解,得到每个句子的得分。
(2)基于特征
特征工程在深度学习火之前是解决特定领域问题的良药,这里用到的特征包括:
1)句子长度,长度为某个长度的句子为最理想的长度,依照距离这个长度的远近来打分。
2)句子位置,根据句子在全文中的位置,给出分数。(比如每段的第一句是核心句的比例大概是70%)
3)句子是否包含标题词,根据句子中包含标题词的多少来打分。
4)句子关键词打分,文本进行预处理之后,按照词频统计出排名前10的关键词,通过比较句子中包含关键词的情况,以及关键词分布的情况来打分。
代表算法是TextTeaser。
4.后处理
排序之后的结果只考虑了相关性并没有考虑新颖性,非常有可能出现排名靠前的几句话表达的都是相似的意思。所以需要引入一个惩罚因子,将新颖性考虑进去。对所有的句子重新打分,如下公式:
ascore(i) + (1-a)similarity(i,i-1), i = 2,3,….N
序号i表示排序后的顺序,从第二句开始,排第一的句子不需要重新计算,后面的句子必须被和前一句的相似度进行惩罚。
这个算法就是所谓的MMR(Maximum Margin Relevance)
5.输出
输出的结果一般是取排序后的前N句话,这里涉及到一个非常重要的问题,也是一直自动文摘质量被诟病的问题,可读性。因为各个句子都是从不同的段落中选择出来的,如果只是生硬地连起来生成摘要的话,很难保证句子之间的衔接和连贯。保证可读性是一件很难的事情。
这里有一个取巧的方法,就是将排序之后的句子按照原文中的顺序输出,可以在一定程度下保证一点点连贯性。
路漫漫其修远兮,吾将上下而求索
参考:
[1] TextRank源码阅读笔记
https://gist.github.com/rsarxiv/11470a8d763b2845f671061c21230435
[2] TextTeaser源码阅读笔记
https://gist.github.com/rsarxiv/4e949264b3bda98828b84cf2991e57e4
自动文摘(三)
引:
- 蜀道之难 难于上青天
虽然有很多SaaS提供Summarization的服务,虽然有很多App尤其是新闻类App标榜自己拥有多么牛的技术做Summarization,我们还是不得不承认自动文摘的技术离一个高水平的AI还有一段距离,很长的一段距离。都说自动文摘很难,到底难在哪里?
- Abstractive
上一篇博客分享了Extraction方法的一些思路,本篇简单聊一点Abstractive的想法。Abstractive是一个True AI的方法,要求系统理解文档所表达的意思,然后用可读性强的人类语言将其简练地总结出来。这里包含这么几个难点:
(1)理解文档。所谓理解,和人类阅读一篇文章一样,可以说明白文档的中心思想,涉及到的话题等等。
(2)可读性强。可读性是指生成的摘要要能够连贯(Coherence)与衔接(Cohesion),通俗地讲就是人类读起来几乎感觉不出来是AI生成的(通过图灵测试)。
(3)简练总结。在理解了文档意思的基础上,提炼出最核心的部分,用最短的话讲明白全文的意思。
上述三个难点对于人类来说都不是一件容易的事情,何况是发展没太多年的自然语言处理技术。人工智能领域中AI能够领先人类的例子很多,包括前不久很火的Alpha狗,图片识别,主要是利用计算机远强于人类的计算能力,但也有很多的领域,AI离人类的水平还有很远,比如paper的survey,summarization,机器翻译等等。
近几年随着Deep Learning的火爆,研究者们利用一些最新的研究成果来做summarization,比如attention model,比如rnn encoder-decoder框架,在一定程度上实现了abstractive,但还是处于研究初期,效果还不算很好。
- Evaluation
自动文摘最大的一个难点是评价问题,如何有效地、合理地评价一篇文摘的效果是一个很难的问题。
(1) 人工评价
一千个读者,有一千个哈姆雷特,不同的人理解一篇文档会有很大的不同,基于人工评价的方法有类似于评价开放的文科辨析题目答案一样,需要从答案中寻找一些所谓的要点,计算要点覆盖率,打分。人工评价结果在很大程度上都是可信的,因为人可以推理、复述并使用世界知识将具有类似意思但形式不同的文本单元关联起来,更加灵活一些,但时间成本太高,效率太低。
(2)自动评价
计算机评价效果,需要给定参考摘要作为标准答案,通过制定一些规则来给生成的摘要打分。目前,使用最广泛的是ROUGH系统(Recall-Oriented Understudy for Gisting Evaluation),
基本思想是将待审摘要和参考摘要的n元组共现统计量作为评价依据
然后通过一系列标准进行打分。包括:ROUGH-N、ROUGH-L、ROUGH-W、ROUGH-S和ROUGH-SU几个类型。通俗地将就是通过一些定量化的指标来描述待审摘要和参考文摘之间的相似性,维度考虑比较多,在一定程度上可以很好地评价Extracive产生的摘要。
这里涉及到一个重要的问题,就是标注语料问题。自动评价需要给定一系列文档已经他们的参考文摘,用来测试不同的算法效果。TAC(Text
Analysis Conference)和TREC(Text REtrieval
Conference)两个会议提供了相关的评测数据集,自动文摘领域的paper都是以这些数据集为baseline,与其他paper的算法进行对比。会议的数据集毕竟有限,新的领域中做自动文摘需要建立自己的数据集作为标准。
现有的评价标准存在的一个重要问题在于没有考虑语义层面上的相似,评价extractive还好,但评价abstractive就会效果不好了。Deep Learning其实就是一个representation learning,将世界万物表示成数字,然后作分析。在词、句子甚至段落这个层面上的表示学习研究的非常多,也有很多的state-of-the-art的结果,所以做语义层面上的评价并不难。
重要性
评价对于一个研究领域非常重要,是牵引这个领域前进的首要因素,评价需要制定标准,标准的好坏关系到这个领域的研究质量,尤其是研究者们的paper质量,因为大家相互比较算法的优劣就十分依赖这样的标准。
标准数据集的建立以及baseline的提出,是最首要的任务。
自动文摘(四)
引:
这篇博客是自动文摘系列的第四篇,重点介绍近期abstractive summarization的一些研究情况。abstractive是学术界研究的热点,尤其是
Machine Translation中的encoder-decoder框架和attention mechanism十分火热
大家都试着将abstractive问题转换为sequence-2-sequence问题
套用上面两种技术,得到state-of-the-art结果,2015年来已经有许多篇paper都是这种套路,于是就有了下面的吐槽:
- Encoder-Decoder
Encoder-Decoder不是一种模型,而是一种框架,一种处理问题的思路,最早应用于机器翻译领域,输入一个序列,输出另外一个序列。机器翻译问题就是将一种语言序列转换成另外一种语言序列,将该技术扩展到其他领域,比如输入序列可以是文字,语音,图像,视频,输出序列可以是文字,图像,可以解决很多别的类型的问题。这一大类问题就是上图中的sequence-to-sequence问题。这里以输入为文本,输出也为文本作为例子进行介绍:
encoder部分是将输入序列表示成一个带有语义的向量,使用最广泛的表示技术是Recurrent Neural
Network,RNN是一个基本模型,在训练的时候会遇到gradient explode或者gradient
vanishing的问题,导致无法训练,所以在实际中经常使用的是经过改良的LSTM RNN或者GRU
RNN对输入序列进行表示,更加复杂一点可以用BiRNN、BiRNN with LSTM、BiRNN with
GRU、多层RNN等模型来表示,输入序列最终表示为最后一个word的hidden state vector。
decoder部分是以encoder生成的hidden state vector作为输入“解码”出目标文本序列,本质上是一个语言模型,最常见的是用Recurrent Neural Network Language Model(RNNLM),只要涉及到RNN就会有训练的问题,也就需要用LSTM、GRU和一些高级的model来代替。目标序列的生成和LM做句子生成的过程类似,只是说计算条件概率时需要考虑encoder向量。
这里,每一种模型几乎都可以出一篇paper,尤其是在这个技术刚刚开始应用在各个领域中的时候,大家通过尝试不同的模型组合,得到state-of-the-art结果。
该框架最早被应用在Google Translation中,paper详情可以见[1],2014年12月发在arxiv上。
Attention Mechanism
注意力机制在NLP中的使用也就是2015年的事情,也是从机器翻译领域开始。我们仔细看decoder中生成目标文本序列这部分,第一个word的生成完全依赖于encoder的last hidden state vector,而这个vector更多的是表示输入序列的最后一个word的意思,也就是说rnn一般来说都是一个有偏的模型。
打个比方,rnn可以理解为一个人看完了一段话,他可能只记得最后几个词说明的意思,但是如果你问他前面的信息,他就不能准确地回答,attention可以理解为,提问的信息只与之前看完的那段话中一部分关系密切,而其他部分关系不大,这个人就会将自己的注意力锁定在这部分信息中。这个就是所谓attention mechanism的原理,每个hidden state vector对于decoder生成每个单词都有影响,但影响分布并不相同,请看下图:
图中行文本代表输出,列文本代表输入,颜色越深表示两个词相关性越强,即生成该词时需要多注意对应的输入词。不同的paper在使用attention上会有不同的技巧,这里不一一赘述了。
Neural Summarization
使用deep learning技术来做abstractive summarization的paper屈指可数,大体的思路也类似,大概如下:
(1)首先将自动文摘的问题构造成一个seq2seq问题,通常的做法是将某段文本的first sentence作为输入,headlines作为输出,本质上变成了一个headlines generative问题。
(2)选择一个big corpus作为训练、测试集。自动文摘的技术没有太成熟的一个重要原因在于没有一个成熟的大规模语料。一般来说都选择Gigawords作为训练、测试集,然后用DUC的数据集进行验证和对比。
(3)选择一个合适的encoder,这里可以选simple rnn,lstm rnn,gru rnn,simple birnn,lstm
birnn,gru birnn,deep
rnn,cnn,以及各种各样的cnn。不同model之间的组合都是一种创新,只不过创新意义不太大。用encoder将输入文本表示成一个向量。(所谓编码就是将输入句子表示成向量)
(4)选择一个合适的decoder,decoder的作用是一个language model,用来生成summary words。
(5)设计一个合适的attention model。不仅仅基于encoder last hidden state vector和上文来预测输出文本序列,更要基于输入中“注意力”更高的词来预测相应的词。(在decoder之前加入注意机制)
(6)设计一个copy net。只要是语言模型都会存在相同的问题,比如out-of-vocabulary词的处理,尤其是做新闻类摘要的生成时,很多词都是人名、机构名等专有名词,所以这里需要用copy net 将输入中的词copy过来生成输出。在生成中文摘要问题上,将words降维到characters可以避免oov的问题,并且取得不错的结果。
接下来想做的事情是将neural summarization相关的paper精读之后写成blog。
*
自动文摘(五)
*
引:
读万卷书 行万里路
最近读了几篇关于deep learning在summarization领域应用的paper,主要的方法是借鉴机器翻译中seq2seq的技术,然后加上attention model提升效果。今天来分享其中一篇paper,Generating News Headlines with Recurrent Neural Networks
本篇文章是近期所读文章中最简单的一篇,没有太精彩的理论和创新,是一个工程性很强的paper,将实现过程中的思路和一些参数交代的很清楚,对于复现此paper提供了很大的帮助。
深度学习是一门研究表示学习的技术,用一张巨大的网来表征给入的数据,使得模型不依赖于领域的特征,是一种full data driven的模型,听起来像是一种银弹,尤其是近几年的在各大领域的都收获了state-of-the-art的结果,但模型的参数调优不没有太多的理论依据,之前的神经网络规模小调参数时间代价会小一些,但deep learning动不动就需要几天甚至几周的训练时间,调参数代价太大;中间层的表示如何解释,也是一个十分头疼的事情,对于cv领域来说还好,总可以将matrix显示成一幅图片来看效果,比较直观,但对于nlp领域,hidden state到底是什么,表示哪个词?表示哪种关系?词向量的每一个维度代表什么?具体真说不清楚,只有在输出的那一层才能看到真正的意义。
一个领域的发展需要很多种不同思路的试错,应该是一种百家争鸣的态势,而不是大家一股脑地都用一种技术,一种思路来解决问题,理论模型都趋于大同,这样对这个领域的发展不会有太积极的意义。
machine translation是最活跃的一个研究领域,seq2seq(针对一个句子输出另外一个句子)框架就是从该领域中提炼出来的,attention model也是借鉴于soft alignment,对于文本摘要这个问题来说,套用seq2seq只能解决headlines generation的问题,面对传统的single document summarization和multi document summarization任务便束手无策了,因为输入部分的规模远大于输出部分的话,seq2seq的效果不会很好,因此说abstractive summarization的研究还长路漫漫。不过这里可以将extractive和abstractive结合在一起来做,用extractive将一篇文档中最重要的一句话提取出来作为输入,套用seq2seq来做abstractive,本质上是一个paraphrase的任务,在工程中可以试一下这种思路。在后续的研究中也可以尝试将extractive和abstractive的思路结合在一起做文本摘要。
1. Abstract
本文的思路是用LSTM RNN作为encoder-decoder框架的模型,并且使用了attention模型来生成新闻文章的标题,效果很好。并且提出了一种简化版的attention mechanism,相比于复杂版的注意力机制在解决headline generation问题上有更好的效果。
本文定义的文本摘要问题是给新闻文章命题,为了套用seq2seq技术,一般都会将source定义为新闻的第一句话,target定义为标题。本文的亮点在于提出了一种简化版的注意力机制,并且得到了不错的结果。
2. Model
Overview:
encoder使用文章内容作为输入,一个时间点表示一个单词,每个单词先通过embedding层将词转换为一个分布式向量(word embedding)。每个词向量都由前一个词向量生成,第一个词定义为0向量。
decoder将encoder中最后一个词向量作为输入,decoder本质是一个rnnlm,使用softmax和attention mechanism来生成每个词。
损失函数:
这里y是输出的词,x是输入的词。
本文采用了4层LSTM,每层有600个单元,使用Dropout控制过拟合,所有参数的初始值都服从-0.1到0.1的平均分布,训练方法是RMSProp,学习速率0.01,动量项0.9,衰减项0.9,训练9个回合,在第5个回合之后,每个回合都将训练速率减半。batch训练,384组训练数据为一个batch。
模型的定义和训练方法都是借鉴于其他文章,模型参数的不同并不是什么创新,别人用gru或者birnn,你用lstm,或者别人用2层,你用3层、4层更多层,不同的模型参数可能会有不同的state-of-the-art结果,但并不会对大家认识abstractive summarization问题有什么实质性的帮助,也不会促进这个领域的发展,只是用着现有的方法在这个领域刷了一篇paper罢了。
3. Attention
注意力机制可以用来帮助神经网络更好地理解输入数据,尤其是一些专有名词和数字。attention在decoder阶段起作用,通过将输出与所有输入的词建立一个权重关系来让decoder决定当前输出的词与哪个输入词的关系更大(即应该将注意力放到哪个词上)。
本文采用两种不同的注意力机制,第一种称作复杂注意力模型(complex attention),与Minh-Thang采用的点乘机制(dot mechanism)一样,看下图(包含隐藏向量和上下文向量):
第二种称作简单注意力模型(simple attention),是第一种模型的变种,该种模型使得分析神经网络学习注意力权重更加容易。看下图:
对比两幅图可以看出区别在于隐藏层的最后一层的表示上,简单模型将encoder部分在该层的表示分为两块,一小块用来计算注意力权重(attention weight),另一大块用来作为上下文(context vector);decoder部分在该层的表示也分为两块,一小块用来计算注意力权重,另一大块用来导入softmax,进行输出预测。
simple attention mechanism的提出可以算作本文的主要贡献,但是感觉贡献量并不大。修改所谓的理论模型,而不仅仅是对模型参数进行修改,本质上是对encoder的context vector进行了更换,用了一些技巧,比如文中的方法,将隐藏层最后一层的表示分为两部分,一部分用来表示context,一部分用来表示attention weight,就有了新的模型。
4. Dataset
(1)Overview
本文用English Gigaword数据集,该数据集包括了六大主流媒体机构的新闻文章,包括纽约时报和美联社,每篇文章都有清晰的内容和标题,并且内容被划分为段落。经过一些预处理之后,训练集包括5.5M篇新闻和236M单词。
(2)Preprocessing
headlines作为target,news text的第一段内容作为source,预处理包括:小写化,分词,从词中提取标点符号,标题结尾和文本结尾都会加上一个自定义的结束标记,那些没有标题或者没有内容或者标题内容超过25个tokens或者文本内容超过50个tokens都会被过滤掉,按照token出现频率排序,取top 40000个tokens作为词典,低频词用符号进行替换。
数据集被划分为训练集和保留集,训练集将会被随机打乱。
数据的预处理是一件重要的事情,处理的好坏直接影响结果的好坏。本文的每一个处理细节都交代的很清楚,有希望做相同实验的童鞋可以借鉴他的处理方法
(3)Dataset Issues
训练集中会出现标题与所输入文本关系不大的情况,比如:标题包括以下字样For use by New York Times service clients,或者包括一些代码,biz-cover-1等等,本文对此不作处理,因为一个理想的模型可以处理这些问题。‘
数据集本身会有一些错误,但一个好的模型是可以处理好这些错误的数据,所以本文对此种数据并不做处理。
(4)Evaluation
模型的优劣用两种方法进行评价。第一种,将训练集和保留集损失值作为评价指标;第二种,将BLEU作为评价指标,为了保证效率,保留集仅仅用了384个样本进行计算。
评价指标也是常规的两种,两种数据集上的loss值直观地反应了训练和测试效果,BLEU是机器翻译领域中常用的评价标准。
5. Analysis
计算硬件是GTX 980 Ti GPU,每种模型的计算都会花费4.5天时间。效果直接看下图:
在应用模型结果做保留集的预测时,不同新闻来源的文章预测效果不一样。比如:在BBC、华尔街日报、卫报的效果就非常好,但是在赫芬顿邮报和福布斯的效果就很差。
结果看上图也是一目了然,本文的simple attention mechanism更胜一筹。
Understanding information stored in last layer of the neural network
存在有许多思路来理解注意力机制函数,考虑下面的公式,从输入计算到softmax输出:
第一个部分表示attention context vector对decoder输出的影响,由于context是从input计算得来的,可以理解为encoder的每个输入对decoder输出的影响;第二个部分表示decoder当前隐藏层最后一层对输出的影响;第三个部分表示偏置项。
Understanding how the attention weight vector is computed
注意到这一点很重要,encoder部分的神经元对docoder部分的神经元起作用,也就是attention weight的本质。
6. Errors
本文的模型中存在几种类型的错误,包括:
(1)神经网络机制在填充细节时细节发生丢失。比如:target是 72 people died when a truck plunged into a gorge on Friday,而模型的预测是 72 killed in truck accident in Russia。这种错误经常出现在decoder beam很小的情况下。
(2)生成的headline与输入的文本没有太大的关系,这些headline在训练集中出现太多次。这种错误常出现在decoder beam很大的情况下。
上述两种错误反映了本文的模型对decoder beam非常敏感。
个人感觉本文的重点在于动手实践seq2seq+attention在自动文摘中的应用,对很多模型层面上的研究很少,对效果分析上的研究也很浅。
7. Future Work
使用BiRNN来代替RNN配合attention model效果可能会更好一些。
将模型更换为Bi-RNN会得到一个新的结果,不知道会不会有人拿这个来刷paper,个人觉得好无趣。
8. Conclusions
本文提出的simple attention mechanism效果很不错。
参考文献:
[1] Generating News Headlines with Recurrent Neural Networks
原文参考: http://blog.csdn.net/lu839684437/article/details/71600410