生成式摘要的四篇经典论文

本文重温经典,从生成式摘要的开篇之作起,讲解四篇经典论文和它们的相关文献。这四篇论文奠定了生成式摘要技术的发展基础,探讨了摘要的本质问题,为后来的研究提供启示。所谓“了解走过的路,才能更好地往前看”,正是本文的初衷,学习经典论文,思考创新点。

自动摘要任务的目标是在保留重要信息的前提下把原文缩写为简短的文本,分为抽取式(extractive)和生成式(abstractive)两种方法,一个形象的区分是,抽取式是使用高光笔选择原文中的片段,生成式是使用钢笔撰写原文的总结。

与多数NLP技术一样,早期的自动摘要研究成果以统计方法为主。到了2015年,有研究者(本篇论文1)把机器翻译领域的端到端生成技术引入自动摘要领域,掀起了生成式摘要研究的热潮。直到今天,自动摘要研究依然和机器翻译、图像描述的研究密切相关,各领域相互借鉴,相互推动。所以,自动摘要研究者也应该关注机器翻译、图像描述的研究动态。

论文1. 生成式摘要的开篇之作 EMNLP2015

第一篇论文是Facebook于2015年发表在EMNLP的《A Neural Attention Model for Abstractive Sentence Summarization》。如前所述,本论文把机器翻译领域的Seq2seq生成技术(Bahdanau et al. 2014)引入自动摘要领域。不熟悉Seq2seq的童鞋,建议先看我的另一篇博文《Seq2Seq Attention模型详解》

本论文提出了Attention-Based Summarization模型,简称ABS,模型结构如下图,其中encoder采用本论文提出的Attention-based encoder(下图蓝色部分),decoder采用Bengio 2003年提出的NNLM语言模型(下图红色部分)。图中的标识F, G, E是三个词嵌入look-up table,属于嵌入层参数,用于获取word embedding,P, U, W, V则是四个可训练的参数矩阵。Attention-based encoder采用加法Attention计算,实现soft alignment,此外有一步词嵌入平滑操作。soft alignment与soft Attention对应,为每个对象赋予0-1之间的关注度,不像hard Attention那样只有0,1是否关注之分。NNLM是神经网络语言模型,以历史输出为依据推理当前输出,历史由context window C限定。本论文采用beam search算法完成解码。论文中提到“Viterbi解码与beam search的不同之处”:Viterbi需先计算所有可能的序列分布,再选取最短路径,时间复杂度高。

在这里插入图片描述
此外,本文指出了生成式摘要和机器翻译的通病——原文中的rare word的Attention值不高,且模型无法生成没见过的单词(OOV)。为此,本论文提出了一种解决方案Extractive Tuning,是在上述ABS模型的基础上,修改上图中的 g ( y i + 1 , x , y c ) g(y_{i+1}, x, y_c) g(yi+1,x,yc)函数的计算公式,新的计算公式如下图所示,以加权求和的方式,引入四种抽取式特征unigram, bigram, trigram, 以及reorder原文的词,四种抽取式特征都是indicator表示。
在这里插入图片描述
实验结果表示,引入上述四种抽取式的人工feature后,ABS模型效果提升。

论文2. 进阶之作(姐妹篇) NAACL2016

由于第一篇论文所提出的ABS模型结构简单,效果不够突出,并且依赖于抽取式的人工feature。Facebook于2016年在NAACL发表了姐妹篇论文《Abstractive sentence summarization with attentive recurrent neural networks》,不仅省去了人工feature,还考虑了许多细节。

本论文提出了Recurrent Attentive Summarizer模型,简称RAS,论文没有给出模型结构图。RAS模型的encoder采用CNN+Attention,decoder采用RNN-LM,并且省去了decoder的content window。可见,除了encoder采用CNN之外,RAS模型和常见的Seq2seq完全一致。对比图如下所示,其中左图是Seq2seq,右图是RAS模型。

如上右图所示,为了对原文进行卷积操作,RAS模型先用[PAD]字符补齐原文,然后采用共计D个size为5的卷积核以stride为1的步长,对图中底部的蓝色词向量执行卷积操作,卷积公式如下所示,得到红色特征向量,其中卷积核的个数D和词向量维度相等(所以红色向量和蓝色向量的维度大小相等)。此外蓝色词向量是word embedding和position embedding的加和,用于弥补CNN对位置感知的缺失。

z i k = ∑ h = − q / 2 h = q / 2 a i + h ⋅ b q / 2 + h k z_{ik} = \sum_{h=-q/2}^{h=q/2} a_{i+h} · b_{q/2+h}^k zik=h=q/2h=q/2ai+hbq/2+hk

RAS模型训练时采用perplexity作为评价指标搜索模型的最优超参数,例如batch size。实验结果验证了RAS的优势,以及验证了RNN并不总是比LSTM差,在序列长度不是特别长时,LSTM参数多,会导致过拟合。

论文3. 钻研摘要任务本质的全技能之作 CoNLL2016

第三篇论文是IBM于2016年发表在CoNLL的《Abstractive text summarization using sequence-to-sequence RNNs and beyond》,之所以称之为“全技能之作”,是因为这篇论文像一个生成式摘要研究的全家桶,不仅针对性解决摘要任务的本质问题,提出了优秀的模型(包含4个自动摘要trick),还构建了新的语料CNN/Daily Mail Coupus并给出基准,可谓是诚意满满。阅读之后,也是收获颇多。

本论文指出了自动摘要与机器翻译的不同:① 摘要的文本长度较短,且受原文长度的影响较小。② 摘要是一个丢弃原文不重要信息的过程,翻译则是丢弃越少越好,与原文有着明显的对齐关系。本论文受此启发,在Seq2seq架构之上,加入4个自动摘要trick:LVT、词嵌入语言学特征、生成器-pointer转换器、层次化Attention(word+sentence),下面分别展开介绍。

LVT方法:考虑到摘要的多数词来自原文,本论文采用Jean 2014年提出的the large vocabulary ‘trick’,简称LVT,用于缩减decoder词汇表,只保留一定数量的高频词和原文(当前batch)所包含的词。这样做的好处是,大大降低了decoder的soft-max计算耗时,并且加速模型收敛(模型只需关注核心词)。

词嵌入融合语言学特征:为了精准识别原文的核心概念、核心实体,本论文在输入模型的词嵌入中融入了一些语言学特征,包括NER,TF,IDF,以及词性POS。这里的语言学特征都转为离散值,用one-hot向量表示。融合时,把它们与词向量一起拼接为一个较长的向量。

生成器-pointer转换器:为了解决模型无法生成没见过的单词(OOV)这个问题,本论文提出了一种generator-pointer转换器,如下图所示,图中G表示generator(基于Seq2seq生成一个词),P表示pointer(直接copy原文中的一个词)。当switch开关为1时,采用generator;当switch开关为0时,采用pointer。switch值的计算公式如下。pointer如何选定copy哪个词呢?pointer采用如下公式计算Attention分布,基于Attention分布生成一个pointer位置指针 p ( i ) p(i) p(i),直接copy原文中与位置指针 p ( i ) p(i) p(i)对应的词即可。模型训练阶段的目标函数公式如下,其中 g i g_i gi是一个指示函数,当且仅当摘要文本的第i个词是OOV时, g i g_i gi值为1,把generator和pointer的目标函数融合在一起。
在这里插入图片描述
层次化Attention(word+sentence):原文文本较长时,找到原文的核心词与核心句子同等重要。因此本论文采用两个Bi-RNN,分别用于计算词级、句子级的Attention值,并用句子级Attention值reweight词级Attention值,得到最终的词级Attention,公式如下,其中 s ( j ) s(j) s(j)表示第 j j j个词所在句子的ID。
P a ( j ) = P w a ( j ) P s a ( s ( j ) ) ∑ k = 1 N d P w a ( k ) P s a ( s ( k ) ) P^a(j) = \frac{P^a_w(j)P^a_s(s(j))}{\sum^{N_d}_{k=1}P^a_w(k)P^a_s(s(k))} Pa(j)=k=1NdPwa(k)Psa(s(k))Pwa(j)Psa(s(j))

论文4. 生成-抽取方法的进阶之作 ACL2017

第四篇论文是 Stanford和Google 于2017年发表在ACL的《Get to the point:Summarization with pointer-generator networks》,针对第三篇论文的其中一个trick:generator-pointer转换器进行了优化。本论文的研究建立在Google2015发表在NIPS的论文《Pointer Network》之上,《Pointer Network》所提出的指针网络Pointer-Net借鉴了Attention的思想,利用Attention分布判断copy原文的哪一个词,也就是说,copy原文中Attention最大的词。Pointer-Net和Attention的公式完全相同,如下所示:
在这里插入图片描述
本论文针对生成式摘要的两个问题:① 生成摘要可能包含错误事实(或与原文信息不符)② 生成摘要可能包含重复内容 ,分别采用 Pointer-Generator模型 和 coverage机制 解决。

本论文指出,本文的第三篇论文的Pointer-Generator模型有一定局限性,它只能解决OOV问题,不能解决rare word问题,此外它的Pointer和Generator是相对独立的,由取值为0或1的switch开关,控制Pointer或者Generator中的一方参与模型的训练和推理。本论文结合了Seq2seq和Pointer-Net,模型结构如下图所示,其中 p g e n p_{gen} pgen是一个soft switch,也就是[0, 1]的小数,计算公式如下,用于把生成概率 P v o c a b ( w ) P_{vocab(w)} Pvocab(w)和copy概率 ∑ i : w i = w a i t \sum_{i:w_i=w}a_i^t i:wi=wait加权平均,使得generator和pointer可以一同参与训练和推理。这里要注意的是,从copy概率计算公式可以看出:一个词出现多次,则它的概率分布累加多次。
在这里插入图片描述
由于模型倾向于重复抽取Attention较高的词,导致生成重复的内容,本论文引入了Tu等人于2016年提出的coverage model,可以强迫模型去关注没关注过或关注较少的词。这部分包括coverage向量计算,以及coverage损失计算。

首先计算coverage向量 c t c^t ct,计算公式如下,用于累计历史的Attention,它代表了各个词受到模型关注的情况。计算Attention时,在输入中加入coverage向量即可。但作者发现coverage向量对避免重复几乎不起效。

然后在损失函数中加入coverage损失 c o v l o s s t = ∑ i m i n ( a i t , c i t ) covloss_t = \sum_imin(a^t_i, c^t_i) covlosst=imin(ait,cit),用于惩罚历史Attention分布中的重合部分,避免模型重复关注某些词,新的损失函数计算公式如下。coverage损失效果明显,但它的限制是:必须先不加coverage损失训练,直到模型收敛,然后再加入coverage损失进行finetune。
l o s s t = − l o g P ( w t ∗ ) + λ ∑ i m i n ( a i t , c i t ) loss_t = -logP(w^∗_t) +λ ∑_imin(a^t_i, c^t_i) losst=logP(wt)+λimin(ait,cit)

Reference:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyGJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值