前言
当时老师要求我做 transformer 和 self-attention 的 ppt,结果当时在训练 ACM 没大有时间,就弄了个质量不高的,不出意外的被喷了。。。现在回头看看当时做的整体没有大问题,但是由于知识没有连贯起来导致有些地方没有提到,也没有形成一个比较完整的架构。
Transformer 能做的任务是 seq2seq(即输出的长度不一定是输入的长度,而 self-attention 中输出长度等于输入长度),具体包含 encoder 和 decoder 两个部分
encoder
总的来说,包含 \(N\) 层,每层由一个 self-attention 和 一个 FC 组成:
在 encoder 中,self-attention 不是简单的得到 \(q,k,v\),相乘并 softmax 得到 \(\alpha'\),再和 \(v\) 做 weighted-sum,而是结合了 residual 和 normalization 的过程(简记为 add&norm)
具体地:
即:每一个向量先做 self-attention,再和原向量相加,这就是 residual 的过程,做 layer normalization(与 batch normalization 不同,BN 是对不同向量的同一个 feature 做 normalization,即“横着”,LN 是对一个向量的所有 feature 归一化,“竖着”),得到输出,再扔到 FC 中,做完 normalization 得到最终输出。这就是 "add&norm" 的含义