搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多AI干货
csdn:https://blog.csdn.net/abcgkj
github:https://github.com/aimi-cn/AILearners
- A Neural Attention Model for Abstractive Sentence Summarization
- Abstractive Sentence Summarization with Attentive Recurrent Neural Networks
两篇文章都出自于Harvard NLP组,是姊妹篇,故放在一起阅读。seq2seq模型在2014年提出,第一篇论文是将seq2seq模型应用在abstractive summarization任务上比较早期的论文,本篇文章为seq2seq+attention的开山之作。同组的人还发表了第二篇(NAACL2016),在这篇的基础上做了更多的改进,效果也更好。这两篇都是在abstractive summarization任务上使用seq2seq模型的经典的baseline。
Abstract
简介研究任务与挑战、解决思路与方法、实验效果与结论。
Paper 1
- 提出了一个fully data-driven的方法来生成句子摘要。我们的方法使用了一个基于局部注意的模型,在给定输入句子的情况下,生成摘要的每个词。模型结构非常简单,可以套用流行的
end2end框架来训练,并且很容易扩展到大型训练数据集上。 - 模型在DUC-2004任务中效果优于几个不错的baselines。
Paper 2
本文使用一种conditional RNN来生成摘要,该条件由一种新颖的基于卷积注意的编码器提供(convolutional attention-based encoder),用来确保每一步生成词的时候都可以聚焦到合适的输入上。模型仅仅依赖于学习到的features,并且很容易在大规模数据上进行end2end式地训练,并且在Gigaword语料上和DUC-2004任务中取得了更好的效果。
两篇paper的模型框架都是seq2seq+attention,最大的区别在于选择encoder和decoder的模型,第一篇的模型偏容易一些,第二篇用了rnn来做。seq2seq或者说end2end现在火的不得了,最初在机器翻译开始使用,后面推广到多模态学习,对话生成,自动问答,文本摘要等等诸多领域。
Introduction
本文属于headlines generation,输入的是一段话,输出的是一句话或者一个标题。
Paper 1
受最近机器翻译中seq2seq技术的启发,本文将Neural Language Model和带有上下文的encoder结合起来,其中encoder与Bahdanau(Neural machine translation by jointly learning to align and translate)的attention-based encoder一样。该attention是为了学习输入文本的latent soft alignment,以此来帮助生成摘要。encoder和decoder在句子摘要任务中共同训练。另外,decoder中也使用了beam search进行摘要生成。本文的方法简称ABS(Attention-Based Summarization),可以轻易扩展到大规模数据集进行训练,而且可以在任何document-summary对中进行使用。本文采用Gigaword语料集进行训练,包括大约400万篇新闻文章。为了检验模型的效果,与多种类型的文摘系统进行了对比,并且在DUC-2004任务上获得了最高分。
Paper 2
本文的模型有一个条件RNN组成,decoder很像是一个RNN Language model,decoder生成摘要依赖的条件输入是encoder的输出,根据RNN的当前状态,encoder会计算输入句子中每个词的分数,这个分数可以理解为对输入作软对齐(soft alignment),也就是说decoder在生成下一个单词时需要注意输入中的哪些单词。
encoder和decoder要在一个sentence-summary数据集中进行共同训练。本文的模型可以看作第一篇ABS模型的扩展,ABS模型中decoder是用FNN LM,而本文使用RNN,encoder部分本文更加复杂,将输入单词的位置信息考虑在内,并且本篇的encoder使用了卷积网络来编码输入单词。本文模型效果优于第一篇paper。
两篇paper都是seq2seq在sentence-level abstractive summarization任务中早期的尝试,给文本摘要方法带来了新鲜血液,第一篇paper中encoder和decoder都用了比较简单的模型,但已经得到了优于传统方法的结果,再一次地证明了deep learning在解决问题上的优势,第二篇paper升级了encoder和decoder,考虑了更复杂的细节,得到了更好的效果,相信后面会有大量的paper套用seq2seq+attention,再配合一些其他的技术来提升模型的效果,但整体的思路基本已固定下来,如果想要更大的突破,可能还需要提出另外一种框架来解决问题。
Related work
seq2seq的意义在于完全基于数据本身,从数据中学习feature出来,并且得到了更好的效果。本文的方法比较简单,decoder也只用了FNNLM(2003年由Bengio提出),而seq2seq在机器翻译中应用时都采用的是RNNLM,所以在Future Work中作者会用RNNLM,于是就有了第二篇paper。
Background
本节是用数学语言定义句子摘要问题,两篇文章解决的问题相同。给定一个输入句子,目标是生成一个压缩版的摘要。
- 句子级别的摘要问题可以定义如下(arg max F(x,y)就是指当F(x,y)取得最大值时,变量x,y的取值):

x表示输入句子,y表示生成的摘要句子集合,定义一个系统是abstractive的,就是从生成句子集合中找到score最大的那一个。 - 而extractive摘要系统可以定义如下:

- 与此相关的句子压缩问题,即集中于从输入中删除单词:

然而abstractive summarization存在一个更加困难的生成过程。
用了一个简单的数学公式将问题描述地非常清楚,包括一些细节,比如输入长度大于输出长度,输出长度为固定值,输入输出拥有相同的词汇表等等。从数学公式来看score函数的定义很重要,考虑的参数类型不同会有不同的score,也就是不同的模型,明显看得出abstractive要远难于extractive和sentence compression。
Model
模型部分是paper的重头戏,分为Objective,Encoder,Decoder,Generating Summaries,Training五个子部分来讨论。
Paper 1
Objective
- 目标函数是Negative Log-Likelihood(NLL)
scoring function(把之前单词的固定窗口考虑进去),其中, y c y_c yc是 y i y_i yi的前C个词:

- 这里当前生成词的窗口词向量由下式表示(C为窗口的大小):

- 为了考虑conditional log-probability

其实也就是NNLM中的N-gram,用来预测下一个词。目标函数表示为:

做一个马尔科夫假设,context的size为C,并且当i<1时, y i y_i yi是一个特殊的开始符号<S>。 - 考虑到这个评分函数,我们的主要重点将是对
local conditional分布进行建模:

接下来建模的部分就是研究如何表达条件概率。
目标函数用生成词的条件概率的对数来表示是NLP中非常常用的做法。不同的模型都在研究如何表示条件,比如encoder的表示,encoder输出的表示,decoder中当前词前序词的表示等。
Encoder
如果没有encoder,这个模型只是一个依赖生成句子上下文的语言模型。通过encoder可以将输入x也编码进生成过程中,这样最终生成的概率同时包含了输入x和上下文yc的信息。本文介绍了三种encoder。
-
Bag-of-Words Encoder
词袋模型是最简单的一个模型,将输入的句子用词袋模型降维到H,生成一个word embedding层。模型如下:

1.首先通过embedding矩阵F将输入x编码成H*M维的矩阵,每个word由原来的V维降为H维(H<V)。
2.构造均匀分布的注意力向量p,相当于在估计下一个生成word时给输入句子x中的每个词相同的权重。
3.将x变化为H维的语义向量,这个过程丢失了原来句子的语序关系,因此效果并不好。
词袋模型并不会考虑词序的关系,效果并不会太好,但是作为paper中的一个baseline模型会有很好的对比结果。 -
Convolutional Encoder
一个深层卷积模型,这个模型较BoW的优势在于可以获取相邻单词之间的组合信息, 这个encoder同样没有考虑将上下文信息yc编码进来。

CNN通过结合word embedding将句子表示成一个matrix,通过不同尺寸的卷积核来filter出句子中的feature,本质上和N-gram一样,N-gram的N就是卷积核的尺寸,构建出多种feature maps,然后max pooling,然后filter,然后pooling,最终采用一个MLP得出结果。
CNN的模型容量远大于BoW,但是每生成一个摘要词语,输入x中所有单词贡献的权重是一样的。这显然违背我们的直觉,因为摘要中每个词只对应输入文本中的一部分词语,所以这里提出了第三个encoder。 -
Attention-Based Encoder
虽然卷积模型比词袋模型更能捕捉句子的特征,却同样需要对整个句子做表示,机器翻译领域在解决相同问题时采用了注意力模型来构建context,然后基于生成的context来构建representation。本文采用一种类似于词袋模型(比卷积模型简单很多)的注意力模型,模型如下:

其中矩阵G是context的word embedding矩阵,D 是word embedding的大小,P是一个权重矩阵,权重连接着输入word embedding和context embedding,Q是一个光滑窗口,其定义和BoW的很接近,如下式所示。:

这里对式子进行简单推导:1.对上下文yc进行embedding,由于G是DV维,所以embedding之后再Flatten的yc为CD1维。
2.对输入x进行embedding,由于F是HV维,所以embedding之后的x是HM维。
3.矩阵P是输入x和上下文yc之间的一个软对齐,大小为H*(CD)维,因此p是M*1维的输 出向量。这里重要的是对这个向量p的理解:向量p代表在当前上下文yc的情况下,生成下一个词语y(i+1)对输入x中各个词语的依赖概率,也就是注意力概率。
4.对embedding矩阵~x进行平滑,具体做法是用一个大小为2Q+1的窗口对相邻词语向量求平均,实际上就是由2Q+1个词向量组成短语向量。
5.最终的输出enc(x, yc)代表对输入x和上下文yc进行结合的语义向量。(上下文yc按照不同的注意力概率对输入x中的各个短语向量进行加权求和)
本文的注意力模型可以视作将词袋模型中的P向量用一个待学习的soft alignment来替换了。
三种encoder模型给出了input sentence的表示,第三种还给出了summary和input之间的关系,encoder的输出将作为decoder的输入,来生成summary。 -
一个生成摘要的例子,横轴代表生成的摘要句子,纵轴代表输入的原始句子。图中每一列代表生成该词语时,其上下文对输入句子中词语的注意力概率热力图。

Decoder
模型融合了一个神经网络语言模型和一个encoder,其整体框架如下

1.Neural Network Language Model
神经语言模型是如上图红圈部分,采用了Bengio提出的NNLM语言模型,其定义如下式所示:

对这个模型的解释如下所示:
-
通过embedding矩阵E对上下文
yc进行embedding,生成上下文的压缩表示。由于矩阵E是DV维的,yc是VC维的,所以E·yc生成的是DC维的矩阵,再经过_Flatten_操作()变为CD1维的向量。
转变为一维向量的flatten()操作 - liguandong - CSDN博客 -
yc的embedding表示经过全连接再激活之后生成语义向量h,该向量是当前的上下文yc的语义压缩,表示yc的下一个词,操作如图所示

-
通过一个encoder将输入x和上下文
yc编码成H维的向量enc(x,yc),这个向量实际上就是一个注意力向量。矩阵W和V分别将NNLM和encoder的输出转化为V维向量再进行join,最后经过softmax变为下一个摘要文字的生成概率。

待求的参数是word embedding矩阵E,输入层到隐藏层的权重矩阵U,隐藏层到decoder输出层的权重矩阵V,encoder输出层到decoder输出层的权重矩阵W。黑盒函数enc是上下文编码术语,返回表示输入和当前上下文的大小为H的向量;我们考虑了三个可能的变体。
NNLM是一个经典的语言模型,本质上就是一个神经网络多分类器,文中也提到可以考虑用RNNLM来作decoder,也就有了第二篇paper的模型。
Generating Summaries
现在我们回到生成摘要的问题。 回忆一下公式4,我们的目标是,

一般的语言模型都是基于上下文生成概率最高的一个词,但对于生成摘要句子来说还不够。通常的做法是用一种搜索算法在一定的可行域之内找到几组可行的解。
精确译码和贪婪译码之间的折衷方法是使用beam-search decoder(算法1),该译码器保持完整的词汇量V,同时在摘要的每个位置将自己限制为K个潜在的假设。这里显示了beam-search decoder。
本文采用beam search,也是之前机器翻译领域生成翻译结果时常用的算法,算法描述如下:

给定一个beam size K,在生成每一个summary word时,都保留概率最大的K个词,从生成第二个词开始,计算所有路径的概率,只保留概率最大的前K个分枝,裁剪掉剩余的分枝,继续生成第三个词,依次进行下去,直到生成的词是EOS或者达到最大句子长度限制。最后得到的结果是K个最好的sentence summary。
Training
本文采用mini-batch SGD(小批量随机梯度下降)算法对训练集进行训练,使得NLL(negative log-likelihood)最小。细节在第七节描述。
因为在生成summary时并没有什么约束条件,所以本方法可以拓展到任意input-output pairs中使用。
ABS+
作者提出了一个纯数据驱动的模型之后,又提出了一个abstractive与extractive融合的模型,在ABS模型的基础上增加了feature function,修改了score function,也就是结果对比中的ABS+模型。
Paper 2
本文模型简称为RAS(Recurrent Attentive Summarizer)
Objective
目标函数如下:

两篇paper都是采用NLL,但不同的是第二篇paper目标函数条件概率中的条件与第一篇不同,本文采用decoder的所有上文,而不是一个窗口内的上文。
Encoder
-
encoder的输出是decoder的输入,对于每一个time step,encoder都需要给出一个context vector,本文encoder的重点在于如何计算时间相关的context。
-
输入句子每个词最终的embedding是各词的embedding与各词位置的embedding之和,经过一层卷积处理得到aggregate vector:

-
给定这些词的aggregate vector,计算context vector c t ct ct(编码器输出)为:

-
其中权重由下式计算:

Decoder
- decoder的部分是一个RNNLM,这里的RNN Hidden Layer使用的是LSTM单元。decoder的输出由下式计算:

- 其中c(t)是encoder的输出,h(t)是RNN隐藏层,由下式计算:

这里隐藏层的单元有两种思路,一种是常规的Elman RNN,一种是LSTM。
注:RNNLM的Hidden Unit可以不用LSTM或者GRU这么复杂,普通的隐藏层Elman RNN可以解决问题,采用Truncate-BPTT对RNN进行训练(详见Tomas Mikolov的PhD Thesis)。况且LSTM和GRU会带来更多的参数,造成overfit。
Generating Summaries
生成过程中也采用beam search算法进行summary生成。
Training
给定一个训练集,包括大量的sentence-summary pairs,用SGD将NLL函数最小化得到最优的参数集,参数包含encoder和decoder两个部分的参数。
注:SGD是一种常用的优化算法,在解决NLP问题中非常有效,其中最常见的mini batch训练方法。
Experiment
Paper 1
Dataset
本文采用经过处理的约400万Gigaword数据集作为训练集和验证集,在DUC2004数据集上进行评测,评测使用ROUGE方法。
DUC的比赛经常会包括文本摘要,所以常常用来比较每个模型或系统的优劣。
Baselines
1.PREFIX,这个baseline是取输入的前75个字符作为headline。
2.TOPIARY。
3.COMPRESS。
4.IR。
5.W&L。
6.MOSES+。
baselines选择了几组非常有代表性的系统。
Implementation
本文的程序用Torch实现,并且开源在Github上,处理1000个mini batch大概用时160s,最好的验证集参数出现在第15个epoch。
Torch是一个使用率非常高的开源工具,尤其是在研究领域。相比于Theano的难以调试,Torch具有非常简单、易用、灵活、易调试的特点。
Paper 2
Dataset
与第一篇相同的训练集和处理方法,同样使用DUC2004作为评测数据,ROUGE作为评测方法。
Baselines
1.ABS(第一篇paper中的方法)
2.ABS+(第一篇paper中的方法)
Implementation
同样使用Torch开发,在训练时用摘要的混乱度(perplexity)作为评价指标控制训练过程。
Result
Paper 1

分别在DUC2004和Gigaword数据集上进行了对比,本文的ABS模型在DUC2004上评测结果相比于最好的baseline MOSES+并不如意,MOSES+是一个基于短语的统计机器翻译系统(Koehn,2007),在Gigaword训练集上比MOSES+好一些。但增加了人工feature的ABS+模型比ABS模型和MOSES+系统表现好了非常多。

ABS模型实际上的效果并不理想,所以本文作者又提出了一种所谓的ABS+模型,将人工feature融合到了ABS模型中,得到了不错的效果。如果只看这一篇paper,可能会觉得不理想的原因是seq2seq在自动文摘中的效果一般,但看过第二篇paper之后,就会明白是因为本文的模型太过简单,第二篇paper也就有了意义。
从另一个角度来看,纯粹的data-driven方法如果配合上一些extractive的方法会得到更好的结果,这点对于实际系统的开发非常有意义。
Paper 2

在Gigaword数据集上对比各个模型,RAS-Elman模型表现最好,说明了seq2seq相比于传统的文摘系统和算法,可以更好地解决问题,又一次证明了deep learning的强大。
同时也验证了普通的RNN不见得比LSTM或者GRU表现差,尤其是当序列长度不是特别长的情况。

在DUC2004数据集上对比各个模型,得到了相同的结论。

5种不同的模型在混乱度这个指标上比较,本文算法RAS-Elman具有明显的优势。
Conclusion
Paper 1
基于神经机器翻译的最新进展,提出了一种attention-based model的生成式模型。我们将这种概率模型与生成算法相结合,生成精确的生成式摘要。下一步,我们希望以data-driven的方式进一步提高摘要的语法性,并扩展此系统以生成段落级别的摘要。两者都在生成的有效对齐和一致性方面带来了额外的挑战。
Paper 2
我们将state-of-art的生成式句子摘要模型(Rush et al., 2015)扩展到一个RNN架构。我们的模型是机器翻译的编解码器框架的简化版本(Bahdanau et al., 2014)。该模型基于Gigaword语料库进行训练,根据每篇新闻文章的第一行生成标题。尽管我们的模型不依赖于额外的抽取功能,但在Gigaword数据和ducc -2004挑战上,我们都轻松超越了之前最先进的技术。
两篇文章都使用了seq2seq模型+attention,但是第二篇的实验效果要好很多,原因是第一篇的模型过于简单
参考文献
1.A Neural Attention Model for Abstractive Sentence Summarization
2.Abstractive Sentence Summarization with Attentive Recurrent Neural Networks

1970

被折叠的 条评论
为什么被折叠?



