copy net 和 pointer softmax network都是在ACL 2016上提出的,目的是为了解决OOV的问题,本篇主要是想借此总结一下copy机制的原理。

论文阅读


Incorporating Copying Mechanism in Sequence-to-Sequence Learning

Jiatao Gu, Zhengdong Lu
The University of Hong Kong & Huawei Noah’s Ark Lab
ACL 2016

这篇提出了copynet的思路,同时结合了generative和copy两种方式,对OOV词采用直接copy的方式。attention中包含了两个部分,第一个部分是词表,用one hot向量表示的,第二个部分是encoder的隐藏状态,即输入的句子,之所以用隐藏状态是因为其包含有位置信息,这个对生成很重要。建模是通过两者的叠加,例子中就是Prob(“Jebara”) = Prob(“Jebara”, g) + Prob(“Jebara”, c)。

论文阅读 seq2seq模型的copy机制

p(yt|st,yt1,ct,M)=p(yt,c|st,yt1,ct,M)+p(yt,g|st,yt1,ct,M)

M是输入隐藏层状态的集合,ct是attention score,st是输出的隐藏状态,g代表生成,c代表复制。

生成还是复制基于概率最大来选择,加了一个简单的限制规则,如果yt在输入中没出现,那么肯定不会是copy,p(yt,c|)=0;如果yt在只输入中出现,而词表中没有,那么肯定是copy,p(yt,g|)=0

为了复制较长短语,作者改变了yt1的表达式,加了一项selected read。yt1的表达式由两项拼接而成,第一项是词的embedding,第二项叫做selective read,其目的是为了拷贝较长的短语。理解的话很直观,如果前一个词在输入中出现了,那么有一个权重的累加,否则为零。

本文在summeraize上基本已经解决了OOV问题,在word level和char level都做了测试,word level表现更好。copynet缺点在于只能原封不动地复制,对于NMT和QA还是下一篇介绍的pointer softmax更常用。



Pointing Unknown Word

Caglar Gulcehre, Yoshua Bengio, ACL 2016

本篇提出了pointer softmax的机制,为了解决copy or generate 和 where to copy两个问题。也称为pointer-generator network。

  • copy or generate
    用一个参数zt来决定是point,copy还是generate,用一个多层感知机来预测。输入由当前时刻attention得出的语义向量ct和前一时刻decoder的隐藏层状态st1以及输出yt1拼接构成。

    其实这个多层感知机的输入和NMT中decoder预测下一状态的输入是一模一样的,只是一个是学习对应的位置,一个是学习预测每个词的概率。

  • where to point
    在attention softmax的基础上,额外用了一个location softmax来解决where to point的问题。
    目标是max p(lt|zt=0,(y,z)<t,x)

从公式看反而更直观一些:
目标可以表示为 argmaxpθ(y,z|x)=t=1TYpθ(yt,zt|y<t,z<t,x)

pθ(yt,zt|y<t,z<t,x)=pθ(ωt,zt|y<t,z<t,x)×pθ(lt,zt|y<t,z<t,x)

pθ(ωt,zt|y<t,z<t,x)=pθ(ωt|zt=1,y<t,z<t,x)×pθ(zt=1|y<t,z<t,x)

pθ(lt,zt|y<t,z<t,x)=pθ(lt|zt=0,y<t,z<t,x)×pθ(zt=0|y<t,z<t,x)

不加pointer softmax的seq2seq其实就是最大化ωt的概率来训练attention权重,这里除了考虑attention多了一个lt的概率,指向对应输入中词的位置,用来学习位置的信息。

switch network目的是得到zt,通过训练学习zt的分布pθ(zt|y<t,z<t,x)

论文阅读 seq2seq模型的copy机制


Pointer Network

Oriol Vinyals, Meire Fortunato, Navdeep Jaitly, Google Brain, 2015

顺带再提提这篇15年放在arkiv上的pointer network,思路比较简单,就是decoder不预测输出是什么,而是预测输出应该对应输入哪个词。pointer softmax的位置参数lt就是借鉴了这个思想。

论文阅读 seq2seq模型的copy机制

相关文章: