Pointer-network

转载自:https://zhuanlan.zhihu.com/p/30860157

Pointer Networks 是发表在机器学习顶级会议NIPS 2015上的一篇文章,其作者分别来自Google Brain和UC Berkeley。

Pointer Networks 也是一种seq2seq模型。他在attention mechanism的基础上做了改进,克服了seq2seq模型中“输出严重依赖输入”的问题。

什么是“输出严重依赖输入”呢?

论文里举了个例子,给定一些二维空间中[0,1]*[1,0]范围内的点,求这些点的凸包(convex hull)。凸包是凸优化里的重要概念,含义如下图所示,通俗来讲,即找到几个点能把所有点“包”起来。比如,模型的输入是序列{P1,P2,...,P7},输出序列是凸包{P2,P4,P3,P5,P6,P7,P2}。到这里,“输出严重依赖输入”的意思也就明了了,即输出{P2,P4,P3,P5,P6,P7,P2}是从输入序列{P1,P2,...,P7}中提取出来的。换个输入,如{P1,....,P1000},那么输出序列就是从{P1,....,P1000}里面选出来。用论文中的语言来描述,即{P1,P2,...,P7}和{P1,....,P1000}的凸包,输出分别依赖于输入的长度,两个问题求解的target class不一样,一个是7,另一个是1000。

Pointer Network在求凸包上的效果如何呢?

从Accuracy一栏可以看到,Ptr-net明显优于LSTM和LSTM+Attention。

image

为啥叫pointer network呢?

前面说到,对于凸包的求解,就是从输入序列{P1,....,P1000}中选点的过程。选点的方法就叫pointer,他不像attetion mechanism将输入信息通过encoder整合成context vector,而是将attention转化为一个pointer,来选择原来输入序列中的元素。

image

与attention的区别:如果你也了解attention的原理,可以看看pointer是如何修改attention的?如果不了解,这一部分就可以跳过了。

首先搬出attention mechanism的公式,前两个公式是整合encoder和decoder的隐式状态,学出来encoder、decoder隐式状态与当前输出的权重关系a,然后根据权重关系a和隐式状态e得到context vector用来预测下一个输出。

Pointer Net没有最后一个公式,即将权重关系a和隐式状态整合为context vector,而是直接进行通过softmax,指向输入序列选择中最有可能是输出的元素。

2015年以来,Pointer Net都有哪些用法,在某特定领域,这些概念如何用来解决实际问题?

要使用好Ptr-net,就要理解Ptr-net的精髓吧。正如上面所提到的一样,从输入序列里“提取”一些元素来输出。所以,NLP领域有几种玩法:

文本摘要《Neural Summarization by Extracting Sentences and Words》

信息抽取 《End-to-End Information Extraction without Token-Level Supervision》

句子排序 《End-to-End Neural Sentence Ordering Using Pointer Network》

计算机编程 炉石传说的卡片自动编程《Latent predictor networks for code generation》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值