Pointer Networks

Pointer Networks_第1张图片

 

 

 原文链接:https://arxiv.org/abs/1506.03134

 

Motivation

现有的序列化预测通常使用RNN。RNN的问题在于输出数量固定,对于答案长度动态变化的问题并不适用。

作者以凸包问题(Convex Hull)为例。给定一定数量的点,希望找到一系列点组成凸多边形,使得任一点或者在多边形内部,或者为多边形顶点。

Pointer Networks_第2张图片

 

 

 

显然对于固定总数的点,其凸包顶点数量可变,采用seq2seq的序列模型难以实现比较好的效果。

 

Pointer Networks_第3张图片

 

 

因此,作者提出了指针网络(Pointer Networks),以解决答案长度可变的问题,通过生成由输入到输出的答案指针,实现答案从输入的拷贝。 

 

Review:seq2seq Model

RNN序列模型如图所示。输入一系列序列,在模型前半部分进行编码,后半部分进行解码。解码部分的每一步依据模型参数、输入序列、此前所有步的输出生成当前步的输出。

Pointer Networks_第4张图片

在给定的输入序列P和RNN模型参数θ的情况下,模型预测一系列答案CP(C1 ~ Cm(P))的概率可以用以下的条件概率乘积表示:

Pointer Networks_第5张图片

 

 其中模型参数θ可以通过最大化正确答案概率(对数和)来调整:

Pointer Networks_第6张图片

 

 

Review:Attention

注意力机制如图所示。当前步的输出通过对每一个输入(经过encode编码)加权求和产生。

Pointer Networks_第7张图片

 

 

对于第i步的输出,首先对于每一步输入编码计算权重uji,将该步编码ej与第i步解码di分别进行线性变换并相加,通过tanh激活并乘以参数v,最后得到uji。

将uji经过softmax得到aji,作为最终权重。以aji作为权重对此前每一步的编码ej进行加权平均,得到第i步的输出。

Pointer Networks_第8张图片

 

 

Pointer Networks

作者提出指针网络,通过将输入直接拷贝作为输出,实现对可变长度答案的预测。

首先使用与Attention同样的方法,得到每一步的权重。

 

 然后直接将权重最大的输入项作为输出,即将softmax后的权重(Attention中的aji作为预测为第j个输入的概率。

 

直观来讲,就是将Attention中的权重作为指针,将输入指向输出,生成针对输入序列的概率分布。 

Pointer Networks_第9张图片

 

你可能感兴趣的:(Pointer Networks)