Pointer Net and CopyNet

关注微信公众号:NLP分享汇。【喜欢的扫波关注,每天都在更新自己之前的积累】

文章链接:https://mp.weixin.qq.com/s/BgRe6Y7Qvr9RylxlE_4eJw


01 - Pointer Net

在对话系统和问答等一些NLP任务中,代理(agents)有时需要直接引用用户消息。Oriol等人[1] 2015年提出的Pointer Net网络 (图1)解决了直接从输入句子复制token的问题。

  • Sequence-to-sequence【图1a】

    RNN(蓝色)对输入序列进行处理,产生一个代码向量,然后用概率链规则和另一个RNN生成输出序列(紫色)。问题的维度决定了输出维度,输出维度通过训练和推理保持不变。

  • Pointer Net【图1b】

    通过编码RNN将输入序列转换为编码(蓝色),然后将编码RNN前馈给生成网络(紫色)。生成网络在每个步骤中生成一个向量,通过输入调节基于内容的注意力过程。该注意机制产生一个softmax分布,其字典大小等于输入长度。

     

图片

                                                   图1 seq2seq & Pointer Net

 

传统的序列到序列模型用encoder-decoder结构映射源句子到目标句子。通常,这些模型首先利用编码器将源语句映射为隐藏状态向量,然后根据隐藏状态预测输出序列。序列预测是一步一步完成的,每一步都使用greedy search或beam search来预测一个token。整体序列到序列模型可以用以下概率模型来描述:

图片

图片

序列到序列模型包括vanilla模型和基于attention的模型。vanilla模型预测目标序列仅基于编码器的最后隐藏状态,并通过不同的解码器时间步长传递它。这种机制限制了解码器在每个解码阶段所接收的信息。基于attention的模型在每个解码步骤中考虑编码器的所有隐藏状态,并在利用它们时计算它们的重要性。解码器部分根据编码器隐藏状态di的加权和来预测token:

图片

图片

图片

图片

在每个解码步骤中,vanilla模型和基于注意力的sequence-to-sequence模型都预测在固定字典X = {x1,…,xn}上的分布,其中xi表示token,n表示训练语料中不同token的总数。但是,当我们从输入句子中copy单词时,就不需要这么大的字典了。相反,n等于输入序列中token的数量(包括重复的token),并且不是固定的,因为它会随着输入序列的长度而变化。Pointer Net对基于注意力的序列到序列模型做了一个简单的改变:它不是基于编码器隐藏状态(di)的加权和来预测token分布,而是直接使用归一化权值(αi)作为预测分布:

图片

其中αi是一组概率数字αi1,…,αij,表示输入序列token的概率分布。

显然,token预测问题(token prediction)现在转化为位置预测问题(position prediction),其中模型只需要预测输入序列中的一个位置。这种机制类似于指向目标的指针,因此得名“指针网络(Pointer Net)”。

 

02 - CopyNet

论文:Incorporating copying mechanism in sequence-to-sequence learning

文章链接:https://arxiv.org/pdf/1603.06393.pdf

 

一、我所理解的CopyNet

先来看一个例子:

 

一个对话系统,当你说出「NLP分享汇」这个名字的时候,回答中也会大概率重复这个名字,这不就很类似一种 copy 的思想吗?

 

但在实际应用程序中,仅仅从源消息复制是不够的。相反,在对话系统和QA等任务中,代理(agents)还需要有生成源句子之外的单词的能力。CopyNet是Gu等人[2] 2016(图2)提出将复制机制(copy mechanism)纳入传统的序列到序列模型中。模型在每个解码阶段决定是从源句子复制还是生成不在源句子中的新token。

 

图片

                                                                                                                       图2 CopyNet整体结构

 

CopyNet的编码器与传统的序列到序列模型相同,而解码器与传统的基于注意力的解码器有一些不同。在预测时间步长t的token时,模型结合了生成模式(generate-mode)和复制模式(copy-mode)的概率:

图片

其中t为时间步长。St是解码器隐藏状态,yt是被预测的token。ct和M分别表示编码器隐藏状态的加权和和编码器隐藏状态。g和c分别为生成模式和复制模式。

 

此外,虽然它仍然使用yt-1和加权注意向量ct来更新解码器的隐藏状态,但yt-1是唯一用其embedding和位置特定的隐藏状态进行编码的;特别之处,CopyNet结合了注意读(attentive read)和选择性读(selective read)从编码器隐藏状态捕获信息,其中选择性读与指针网络使用方法相同。与神经图灵机不同(Graves等,2014[3];Kurach et al., 2015[4]),CopyNet有一个基于位置的机制(location-based mechanism),使模型能够以更微妙的方式意识到训练数据中的一些具体细节。

【由于公示转载不出来,有些部分没显示,如果你想看完整内容,请点链接:https://mp.weixin.qq.com/s/BgRe6Y7Qvr9RylxlE_4eJw

 

图片   参考文献

[1] Oriol V, Meire F, Navdeep J (2015) Pointer networks. Advances in neural information processing systems 28:2692–2700

[2] Gu J, Lu Z, Li H, Li VO (2016) Incorporating copying mechanism in sequence-to-sequence learning.In: Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics(Volume 1: Long Papers),Association for Computational Linguistics, Berlin,Germany, pp 1631–1640, DOI 10.18653/v1/P16-1154, URL https://www.aclweb.org/anthology/P16-1154

[3] Graves A, Wayne G, Danihelka I (2014) Neural turing machines. arXiv preprint arXiv:14105401

[4] Kurach K, Andrychowicz M, Sutskever I (2015) Neural random-access machines. arXiv preprint arXiv:151106392

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值