文本生成系列(一)seq2seq中的copy机制

本文记录seq2seq中一种广泛应用的方法:copy机制。
paper code

Incorporating Copying Mechanism in Sequence-to-Sequence Learning

上图左边为seq2seq模型中的encode-decode框架,右边为左边小框框的放大图,也是copynet相对传统网络的改进。

所谓copynet,就是模型输入中的字符可以被复制到解码输出中,这可以一定程度上缓解OOV问题,另一方面也可以强化输入输出之间的关联,这在复述、对话等任务中是有很大帮助的。

上图(a)中的下半部分粉红色框序列为copynet的encode部分,为正常的双向RNN结果(隐藏层序列记为M);中间黑色部分为attention结构;上方紫色部分为decode部分,与传统的RNN-decoder的主要区别有:1. 预测的时候除了generate-mode还有copy-mode;2. 更新t时刻的状态时,不仅使用了t-1时刻的预测输出的embedding,而且使用了该预测输出在encode阶段的编码信息。

Prediction with Copying and Generation

预测集合不仅包括vocabulary词表的字符,还有输入序列去重后的词表的字符:

最终的预测概率为generate-mode(P(g))和copy-mode(P©)的概率之和:

我们可能会考虑到V词表和X词表大小不一样,怎么能对概率结果进行相加呢?具体地,


即不管是generate-mode或者是copy-mode,预测候选集都是V&UNK和X的词表之和,只是在generate-mode下,对于非V&UNK的词,限定概率恒为0,即generate-mode下不会对V&UNK词表以外的词进行预测;在copy-mode下,对于非X词表的词,限定概率恒为0,即copy-mode下不会对X词表以外的词进行预测(可以借助上述两张图进行理解)。

Generate-Mode

Copy-Mode

当计算copy-mode的得分时,作者使用encode阶段的隐藏层变量{h_1,…,h_T}来表示源输入序列{x_1,…,x_T}。这样做的好处是:隐藏层变量不仅包含输入的内容信息,而且还包含输入的位置信息,而且copy-mode中位置信息是非常重要的。

State Update

状态更新为本文第一张图中的右下部分,为了方便阅读,这里将该部分截图如下:

我们知道,decode阶段的状态更新s_t=f(y_{t-1},s_{t-1},c_t),受到上一时刻的输出y_{t-1},上一时刻的状态s_{t-1},当前时刻的编码向量c_t三个值的作用,作者修改的是y_{t-1}部分,不仅使用了t-1时刻的预测输出的emb向量,而且在该向量后面拼接了该预测输出在encode阶段的编码信息。具体编码信息如下图所示:

从表达式中可以看到,该编码信息类似于attention操作,区别在于计算注意力信息时,只有当上一个时刻的输出在 source 中出现的时候,对应的系数才有值。

for example:
在这里插入图片描述
由于encoder 输出的隐状态中包含了位置信息,对于 X 集合中出现的字/词来说信息流动便可以简单的看做一种『右移』操作。
在这里插入图片描述

参考:NLP算法之CopyNet 学习笔记

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值