目录
前言
🍨 本文为
[🔗365天深度学习训练营]
中的学习记录博客🍖 原作者:
[K同学啊]
说在前面:
- 从整体上把握Transformer模型,明白它是个什么东西,可以干嘛
- 读懂Transformer的复现代码
一、基本概念
1.1 Seq2Seq与Transformer
Seq2Seq是一种用于序列到序列任务的模型架构,最初用于机器翻译,意味着它可以处理输入序列,并生成相应的输出序列
- 结构:Seq2Seq模型通常由两个主要部分组成--编码器和解码器。编码器是负责将输入序列编码为固定大小的向量,而解码器则使用此向量生成输出序列
- 问题:传统的Seq2Seq模型在处理长序列时可能会遇到梯度消失/爆炸等问题,而Transformer模型的提出正是为了解决这些问题
Transformer是一种更现代的深度学习模型,专为处理序列数据而设计,最初用于自然语言处理任务,它不依赖于RNN或CNN等传统结构,而是引入了注意力机制
- 结构:Transformer模型主要由编码器和解码器组成,它们由自注意力层和全连接前馈网络组成。它使用注意力机制来捕捉输入序列中不同位置之间的依赖关系,同时通过多头注意力来提高模型的表达能力
- 优势:Transformer的设计使其能够更好地处理长距离依赖关系,同时具有更好的并行性。
在某种程度上,可以将Transformer看作是Seq2Seq的一种演变,Transformer可以执行Seq2Seq任务,并且相对于传统的Seq2Seq模型具有更好的性能和可扩展性。
与RNN这类神经网络结构相比,Transformer一个巨大的优点是:模型在处理序列输入时,可以对整个序列输入进行并行计算,不需要按照时间步循环递归处理输入序列。下图Transformer整体结构图,左半部分为编码器,右半部分为解码器。
1.2 Transformer结构详解
Transformer可以看作是Seq2Seq模型的一种,因此,先从seq2seq的角度对Transformer进行宏观结构的学习,以机器翻译任务为例,先将Transformer看作一个黑盒,黑盒的输入是法语文本序列,输出是英文文本序列。
将上图中的中间部分“THE TRANSFORMER"拆开成seq2seq标准结构,得到下图:左边是编码器部分encoders,右边是解码部分decoders
下面,再将上图中的编码器和解码器细节绘出,得到下图,我们可以看到,编码部分由多层编码器(Encoder)组成。解码部分也是由多层的解码器(Decoder)组成,每层编码器、解码器网络结构是一样的,但是不同层编码器、解码器网络结构不共享参数。
其中,单层编码器主要由自注意力层(Self-Attention Layer)和全连接前馈网络(Feed Forward Neural Network, FFNN)组成,如下如所示:
其中,解码器在编码器的自注意力层和全连接前馈网络中间插了一个Encoder-Decoder Attention层,这个层帮助解码器聚集于输入序列最相关的部分。
总结一下,Transformer由编码部分和解码部分组成,而编码部分和解码部分又由