

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Sequence-to-Sequence 的工作原理
<a name="seq-2-seq-howitworks"></a>

通常，用于 sequence-to-sequence建模的神经网络由几层组成，包括：
+ 一个**嵌入层**。在此层中，输入矩阵是以稀疏的方式编码的输入标记 (例如，单热点编码)，映射到密集的特征层。这是必需的，因为与简单的 one-hot-encoded向量相比，高维特征向量更能编码有关特定标记（文字语料库）的信息。使用预训练的词向量（如[FastText](https://fasttext.cc/)或 [Gl](https://nlp.stanford.edu/projects/glove/) ove）初始化此嵌入层，或者随机初始化该嵌入层并在训练期间学习参数，这也是一种标准做法。
+ 一个**编码器层**。将输入标记映射到高维特征空间之后，序列会通过编码器层传递，从而将 (整个序列的) 输入嵌入层中的所有信息压缩为固定长度的特征向量。通常，编码器由 RNN 型网络组成，如长短期内存 (LSTM) 或门控循环单元 (GRU)。([ Colah 的博客](http://colah.github.io/posts/2015-08-Understanding-LSTMs/)非常详细地解释了 LSTM。) 
+ 一个**解码器层**。解码层采用此编码的特征向量，并生成标记的输出序列。此层通常也用 RNN 架构 (LSTM 和 GRU) 构建。

在给定源序列的情况下，对整个模型进行联合训练，使目标序列的概率最大化。该模型首先由 [Sutskever](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf) 等人在 2014 年提出。

**关注机制**。编码器-解码器框架的缺点是，由于固定长度编码的特征向量可以包含多少信息的限制，模型性能会随着源序列长度的增加而降低。为了解决此问题，2015 年 Bahdanau 等人提出了[关注机制](https://arxiv.org/pdf/1409.0473.pdf)。在关注机制中，解码器试图在编码器序列中查找最重要信息所在的位置，并使用该信息和以前解码的单词来预测序列中的下一个标记。

有关更多详细信息，请参阅 Luong 等人编写的白皮书[基于关注的神经机器翻译的有效方法](https://arxiv.org/abs/1508.04025)，该书解释并简化了各种关注机制的计算。此外，Wu 等人写作的白皮书 [Google 的神经机器翻译系统：弥合人与机器翻译的鸿沟](https://arxiv.org/abs/1609.08144)描述了 Google 机器翻译的架构，即在编码器和解码层之间使用跳过连接。