Pointer Networks
encoder-decoder这些方法仍然需要预先确定输出字典的大小。由于这个限制,我们不能直接将这个框架应用于输出字典的大小取决于输入序列的长度的组合问题。在本文中,我们通过重新利用[5]的注意机制来创建指向输入元素的指针来解决这个限制。
2.1 Sequence-to-Sequence Model
给定一对训练对,(P, CP),序列到序列模型计算条件概率 p ( C P ∣ P ; θ ) p(\mathcal C^{\mathcal P}|\mathcal P;\theta) p(CP∣P;θ)用参数模型(RNN)估计概率链规则项
通过最大化训练集的条件概率来学习模型的参数,即
这里的总和是训练样本的数量。
我们使用长短时记忆对 p θ ( C i ∣ C 1 , . . . , C i − 1 , P ; θ ) p_\theta(C_i|C_1,...,C_{i-1},\mathcal P;\theta) pθ(Ci∣C1,...,Ci−1,P;θ)进行建模。
我们使用两个独立的rnn(一个用于对向量Pj的序列进行编码,另一个用于生成或解码输出符号Ci)。我们称前一个RNN为编码器(encoder),后一个为解码器(decoder)。
在这个序列到序列模型中,所有符号Ci的输出字典大小都是固定的,并且等于n,因为输出是从输入中选择的。因此,我们需要为每个n训练一个单独的模型。这使我们无法学习具有依赖于输入序列长度的输出字典的问题的解决方案。
2.2 Content Based Input Attention
普通的序列-序列模型使用输入序列P末端的识别RNN的固定维状态生成整个输出序列CP。即只用到了encoder输入序列最后时刻的输出。这就限制了可以通过生成模型的信息量和计算量。[5]的注意模型通过在编码器和解码器的RNNs上增加一个额外的神经网络来改善这个问题,该神经网络在编码器的整个序列上使用了一种注意机制。
我们将编码器和解码器的隐藏状态分别定义为(e1,…,en)和(d1,…,dm§)。 对于LSTM RNNs,我们使用的是输出门按组件乘上细胞激活后的状态。我们计算每个输出时刻i的注意力向量如下:
其中softmax将向量ui(长度为n)规整为输入上的“注意”掩码,v、W1、W2是模型的可学习参数。在我们所有的实验中,我们在编码器和解码器(通常是512)使用相同的隐藏维度,所以v是一个向量W1、W2是方阵。最后,di‘和di被连接起来,用作隐藏状态,我们从中进行预测,并将其反馈到递归模型的下一个时间步骤。
该模型在凸包问题上的性能明显优于序列-序列模型,但不适用于输出字典大小依赖于输入的问题。
2.3 Ptr-Net
现在,我们描述了注意力模型的一个非常简单的修改,它允许我们应用该方法来解决组合优化问题,其中输出字典的大小取决于输入序列中元素的数量。第2.1节的序列到序列模型使用一个固定大小的输出字典上的softmax分布来计算 p ( C i ∣ C 1 , . . . , C i − 1 , P ) p(C_i|C_1,...,C_{i-1},\mathcal P) p(Ci∣C1,...,Ci−1,P)因此,它不能用于输出字典的大小等于输入序列的长度的问题。为了解决这个问题,我们对 p ( C i ∣ C 1 , . . . , C i − 1 , P ) p(C_i|C_1,...,C_{i-1},\mathcal P) p(Ci∣C1,...,Ci−1,P)使用的注意机制方程3如下:
图片转存中…(img-7XAcX8sB-1594193076323)]
其中softmax将向量ui(长度为n)规范化为输入字典上的输出分布,v、W1和W2是输出模型的可学习参数。这里,我们不混合编码器状态ej来将额外的信息传播到解码器,而是使用uij作为指向输入元素的指针。以类似的方式,为了将Ci-1作为等式1的条件,我们只需复制相应的PCi-1作为输入。我们的方法和注意力模型都可以看作是[6,5,2]中提出的基于内容的注意力机制的应用。