Pointer Network

简介

点网络及应用

一个经典问题:从点集中选出部分点,连线围起所有点。

这个问题能不能用神经网络来解?

这个问题看似挺无聊的,只是解决了一个有解的问题,但可以应用于一些意想不到的地方,核心思想是,从所有点中选择部分点。

细节

 

Pointer Network

感觉不像nn擅长的,好像并不存在几个点组合的固定模式,满足条件,换句话说,过去的数据似乎无法对任意点建模。但其实,换个角度,目标点集的模式是有的,比如,它们都位于点的外围,它们点于点之间的关系满足“”围起来“”的条件,所以,应该可以用nn来解。

 

Pointer Network

很快想到seq2seq方法,输入点序列,生成点序列。

但感觉又不行,点之间似乎没有时间序列的关系。但其实真正的问题在于我们想要输入点任意,但decoder需要固定的输出维度。那么怎么做呢?

Pointer Network

 

我们需要任意输入任意输出,于是,论文中给出了上图的解法。直接把原来attention部分的输出作为答案的分布。而且居然也work。其中z是decoder的rnn hidden layer的输出,每次个time step不同的z和所有的h一起计算出不同的attention 分布,这些值作为label的distribution

应用

开头说了,核心思想是,从所有点中选取部分点。

可以应用到如下神奇的地方。

  • 机器翻译中,我们有些词想用原词,不想翻译,直接seq2seq很难train出来。
  • 做summarization——所谓summarization某种意义上是从一堆词中选出关键几个。这一节介绍了一种在summarization中加入pointer network叠加概率的方法。

相关文章: