论文链接Sequence to Sequence Learning with Neural Networks

这是介绍Seq2Seq系列的第二篇文章,主要介绍Seq2Seq的基本模型。与第一篇论文Encoder-Decoder之间具有很强的连续性,内容较少。在这篇论文中,作者将Seq2Seq模型用于英译法的翻译任务中。
模型
Seq2Seq的基础是Encoder和Decoder模型,同样地,Seq2Seq也有Encoder和Decoder模块。
同样地,作者先贴出了RNN的计算公式:

inputs:(x1,...,xT)

outputs:(y1,...,yT)

hiddenstates:ht=sigm(Whxxt+Whhht1)

yt=Wyhht

实际上,在作者的模型中使用的是LSTM,因为LSTM在处理长序列的时候没有普通的RNN中存在的梯度消失和梯度爆炸的问题。更加适合句子翻译中可能遇到的长句子。
模型图如下:
Seq2Seq系列(二):Sequence to Sequence
图中的LSTM单元应该分成两块,以EOS为输入,W为输出的LSTM单元左侧的LSTM单元是Encoder部分按时序展开的,其右侧的单元(包括它本身)是Decoder部分按时间顺序展开的。在实现上,Encoder和Decoder可以是同一个RNN,但是通常情况下,Encoder和Decoder是不同的RNN(它们的功能不同)。
{A,B,C}是一个倒置的英文句子(原句子为C,B,A),因为论文中说输入的句子倒置的话要比不倒置的效果要好,但是作者也不知道为什么会这样,只是提出了一些观点。
当原文按单词依次逐个输入Encoder中后,最后输入对应的隐层状态(单词C对应的隐层状态)会被认为编码了整个原文,而作为Decoder的初始化隐层状态。
字符<EOS>(end of sentence)类似于<UNK>(unknown),是加入词表(vocabulary)中的特殊字符。意味着句子的结束,在Decoder端的输出,若取值概率最大的是<EOS>着意味着Decoder结束(译文结束)。同时,它还有一个功能就是Decoder的初始化输入。在Decoder部分,第一个输出是由初始化隐层状态和初始化输入决定的。
Decoder部分使用的是常规的LSTM(或者是RNN):
除了初始化时刻外,每一时刻的输出仅有 本时刻的输入(即上一时刻的输出),以及当前的隐层状态决定。

与Encoder-Decoder模型相区别的是,Seq2Seq的Encoder编码的向量只是作为Decoder的初始化隐层状态,而在Encoder-Decoder模型中,Encoder编码的向量会作为Decoder每一时刻的额外的输入。
本文完

相关文章:

  • 2021-07-17
  • 2022-01-21
  • 2021-08-27
  • 2021-06-10
  • 2019-11-17
  • 2021-05-14
  • 2021-11-25
  • 2021-06-10
猜你喜欢
  • 2021-08-24
  • 2021-08-05
  • 2021-06-26
  • 2021-10-16
  • 2021-11-20
  • 2021-09-10
  • 2021-08-17
相关资源
相似解决方案