南京网站优化报价,淘宝客云建站网址,企业建站要多少钱,万金娱乐网站开发本文参考了b站的Eve的科学频道中的深入浅出解释Transformer原理和DASOU讲AI中的Transformer从零详解。 入浅出解释Transformer原理 Transformer从零详解 
前言#xff1a; 
在自然语言识别中#xff0c;之前讲过lstm#xff0c;但是lstm有明显的缺陷#xff0c;就是当文本过…本文参考了b站的Eve的科学频道中的深入浅出解释Transformer原理和DASOU讲AI中的Transformer从零详解。 入浅出解释Transformer原理 Transformer从零详解 
前言 
在自然语言识别中之前讲过lstm但是lstm有明显的缺陷就是当文本过于长的时候考前的文本信息和后的文本信息关联性就会越来越弱并且因为链式求导的原因会导致梯度消失所以这里就学习了一种新型神经网络Transformer他和前面的网络很不一样他是一种基于注意力的编码-解码架构。 
单个网络结构 如上图所示左边为编码部分右边为解码部分接下里我们将会从编码部分开始讲解。 
1.输入部分 如上图所示红框部分就是输入部分inputs就是我们的文本信息比如how are you ,而input Embedding就是把我们输入的这一段话做嵌入使他形成词向量比如word2vec比如我们把how are you可以做成如下所示的词向量  
词向量嵌入完成后还要加上位置信息因为在lstm中每个隐含层的节点都是要接收上一个隐含层的输出所以他是有天然的时序顺序在里面的。但是transformer中我们没有使用rnn所以就需要我们给他的词向量中加入位置信息。 
位置编码公式如下  我们可以看出有两个参数2i和2i1他的意思就是在词向量的偶数位置做sin运算在奇数位置做cos运算如下图  
然后接下来把原来的Embedding和posCode进行相加如下图所示  
2.多头注意力模块 自注意力机制简单来说就是模型先要把输入的文本中每个单词和其他单词关联起来然后在矩阵中表示出哪些单词是重要的单词下图就是自注意力机制的内部构造。  QKV: 上图红框中的意思是我们把前面输入部分的输出分别送入三个不同的全链接层得出三个向量。那这句话换个说法就是我们把之前的每个词向量乘上三个不同的矩阵如下图所示就可以得到每个词向量自己的QKV矩阵。例如Q矩阵他实际上是由how are you 三个词的Q矩阵所构成的一个三行三列的Q矩阵。所谓的多头其实就是可以有多个编码部分其中每个编码部分的结构其实都是一样的不同的是下图中的WQ WK WV矩阵的内容因为这三个矩阵的不同所以相当于在不同的空间中注意到不同的信息。  matmul 接下来就把Q矩阵和V矩阵进行相乘所得到的这个矩阵确定了一个单词应该如何关注其他单词如下图所示可以明显的看出矩阵中的数字代表了这个单词和其他单词的关注度分数越高代表关注度越高。  然后把相乘后的矩阵进行缩放如下图所示目的是让梯度稳定因为乘法后的数据会很爆炸换句人话说就是因为后面要拿这个矩阵做softmax如果这个矩阵过大的话就会导致softMax很小从而导致梯度的消失。  softMax 接下来对缩放后的矩阵进行softMax变化入下图所示把矩阵变成注意力的权重矩阵其实还有个好处是可以让注意力强的单词更强弱的更弱。 第二次MatMul 把softMax变换后的注意力权重矩阵乘上V矩阵所得到输出向量就可以把原本不重要的词给变小给重要的词变大。  concat和Linear: 上面所说的只是一头就相当于下图中的“一片”但是实际中是多头。是由很多片构成的所以concat的目的就是把每片输出的注意力权重矩阵给拼接起来。  假如我们由8个头那么将会输出8个注意力权重矩阵conact拼接效果如下  
显然这么长的矩阵不是我们的目标矩阵因为我们要的是让输出矩阵和输入矩阵所以要进行Linear变换如下图所示最后所得到的结果就是多头自注意力机制的输出  addnorm: add和norm是两个操作其中把多头注意力向量加上pos-embedding上这是add也就是残差链接连接后经过归一化如下图所示 。  残差链接有什么用 如下图所示通过链式求导法则可以看出当使用残差时括号内存在一个1梯度消失一般情况下是因为连乘从而导致梯度变小而下面因为这个1的存在导致梯度不会那么容易消失  LayerNorm有什么用 是一种用于神经网络的归一化技术它可以对网络中的每个神经元的输出进行归一化使得网络中每一层的输出都具有相似的分布 
3.全链接模块 这层很简单两层全连接用ReLu作为激活函数因为是Feed Forward神经网络所以他信息只沿着一个方向流动即从输入层到输出层。因此不存在误差反向传播如下图所示。其中的LN和上面的方法一样。