论文笔记《Incorporating Copying Mechanism in Sequence-to-Sequence Learning》

论文笔记《Incorporating Copying Mechanism in Sequence-to-Sequence Learning》

论文来源:2016 ACL
论文主要贡献:提出了copy net机制,从source sentence中直接copy到target sentence中的网络模型结构

论文主要内容

CopyNet依然是一个encoder-decoder的框架。
Encoder框架采用的是一个双向的LSTM结构,将每个单词 x t x_t xt编码成隐层向量 h t h_t ht,对于句子s获得所有词的隐层表示 H 1 , . . . , h T s {H_1,...,h_{T_s}} H1,...,hTs,记作M。
Decoder部分,传统的Decoder部分,比如采用RNN作为decoder部分,会读入M然后预测target sentence,而Copy Net在Decoder部分有一些不同:

  • Prediction:CopyNet预测target word时是基于一个两种模式的混合概率,这两种模式是generate mode和copy mode。
  • State Update:正常的RNN在预测t时刻的target word时,只使用在t-1时刻的预测词,使用它的word embedding,而CopyNet不仅使用它的word embedding,还使用它在M中的【M是encoder得到的所有source word的隐层表示的向量矩阵】相应位置的隐层表示。
  • Reading M:除了上面state update使用到M中的隐层表示【文中对于这一步叫做attentive read to M】,CopyNet还对M有一个selective read to M.
    • 之所以对M会有这两种操作,是因为M中不仅包含语义信息,还有位置信息
    • Content-base: Attentive read from word-embedding
    • Location-base:Selective read from location-specific hidden units

Prediction with copy and generation

CopyNet中可以把词看做三部分,一个是常用的高频词表 V = v 1 , . . . , v N V={v_1,...,v_N} V=v1,...,vN,另一个就是UNK【所有不在高频词表中的词都属于UNK】,一个是所有在source sentence中出现的unique word(我理解就是去除停用词后的词?)集合 X = x 1 , . . . , x T s X={x_1,...,x_{T_s}} X=x1,...,xTs,所以,可以用 V ⋃ U N K ⋃ X V \bigcup UNK \bigcup X VUNKX
在decoder部分,预测新词时,要考虑两部分,一个是generate mode,一个是copy node。
所以在预测词t时的概率由两部分组成:
p ( y t ∣ s t , y t − 1 , c t , M ) = p ( y t , g ∣ s t , y t − 1 , c t , M ) + p ( y t , c ∣ s t , y t − 1 , c t , M ) p(y_t|s_t,y_{t-1},c_t,M) = p(y_t,g|s_t,y_{t-1},c_t,M) + p(y_t,c|s_t,y_{t-1},c_t,M) p(ytst,yt1,ct,M)=p(yt,gst,yt1,ct,M)+p(yt,cst,yt1,ct,M)
其中g代表generate mode, c代表copy mode
它们的具体计算方法如下:
在这里插入图片描述
其中 ψ g ( ⋅ ) \psi_g(\cdot) ψg()代表generate mode的计算分数的函数, ψ c ( ⋅ ) \psi_c(\cdot) ψc()代表copy mode计算分数的函数。注意 ψ g ( ⋅ ) \psi_g(\cdot) ψg()可以用于计算V和UNK中的词, 而 ψ c ( ⋅ ) \psi_c(\cdot) ψc()只能计算X中的词。
Z Z Z可以看做是两种模式的总得分, Z = ∑ v ∈ V ⋃ { U N K } e ψ g ( v ) + ∑ x ∈ X e ψ c ( x ) Z=\sum_{v\in V\bigcup\{UNK\}} e^{\psi_g(v)} + \sum_{x \in X} e^{\psi_c(x)} Z=vV{UNK}eψg(v)+xXeψc(x)

generate mode

generate mode的计算分数的函数如下:
ψ g ( y t = v i ) = v i T W o s t , v i ∈ V ⋃ U N K \psi_g(y_t=v_i) = v_{i}^{T}W_os_t, v_i \in V \bigcup UNK ψg(yt=vi)=viTWost,viVUNK
其中 W o ∈ R ( N + 1 ) × d s W_o \in R^{(N+1)\times d_s} WoR(N+1)×ds v i v_i vi是对于单词vi的one-hot表示

copy mode

ψ c ( y t = x j ) = σ ( h j T W c ) s t , x j ∈ X \psi_c(y_t=x_j) = \sigma (h_{j}^{T}W_c)s_t, x_j \in X ψc(yt=xj)=σ(hjTWc)st,xjX
其中 h j T h_{j}^{T} hjT是encoder部分的隐层表示【 { h 1 , . . . h T s } \{h_1,...h_{T_s}\} {h1,...hTs}是每个source word的隐层表示】, W c ∈ R d h × d s W_c \in R^{d_h \times d_s} WcRdh×ds

上述的generate mode和copy mode在三个词集合V,X,UNK上,有四种计算分数的方式,如下:
在这里插入图片描述

State Updates

CopyNet在更新decode state s t s_t st时,使用了前一个时刻的隐层向量 s t − 1 s_{t-1} st1,前一个预测结果 y t − 1 y_{t-1} yt1,由encoder部分得到的attention表示 c t c_t ct
在这里插入图片描述
其中 y t − 1 y_{t-1} yt1其实由两部分组成 [ e ( y t − 1 ) ; ζ ( y t − 1 ) ] T [e(y_{t-1});\zeta(y_{t-1})]^T [e(yt1);ζ(yt1)]T,其中 e ( y t − 1 e(y_{t-1} e(yt1 y t − 1 y_{t-1} yt1的word embedding, ζ ( y t − 1 ) \zeta(y_{t-1}) ζ(yt1)是词 y t − 1 y_{t-1} yt1在source sentence出现的所有地方词的隐层表示的权重求和表示,
在这里插入图片描述
K可以看做归一化项,也就是所有得分的求和,也就是 K = ∑ T ′ : x T ′ = y t − 1 p ( x T ′ , c ∣ s t − 1 , M ) K=\sum_{T':x_{T' }= y_{t-1}} p(x_{T'},c|s_{t-1},M) K=T:xT=yt1p(xT,cst1,M),实验中可以发现 ρ t T \rho_{t_T} ρtT的值主要集中在一个值上【所有的 ρ t T \rho_{t_T} ρtT的和为1】,这也表明尽管在source sentence中词 y t − 1 y_{t-1} yt1出现了很多次,但是CopyNet主要是从一处位置拷贝向量的。
其中 c t c_t ct就是前面说的Attentive read,而 ζ ( y t − 1 ) \zeta(y_{t-1}) ζ(yt1) 就是Selective read from location-specific hidden units

整个模型的框架如下:
在这里插入图片描述

实验效果

下面是作者使用CopyNet的实验效果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值