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
论文模型如下图,大概看下结构就好,论文这个图感觉有点乱,请看下面描述:
[外链图片转存失败(img-IrOzFZpz-1564132286349)(2018 ACL Fast with Reinforce Selected Sentence Rewrite.assets/1564126677273.png)]
如果要对句子进行选择,那么需要句子对应的特征,此处论文中使用时序的CNN计算每个句子的表述向量 r i r_i ri,然后按照一般套路,为了考虑上下文信息,加入了双向LSTM,得到更厉害的表述向量 h i h_i hi。(CNN就是灰色部分,LSTM是蓝色部分。
有了强大的句子表述,我们就可以根据 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 < 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)} & {\text { if } j_{t} \neq j_{k}} \\ & {\forall k<t} \\ {-\infty} & {\text { otherwise }}\end{array}\right. ujt=⎩⎨⎧vp⊤tanh(Wp1hj+Wp2et)−∞ if jt̸=jk∀k<t otherwise
P ( j t ∣ j 1 , ⋯   , 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(jt∣j1,⋯,jt−1)=softmax(ut)
这里就可以设置一个阈值,比如概率大于多少的,就是看抽取出来的句子。
这个部分就比较简单了,使用一个普通的Attention Seq2Seq模型,再加上Pointer Generator来从原文复制词解决OOV问题,没啥好说的。
论文中提到,抽取句子的过程是一种硬性选择的过程,那么在抽取与摘要之间的这个过程是不可微分的,也就是不能反向传播误差,所以不能简单地训练。他就使用了一个RL中的梯度策略方法,来建立反向传播的连接。
而且,两个模型一开始学的都不准,然后他两放一起,大家都不准,还会影响对方。所以一开始对这两个模型分别训练,各自的效果有点好了,在用上面说的RL方法将两个模型放一起训练。
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个句子,这样就把原始摘要中的每个句子,都在原始文本中找到了一个句子与之对应,也就是打了我要抽取这个句子的标签。然后用这个标签去训练,妥妥的。
在选择句子的时候,用Beam Size为 k k k的Beam Search查找要找到句子们,然后对 k n k^n kn个可能的组合按照其中出现重复N-gram的数量进行排序,重复的越少分数越高。另外还用了diverse decoding algorithm这个算法。