李宏毅《Deep Learning》学习笔记 - transformer
学习资料
教学视频:https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61&t=1s
Transformer
Transformer基于Seq2Seq结合Self-Attention机制
Seq2Seq Model的问题
Seq2Seq模型的主要缺点在于其运算效率较低,并行处理能力不足。如图所示,在左侧部分展示了传统的 Seq2Seq 模型工作流程,在右侧部分则采用卷积神经网络(CNN)来进行数据处理过程。与传统的 Seq2Seq 方法相比,在实现并行化方面 CNN 显示出了显著的优势。

相比Seq2Seq层而言,在无需修改输入输出结构的情况下可以直接取代原有的RNN层,并且还可以通过引入并行化技术来提高计算效率。

Self-Attention
对每一个Input都经过变换处理,生成三个向量q、k、v。接着,在此基础上进行注意力计算:这里的注意力机制的本质是衡量两个向量之间的相似程度。

attention有多种计算方法,下面使用的是scaled dot-product attention。

接着,将所有的attention value都做soft-max

将经过soft-max的值,与每一个v相乘,求和,求得b^1

对于b^2的计算方法,也是类似


让我们来探讨如何进行矩阵计算的并行化处理。对输入数据x^{1}, x^{2}, x^{3}, x^{4}进行变换后得到a^{1}, a^{2}, a^{3}, a^{4}。这些转换后的值将被用作构建一个I矩阵的各项列。随后我们将该I矩阵分别与权重矩阵W_{t} = [W_{q}; W_{k}; W_{v}], 其中每一个子块对应着不同的运算(如查询、键、值),从而生成相应的查询向量q, 键向量k, 值向量v. 每一列实际上都是之前所述的具体步骤所得到的结果:即q_{i}, k_{i}, v_{i}.

再看一下计算\hat{\alpha}和b的过程。



最后,我们再回顾一下,整个self-attention的计算过程。

Multi-head Self-Attention



Positional Encoding


Seq2Seq with Attention
将原先的RNN层,用self-attention layer代替,就好了。

架构分析
下面是Transformer的完整架构,包括Encoder和Decoder。

下面是对架构中各组成部分的详细说明。其中Multi-Head Attention即为上文所述的自注意力层。Add & Norro被图1左上方黄色区域所解释。其中Add操作表示将输入a与输出b相加,在此过程中Norro指代层归一化(Layer Normalization)过程的具体实现方式。此处对比了Layer Normalization和Batch Normalization两种归一化方法。具体而言,在Layer Normalization中对单个样本中的各维度值进行标准化,在Batch Normalization则对同一维度在同一批数据中的数值执行标准化处理。

论文实验



其他应用



