所解决的问题?
提出了一个网络结构,学习输入序列的位置关系。
背景
学习输入序列的位置关系这一类问题可以被看做是seq2seq
问题,输出序列长度与输入序列长度一致,并且是一个可变变量。可以用来处理变量排序或者组合优化问题。
这篇文章是2017
年发表的,在这之前,对于循环神经网络这一类算法,主要还是基于先验固定了输出的字典,也就是隐藏层输出单元的预测大小并不可知。
所采用的方法?
与之前采用的attention
用于编码encoder
输入的隐藏状态不同,作者提出的Ptr-Net
是基于Attention
去选择的。
论文中核心的网络结构就在decode
r部分。主要有两点:
- 与以往的
seq2seq
模型不同,decoder
每一个时刻的输入其实上一个时刻被选中的节点输入信息,是最原始的坐标信息编码之后进入到encoder
中的输入信息。 - 在计算
decoder
的输出的时候,采用的attention
的计算如下:输入是[bs, hidden_dim, seq_len]
的context
和维度为[bs, hidden_dim]
的input
。这里的input
就是decoder
的输入和隐藏层经过LSTM
得到的输出。
context
经过一个一维度卷积操作,也相当于经过一个权重矩阵W 1 W_{1}W1得到[bs, hidden_dim, seq_len]
维度不变的矩阵。input
经过一个权重矩阵W 2 W_{2}W2再扩展维度到[bs, hidden_dim, seq_len]
。之后这两个矩阵相加再与一个[bs, 1, hidden_dim]
的可学习的变量V VV相乘。得到[bs, seq]
维度的attention
矩阵。对应到原文公式就是:
过一层softmax得到attention矩阵
这个[bs, seq]
维度的attention
矩阵再与维度为[bs, hidden_dim, seq_len]
的context
矩阵相乘得到隐藏层的输出[bs, hidden_dim]
,作为LSTM
的下一个时刻的hidden state
。