论文链接Sequence to Sequence Learning with Neural Networks
这是介绍Seq2Seq系列的第二篇文章,主要介绍Seq2Seq的基本模型。与第一篇论文Encoder-Decoder之间具有很强的连续性,内容较少。在这篇论文中,作者将Seq2Seq模型用于英译法的翻译任务中。
模型
Seq2Seq的基础是Encoder和Decoder模型,同样地,Seq2Seq也有Encoder和Decoder模块。
同样地,作者先贴出了RNN的计算公式:
实际上,在作者的模型中使用的是LSTM,因为LSTM在处理长序列的时候没有普通的RNN中存在的梯度消失和梯度爆炸的问题。更加适合句子翻译中可能遇到的长句子。
模型图如下:
图中的LSTM单元应该分成两块,以EOS为输入,W为输出的LSTM单元左侧的LSTM单元是Encoder部分按时序展开的,其右侧的单元(包括它本身)是Decoder部分按时间顺序展开的。在实现上,Encoder和Decoder可以是同一个RNN,但是通常情况下,Encoder和Decoder是不同的RNN(它们的功能不同)。
{A,B,C}是一个倒置的英文句子(原句子为C,B,A),因为论文中说输入的句子倒置的话要比不倒置的效果要好,但是作者也不知道为什么会这样,只是提出了一些观点。
当原文按单词依次逐个输入Encoder中后,最后输入对应的隐层状态(单词C对应的隐层状态)会被认为编码了整个原文,而作为Decoder的初始化隐层状态。
字符
Decoder部分使用的是常规的LSTM(或者是RNN):
除了初始化时刻外,每一时刻的输出仅有 本时刻的输入(即上一时刻的输出),以及当前的隐层状态决定。
与Encoder-Decoder模型相区别的是,Seq2Seq的Encoder编码的向量只是作为Decoder的初始化隐层状态,而在Encoder-Decoder模型中,Encoder编码的向量会作为Decoder每一时刻的额外的输入。
本文完