Seq2Seq

序列到序列学习,即 seq2seq(sequence to sequence)是 一个遵循 Encoder–Decoder 架构设计原则的模型。

顾名思义,该模型的输入是一个序列,输出也是一个序列。其中,编码器 Encoder 将一个可变长度的信号序列变为固定长度的向量表示,而解码器 Decoder 将这个固定长度的向量自动输出成变长的目标的信号序列。

具体到任务上, Seq2seq 通常在 NLP 中被广泛使用,利用 RNNs 作为编码器和解码器,于机器翻译等任务中。

seq2seq

如上图所示,上图给出了一个利用 RNNs 进行机器翻译的示例。该模型将英文句子 They are watching. 翻译成了法语 Ils regardent.

其中,<eos> 是序列结束词元(end of sentence),<bos>是序列开始词元(begin of sentence)。

Encoder

Decoder

Loss Function

Evaluation

Transfromer

Transformer

Transformer模型详解(图解最完整版) - 知乎 (zhihu.com)

用 Att 代替 RNN

位置编码

通过对自注意力机制的描述,我们可以有这样的直觉,self-attention 完成了和 RNN 一样的所谓“潜在向量”的生成任务。实际上这也是 Transformer 模型的其中一个亮点——把注意力机制用在编码器和解码器中。

但是我们也可以发现,注意力机制将序列的时间顺序关系给忽略掉了。因此,我们需要引入位置信息的概念。

Transformer模型详解(图解最完整版) - 知乎 (zhihu.com)
10.7. Transformer — 动手学深度学习 2.0.0 documentation (d2l.ai)
拆 Transformer 系列一:Encoder-Decoder 模型架构详解 - 知乎 (zhihu.com)
(pytorch进阶之路)四种Position Embedding的原理及实现-CSDN博客

BERT

参考

  1. 动手学习深度学习|D2L Discussion - Dive into Deep Learning
  2. seq2seq & Transformer - 李宏毅 - 台湾大学