论文略读 | Pointer Networks
终于还是要看看这篇论文的呀,吃饭之前看个七七八八吧。
文章2015年6月9日提交,最后修改版本到2017年1月2日了。
代码分析:
代码(搬运工):https://github.com/yujiakimoto/ptr-net
代码是包含了两个实体he
和she
,目的是找到she
最后在哪里。
目录结构:
encoder网络读取输入数据,为每一个input产生一个embedding vector。decoder跟输入做softmax求一个最大概率,输入上的softmaxed attention weights用做一个概率pointer指向输入序列。
训练阶段,将答案作为labelled pointers
。Decoder的初始输入时一个特殊字符,之后是它实际pointer的输入数据。
参考(解释的很清楚了):https://lianhaimiao.github.io/2018/08/21/Pointer-Network-的一些理解/
1.摘要
提出了一种新的神经网络结构来学习输出序列的条件概率,其中元素是与输入序列中的位置相对应的离散标记。(就是输入内容和位置相关?)这些问题不能通过Seq2Seq和神经图灵机等方法来解决,因为输出的类别和输入的长度相对应,是一个可变参数。
与先前的注意力机制不同之处在于,它不是在解码步骤中使用注意力将编码器的隐藏单元混合到上下文向量,而是使用注意力作为指针来选择输入序列的成员作为输出。
本文提出的这种架构称为Ptr-Net
,并展示了Ptr-Nets可用于学习三个具有挑战性的几何问题的近似解决方案 - 找到平面凸包,计算Delaunay三角剖分和平面旅行推销员问题 - 仅使用训练样例。
Ptr-Nets不仅改善了seq2seq+input attention模型,还输出可变长。我们证明了学习模型的概括超出了他们训练的最大长度。
贡献:
- 本文提出
Ptr-Net
网络架构,通过使用softmax概率分布作为指针来处理可变长字典问题。以往结构输出是定长的,对于输出依赖于输入的问题无法处理。本文通过注意力得到指向输入的指针来解决这个问题。 - 将该结构用于集合中三个
non-trivial
问题。 - 学习了具有竞争力的小规模(n≤50)TSP近似求解器。我们的结果表明纯粹的数据驱动方法可以学习计算难以处理的问题的近似解。
2.文章结构
(1) Baseline
Seq2Seq和input_attention 模型作为baseline。
(2) Ptr-Nets介绍
模型:
Seq2Seq(a)中,左边蓝色编码,右边紫色解码,输出的维度是提前确定的,并且在训练和推断的时候是一致的。
Ptr-Net中,解码跟编码的输入做attention求argmax,最大相关度的作为下一个输出。然后将该输出和上一隐层共同计算。
上面那篇文章介绍的很清楚了,这里就不再赘述了。