【学习】注意力机制(Attention)和 自注意力机制(self-Attention)

news2024/10/7 7:26:00

参考B站:09 Transformer 之什么是注意力机制(Attention)

1. 注意力机制(Attention)

在这里插入图片描述
红色的是科学家们发现,如果给你一张这个图,你眼睛的重点会聚焦在红色区域

人–》看脸

文章看标题

段落看开头

后面的落款

这些红色区域可能包含更多的信息,更重要的信息

注意力机制:我们会把我们的焦点聚焦在比较重要的事物上

Q、K、V

我(查询对象 Q),这张图(被查询对象 V),图中包含的模块(K)。
我看这张图,第一眼,我就会去判断哪些东西对我而言更重要,哪些对我而言又更不重要(去计算 Q 和 V 里的事物的重要度)

重要度计算,其实是不是就是相似度计算(更接近),点乘其实是求内积(数学中的原理,两个矩阵点乘得到的值越大,证明两个矩阵越相似。)
Q 、 K = k 1 , k 2 , ⋅ ⋅ ⋅ , k n Q、K=k_1,k_2,···,k_n QK=k1k2⋅⋅⋅kn
通过点乘的方法计算Q 和 K 里的每一个事物的相似度,就可以拿到 Q 和
k 1 k1 k1的相似值 s 1 s1 s1,Q 和 k 2 k2 k2的相似值 s 2 s2 s2,Q 和 k n kn kn的相似值 s n sn sn.

进一步做 s o f t m a x ( s 1 , s 2 , ⋅ ⋅ ⋅ , s n ) softmax(s_1,s_2,···,sn) softmaxs1,s2,⋅⋅⋅,sn,便可以得到概率值 a 1 , a 2 , ⋅ ⋅ ⋅ , a n a_1,a_2,···,a_n a1a2⋅⋅⋅an
在这里插入图片描述
我们还得进行一个汇总,当你使用 Q 查询结束了后,Q 已经失去了它的使用价值了,我们最终还是要拿到这张图片的,只不过现在的这张图片,它多了一些信息(多了于我而言更重要,更不重要的信息在这里)。
V = ( v 1 , v 2 , ⋅ ⋅ ⋅ , v n ) = ( a 1 , a 2 , ⋅ ⋅ ⋅ , a n )•( v 1 , v 2 , ⋅ ⋅ ⋅ , v n ) = ( a 1 ∗ v 1 + a 2 ∗ v 2 + ⋅ ⋅ ⋅ + a n ∗ v n ) = V ′ V = (v_1,v_2,···,v_n)=(a_1,a_2,···,a_n)•(v_1,v_2,···,v_n)=(a_1*v_1 + a_2*v_2 + ··· + a_n*v_n )= V' V=(v1v2⋅⋅⋅vn=a1a2⋅⋅⋅anv1v2⋅⋅⋅vn=(a1v1+a2v2+⋅⋅⋅+anvn)=V

这样的话,就得到了一个新的 V’,这个新的 V’ 就包含了,哪些更重要,哪些不重要的信息在里面,然后用 V’ 代替 V。一般 K=V。

理解

注意力机制就是接收一个输入的东西(模型里面可能是特征),利用注意力机制找出图像中和该特征最相似的区域,该区域应该是提取出特征的区域,我们应该更加关注。

Transformer之自注意力机制(self-Attention)

Self-Attention 的关键点在于: K≈V≈Q 来源于同一个 X,这三者是同源的。
通过 X 找到 X 里面的关键点。
并不是 K=V=Q=X,而是通过三个参数 W Q , W K , W V W_Q,W_K,W_V WQ,WK,WV,接下来的步骤和注意力机制一模一样。

1.Q、K、V的获取

在这里插入图片描述
这里的 q 1 q_1 q1 q 2 q_2 q2 是由 x 1 x_1 x1 x 2 x_2 x2 W Q W_Q WQ 相乘得到的
k 1 k_1 k1 k 2 k_2 k2 是由 x 1 x_1 x1 x 2 x_2 x2 W K W_K WK 相乘得到的
v 1 v_1 v1 v 2 v_2 v2 是由 x 1 x_1 x1 x 2 x_2 x2 W V W_V WV 相乘得到的

这里的Q、K、V都来自于 x 1 x_1 x1 x 2 x_2 x2 ,所以是同源的。

2. Matmul (Q、K点乘,这里会和每个k进行点乘)

在这里插入图片描述
这里会先进行Q、K相乘,得到其相似值。

3.Scale+Softmax(对Q、K点乘结果进行softmax):

在这里插入图片描述
将Q、K相乘的相似值通过softmax,转为概率。

4. Matmul(得到的V1,并通过V1得到Z1):在这里插入图片描述

将前面softmax得到的概率值0.88,再与 v 1 v_1 v1相乘, v 1 ∗ 0.88 v_1*0.88 v10.88 得到一个新的向量值 v 1 v_1 v1
此时的 v 2 v_2 v2的概率值是0.12, v 2 ∗ 0.12 v_2*0.12 v20.12 得到一个新的向量值 v 2 v_2 v2

最终的 z 1 = v 2 + v 2 z_1= v_2 + v_2 z1=v2+v2, z 1 z_1 z1 中包含了 v 1 v_1 v1 v 2 v_2 v2的信息。

z 1 z_1 z1表示的就是 thinking 的新的向量表示,对于 thinking,初始词向量为 x 1 x_1 x1

现在我通过 thinking machines 这句话去查询这句话里的每一个单词和 thinking 之间的相似度,新的 z 1 z_1 z1依然是 thinking 的词向量表示,只不过这个词向量的表示蕴含了 thinking machines 这句话对于 thinking 而言哪个更重要的信息。

举个例子:
在这里插入图片描述
这里的 its 做了自注意力,其包含了这句话所有词的信息,并且对Law的相似度最高,所以这里的its最有可能代表its。
但是如果不做自注意力,这里的 its 就是单纯的三个字母 its,并没有包含任何信息。
也就是说 its 有 law 这层意思,而通过自注意力机制得到新的 its 的词向量,则会包含一定的 laws 和 application 的信息

自注意力矩阵表示:

Q 、K、V的获取

在这里插入图片描述

Z矩阵的获取

在这里插入图片描述

Z矩阵的表示

在这里插入图片描述
最终Z矩阵中就有每个单词和每个单词联系的概率值。

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

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

相关文章

Maven插件打fatjar的一些技巧

前言 最近做项目,Java实际上一般情况也不用fatjar,毕竟CICD都是流水线构建,不过在预研的过程中,使用fatjar可以内置manifest的main类直接启动,就很方便,尤其是在服务器运行环境。实际上golang还是很方便的…

倒计时】2024年全国大学生英语竞赛(附ABCD类历年真题+答案解析+24押题卷

倒计时】2024年全国大学生英语竞赛(附ABCD类历年真题答案解析24押题卷 全国大学生英语竞赛(NECCS)是我国目前规模较大、参与人数众多的全国性大学生英语综合能力竞赛,在我国大学英语教学改革不断发展和大学就业日趋严峻的形势下&a…

SpringCloud Alibaba Sentinel 规则持久化

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十七篇,即使用 Sentinel 实现规则持久化。 二、概述 从前面我们做的实验可知,…

Java实现二叉树(上)

1.树型结构 1.1树型结构的概念 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 1.2树型结构的特点…

能强优品木业提供高层建筑模板施工方案

在现代城市化进程中,高层建筑的兴建成为了建筑行业的一大重点。与普通建筑相比,高层建筑模板施工方案的制定需更加严谨周密,确保工程质量和施工安全。作为专业的建筑模板生产厂家,贵港市能强优品木业有限公司凭借25年丰富经验,为高层建筑模板施工提供了优质高效的解决方案。 首…

【Java基础】面试题汇总

Java基础面试题1. JVM vs JDK vs JRE 2. 什么是字节码?采用字节码的好处是什么?3. 为什么说 Java 语言“编译与解释并存”?4. AOT 有什么优点?为什么不全部使用 AOT 呢?5. Java 和 C 的区别?6. Java 中的基本数据类型&#xff1…

炎症性肠病和原发性胆汁性胆管炎之间的共同遗传结构(文献)

Investigating shared genetic architecture between inflammatory bowel diseases and primary biliary cholangitis - ScienceDirect 炎症性肠病(IBD)是一组慢性免疫介导的胃肠道特发性炎症,有两种形式,包括克罗恩病&#xff0…

Vue使用高德地图

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码,做好了注释(初始…

163 Linux C++ 通讯架构实战17,本地套接字整理对比,IPC:pipe,fifo,mmap,信号,本地套

IPC: Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲…

【C语言】——指针八:指针运算笔试题解析

【C语言】——指针八:指针运算笔试题解析 一、题一二、题二三、题三四、题四五、题五六、题六七、题七 一、题一 //程序输出结果是什么 int main() {int a[5] { 1,2,3,4,5 };int* ptr (int*)(&a 1);printf("%d, %d", *(a 1), *(ptr - 1));return…

基于JAVA+SSM+微信小程序+MySql的图书捐赠管理系统设计与实现(前后端分类)

一、项目背景介绍: 在当今社会,图书捐赠是一种普遍而有益的行为,旨在促进阅读、教育和知识传播。图书捐赠可以帮助改善教育资源不足的地区、学校和社区的阅读环境,提供更多的学习机会和知识获取途径。随着互联网和移动技术的发展&…

Java 面试宝典:Redis 的线程模型是怎么样的?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 本文已收录到我的技术网站:https://www.skjava.com。有全网最优质的系列文章、Java 全栈技术文档以及大厂完整面经 Redis 的线程模型其实是分两块的: Redis 6.0 …

PostgreSQL:所有支持的数据类型及建表语句实例

哈喽,大家好,我是木头左! 一、引言 在当今这个数据驱动的时代,数据库已经成为了企业和个人不可或缺的工具。而在众多数据库产品中,PostgreSQL以其强大的功能和高度的可扩展性,受到了越来越多开发者的青睐。…

FreeRTOSFreeRTOS列表和列表项

FreeRTOS列表和列表项 今天继续跟着正点原子学习FreeRTOS列表和列表项的内容。列表和列表项这个知识点用到了C语言链表的知识点。所以必须对C语言中的链表这个数据结构才能更好的理解这部分内容。TIPS:正点原子这节课内容讲的特别好,强烈推荐&#xff1…

《QT实用小工具·十八》高亮发光按钮控件

1、概述 源码放在文章末尾 该项目实现了高亮发光按钮控件 可设置文本,居中显示。可设置文本颜色。可设置外边框渐变颜色。可设置里边框渐变颜色。可设置背景色。可直接调用内置的设置 绿色、红色、黄色、黑色、蓝色 等公有槽函数。可设置是否在容器中可移动&#…

2024 抖音欢笑中国年(二):AnnieX互动容器创新玩法解析

本文基于24年抖音春节活动业务背景,介绍了字节跨端容器AnnieX在游戏互动套件上的探索,致力于提升容器在游戏互动场景的优化能力。 业务背景 AnnieX作为字节一方游戏统一容器,服务字节内部电商、直播、UG等跨端场景业务。在字节一方游戏互动场…

YOLOv8模型剪枝实战:Network Slimming网络瘦身方法

课程链接:YOLOv8模型剪枝实战:Network Slimming网络瘦身方法_在线视频教程-CSDN程序员研修院 YOLOv8是一个当前非常流行的目标检测器,本课程使用Network Slimming(网络瘦身)剪枝方法对YOLOv8进行模型剪枝,…

springboot国际化多语言

1,新建国际化多语言文件 在resources目录下新建 messages.properties 其他语言的文件 编辑messages.properties文件,下方从text切换到Resource Bundle ,即可对照着编辑多语言文件 (如果没有找到Resource Bundle,先在settings->plugins中安装Resource Bundle Editor) 2,配…

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库,由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉,那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

Spyder无法载入(load)或者闪退问题

在Anaconda prompt中直接输入spyder,报错如下 Traceback (most recent call last):File "C:\Users\user\.conda\envs\KB\Scripts\spyder-script.py", line 10, in sys.exit(main())File "C:\Users\user\.conda\envs\KB\lib\site-packages\spyder\a…