NLP学习—14.Pointer Generator Network(指针)及代码实现

一、为什么使用Pointer Network?

  传统的seq2seq模型是无法解决输出序列的词汇表会随着输入序列长度的改变而改变的问题的(解空间固定)。Pointer Network可以通过给输入序列的元素予一个指针,从而使得解空间不固定,可以解决OOV问题。总结来说,传统的seq2seq模型会要求有一个固定空间的大小,如果我们从不同两者之间做维度的切换(解空间发生变化时),就会出现OOV问题。
在这里插入图片描述
C o n v e x   H u l l Convex \ Hull Convex Hull
如寻找凸包等。因为对于这类问题,输出往往是输入集合的子集。基于这种特点,作者考虑能不能找到一种结构类似编程语言中的指针,每个指针对应输入序列的一个元素, 从而我们可以直接操作输入序列而不需要特意设定输出词汇表 。
  在NLG场景,当我们面对不同的输入维度时,我们利用固定词表或者原来的解空间不足够解决问题,我们可以利用Pointer Network来指出是原来的哪些输入做的映射。

二、Pointer Network的结构

  传统的Attention结构为:
在这里插入图片描述
其中 e j e_j ej是encoder的隐状态,而 d i d_i di是decoder的隐状态, v , W 1 , W 2 v,W_1,W_2 v,W1,W2都是可学习的参数
在这里插入图片描述
由传统Attention公式可以得到,以Decoder层的第一个隐状态(标的物)为例,对于Encoder层的隐状态都有一个权重 a j 1 a_j^1 aj1,指针指向权重最大的点即会把权重最大的点作为当前的输出,可以将这个输出作为Decoder中下一个神经元的输入,这就是为Pointer Network。
在这里插入图片描述
  在Decoder层(LSTM/RNN)中,会将当前的输出作为下一层的输入,能够保证模型学到序列的特征,同时,又能够保证输出是来自于全集的。Pointer Network网络解决:无论维度有多大,我都能够解决你的问题,因为根本没有建立词表,而利用attention的思想在你的网络里来指一个输入(基于attention在输入中选择一个概率最大的词),假设输入是10000个,就可以指这10000个中之一的词。

1.Pointer Network网络如何解决OOV问题

  假设传统的seq2seq模型,在之前的场景中,词典大小为50维,如果来到一个新的场景,输入的词典大小为10000维,那么在softmax中剩余的9500个词都是OOV。
  假设使用的是Pointer Network网络,输入时10000维,每次只需要在输入中找就可以,不再建立词典,也不需要做softmax从而映射到OOV。
  总结来说,传统seq2seq模型是从词表里面挑,需要做softmax;而Pointer Network网络是从输入中挑,不需要做softmax。

三、如何通过结合Pointer Network处理语言生成?

   上面已经介绍了Pointer Network ,那么如何通过结合Pointer Network处理语言生成呢?Language Model是自由,灵活,不可控;Pointer Net 是相对可控,信息来源于输入的信息范围;Pointer Net是天生的复制粘贴利器,这是一种抽取的方式。抽取式比较死板,所以,我们可以利用抽取与language Model结合到一起得到更好的生成的网络。
  下面通过《Get To The Point: Summarization with Pointer-Generator Networks》这篇文章来学习如何通过结合Pointer Network处理语言生成的。
  传统的seq2seq+Attention网络结构如下:
在这里插入图片描述
B a s e l i n e   s e q 2 s e q + A t t e n t i o n Baseline \ seq2seq+Attention Baseline seq2seq+Attention
Decoder层的输出为词表大小的维度,输出为经softmax后概率最大的词。
  下面综合Pointer Network与language generation Model

  • language generation Model
    生成时会有Context Vector,然后将Context Vector投影到Vocabulary distribution上面去
  • Pointer Network
    在上面的Pointer Network中,我们选取的是attention weight的最大值对应的输入作为输出;在这篇论文中,我们选取的是attention distribution。

在这里插入图片描述
综合Pointer Network与language generation Model的关键是将Vocabulary distribution与attention distribution进行加权平均,权重分别为 1 − p g e n 与 p g e n 1-p_{gen}与p_{gen} 1pgen

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值