Get To The Point: Summarization with Pointer-Generator Networks
一 摘要🐶
传统的Seq2Seq+Attention模型存在三个缺陷:
难以准确复述原文细节。
无法处理原文中的未登录词(OOV)。
在生成的摘要中存在一些重复的部分
此文提出一种以两种正交的方式增强了增强标准的Seq2Seq+Attention模型
- 使用指针生成器网络(pointer-generator network) ,通过指针从源文件中拷贝词,同时保留通过生成器生成新单词的能力。
- 使用覆盖率(coverage) 机制,追踪哪些信息已经在摘要中,避免生成具有重复片段的摘要。
二 模型🐱
- baseline:sequence-to-sequence 模型
- 指针生成器网络(pointer-generation network)
- 覆盖率机制(coverage mechanism),可以被加在上述两种模型架构上
2.1 seq2seq + Attention模型
encoder采用单层双向LSTM,训练数据中的文档被一个一个地喂入encoder中,产生encoder的隐藏层状态$h_i$的序列。
decoder部分采用一个单层单向LSTM,每一步的输入是前一步预测的词的词向量,同时输出一个解码的状态序列$s_t$,用于当前步的预测。
attention是针对原文的概率分布,告诉模型哪些词更重要。具体计算公式为
计算出当前步的attention分布后,对encoder输出的隐层做加权平均,获得原文的动态表示,称为语境向量
依靠语境向量和decoder输出的隐层向量,共同决定当前步预测在词表上的概率分布
损失函数采用交叉熵
2.2 Pointer-generator network
pointer-generator network是seq2seq模型和pointer network的混合模型,一方面通过seq2seq模型保持生成的能力,另一方面通过pointer network直接从原文中取词,提高摘要的准确度和缓解OOV问题。在预测的每一步,通过动态计算一个生成概率$P_{gen}$作为一个软开关,用于选择是通过$P{vocab}$从词汇表中生成一个词,或者从输入序列的注意力分布$a_t$中复制一个词。
对于每一篇文档,用扩展后的词表(extended vocabulary) 来表示整个词汇表和原文档中的词的并集,得到在扩展词表上建立的概率分布:
如果w是一个OOV单词,$P_{vocab}(w)$为0;如果w没有出现在源文档中,但在词表中出现,那么$\sum_{i:w_i=w}a_i^t$就为0。
生成OOV单词的能力是pointer-generator网络的一个主要优势。
2.3 覆盖机制(coverage mechanism)
重复问题是seq2seq模型的常见问题,此文采用覆盖模型来解决重复问题,在此覆盖模型中,保留了一个覆盖率向量(coverage vector)$e^t$,它是过去所有decoder步骤计算的attention分布的累加和,记录模型已经关注过原文的哪些词。
覆盖率向量也被用来作为注意力机制的额外输入,$c^0$是一个0向量,表示在第一个时间步上,源文档还没有被覆盖。
定义了一个覆盖率损失(coverage loss) 来惩罚attention重复放在同一区域的行为。
最终的模型整体损失函数为: