Seq2Seq模型是一种编码器-解码器架构的网络,其基本框架如图2-2所示。它的输入/输出均为序列。
图2-2 编码器-解码器的基本框架
基于编码器-解码器架构的模型具有很好的灵活性。具体体现在:编码器模块用于处理模型的输入;解码器模块用于生成模型的输出,二者之间通过中间层(语义编码层)相连。从图2-2可知, x 1 、 x 2 、 x 3 先映射到语义编码层,语义编码层再映射到 y 1 、 y 2 、 y 3 。语义编码层是由固定长度的向量组成的,作为二者的中介进行相互翻译。因此,编码器-解码器架构有两个显著的特点。
1)不论输入和输出的序列长度是怎样的,中间语义编码层的向量长度是固定的。
2)在不同的任务中,编码器和解码器可以用不同的算法来实现(一般都是RNN)。
正因为编码器-解码器这种将模型的输入和输出分开处理的特点,故而天生就具有处理变长的输入和输出的属性。也正是因为该模型巨大的灵活性,导致该结构基本上成为如今处理翻译任务的一个基本范式,极大地促进了自然语言领域的技术发展。但Seq2Seq架构的发展也经历了一些波折,其中最值得一提的就是,人们对Seq2Seq模型应该选择什么样的基本模块是一个不断改变认知的过程,从最初的RNN、LSTM、GRU到CNN,再到如今红极一时的Transformer,Seq2Seq架构发挥出越来越强大的能力。