文章目录
- Transformer模型概要
- Transformer模型整体架构
- Transformer网络层解释
- 1. Embedding层
- 2. Positional Encoding
- 3. Multi-Head-Attention
- 4. Add(Residual Connection )
- 5. Norm(Layer Normalization)
- 6. Feed Forword
- 7. Masked Multi-Head-Attention
- Transformer模型简介小结
- 参考文献
Transformer模型概要
Transformer最初是作为机器翻译的Seq2Seq模型提出来的,但是后来的工作表明,Transformer在CV,音频处理等其他领域也取得非常不错的效果,并且在过去几年中提出了各种Transformer变体(X-former),这些模型也从不同的方面提高了原版Transformer的效果。
本文主要介绍关于Tranformer的相关知识,Transformer是一个基于自注意力机制(self-attention)的神经网络模型。请读者注意,这里不是指某一种网络,而是一种结构。相比于传统的RNN和CNN模型,Transformer允许模型学习数据位置之间的依赖关系,这种特性使Transformer在处理长文本序列数据时具有更高的效率。
Transformer模型整体架构
下面就是Attention is all you need 这篇著名的论文中提出来的Transformer的模型架构,当自己能够对这个模型做到烂熟于心的时候,说明你对Transformer的了解程度已经非常高了。
同时,对于初学者,可能对这张图中有许多地方都处于一种懵懂的状态,但是也不要担心,后续我将对这个模型所有内容做详细的解释。
Transformer网络层解释
1. Embedding层
Embedding,翻译过来便是’词嵌入’。通常来说,这个网络层的作用是将一个整数转换成一个向量的过程,整体来看,就是对一组客观世界中的离散的物体映射到高维空间中的一组向量的过程,换句话说,Embedding就是用一组高维向量表示一个物体(可以是整数,颜色等等)的过程。举个栗子
- 在NLP领域,对于文本信息的处理,我们通常会先将文本按照词表将对应的word映射到数字的过程,即 word2index的过程。此处为: 机 -> 1
- 然后机这个词便被映射成整数1了,然后通过Embedding层,我们就能得到 1 -> (0.1, 2, 3, 1, 9, …)
2. Positional Encoding
在Transformer模型中,整个句子被同时传入模型中,并没有记录下关于词汇之间的位置关系,那么为了记录词汇之间的位置关系,我们就需要Positional Encoding来捕捉词汇之间的位置关系。举个栗子
- 为了简单来看,请读者不妨想一想,我们在写英语作文的时候,我们如果写了一个do,那么下一个单词是不是很有可能是一个名词呢?比如things等等。
3. Multi-Head-Attention
首先这部分其实就是做了简介中提到的self-attention,实现了与QKV相关的计算过程,但是这里还使用了多头注意力,它的作用就是能够捕捉到更多的特征以及信息,可以类似于 CNN 中利用多个卷积核分别提取不同特征。
下面是Attention计算公式:
4. Add(Residual Connection )
Residual Connection, 翻译成中文便是残差连接。其实就是将最后网络层的输出加上最开始的输入,这种操作可以有效解决关于梯度消失的问题,这样表示可能有些抽象,那不妨让我们举个例子吧。举个栗子
- 不妨假设我们网络输入为X,那么残差连接做的事就是使最终的输出为F(X) + X,这样就可以有效解决关于梯度反向传播更新参数过程的梯度消失问题。
5. Norm(Layer Normalization)
在transformer中实际上使用的使Layer Norm而不是Batch Norm,这一点要清楚。当我们使用梯度下降法时,为了保证数据特征分布的稳定性,会加入Normalization。从而可以使用更大的学习率,从而加速模型的收敛速度。Layer Norm消除了不同sample之间的大小关系,而保留了不同特征之间的大小关系。
6. Feed Forword
这一部分相信很多人都有了解过,实际上就是一个全连接神经网络,这使我们的计算能够更加有效,可以将其类比为集体智慧的体现。类似于说下一层的神经元得到的信息是来自上一层的多个神经元,那么它拥有的信息就比上一层中任意单个神经元的信息更加丰富。
7. Masked Multi-Head-Attention
这里和上面所谈到的Multi-Head-Attention基本类似,但是多了一个masked,实际上这一步的作用就是保证当前输出只与当前和过去输入有关,而与未来信息无关。
Transformer模型简介小结
本篇博客主要介绍了关于Transformer的起源,应用领域等,同时对整个Transformer模型架构进行了解释性的说明,在后续博客中,我将对模型结构的各个部分进行详细的解释说明,同时会附上一些代码,方便读者理解。