李宏毅《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最大的好处就是可以并行化处理。
李宏毅《Deep Learning》学习笔记 - transformer_第1张图片
相较于Seq2Seq Layer而言,可以直接使用Self-Attention Layer替代原先的RNN层,同时,可以引入并行化的作用。输入和输出保持不变。
李宏毅《Deep Learning》学习笔记 - transformer_第2张图片

Self-Attention

对每一个Input都做变换,生成q,k,v三种向量。然后,用q与每一个k做attention(所谓的attention,就是计算两个vector的相关性,或者相似度)。
李宏毅《Deep Learning》学习笔记 - transformer_第3张图片
attention有多种计算方法,下面使用的是scaled dot-product attention。
李宏毅《Deep Learning》学习笔记 - transformer_第4张图片
接着,将所有的attention value都做soft-max
李宏毅《Deep Learning》学习笔记 - transformer_第5张图片
将经过soft-max的值,与每一个v相乘,求和,求得 b 1 b^1 b1
李宏毅《Deep Learning》学习笔记 - transformer_第6张图片
对于 b 2 b^2 b2的计算方法,也是类似
李宏毅《Deep Learning》学习笔记 - transformer_第7张图片
李宏毅《Deep Learning》学习笔记 - transformer_第8张图片
下面来看看如何使用矩阵计算来做并行计算。
将输入的 x 1 , x 2 , x 3 , x 4 x^1,x^2,x^3,x^4 x1,x2,x3,x4做变换以后,变成 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4。将 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4作为矩阵的每一列,组成一个 I I I,再分别乘以 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv,得到想相应的 Q , K , V Q,K,V Q,K,V。每一列就是前面介绍的 q i , k i , v i q^i,k^i,v^i qi,ki,vi
李宏毅《Deep Learning》学习笔记 - transformer_第9张图片
再看一下计算 α ^ \hat{\alpha} α^ b b b的过程。
李宏毅《Deep Learning》学习笔记 - transformer_第10张图片
李宏毅《Deep Learning》学习笔记 - transformer_第11张图片
李宏毅《Deep Learning》学习笔记 - transformer_第12张图片
最后,我们再回顾一下,整个self-attention的计算过程。
李宏毅《Deep Learning》学习笔记 - transformer_第13张图片

Multi-head Self-Attention

李宏毅《Deep Learning》学习笔记 - transformer_第14张图片
李宏毅《Deep Learning》学习笔记 - transformer_第15张图片
李宏毅《Deep Learning》学习笔记 - transformer_第16张图片

Positional Encoding

李宏毅《Deep Learning》学习笔记 - transformer_第17张图片
李宏毅《Deep Learning》学习笔记 - transformer_第18张图片

Seq2Seq with Attention

将原先的RNN层,用self-attention layer代替,就好了。
李宏毅《Deep Learning》学习笔记 - transformer_第19张图片

架构分析

下面是Transformer的完整架构,包括Encoder和Decoder。
李宏毅《Deep Learning》学习笔记 - transformer_第20张图片
下面是对架构中每个组成部分的详细介绍。
其中,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。
李宏毅《Deep Learning》学习笔记 - transformer_第21张图片

论文实验

李宏毅《Deep Learning》学习笔记 - transformer_第22张图片
李宏毅《Deep Learning》学习笔记 - transformer_第23张图片
李宏毅《Deep Learning》学习笔记 - transformer_第24张图片

其他应用

李宏毅《Deep Learning》学习笔记 - transformer_第25张图片
李宏毅《Deep Learning》学习笔记 - transformer_第26张图片
李宏毅《Deep Learning》学习笔记 - transformer_第27张图片

你可能感兴趣的:(Deep,Learning,学习笔记)