首页 > 其他分享 >Self-Attention自注意力机制解读(2):图解版!

Self-Attention自注意力机制解读(2):图解版!

时间:2024-08-17 19:22:25浏览次数:12  
标签:attention Self Attention 矩阵 Softmax 图解 向量 softmax

文章目录

一、前言

上一篇文章
Self-Attention自注意力机制:深度学习中的动态焦点 | 手把手实例解析 看不懂你打我
以简单的例子引入了Self-Attention,并且以一句话简单的句子:“The cat sat on the mat.”为例做了手把手讲解,我们以每个单词作为一个向量,对这组向量进行一系列操作,最终得到了一个加权求和表格。
上篇文章侧重具体的例子,我们使用了一系列实际的向量数值,带大家计算了一遍,但是对于Self-Attention的整个过程的理解展现的还不够,不如图片来的直观。then 接下来我们用一系列图片,更全面的解读下Self-Attention。

二、流程解读

1.它整体做了一件什么事

请看下面图片,最下面一层四个方框,代表四个向量,你可以理解为四个单词。这四个向量经过一个Self-attention操作之后,出来四个新的向量,这四个向量包含了上下文信息;接着对每个向量进行一个 fully connected layer处理,得到4个新的向量。
在这里插入图片描述

2.多层Self-attention

经过一层Self-attention后,你认为重要性权重提取的还不够,Ok当然可以再来一层!这就是多层注意力机制。

在这里插入图片描述

3.self-attention做了一件什么事

做了一件这样的事情:将每个向量(a1,a2,…)和其他向量做运算,得到这个向量和其他每个向量的相关性的数值。
接下来,我们记a1和a2的相关性为α1,2
在这里插入图片描述

4.具体流程

我先给出一个定义:每个向量都对应着三个向量,例如a1向量对应q1,k1,v1这三个向量。先不要管怎么算出来这三个方向向量。我们分别称之为查询向量(Query Vectors)、键向量(Key Vectors)和价值向量(Value Vectors)。
那么a1和a2的相关性α1,2就等于q1*k2,也就是拿a1的Q值乘以a2的K值。如下图
在这里插入图片描述

那么a1和a3、a4的相关性α1,3 α1,4也就同理得出了,我们称α为attention score
在这里插入图片描述

另外,我们习惯将自身的相关性,也就是α1,1也得到。

在这里插入图片描述


好的现在我们得到了α1,1 α1,2 α1,3 α1,4
接下来我们习惯堆这四个向量进行一步softmax处理,相信大家都了解softmax层的作用,这里的softmax和图片分类任务中的softmax是一模一样的,如果没听说过没关系,文末我也给了解释。简单来说,就是为了得到更易于后续操作的形式。
softmax处理之后得到α1,1 α1,2 α1,3 α1,4
在这里插入图片描述

接下来很重要,将α1,1 α1,2 α1,3 α1,4分别点积v1,v2,v3,v4向量,然后相加,得到b1,如下图,很清楚:

在这里插入图片描述

以此类推,我们将b1,b2,b3,b4都算出来了!
在这里插入图片描述

那么 是怎么得到的呢,是将原始向量和三个矩阵分别做矩阵乘法,就是下面红框住的三个矩阵Wq,Wk,Wv
在这里插入图片描述

三、流程的矩阵表示

上面,我们一个向量一个向量做了点乘的讲解,其实最后,我们使用的是矩阵相乘,如下图,一下子就把 全部算出来了!
在这里插入图片描述
接上一个softmax层,得到带 ’ 的相关性矩阵
在这里插入图片描述
接着,拿v1,v2,v3,v4乘以带 ’ 的这个矩阵,不就是最后的结果吗!
在这里插入图片描述

最后说来,Self-attention中需要学习的参数只有Wq,Wk,Wv
在这里插入图片描述

Also,Self-attention也可以用在CV中,问题可能来了,我们之前输入的不都是一维向量吗,图片都是n×m的呀,如下图,channel为3的情况下,我们可以将如图所示作为一个Vector。但是更深入的你可以阅读相关的论文博客。当然以后我可能也会出一篇博客讲讲我的理解,不过就是后话啦!

在这里插入图片描述
本人软件工程本科在读,这篇博客如果对你理解Self-attention有所帮助的话,感谢你的点赞关注啦!共同进步!

三、Softmax层的解释

在机器学习中,特别是在深度学习和神经网络的上下文中,Softmax层通常被用作多分类问题的最后一层。它将前一层输出的K个实数值转换为概率分布,使得这些值可以被解释为属于各个类别的概率。

具体来说,Softmax函数对每个输入值执行以下操作:

  1. 指数化:每个输入值都被指数化(即计算e的该值次幂),这样做的目的是将负数转换为正数,并放大较大值与较小值之间的差异。
  2. 归一化:将指数化后的所有值相加得到总和,然后用这个总和去分别除以每个指数化后的值。这样做确保了所有输出值加起来等于1,从而形成一个概率分布。

假设我们有一个向量z = [z_1, z_2, …, z_K]作为输入到Softmax层,那么对于每一个i (1 ≤ i ≤ K),Softmax函数的输出a_i可以表示为:

在这里插入图片描述

这里,( a_i )表示类别i的概率。

Softmax层的主要作用包括:

  • 概率解释:它将模型的输出转换为概率,便于理解每个类别的可能性大小。
  • 多分类任务:它非常适合用于解决多分类问题,如图像分类等。
  • 损失函数配合:常与交叉熵损失函数一起使用,共同构成训练过程中的目标函数。

例如,在一个图像分类任务中,如果模型最后的全连接层输出了10个值(对应10个不同的类别),Softmax层会将这10个值转换为10个概率值,这些概率值之和为1,最大概率对应的类别就是模型预测的结果。

标签:attention,Self,Attention,矩阵,Softmax,图解,向量,softmax
From: https://blog.csdn.net/weixin_73373302/article/details/141283057

相关文章

  • SciTech-BigDataAIML-LLM-Transformer Series-Self-Attention:由Dot-Product(向量点乘)
    SelfAttention:由Dot-Product(向量点乘)说起https://lulaoshi.info/deep-learning/attention/transformer-attention.html#self-attention-从向量点乘说起Transformer[1]论文提出了一种Self-Attention(自注意力机制),Self-Attention的最核心的公式为:\(\large\begin{align*}......
  • 回归预测|基于HGS-CNN-LSTM-Attention的数据回归预测Matlab程序 多特征输入单输出 含
    回归预测|基于HGS-CNN-LSTM-Attention的数据回归预测Matlab程序多特征输入单输出含基础模型文章目录前言回归预测|基于HGS-CNN-LSTM-Attention的数据回归预测Matlab程序多特征输入单输出含基础模型一、HGS-CNN-LSTM-Attention模型1.模型组件概述1.1.海鸥优化算......
  • 小林coding图解网站
     小林coding图解网站官方地址:https://xiaolincoding.com/涵盖:图解计算机网络、图解操作系统、图解mysql,图解redis、java面试题内容     ......
  • SO-Net: Self-Organizing Network for Point Cloud Analysis
    Abstract本文提出了SO-Net,是一种创新的深度学习架构,为处理无序点云数据设计。SO-Net利用自组织映射(SOM)技术来捕捉点云的空间分布,并实现排列不变的特征提取。这种分层特征提取方法能够从局部到全局提取特征,还能够通过点到节点的k最近邻搜索系统地调整网络的receptivefield,从......
  • Cross-Image Attention for zero-shot appearance transfer
     1.Introduction探讨appearancetransfer的背景下进行图像操作,目标是将一个图像中概念的视觉外观转移到另一个图像中存在的概念上,例如,将斑马的外观转移到长颈鹿上,完成这一任务需要首先将长颈鹿和斑马之间在语义上相似的区域进行关联,然后通过这些关联转移,而不改变长颈鹿的结......
  • 图解红黑树
    红黑树的定义之所以这么久才新开红黑树,是因为我觉得红黑树是真的太难了,要说清楚与实现都不是容易的事情,我主要参考了一些博客,传送门.实际上我的大部分理解都是来自这一篇博客,我添加了一些自己的理解以及实现方式.红黑树是在二叉搜索树的基础上,添加了对二叉搜索的限......
  • SCI一区级 | Matlab实现INFO-CNN-LSTM-Multihead-Attention多变量时间序列预测
    SCI一区级|Matlab实现INFO-CNN-LSTM-Multihead-Attention多变量时间序列预测目录SCI一区级|Matlab实现INFO-CNN-LSTM-Multihead-Attention多变量时间序列预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现INFO-CNN-LSTM-Multihead-At......
  • 图解Kafka | 彻底弄明白 Kafka 两个最重要的配置
    我已经使用Kafka近两年了,我发现有两个配置很重要,但是不太容易理解。这两个配置分别是acks和min.insync.replicas。本文将通过一些插图来帮助理解这2个配置,以便更好的使用Kafka为我们服务。复制我假设你已经熟悉Kafka了,但为了更好地理解这些配置,还是有必要回顾一下Kaf......
  • 【面试】解释Attention和Self-Attention的区别
    面试模拟场景面试官:你能解释一下Attention和Self-Attention的区别吗?参考回答示例1.Attention机制基本概念:Attention是一种能够动态聚焦输入序列中不同部分的机制,允许模型根据需要选择性地关注输入数据的某些部分。这种机制最早被引入到机器翻译任务中,用于在翻译时......
  • 操作符详解(内含二进制与原、反、补码知识点)--还有超详细图解!一看就会!
    前言今天给大家分享一下C语言操作符的详解,但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点,都有详细的图解,也希望这篇文章能对大家有所帮助,大家多多支持呀!目录前言一、二进制和进制转换1.  10进制转化为10进制​2.  2进制转化为10进制 ​2.......