Seq2Seq架构

Seq2Seq简介

全称为"Sequence to Sequence",即序列到序列架构,顾名思义:从一个文本序列到一个文本序列,通常用于机器翻译、文本摘要任务。

Seq2Seq架构

下面以机器翻译为例子,讲解Seq2Seq架构。

我们看到机器翻译任务中的Seq2Seq模型是由编码器(Encoder)和解码器(Decoder)组成的,Encoder将输入的法语序列编码成context向量,然后Decoder根据context解码出英文序列,从而完成机器翻译任务。Encoder和Decoder一般是采用循环神经网络RNN。

Seq2Seq细节

那么对于Encoder和Decoder的RNN是如何工作的呢?

Encoder

  1. 输入:假设序列输入是一个句子,这个句子由n个词表示: \(sentence=\{w_1, w_2,...,w_n\}\)
  2. 输入:RNN首先将句子中的每一个词映射成为一个向量,所以可以得到一个向量序列,这个过程叫做word embedding\(X=\{x_1, x_2, ..., x_n\}\)
  3. 输出:RNN在时间步t上输出为\(h_t\)的隐藏向量hidden state。

下图为1-2过程,即由句子序列到向量序列的过程

下图为在时间1、时间2、时间3时输出隐藏向量的过程:

Decoder

Decoder根据Encoder的最后一个context向量逐步解码出英文输出。

下图为时间4-7,Decoder的执行过程:

Seq2Seq代码实现