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

news2024/11/17 0:31:15

文章目录

  • 一、前言
  • 二、流程解读
    • 1.它整体做了一件什么事
    • 2.多层Self-attention
    • 3.self-attention做了一件什么事
    • 4.具体流程
  • 三、流程的矩阵表示
  • 三、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,最大概率对应的类别就是模型预测的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Keepalived实验

keepalived在架构中的作用 LVS和HAProxy组成负载均衡 调度器LVS(四层)后端服务器(多) LVS:优点是速度快,性能要求不高,但是没有对后端服务器的健康检测; HAProxy:有后…

有名管道 | 信号

匿名管道由于没有名字,只能用于具有亲缘关系的进程间通信。 为了克服这个缺点,就提出了有名管道(FIFO),也称为命名管道、FIFO文件。 有名管道 FIFO在文件系统中作为一个特殊的文件而存在并且在文件系统中可见&#…

8个最佳iMacros替代方案(2024)

iMacros作为一款经典的网页自动化工具,多年来帮助无数用户自动化了繁琐的网页任务。然而,随着技术的进步,越来越多功能更强大、界面更友好的替代方案涌现,为用户提供了更多选择。如果你正在寻找2024年最好的iMacros替代工具&#…

中国智能物流系统集成玩家图谱:很全

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 上海欣巴自动化科技股份有限公司 总部:上海服务行业:快递、电商、服装、零售、医药、食品饮料等解决方案:自动化分拣输送系统;控制软件…

linux下tomcat nio 底层源码调用系统函数处理流程

linux tomcat使用nio处理请求 调用jvm native C 底层调用系统函数源码原理 ##Acceptor接受socket socket endpoint.serverSocketAccept(); ##NioEndpoint serverSock.accept() ##ServerSocketChannelImpl n accept(this.fd, newfd, isaa); ##ServerSocketChannelImpl a…

Linux的安装和使用

Linux 第一节 Linux 优势 1. 开源 为什么这么多的的设备都选择使用 Linux?因为它是开源软件(open source software),具有不同的含义。使用一个安全的操作系统工作变得必不可少的事,而 Linux 恰好满足了这个需求。因…

Golang | Leetcode Golang题解之第344题反转字符串

题目&#xff1a; 题解&#xff1a; func reverseString(s []byte) {for left, right : 0, len(s)-1; left < right; left {s[left], s[right] s[right], s[left]right--} }

vue3ts+element-plus实现点击el-select下拉选择内容填充和编辑内容

需求在填写报表时&#xff0c;既可以选择下拉选项&#xff0c;还可以编辑选的内容&#xff0c; 找了elementUi没有现成的就自己组装一个 效果&#xff1a; 贴代码&#xff1a; 在components下新建文件夹TextareaSelect&#xff0c;再新建index.vue和interface.ts &#xff08;…

AIGC创新应用技术实践:成都技术生态沙龙全回顾

AIGC创新应用技术实践&#xff1a;成都技术生态沙龙全回顾 2024年8月17日下午&#xff0c;我有幸作为CSDN校园主理人参加了在成都举办的AIGC创新应用技术实践沙龙活动。 此行也见到了许许多多的行业大佬&#xff0c;得到的收获非常之多&#xff0c;赶了1300公里的路&#xff0…

getActivePinia was called with no active Pinia

如果你是从vuex转向使用pinia&#xff0c;那么你可能遇到这个问题getActivePinia was called with no active Pinia. Did you forget to install pinia?。明明已经安装了pinia&#xff0c;为什么会有这个提示呢&#xff1f; 原因是你可能在setup的组件之外使用了useStore 根本…

JavaScript初级——运算符

一、算数运算符 1、运算符也叫操作符。通过运算符可以对一个或多个值进行运算&#xff0c;并获取运算结果。 比如&#xff1a;typeof 就是运算符&#xff0c;可以获得一个值的类型&#xff0c;他会将该值的类型以字符串的形式返回 &#xff08;number、string、boolean、undefi…

三防平板:现代生产效率与安全的革新者

三防加固工业平板电脑以其独特的防水、防尘、防摔性能&#xff0c;成为复杂生产环境下可靠的工作伙伴。无论是高温、高湿的恶劣环境&#xff0c;还是充满粉尘与振动的车间&#xff0c;三防平板电脑均能保持稳定运行&#xff0c;显著降低硬件故障率&#xff0c;确保生产线的平稳…

AI周报(8.11-8.17)

AI应用-小白&#xff0c;你在说什么呢&#xff1f;AI宠物翻译Traini Traini是由中国连续创业者孙邻家&#xff08;Arvin Sun&#xff09;和刘嘉懿&#xff08;Jack Liu&#xff09;于2022年在美国硅谷联合创立的全球宠物在线培训平台和宠物共情AI应用。Traini也在今年5月完成了…

MyBatis框架连接数据库-初级

MyBatis 的主要功能是帮助持久层管理数据库&#xff0c;接下来我们利用 MyBatis 连接一下我们的数据库&#xff0c;实现入门程序 前期准备 使用环境&#xff1a; jdk 17 maven 3.6.1 mybatis 3.5.10 mysql 8.0.31 idea 2021.1 需要准备&#xff1a; 一个 Maven 工程模块…

uniapp-部分文件中文乱码

一、问题 在开发时遇到&#xff0c;部分页面的中文显示乱码&#xff0c;如图 搜索了一下解决方法&#xff0c;这里记录一下 二、问题原因&#xff1a; 页面的编码格式不是 utf-8 造成的 三、解决方法 打开出现乱码页面选择编译器左上角的文件 > 以指定编码重新打开 选择U…

【存储学习笔记】4:快照(Snapshot)技术的实现方式

1 快照 1.1 动机 在上一篇《备份》里提到&#xff0c;热备份就是在执行操作时&#xff0c;服务器需要正常处理来自用户或应用对数据的更新&#xff0c;这样能够保证数据7*24小时可用&#xff08;在很多服务里这是必要的&#xff09;。 而热备份的困难就是如何保证数据的一致…

判断点B是否在线段AC上?

问题 判断点B是否在线段AC上&#xff1f; 解决方法 1).使用矩阵的秩解决 矩阵的秩代码 #include <iostream> #include <vector> #include <cmath>class Matrix { public:std::vector<std::vector<double>> data;int rows, cols;Matrix(int r,…

电子合同如何在线签?9大协助工具软件

文章介绍了以下几个工具&#xff1a;e签宝、上上签、契约锁、法大大、合同管家、Concord、爱签、微签、PandaDoc。 在选择合适的电子签名工具时&#xff0c;很多企业面临着如何确保合规、提高效率以及优化用户体验的挑战。市场上的众多选项使得决策过程变得更加复杂。但是&…

【Kubernetes】虚拟 IP 与 Service 的代理模式

虚拟 IP 与 Service 的代理模式 1.userspace 代理模式2.iptables 代理模式3.IPVS 代理模式 由于 Service 的默认发布类型是 ClusterlP&#xff0c;因此也可以把 ClusterIP 地址叫作 虚拟 IP 地址。在 Kubernetes 创建 Service 时&#xff0c;每个节点上运行的 kube-proxy 会自动…

百度地图SDK Android版开发 6 显示覆盖物

百度地图SDK Android版开发 6 显示覆盖物 前言地图类中覆盖物的接口覆盖物类Marker示例Polyline示例Polygon示例Arc示例Circle示例Text示例效果图 Marker的更多属性常用属性交互碰撞动画其它属性 折线的更多属性常用属性交互其它 多边形的更多属性常用属性交互其它 Arc的更多属…