[论文阅读]Get To The Point: Summarization with Pointer-Generator

Get To The Point: Summarization with Pointer-Generator Networks

一 摘要🐶

传统的Seq2Seq+Attention模型存在三个缺陷:

  1. 难以准确复述原文细节。

  2. 无法处理原文中的未登录词(OOV)

  3. 在生成的摘要中存在一些重复的部分

此文提出一种以两种正交的方式增强了增强标准的Seq2Seq+Attention模型

  1. 使用指针生成器网络(pointer-generator network) ,通过指针从源文件中拷贝词,同时保留通过生成器生成新单词的能力。
  2. 使用覆盖率(coverage) 机制,追踪哪些信息已经在摘要中,避免生成具有重复片段的摘要。

二 模型🐱

  1. baseline:sequence-to-sequence 模型
  2. 指针生成器网络(pointer-generation network)
  3. 覆盖率机制(coverage mechanism),可以被加在上述两种模型架构上

2.1 seq2seq + Attention模型

baseline

encoder采用单层双向LSTM,训练数据中的文档被一个一个地喂入encoder中,产生encoder的隐藏层状态 h i h_i hi的序列。

decoder部分采用一个单层单向LSTM,每一步的输入是前一步预测的词的词向量,同时输出一个解码的状态序列 s t s_t st,用于当前步的预测。

attention是针对原文的概率分布,告诉模型哪些词更重要。具体计算公式为
e i t = v t tanh ⁡ ( W h h i + W s s t + b a t t n ) a t = s o f t m a x ( e t ) e_i^t=v^t\tanh(W_hh_i+W_ss_t+b_{attn}) \\ a^t=softmax(e^t) eit=vttanh(Whhi+Wsst+battn)at=softmax(et)
计算出当前步的attention分布后,对encoder输出的隐层做加权平均,获得原文的动态表示,称为语境向量
h t ∗ = Σ i a i t h i h_t^*= \Sigma_ia_i^th_i ht=Σiaithi
依靠语境向量和decoder输出的隐层向量,共同决定当前步预测在词表上的概率分布
P v o c a b = s o f t m a x ( V ’ ( V [ s t , h t ∗ ] + b ) + b ′ ) P_{vocab}=softmax(V’(V[s_t,h_t^*]+b)+b') Pvocab=softmax(V(V[st,ht]+b)+b)
损失函数采用交叉熵
l o s s = 1 T Σ t = 0 T − l o g P ( w t ∗ ) loss=\frac{1}{T}\Sigma_{t=0}^T-logP(w_t^*) loss=T1Σt=0TlogP(wt)

2.2 Pointer-generator network

指针生成器网络

pointer-generator network是seq2seq模型和pointer network的混合模型,一方面通过seq2seq模型保持生成的能力,另一方面通过pointer network直接从原文中取词,提高摘要的准确度和缓解OOV问题。在预测的每一步,通过动态计算一个生成概率 P g e n P_{gen} Pgen作为一个软开关,用于选择是通过 P v o c a b P{vocab} Pvocab从词汇表中生成一个词,或者从输入序列的注意力分布 a t a_t at中复制一个词。
P g e n = σ ( w h ∗ T h t ∗ + w s T s t + w x T x t + b p t r ) P_{gen}=\sigma(w_{h^*}^Th_t^*+w_s^Ts_t+w_x^Tx_t+b_{ptr}) Pgen=σ(whTht+wsTst+wxTxt+bptr)
对于每一篇文档,用扩展后的词表(extended vocabulary) 来表示整个词汇表和原文档中的词的并集,得到在扩展词表上建立的概率分布:
P ( w ) = p g e n P v o c a b ( w ) + ( 1 − p g e n ) ∑ i : w i = w a i t P(w)=p_{gen}P_{vocab}(w)+(1-p_{gen})\sum_{i:w_i=w}a_i^t P(w)=pgenPvocab(w)+(1pgen)i:wi=wait
如果w是一个OOV单词, P v o c a b ( w ) P_{vocab}(w) Pvocab(w)为0;如果w没有出现在源文档中,但在词表中出现,那么 ∑ i : w i = w a i t \sum_{i:w_i=w}a_i^t i:wi=wait就为0。

生成OOV单词的能力是pointer-generator网络的一个主要优势。

2.3 覆盖机制(coverage mechanism)

重复问题是seq2seq模型的常见问题,此文采用覆盖模型来解决重复问题,在此覆盖模型中,保留了一个覆盖率向量(coverage vector) e t e^t et,它是过去所有decoder步骤计算的attention分布的累加和,记录模型已经关注过原文的哪些词。
e t = ∑ t ′ = 0 t − 1 a t ′ e^t=\sum_{t'=0}^{t-1}a^{t'} et=t=0t1at
覆盖率向量也被用来作为注意力机制的额外输入, c 0 c^0 c0是一个0向量,表示在第一个时间步上,源文档还没有被覆盖。
e i t = v t tanh ⁡ ( W h h i + W s s t + w c c i t + b a t t n ) e_i^t=v^t\tanh(W_hh_i+W_ss_t+w_cc_i^t+b_{attn}) eit=vttanh(Whhi+Wsst+wccit+battn)
定义了一个覆盖率损失(coverage loss) 来惩罚attention重复放在同一区域的行为。
c o v l o s s t = ∑ i m i n ( a i t , c i t ) covloss_t=\sum_imin(a_i^t,c_i^t) covlosst=imin(ait,cit)
最终的模型整体损失函数为:
l o s s t = − l o g P ( w t ∗ ) + λ ∑ i m i n ( a i t , c i t ) c i t ) loss_t=-logP(w_t^*)+\lambda\sum_imin(a_i^t,c_i^t) c_i^t) losst=logP(wt)+λimin(ait,cit)cit)
最终的模型整体损失函数为:
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^*)+\lambda\sum_imin(a_i^t,c_i^t) losst=logP(wt)+λimin(ait,cit)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值