Sequence-to-sequence (Seq2seq)

输入长度和输出长度是不相等的。

可用于:语音识别、语音合成、自然语言处理(特例化的模型更好)。

当然也可以将原本不是 Seq2seq 做一些转换,同样用它来处理。

例如👇 的可以转化成 👉 的。

Screen Shot 2022-04-21 at 10.39.11 PM.png

Screen Shot 2022-04-21 at 10.40.16 PM.png

有人做了类似的事

Multi-label Classification

同一个东西可以属于多个 classes。

Screen Shot 2022-04-21 at 10.47.02 PM.png

Object Detection 也可

Seq2seq 于 2014 年提出

Encoder

简化版本 👉

先是一个 Self-attention。

然后一波 FC。

Screen Shot 2022-04-21 at 10.59.22 PM.png

更加复杂的版本 👉

一个是做个了 residual connection。(作业 3 里面有用到)

这里用 Layer Norm 作为 Normalization。

Batch Normalization 不同,这里是计算一个 sequence 而不是多个 sequence 的同一个 dimension 的 mean 和 standard deviation。

右侧的 FC 是左侧的延续

右侧的 FC 是左侧的延续

注意到原版的 Transformer 还有一个 Positional Encoding 的模块,之前有介绍过。

然后这里有提到 Transformer 的 Encoder 架构和 BERT 是一样的。

Screen Shot 2022-04-22 at 12.05.15 AM.png

为什么这么设计?这个设计不一定是最好的,这里提供了一些别的设计 👉

为什么不先做 Normalization 再做 Residual ?

2002.04745

为什么不用 Batch Normalization?

2003.07845

通过更换顺序达变得更优?

a 为 Transformer,b 为更换顺序后。

a 为 Transformer,b 为更换顺序后。

Decoder

分为两种

Autoregressive (AT)

引入一个 Begin(special token)。将其作为第一个输入。由 Decoder 输出一个向量,包含其输出的最小单位。这个向量的每一个单位都由一个数值描述,对应最小单位的 distribution。然后输出对应数值最高的一个。

Screen Shot 2022-04-22 at 4.18.28 PM.png