最近在阅读论文《Attention is all you need》的时候了解到了这个Seq2Seq模型,其最基本的原理及其思想就是RNN(循环神经网络的)的一个最重要的变种:N vs M,这种结构也叫Encoder-Decoder模型。原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。

 

举一个很简单的翻译例子:

        现在我要翻译一句话,我输入为“我很久都没有看到过你了”,一共为N=11个字,翻译为英文是:“I have not seen you for a long time”,一共M=9个单词,N 和 M不等。

 

为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:

 

 

浅谈Seq2Seq模型

 

得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。

 

拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

浅谈Seq2Seq模型

 

还有一种做法是将c当做每一步的输入:

浅谈Seq2Seq模型

 

由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛

 

其他方面的应用有:机器翻译、文本摘要、阅读理解、语音识别

 

 

 

 

 

相关文章:

  • 2021-04-20
  • 2021-05-05
  • 2021-07-16
  • 2021-04-11
  • 2021-09-25
  • 2021-01-20
  • 2019-11-10
猜你喜欢
  • 2021-04-29
  • 2021-12-08
  • 2021-09-15
  • 2021-05-15
  • 2021-07-14
相关资源
相似解决方案