背景
编码器-解码器 的结构效果比较好。这种结构,把输入序列编码成为一个 固定长度 的向量表示。这样做对于 较短的输入序列而言,能够学习出对应合理的向量表示。但是,输入序列非常长时,模型难以学到合理的向量表示。
1. 长输入序列带来的问题
传统使用 编码器-解码器 的 RNN 模型先用一些 LSTM 单元来对输入序列进行学习,编码为固定长度的向量表示;然后再用一些 LSTM 单元来读取这种向量表示并解码为输出序列。
存在的一个问题在于:输入序列不论长短都会被编码成一个固定长度的向量表示,而解码则受限于这个固定长度的向量表示。
上面的问题限制了模型的性能,尤其是输入序列比较长,模型的性能变得很差。
“一个潜在的问题是,采用编码器-解码器结构的神经网络模型需要将输入序列中的必要信息表示为一个固定长度的向量,而当输入序列很长,难以保留全部的必要信息(因为信息太多),尤其是当输入序列的长度比训练数据集中的更长时。”
2. 使用 Attention 机制
基本思想就是,打破了 传统编码器-解码器结构 在编解码 时都依赖于内部一个固定长度向量的限制。
Attention 的实现是 通过保留 LSTM 编码器 对输入蓄力的中间输出结果,然后训练一个模型来对这些输入进行选择性的学习并且在模型输出时 将 输出序列与之进行关联。