Sequence-to-sequence (Seq2seq)
输入长度和输出长度是不相等的。
可用于:语音识别、语音合成、自然语言处理(特例化的模型更好)。
当然也可以将原本不是 Seq2seq 做一些转换,同样用它来处理。
例如👇 的可以转化成 👉 的。
Multi-label Classification
同一个东西可以属于多个 classes。
Object Detection 也可。
Seq2seq 于 2014 年提出。
简化版本 👉
先是一个 Self-attention。
然后一波 FC。
更加复杂的版本 👉
一个是做个了 residual connection。(作业 3 里面有用到)
这里用 Layer Norm 作为 Normalization。
与 Batch Normalization 不同,这里是计算一个 sequence 而不是多个 sequence 的同一个 dimension 的 mean 和 standard deviation。
右侧的 FC 是左侧的延续
注意到原版的 Transformer 还有一个 Positional Encoding 的模块,之前有介绍过。
然后这里有提到 Transformer 的 Encoder 架构和 BERT 是一样的。
为什么这么设计?这个设计不一定是最好的,这里提供了一些别的设计 👉
为什么不先做 Normalization 再做 Residual ?
为什么不用 Batch Normalization?
通过更换顺序达变得更优?
a 为 Transformer,b 为更换顺序后。
分为两种
引入一个 Begin(special token)。将其作为第一个输入。由 Decoder 输出一个向量,包含其输出的最小单位。这个向量的每一个单位都由一个数值描述,对应最小单位的 distribution。然后输出对应数值最高的一个。