Self-attention入门级详解

深度学习系列

第一篇 局部最优点+鞍点+学习率的调节
第二篇 并行计算 深度学习 机器学习
第三篇 长短期记忆网络(LSTM)是什么怎么工作的呢?
第四篇 Dropout解析 代码实现
第五篇 Auto-encoder 自编码器
第六篇 ResNet,Xception,DenseNet优缺点对比
第六篇 STM网络(Spatial Transformer Network)常见疑问解答
第七篇 Self-attention入门级详解




一、基本问题

1.Self-attention的输出

  • 每一个向量输出有对应的标签。例如:语义标签
  • 输入多个向量,但输出只有一个标签。例如:判断文章句子的正负面
  • 输入多个向量,但是输出由模型去决定输出的大小。例如:语义翻译

Self-attention和RNN/LSTM的比较

  • 对于单向的RNN而言,RNN当前节点获取的信息只是来自于前面节点的信息

但是,RNN是有双向的

  • 对于双向的RNN,当前节点的信息来源于前后的信息和,但是最前面一个节点的信息传到当前节点需要一步步的传输,而对于self-attention来说,每个节点都能寻找与其他节点的关系,不需要一点点的传输才会获取前面节点的信息。而且self-attention能一次计算所有节点,速度更快

二、Self-attention怎么运作的?

1.基本总览

self-attention的基本总览如下,可以把self-attention看成一层,如图,如果有四个变量输入,就会有四个对应的变量输出,但是新输出的变量,每一个都是整合了所有输入变量特征的。即它不是一个单一的变量,而且总览全局后形成的变量。
self-attention基本图

2. 那Self-attention这一层具体是怎么工作的呢?

首先,我们以第一个向量a1经过Self-attention变成b1为例子讲解,a1首先要找到它和其他向量的相关性。如下图所示。
找关联 那相关性怎么找呢?
其实就是计算一个系数α,具体的计算方式有多种。
Dot-product就是其中的一种,也是本文讲解的所使用的。它的计算方式是,对两个要计算相关性的向量先乘上一个矩阵,然后对两个矩阵进行乘积(相乘再相加),得到一个系数α。
Dot-product
但是也有例如Additive等其他计算方式。
Additive
这里我们使用Dot-product去计算α
这里还是以a1 为例,它乘上一个矩阵Wq,其他的向量乘上矩阵Wk,然后去计算出α,这个α也叫做attention score。
在这里插入图片描述
这里十分重要的一个点,是 a1 自己也要乘上Wk,也就是 a1 找自己和自己的关系,第二个 a1 要乘 Wk 去计算,第一个还是乘 Wq

最终的图示如下!
Dot-product最后图示接下来是对计算出来的α进行Soft-max处理,如下图。得到了α
在这里插入图片描述

但是我们最后是要得到一个b1,也就是总览全局得到的系数
所以接下来我们要做的是,把着写参数和向量变成一个新的向量。Self-attention是这样子计算的。首先,每个输入向量a乘上一个矩阵Wv变成一个新的向量V,再去和每一个α系数相乘,再相加,才变成b1相关性越大,α越大,得到的b1与这个向量的关系就越大。

得到最终的B1


三. 从矩阵角度看这个过程

3.1 a向量的处理过程

我们把α12,v1,v2这些合并在一起组合成矩阵,就得到了Q,K,V的矩阵 (α12,v1,v2都是向量) ,如下图所示。

矩阵生成

3.2 得到系数α的过程

得到系数的矩阵过程
每个q都得乘上k,那我们可以把k提取出来,变成矩阵。

3.3 系数α整体过程

系数总体求解过程
就K不断乘q这些向量==(k是向量a乘Wk得到的,q是向量a乘Wq得到的)==

3.4最后的b数值

b数值矩阵
最后的b就是α乘V向量,把V向量合在一起就是V矩阵。

第三节只是通过矩阵这个角度理解第二节的东西
其中需要模型学习的就是Wq,Wk,Wv这三个生成q,k,w的矩阵参数。


四、自注意力机制的作用

最明显的一个作用,就是能得到不同节点上下文的信息。所以它常用于序列数据中。

随着发展,自注意力机制也可用去其他领域,如图像,将图像分割成向量,如5*10的图像,分割成5个10维向量。其目的就是找图像不同区域的一个特征关联


五、self-attention的进阶版本

5.1 Multi-head self-attention多头注意力机制

多头注意力机制还是在注意力机制的框架下进行操作的,不同点是在每个节点,最后输出的b多个。例如在二头的注意力机制中,每个节点最终需要得到的b有两个,所以,求得b所有东西都要有两份,如下图,每个节点q再乘上两个矩阵,变成两个q,每个k和v也如此。它们得到b所做的计算和注意力机制是一样的,只是数量上不一样

多头注意力机制最后得到的两个b,可以再经过一个矩阵合成一个b
b的合并
多头的作用主要是能够学习到不同空间中的不同特征

5.2 添加位置信息的注意力机制

在自注意力机制中,每个节点虽然有上下文的信息,但却没有位置信息,如果我们想添加位置信息的话,就需要在ai中加入一个向量ei,表示位置信息。

这个ei可以是人设定了,也可以学习到
但是这方面我没做详细研究,这里就简单带过。


总结

以上就是我个人对self-attention的理解,希望配合上其他文章,能让初学者更容易理解。如果觉得有用,请大家点赞支持!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值