注意力机制基本思想(一)

​🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀《深度学习基础知识》

      相关专栏: 《机器学习基础知识》

                         🏐《机器学习项目实战》
                         🥎《深度学习项目实战(pytorch)》

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

前言

在注意力机制论文 Attention Is All You Need 中最苦恼大家的肯定是K、Q、V三个变量的含义

翻阅了CSDN、知乎大量文章后,我发现没有文章能够带大家对注意力机制建立直观的认识

大部分文章要么没有从初学者的角度出发介绍的是注意力机制上层应用,要么其作者自己也并没有真正理解注意力机制所以讲的不清不楚

所以在看完《动手学深度学习(pytorch版)》、Attention Is All You Need 论文、以及大量文章后,我开始动手写这篇专门为初学者的介绍注意力机制的文章

注意力机制的起源

深度学习中的注意力机制(Attention Mechanism)是一种模仿人类视觉和认知系统的方法,它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制,神经网络能够自动地学习并选择性地关注输入中的重要信息,提高模型的性能和泛化能力

人类的注意力

以下这张图可以较好地去理解注意力机制,其展示了人类在看到一幅图像时如何高效分配有限注意力资源的,其中红色区域表明视觉系统更加关注的目标,从图中可以看出:人们会把注意力更多的投入到人的脸部。文本的标题以及文章的首句等位置。

大数据引发的两个问题

信息过载:随着大模型的出现,训练一个深度学习模型所需要的数据量越来越大,在算力有限的情况下,如何将计算资源分配给更重要的任务,是亟待解决的问题。

信息嘈杂:在神经网络学习中,一般而言模型的参数越多则模型的表达能力越强,模型所存储的信息量也越大,这也代表信息越嘈杂(重要的,不重要的都有)。在众多的输入信息中聚焦于对当前任务更为关键的信息,降低对其他信息的关注度,甚至过滤掉无关信息,能够提高模型的准确性。

问题的解决

信息嘈杂和信息过载都意味着我们需要忽视一些无用信息专注重要信息

于是,我们就需要一个算法告诉我们该关注什么,也就是什么重要,我们的注意力该放在哪里

这就是:注意力机制(如何在深度学习的模型上做出问题应该有的注意力)

由此论证了注意力机制在深度学习(尤其是大模型中)的必要性

接下来的问题就是如何让神经网络能够自动地学习并确定注意力应该如何分配

人类注意力机制深度剖析

为了帮助理解,请大家假设一个场景:

我现在在看一份报纸,报纸中有体育板块、科技板块、股票板块、健康板块四大块内容。我平常特别爱好科技板块、其次是体育、健康和股票板块,那么我最重点关注的肯定就是科技板块,最后关注的就是股票板块

下面请大家思考这个选择过程是如何进行的呢?让我来画一张流程图解释:

上面这个流程图就是我们人类大脑看到一个内容时,如何对内容进行注意力分配的机制。我希望大家在这里停一停脚步,好好感受以下这个流程图,这对后面的理解相当重要~~~

注意力机制基本思想 

在这一部分,我们将直接来看注意力机制的基本思想

我希望大家可以把这个思想和上面人类注意力机制的流程一一对应起来

先上一张图,这个图显示的就是注意力机制实现的一整个流程,分为三个阶段

定义

1、V:被查询对象(待分配注意力的对象)(上面实例中的”报纸“)

2、Q:查询对象的偏向(爱好)(上面实例中的”我的爱好“)

3、K:V的各个部分(可以假定K=V,也可以让K和V存在某种联系)(上面实例中的”各板块“)

数学基础 

假设现在已知K,也已经确定Q,这两者都用一个矩阵(向量)来表示。

现在就来看如何计算K和Q的相似度(相似度高则给予更多注意力,否则更少注意力)

向量相似性

余弦相似性(Cosine Similarity)

余弦相似性(Cosine Similarity)是一种用于度量两个向量之间相似性的方法,通常在多维空间中使用。它衡量了两个向量之间夹角的余弦值,从而提供了一种评估它们之间关系的方式。

cosine_similarity(A, B) =A\cdot B


其中A 和 B 是两个要比较的向量。
A\cdot B 表示向量的点积,也称为内积,它是两个向量对应元素的乘积之和。

几何意义是:A 投影在 B 上的模长乘以 B 的模长

当余弦相似性等于1时,表示两个向量在多维空间中的方向完全相同,即它们是完全相似的。
当余弦相似性等于0时,表示两个向量之间不存在线性关系,它们是不相关的。
当余弦相似性等于-1时,表示两个向量在多维空间中的方向正好相反,即它们是完全不同的。
 

K、Q相似度衡量 

到这里,不难想出衡量K、Q相似度也就是衡量其中向量的相似度,所以可以用内积的方式实现

假设:Q,𝐾=𝑘1,𝑘2,⋯,𝑘𝑛 

通过点乘的方法计算Q 和 K 里的每一个事物的相似度,就可以拿到 Q 和k1𝑘1的相似值s1𝑠1,Q 和k2𝑘2的相似值s2𝑠2⋯⋯最后Q 和kn𝑘𝑛的相似值 sn

S_i=F(Q,k_i)

这是我们就有了S1,S2,S3,⋯,Sn,通过前面的分析,我们可以知道S就表示相似度,相似度越高则我们要分配的注意力也就越多。但是此时S的数据仍然是杂乱无章的,所以我们需要对S进行归一化处理,让S从相似度转为概率度,也就是分配注意力的比例

所以,这里我们对S1,S2,S3,⋯,Sn进行一层softmax得到概率a1,a2,⋯,an

到这里,我们已经完成前面两个阶段的任务,下面让我们进入阶段三

注意力分配

 阶段三的本质就是注意力的汇总,也就是根据前面算得注意力分配比例a1,a2,⋯,an来计算得出查询目标V上各部分最终得到的注意力值

数学角度来看:

V = (v1,v2,⋯,vn)

(a1,a2,⋯,an)∗+(v1,v2,⋯,vn)=(a1∗v1+a2∗v2+⋯+an∗vn) = V'

此时得到全新的V',这个V不仅包含V本身的信息,也包含查询者对这个信息的倾向爱好

Attention((K,V),Q)=\sum_{i=1}^N\alpha_iv_i

于是,我们就可以用这个 V'来代替原本的V,这个V也就包含了我们的注意力

总结

总的来说,注意力机制的完整流程为:

第一步:根据Query和Key计算二者的相似度。可以用上面所列出的加性模型、点积模型或余弦相似度来计算,得到注意力得分si;

第二步:用softmax函数对注意力得分进行数值转换。一方面可以进行归一化,得到所有权重系数之和为1的概率分布,另一方面可以用softmax函数的特性突出重要元素的权重;

第三步:根据权重系数对Value进行加权求和:


如果文章能帮助到大家,大家可以点点赞、收收藏呀~ 

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

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

相关文章

2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总 https://docs.qq.com/doc/DSExMdnNsamxCVUJt 行车轨迹估计交通信号灯周期问题 摘要 在城市化迅速发展的今天,交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据,对行车轨迹估计交通信号灯…

七月论文审稿GPT第4.5版:通过15K条paper-review数据微调Llama2 70B(含各种坑)

前言 当我们3月下旬微调完Mixtral 8x7B之后(更多详见:七月论文大模型:含论文的审稿、阅读、写作、修订 ),下一个想微调的就是llama2 70B 因为之前积攒了不少微调代码和微调经验,所以3月底apple便通过5K的paper-review数据集成功…

机器视觉【1】-机械臂视觉

文章目录 Eye-to-HandEye-in-Hand基于Eye-in-Hand型机械臂单目视觉定位单目相机标定针孔相机模型畸变标定方法机械臂手眼标定手眼标定求解图像预处理图像灰度化与二值化图像滤波图像特征匹配机械臂单目视觉定位目标物体图像深度信息目标物体中心定位参考文献根据机械臂与相机所…

基于PyAutoGUI图片定位的自动化截图工具--完成了

1、计划 压测完成后需要编写性能测试报告,报告中所需数据截图较多,使用自动化操作方便快捷,就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分&#…

jenkins从节点配置说明

目的 打包构建时使用从节点,从节点所在服务器配置4C8G5000G(服务器2) 前提 首先在服务器1上部署jenkins服务,即主节点,默认节点名称为master 步骤 1)登录进入jenkins平台,在系统设置中&…

AJAX 入门到实战 第1天 2024 笔记

1.1-AJAX入门与axios使用 1.2-认识URL 1.3-查询参数 1.4-案例_地区查询 <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市…

李沐53_语言模型——自学笔记

语言模型 1.预测文本序列出现的概率 2.应用在做预训练模型 3.生成文本&#xff0c;给定前面几个词&#xff0c;不断生成后续文本 4.判断多个序列中哪个更常见 真实数据集的统计 《时光机器》数据集构建词表&#xff0c; 并打印前10个最常用的&#xff08;频率最高的&…

C语言 | 动态内存管理

目录&#xff1a; 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 cha…

一篇文章搞定Jenkins自动化部署JDK17+SpringBoot3.X+新版AlibabaCloud打包Docker镜像推送私有镜像仓库

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

-内核编译-01

挂载根文件系统 1搭建【nfs】 1.1PC端配置 nfs&#xff1a;网络服务器 【sudo /etc/init.d/nfs-kernel-server restart】 【sudo /etc/init.d/nfs-kernel-server status】 【sudo netstat -anp|less】 1重启【nfs】网络服务方法2&#xff1a;查看日志 修改配置文件 进入…

无线通信基本原理笔记

通信&#xff1a;人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。 通信模型&#xff1a;信源→发送设备→信道&#xff08;↑噪声&#xff09;→接收设备→信宿 调制&#xff1a;把基带信号变换成适合在信道中传输的信号的技术。通过改变高频载波的幅度、相位…

计算机网络基础1--基础概念

1. IP地址 1.1 IPv4地址 分为网络号和主机号 地址块的第一个地址和最后一个地址通常不使用。 广播地址为主机号全取1的情况。 2. 常用报文格式 2.0 ethernet协议 2.1 arp协议 2.2 ip协议 2.3 tcp协议 2.4 udp协议 2.5 icmp协议

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】 题目描述&#xff1a;解题思路一&#xff1a;排序 哈希表解题思路二&#xff1a;排序 队列解题思路三&#xff1a;消消乐 题目描述&#xff1a; 一个整数数组 original 可以转变成一个 双倍 数组 changed &…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

maridb双数据源联查解决方案:联合存储引擎(Federated Storage Engine)

本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的数据库链接(DBLINK)。使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地。操作…

PCA(Principal Component Analysis,主成分分析)与矩阵X的协方差矩阵之间的联系

PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是一种常用的降维技术&#xff0c;用于将高维数据集投影到低维空间中。在PCA中&#xff0c;投影方程将原始特征向量 ( x 1 , x 2 , … , x p ) (x_1, x_2, \ldots, x_p) (x1​,x2​,…,xp​)映射…

Linux 网络编程项目--简易ftp

主要代码 config.h #define LS 0 #define GET 1 #define PWD 2#define IFGO 3#define LCD 4 #define LLS 5 #define CD 6 #define PUT 7#define QUIT 8 #define DOFILE 9struct Msg {int type;char data[1024];char secondBuf[128]; }; 服务器: #i…

【天软行业全景画像】报告第8期

行业全景画像因子 报告概要&#xff1a;传媒、环保、机械设备行业的拥挤度较高&#xff0c;实际投资交易应注意&#xff1b;煤炭、银行、石油石化行业动量较强&#xff0c;医药生物、综合、计算机行业动量较弱&#xff0c;业绩整体表现较差&#xff1b;食品饮料、公用事业行业景…

书生·浦语大模型实战营(第二期):XTuner 微调 LLM

目录 Finetune简介两种Finetune范式一条数据的一生标准格式数据添加对话模板两种finetune的loss计算 LoRA&QLoRA XTunerXTuner简介XTuner快速上手安装&训练配置模板对话工具数据处理数据集映射函数 InternLM2 1.8B模型多模态LLM给LLM装上电子眼&#xff1a;多模态LLM原…

技术速递|为 .NET iOS 和 .NET MAUI 应用程序添加 Apple 隐私清单支持

作者&#xff1a;Gerald Versluis 排版&#xff1a;Alan Wang Apple 正在推出一项隐私政策&#xff0c;将隐私清单文件包含在针对 App Store 上的 iOS、iPadOS 和 tvOS 平台的新应用程序和更新应用程序中。请注意&#xff0c;至少目前 macOS 应用程序被排除在外。 隐私清单文件…