李宏毅《Deep Learning》学习笔记 - transformer

学习资料

视频:https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61&t=1s
课件:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2019/Lecture/Transformer%20(v5).pdf

Transformer

Transformer是Seq2Seq with Self-Attention
BERT是unsupervised learning版本的Transformer

Seq2Seq Model的问题

Seq2Seq Model最大的问题就是慢,没法并行化。下图左侧是Seq2Seq的工作原理,右侧是使用CNN来做处理的过程。使用CNN最大的好处就是可以并行化处理。
在这里插入图片描述
相较于Seq2Seq Layer而言,可以直接使用Self-Attention Layer替代原先的RNN层,同时,可以引入并行化的作用。输入和输出保持不变。
在这里插入图片描述

Self-Attention

对每一个Input都做变换,生成q,k,v三种向量。然后,用q与每一个k做attention(所谓的attention,就是计算两个vector的相关性,或者相似度)。
在这里插入图片描述
attention有多种计算方法,下面使用的是scaled dot-product attention。
在这里插入图片描述
接着,将所有的attention value都做soft-max
在这里插入图片描述
将经过soft-max的值,与每一个v相乘,求和,求得 b 1 b^1
在这里插入图片描述
对于 b 2 b^2 的计算方法,也是类似
在这里插入图片描述
在这里插入图片描述
下面来看看如何使用矩阵计算来做并行计算。
将输入的 x 1 , x 2 , x 3 , x 4 x^1,x^2,x^3,x^4 做变换以后,变成 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 。将 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 作为矩阵的每一列,组成一个 I I ,再分别乘以 W q , W k , W v W^q, W^k, W^v ,得到想相应的 Q , K , V Q,K,V 。每一列就是前面介绍的 q i , k i , v i q^i,k^i,v^i
在这里插入图片描述
再看一下计算 α ^ \hat{\alpha} b b 的过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,我们再回顾一下,整个self-attention的计算过程。
在这里插入图片描述

Multi-head Self-Attention

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Positional Encoding

在这里插入图片描述
在这里插入图片描述

Seq2Seq with Attention

将原先的RNN层,用self-attention layer代替,就好了。
在这里插入图片描述

架构分析

下面是Transformer的完整架构,包括Encoder和Decoder。
在这里插入图片描述
下面是对架构中每个组成部分的详细介绍。
其中,Multi-Head Attention就是上面介绍的self-attention layer。
Add & Norn是下图左上黄色区域的解释。Add是将输入a与输出b相加。Norm是指Layer Norm。
这里将Layer Norm与Batch Norm进行对比,其中,Layer Norm是将一个样本中每个维度的值进行normaliztion,而Batch Norm是将一个batch中同一个dim的值做normalization。
在这里插入图片描述

论文实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述