2018-ACL-Fast Abstractive Summ with RL Selected sentence Rewriting

Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting

Chen, Y. C. , & Bansal, M. . (2018). Fast abstractive summarization with reinforce-selected sentence rewriting.

发表:ACL 2018

PDF地址:https://arxiv.org/pdf/1805.11080.pdf

代码地址: https://github.com/ChenRocks/fast_abs_rl

1 概述

  • 套路:首先进行句子选择,然后对每个选出来的句子进行摘要式的重写,并根据强化学习中的梯度策略,提出了一个新的方法来将句子选择与句子摘要两个网络连接起来。
  • 数据集:CNN/DailyMail
  • 优点:
    • 一定程度上减少了生成重复内容的情况
    • 由于选出不同句子进行摘要,便可以并行运算,速度快了很多

2 模型

2.1 句子抽取

论文模型如下图,大概看下结构就好,论文这个图感觉有点乱,请看下面描述:

extractor
[外链图片转存失败(img-IrOzFZpz-1564132286349)(2018 ACL Fast with Reinforce Selected Sentence Rewrite.assets/1564126677273.png)]

2.1.1 生成句子语义表述

如果要对句子进行选择,那么需要句子对应的特征,此处论文中使用时序的CNN计算每个句子的表述向量 r i r_i ri,然后按照一般套路,为了考虑上下文信息,加入了双向LSTM,得到更厉害的表述向量 h i h_i hi。(CNN就是灰色部分,LSTM是蓝色部分。

2.1.2 选择句子

有了强大的句子表述,我们就可以根据 h i h_i hi算出来哪个句子是重要的,需要抽取出来。这里模型使用了一个传统的Decoder:单向LSTM再加上两层Attention计算每个句子被抽取出来的概率,这Attention的部分没画出来,且看我下面(嘿嘿):

首先将 h i h_i hi作为输入传入这个LSTM得到输出 z i z_i zi,其中 c c c是LSTM中的隐藏单元:
z i = L S T M ( c , h i ) z_i = LSTM(c,h_i) zi=LSTM(c,hi)
然后计算一层Attention,找到注意的句子:
a j t = v g T t a n h ( W g 1 h j + W g 2 z t ) a_j^t=v_g^Ttanh(W_{g1}h_j+W_{g2}z_t) ajt=vgTtanh(Wg1hj+Wg2zt)

α t = s o f t m a x ( a t ) \alpha^t=softmax(a^t) αt=softmax(at)

e t = ∑ j α j t W g 1 h j e_t=\sum_j\alpha_j^tW_{g1}h_j et=jαjtWg1hj

再接一层Attention,就算出每个句子的概率:
u j t = { v p ⊤ tanh ⁡ ( W p 1 h j + W p 2 e t )  if  j t ≠ j k ∀ k &lt; t − ∞  otherwise  u_{j}^{t}=\left\{\begin{array}{ll}{v_{p}^{\top} \tanh \left(W_{p 1} h_{j}+W_{p 2} e_{t}\right)} &amp; {\text { if } j_{t} \neq j_{k}} \\ &amp; {\forall k&lt;t} \\ {-\infty} &amp; {\text { otherwise }}\end{array}\right. ujt=vptanh(Wp1hj+Wp2et) if jt̸=jkk<t otherwise 

P ( j t ∣ j 1 , ⋯ &ThinSpace; , j t − 1 ) = s o f t m a x ( u t ) P(j_t|j_1,\cdots,j_{t-1}) = softmax(u^t) P(jtj1,,jt1)=softmax(ut)

这里就可以设置一个阈值,比如概率大于多少的,就是看抽取出来的句子。

2.2 对句子进行摘要

这个部分就比较简单了,使用一个普通的Attention Seq2Seq模型,再加上Pointer Generator来从原文复制词解决OOV问题,没啥好说的。

3 学习与训练

论文中提到,抽取句子的过程是一种硬性选择的过程,那么在抽取与摘要之间的这个过程是不可微分的,也就是不能反向传播误差,所以不能简单地训练。他就使用了一个RL中的梯度策略方法,来建立反向传播的连接。

而且,两个模型一开始学的都不准,然后他两放一起,大家都不准,还会影响对方。所以一开始对这两个模型分别训练,各自的效果有点好了,在用上面说的RL方法将两个模型放一起训练。

3.1 先解决数据问题

  • 句子选择:
    • 现在大家伙用的数据集DUC,CNN/DM都没有句子选择的这种标签,也就是没有标出来哪个句子是要留下的,那么如何放在这个模型中训练呢?论文提出了一个简单的方法,先自己生成一个“代理”标签,他是这么计算来的:

j t = a r g m a x i ( ROUGE-L r e c a l l ( d i , s t ) ) j_t = argmax_i(\text{ROUGE-L}_{recall}(d_i,s_t)) jt=argmaxi(ROUGE-Lrecall(di,st))

​ 其中 s t s_t st是真实摘要中第 t t t个句子,这样就把原始摘要中的每个句子,都在原始文本中找到了一个句子与之对应,也就是打了我要抽取这个句子的标签。然后用这个标签去训练,妥妥的。

  • 句子摘要
    • 这部分,就直接把上面句子选择部分求出来的摘要句子与对应的原始句子做训练数据就行。

3.2 强化学习


对不起了,老铁们,强化学习看不动啊,等我学完了我再更新哈


3.3 减少重复

在选择句子的时候,用Beam Size为 k k k的Beam Search查找要找到句子们,然后对 k n k^n kn个可能的组合按照其中出现重复N-gram的数量进行排序,重复的越少分数越高。另外还用了diverse decoding algorithm这个算法。

4 结果

score

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值