Pointer Networks
原文链接:https://arxiv.org/abs/1506.03134
Motivation
现有的序列化预测通常使用RNN。RNN的问题在于输出数量固定,对于答案长度动态变化的问题并不适用。
作者以凸包问题(Convex Hull)为例。给定一定数量的点,希望找到一系列点组成凸多边形,使得任一点或者在多边形内部,或者为多边形顶点。
显然对于固定总数的点,其凸包顶点数量可变,采用seq2seq的序列模型难以实现比较好的效果。
因此,作者提出了指针网络(Pointer Networks),以解决答案长度可变的问题,通过生成由输入到输出的答案指针,实现答案从输入的拷贝。
Review:seq2seq Model
RNN序列模型如图所示。输入一系列序列,在模型前半部分进行编码,后半部分进行解码。解码部分的每一步依据模型参数、输入序列、此前所有步的输出生成当前步的输出。
在给定的输入序列P和RNN模型参数θ的情况下,模型预测一系列答案CP(C1 ~ Cm(P))的概率可以用以下的条件概率乘积表示:
其中模型参数θ可以通过最大化正确答案概率(对数和)来调整:
Review:Attention
注意力机制如图所示。当前步的输出通过对每一个输入(经过encode编码)加权求和产生。
对于第i步的输出,首先对于每一步输入编码计算权重uji,将该步编码ej与第i步解码di分别进行线性变换并相加,通过tanh激活并乘以参数v,最后得到uji。
将uji经过softmax得到aji,作为最终权重。以aji作为权重对此前每一步的编码ej进行加权平均,得到第i步的输出。
Pointer Networks
作者提出指针网络,通过将输入直接拷贝作为输出,实现对可变长度答案的预测。
首先使用与Attention同样的方法,得到每一步的权重。
然后直接将权重最大的输入项作为输出,即将softmax后的权重(Attention中的aji作为预测为第j个输入的概率。
直观来讲,就是将Attention中的权重作为指针,将输入指向输出,生成针对输入序列的概率分布。