论文阅读 seq2seq模型的coverage机制

Get To The Point: Summarization with Pointer-Generator Networks

Abigail See, Peter J. Liu, Christopher D. Manning
Standford University & Google Brain, 2017

这是ACL2017上的一篇文章,提出了coverage机制,目的是为了解决seq2seq模型生成句子中经常有重复片段的现象。

之前Statistical Machine Translation就已经存在该机制了,NMT中也有人应用了。但是这篇率先用于生成式任务。
BTW这篇文章的结构图相当好看,似乎就是用ppt做的,code也开源了:
https://github.com/abisee/pointer-generator

先看看seq2seq的结构:
这里写图片描述
再看看加coverage机制的结构图:
这里写图片描述

图中的 p g e n 机制就是pointer softmax,详细可以见另一篇介绍copy机制的文章:seq2seq模型中的copy机制

整体结构和pointer generator network是一样的,需要改动的是attention的部分:

e i t = v T t a n h ( W h h i + W s s t + w c c i t + b )

这里的c指的不是语义向量,是新定义的一个参数:

c t = t = 1 t 1 a t

c t 就是一个长度为输入长度的向量,第一项是之前时刻输入第一个词attention权重的叠加和,第二项是之前时刻输入第二个词attention权重的叠加和,and so on。加这个参数的目的是为了给attention之前生成词的信息,如果之前生成过这些词那么后续要抑制。抑制通过loss函数加惩罚项实现:

l o s s t = l o g P ( ω t ) + λ i m i n ( a i t , c i t )

原理很直观,如果之前该词出现过了,那么它的 c i t 就很大,那么为了减少loss,就需要 a i t 变小(因为loss是取两者较小值), a i t 小就代表着这个位置被注意的概率减少。

从结果上来看,在CNN/Daily Mail dataset上有一定的提升。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/thormas1996/article/details/81536977
今日推荐