【读】seq2seq—(1)Generating News Headlines with Recurrent Neural Networks

本文转载自:

自动文摘(五)

目录

Abstract

Model

Overview

Attention

Dataset

Overview

Preprocessing

Dataset Issues

Evaluation

Analysis

Understanding information stored in last layer of the neural network

Understanding how the attention weight vector is computed

Errors

Future Work

Conclusions


 

读万卷书 行万里路

最近读了几篇关于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的思路结合在一起做文本摘要。

Abstract

本文的思路是用LSTM RNN作为encoder-decoder框架的模型,并且使用了attention模型来生成新闻文章的标题,效果很好。并且提出了一种简化版的attention mechanism,相比于复杂版的注意力机制在解决headline generation问题上有更好的效果。

本文定义的文本摘要问题是给新闻文章命题,为了套用seq2seq技术,一般都会将source定义为新闻的第一句话,target定义为标题。本文的亮点在于提出了一种简化版的注意力机制,并且得到了不错的结果。

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罢了。

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,就有了新的模型。

Dataset

Overview

本文用English Gigaword数据集,该数据集包括了六大主流媒体机构的新闻文章,包括纽约时报和美联社,每篇文章都有清晰的内容和标题,并且内容被划分为段落。经过一些预处理之后,训练集包括5.5M篇新闻和236M单词。

Preprocessing

headlines作为target,news text的第一段内容作为source,预处理包括:小写化,分词,从词中提取标点符号,标题结尾和文本结尾都会加上一个自定义的结束标记<eos>,那些没有标题或者没有内容或者标题内容超过25个tokens或者文本内容超过50个tokens都会被过滤掉,按照token出现频率排序,取top 40000个tokens作为词典,低频词用符号<unk>进行替换。

数据集被划分为训练集和保留集,训练集将会被随机打乱。

数据的预处理是一件重要的事情,处理的好坏直接影响结果的好坏。本文的每一个处理细节都交代的很清楚,有希望做相同实验的童鞋可以借鉴他的处理方法

Dataset Issues

训练集中会出现标题与所输入文本关系不大的情况,比如:标题包括以下字样For use by New York Times service clients,或者包括一些代码,biz-cover-1等等,本文对此不作处理,因为一个理想的模型可以处理这些问题。

数据集本身会有一些错误,但一个好的模型是可以处理好这些错误的数据,所以本文对此种数据并不做处理。

Evaluation

模型的优劣用两种方法进行评价。第一种,将训练集和保留集损失值作为评价指标;第二种,将BLEU作为评价指标,为了保证效率,保留集仅仅用了384个样本进行计算。

评价指标也是常规的两种,两种数据集上的loss值直观地反应了训练和测试效果,BLEU是机器翻译领域中常用的评价标准。

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的本质。

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在自动文摘中的应用,对很多模型层面上的研究很少,对效果分析上的研究也很浅。

Future Work

使用BiRNN来代替RNN配合attention model效果可能会更好一些。

将模型更换为Bi-RNN会得到一个新的结果,不知道会不会有人拿这个来刷paper,个人觉得好无趣。

Conclusions

本文提出的simple attention mechanism效果很不错。

[1] Generating News Headlines with Recurrent Neural Networks

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值