Self-attention(自注意力机制)、Transformer

前言

文章根据李宏毅老师的视频讲解总结而成。

一、Self-attention

1.1 序列标签的输入输出

模型的输入格式复杂多样,有输入是一个向量或者一个向量集. 当输入形式是一个句子时,可以对每个单词进行编码,主要有两种方式:1. One-hot Encoding 2. Word Embedding,大致如下图所示。在这里插入图片描述
当然输入的形式可能是一个音频的,此时把音频划分成帧:在这里插入图片描述
输入的形式也可能是一个图:在这里插入图片描述

1.2 面临的问题

  1. 每个标签具有上下文联系,如何结合上下文?FC(全连接层)可以考虑它的相邻关系。
  2. 如何考虑整个序列?使用滑动窗口。
    在这里插入图片描述

1.3 自注意力机制结构

自注意力整体结构如下图所示:
在这里插入图片描述
当然,我们还可以加多个Self-attention模块:
在这里插入图片描述
接下来主要看一下Self-attention模块:
在这里插入图片描述
其中,每个b向量都是考虑了每个a向量之后的结果(这里可能与FC有点相似,其实这里是对每个样本进行的考虑,而FC是对单个样本进行的),那b是如何考虑每个样本之间的联系呢?我们首先需要一个标量来衡量每个样本之间的联系程度,这里使用 α \alpha α
在这里插入图片描述
α \alpha α有两种方式获得:1.点乘方式 2.相加方式 在这里插入图片描述
其中W都是矩阵。

这里主要介绍一下Dot-product的方式。

  1. 首先,根据获取q向量以及k向量,在根据点乘获取相关度,自己的q也能与自己的k作一个点乘。
    在这里插入图片描述
  2. 获取到四个相似度,再经过一个softmax层,获取到 α ′ \alpha^{'} α,称作attention scores,后面都是根据这个分数作进一步操作:
    在这里插入图片描述
  3. 让每个向量乘以v矩阵 W v W^v Wv 获取每个4个v向量,再让每个attention score乘以对应v向量,最后按位相加,生成b1向量,同理b2,b3,b4(其实是并行计算的)也是如此。在这里插入图片描述
    整体,写成矩阵相乘形式,如下:在这里插入图片描述
    其中I、Q、K、V:在这里插入图片描述
    在这里插入图片描述

1.4 Multi-head Self-attention(多头注意力机制)

结构如下,主要新增的点在于对于每个q、k、v在分别乘上两个不同的矩阵,把qkv变成双份。  这时总共要学习九个矩阵参数。

在这里插入图片描述
每个向量获得两个b向量,再经过一个输出矩阵转成1个b向量。因此总共要学习10个矩阵。
在这里插入图片描述

1.5 把位置信息引入self-attention

每个样本之间的位置可能很重要,但是之前没有考虑位置(因为之前都是并行处理的,每个样本之间处理方式是相同的)。

方法:把每个位置编成一个向量,成为位置向量,然后加到原始向量上就可以了。
在这里插入图片描述
其中 e i e^i ei是手动设置的,也可以学习出来。

二、Transformer

主要为了解决sentence to sentence的问题,并且输入与输出的长度不等。这类问题的整体架构为编码器-解码器架构在这里插入图片描述
Transformer的整体架构如下:其中左半部分是编码器,右半部分是解码器。在这里插入图片描述

2.1 编码器Encoder

编码器的输入与输出向量个数相同。
在这里插入图片描述
再进一步,Encoder由许多Block组成:在这里插入图片描述
每个Block的详细结构如下:
请添加图片描述

2.2 解码器Decoder

这里解码器主要描述一下Autoregressive(AT)结构,另外还有Non-Autoregressive(NAT)

AT解码器的整体结构如下:
在这里插入图片描述
Decoder首先要接入Encoder输出的结果,再给Decoder一个初始的向量(称为START,它是一个特殊的向量),Docker输出的结果经过softmax后会得到每个分类结果的概率,把概率最大值对应的单词或者字符作为结果进行输出。下一步再把该向量作为下次一个字符的输入,以此来生成下一个单次,在你的distribution中应该有一个特殊的标识例如EOF作为结束的标志。
在这里插入图片描述

其中Decode的详细结构如下所示:
在这里插入图片描述
它与编码器的主要区别是多了这部分,其称之为Cross attention:在这里插入图片描述
并把一开始的Multi-Head Attention改成了Masked版本的,下面是Masked版本的Attention:即当前的输出向量只结合了当前以及之前的向量特征从而获取的结果
在这里插入图片描述
Cross attention的详细结果如下:
在这里插入图片描述
由当前向量获取到q向量,再分别与Encoder的输出向量的k、v向量计算最后的v向量,可以简化成Encoder提供两个k、v向量,Decoder出一个q向量,所以中间的连线是如下图所示:
在这里插入图片描述

2.3 训练部分

有两点需要注意:

  1. 输出结果的交叉熵损失
    在这里插入图片描述
  2. 使用Ground Truth作为输入

总结

本文,主要讲解了自注意力机制,以及著名的Transformer模型。
  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值