Transformer学习

1.介绍

Transformer 网络架构架构由 Ashish Vaswani 等人在 Attention Is All You Need一文中提出,并用于机器翻译任务,和以往网络架构有所区别的是,该网络架构中,编码器和解码器没有采用 RNN 或 CNN 等网络架构,而是采用完全依赖于注意力机制的架构。网络架构如下所示:
网络架构图

2. Input Embedding

如下图,将句子分成词,再将单词放入Input Embedding 变成词向量
在这里插入图片描述

3. Positional Encoding

这层的作用是将位置信息注入到输入嵌入层中,通过奇偶位置信息+正余弦函数实现,如下图在这里插入图片描述
通过以上步骤后,我们得到了输入序列

4 Encoder Layer

编码器层包括两个子模块,多头注意力层和一个全连接网络。这两个子模块周围还有残差连接,后面跟着层标准化。在这里插入图片描述

4.1 Self-Attention

自注意力机制
为了实现自注意力,我们将输入分别送入三个不同的全连接层,以创建查询向量、键向量和值向量
在这里插入图片描述
查询和键经过点积矩阵乘法产生一个分数矩阵。分数矩阵确定一个单词对其他单词的注意力分数。
在这里插入图片描述在这里插入图片描述
每个单词都会有一个与时间步长中其他单词对应的分数,分数越高,关注度越高。这就是Q矩阵如何映射到K矩阵的。

接下来就是对Q、K矩阵维度开平方来将得分缩放,让梯度更稳定。
在这里插入图片描述
然后对缩放后的得分矩阵进行softmax计算,得到注意力权重,从而获得0~1之间的概率值
在这里插入图片描述
接着,将注意力权重与值向量相乘,得到输出向量。

在这里插入图片描述
最后将输出的向量输入线性层进行处理。

在这里插入图片描述

4.2 Multi-headed Attention

多头注意力
每个注意力过程称为一个头。每个头都会产生一个输出向量。
在这里插入图片描述这些向量在经过最后的线性层之前被拼成一个向量,假设下面的红短向量就是每个头的输出向量,经过拼接变成红长向量
在这里插入图片描述
理论上,每个头都会学到不同的东西,从而为编码器模型提供更多的表达能力,这就是多头注意力。

4.3 Residual Connection,Layer Normalization&Pointwise Feed Forward

接下来,将多头注意力输出向量加到原始输入上,这是残差连接。
在这里插入图片描述
残差连接的输出经过层归一化,归一化后的残差输出送入点对点前馈网络进行处理。

在这里插入图片描述
层归一化来稳定网络,减少所需的训练时间。
这就是编码层,所以的操作都是为了将输入编码为连续表示,带有注意力信息,帮助解码器在解码过程中关注输入中的适当词汇。
可以将解码器堆叠N次,每一层都能学到不同的注意力表示,从而提高Transformer网络的预测能力

5 Decoder

解码器的任务是生成文本序列,解码器具有与编码器相似的子层。两个多头注意力层、一个点对点前馈层、以及每层之后的残差连接和层归一化,最后由一个线性层和softmax来得到单词的概率。

5.1 Output Embedding & Posititional Encoding

输入通过嵌入层和位置编码层,得到位置嵌入。位置嵌入被送到第一个多头注意力层,计算解码器输入的注意力得分。
在这里插入图片描述

5.2 Decoder Multi-Headed Attention 1

解码器的多头注意力与编码器的稍有不同。因为解码器是自回归的,并且逐词生成序列,你需要防止它对未来的标记进行条件处理
在这里插入图片描述
例如,在计算“am”的注意力得分时,不应该访问单词“find”,因为那个单词是在am这个单词生成后得到的,未来词。应该只访问它自己和它之前的单词。
在这里插入图片描述
对于所有其他单词,它们只能关注之前的单词。我们需要一种方法来防止计算未来单词的注意力得分。
为了防止解码器查看未来的标记,我们需要应用一个前瞻性的Mask。在计算softmax和缩放得分后,Mask被添加。
在这里插入图片描述

用一个右上三角为负无穷大的矩阵其他位置为0,进行相加,得到带有右上角负无穷大的得分矩阵。这样做的目的是,一旦对Mask得分矩阵进行softmax后,负无穷大的值会变为0,从而为未来的标记留下0的注意力得分。

在这里插入图片描述
这样的话,对应单词am来说,它的注意力得分对于它自己和它之前的所有其他单词都有值,但对于‘find’则为零,这实质上是告诉模型不要去关注这些未来的单词。
这一个Mask是解码器与编码器自注意力的唯一区别。
解码器第一个多头注意力层输出的是一个带有掩码的输出向量,其中包括有关模型如何关注解码器输入信息。

5.3 Decoder Multi-Headed Attention 2

对应这层,编码器的输出是Q(查询)和K(键),而第一个多头注意力的输出是V(值);这三部分组陈解码器第二个多头注意力层的输入。
在这里插入图片描述
这个过程,将编码器输入与解码器输入进行匹配,允许解码器决定哪个编码器输入是相关的焦点。
第二个多头注意力的输出通过一个点对点前馈层进行进一步处理

5.4 Linear Classifier

最后,前馈层的输出经过一个最后的线性层,改层充当分类器。分类器的大小与你拥有的类别数相同。
在这里插入图片描述
例如,如果你有10000个类别,表示10000个单词,那么分类器的输出大小将是10000。分类器的输出结果,将被送入到一个softmax层,用来为每个类别生成0~1之间的得分。去得分最高的索引,等于我们预测的单词。
然后,解码器将输出添加到解码器的输入列表中,并继续解码,直到预测出结束标记。

最后

解码器可以堆叠n层高,每层可以从编码器和其前面的层中获取输入
在这里插入图片描述
通过对叠层,模型可以学会从注意力头提取并关注不同的注意力组合,从而有可能提高预测能力。
这就是Transformer,变形金刚qaq!
更多信息可以从下面这个连接得到

https://www.bilibili.com/video/BV1ih4y1J7rx/?spm_id_from=333.337.search-card.all.click&vd_source=f7e3134a34316e151e59e4577ea75678

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值