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

​🌈 个人主页:十二月的猫-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.mfbz.cn/a/557358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超详细Web程序设计基础知识,新手设计师快收藏!

Web 程序设计是现代计算机科学的核心领域之一。它涉及到开发各种不同类型的网站和应用程序,从基本的静态页面到复杂的动态应用程序。本文将介绍 Web 程序设计的基础知识,包括 JavaScript、HTML、CSS 等方面的内容。 1、JavaScript JavaScript 是一种脚…

【Web】Dest0g3 520迎新赛 题解(全)

目录 phpdest EasyPHP SimpleRCE funny_upload EasySSTI middle PharPOP ezip NodeSoEasy Really Easy SQL&easysql EzSerial ljctr phpdest 尝试打pearcmd,但似乎没有写文件的权限 ?config-create/&file/usr/local/lib/php/pearcmd.php&a…

C++学习————第七天(初始化列表、static,友元,内部类)

今天已经是C学习第七天,希望这篇文章能够给大家带来更多的帮助,相应文章都放在C学习专栏里面。 C学习————第五天(构造函数 析构函数 拷贝构造函数)-CSDN博客 C学习————第六天 (运算符重载 const成员 取地址&…

[渗透测试学习] Monitored-HackTheBox

Monitored-HackTheBox 信息搜集 nmap扫描一下端口 nmap -sV -sC -v --min-rate 1000 10.10.11.248扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) 80/tcp open http Apache httpd …

阿里巴巴拍立淘API让购物更智能:图片搜索商品,信息快速呈现,个性化推荐更精准

随着互联网的不断发展,电子商务已经成为人们日常生活中不可或缺的一部分。然而,传统的文本搜索方式在购物过程中往往存在信息不匹配、效率低下等问题。为了解决这些问题,阿里巴巴推出了拍立淘API,通过图片搜索商品的方式&#xff…

graphviz使用

安装 brew install graphviz测试 https://github.com/martisak/dotnets?tabreadme-ov-file

德鲁伊参数踩坑之路

上文说到 Druid德鲁伊参数调优实战,也正因此次优化,为后续问题埋下了伏笔 背景 2024/04/16日,业务反馈某个定时统计的数据未出来,大清早排查定位是其统计任务跑批失败,下面给一段伪代码 // 无事务执行 public void …

05 JavaScript学习:语法

JavaScript 是一种动态类型的脚本语言,广泛用于网页开发和构建交互式网页。JavaScript 的语法相对简单,但功能强大,它可以在客户端执行,并与HTML和CSS一起构建交互式的网页。 JavaScript 字面量 在 JavaScript 中,字…

吴恩达机器学习笔记:第 7 周-12支持向量机(Support Vector Machines)12.4-12.6

目录 第 7 周 12、 支持向量机(Support Vector Machines)12.4 核函数 112.5 核函数 212.6 使用支持向量机 第 7 周 12、 支持向量机(Support Vector Machines) 12.4 核函数 1 回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类 问题: …

Octopus+: An RDMA-Enabled Distributed Persistent Memory File System——泛读笔记

TOS 2021 Paper 分布式元数据论文阅读笔记整理 问题 非易失性存储器(NVM)和远程直接存储器访问(RDMA)在存储和网络硬件中提供了极高的性能。然而,现有的分布式文件系统隔离了文件系统和网络层,而且分层的…

【C++】C++11右值引用

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是左值&&…

使用名称空间共享集群

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

【五十一】【算法分析与设计】KMP 算法,KMP 算法的作用,KMP 算法流程,KMP 算法证明,KMP 算法代码

目录 KMP 算法的作用,解决的问题 KMP 算法的流程 Next 数组 KMP 算法正式过程 KMP 算法的证明过程 Next 数组的求法 Next 数组求法的证明过程 KMP 算法代码 结尾 KMP 算法的作用,解决的问题 1. 首先给你一个字符串 str,然后又给你…

mPEG-Succinimidyl Carboxyl Methyl ester,135649-01-3可以制备出多种生物成像试剂

【试剂详情】 英文名称 mPEG-SCM,Methoxy PEG SCM, mPEG-Succinimidyl Carboxyl Methyl ester 中文名称 聚乙二醇单甲醚琥珀酰亚胺乙酸酯, 甲氧基-聚乙二醇-琥珀酰亚胺乙酸酯 CAS号 135649-01-3 外观性状 由分子量决定,液体…

交流电220V转9V直流电芯片WT5105

交流电220V转9V直流电芯片WT5105 WT5105设计一个电路。电路的输入端连接到220V交流电,通过一个整流桥进行整流,将交流电转换为脉冲直流电。然后,经过电容滤波后,得到较为平滑的直流电。这个直流电进入WT5105的输入端。 在WT5105的…

揭秘1688选品高阶玩法,90%的人都没注意到(下篇)

店雷达继续为各位商家揭秘1688选品7大高阶玩法,错过前4个选品场景思路干货的商友们可以点击上篇查看哦。希望帮助各位找到符合自己选品方向,提供一些新的思路帮助。☛《揭秘1688选品高阶玩法,90%的人都没注意到(上篇)》…

2W 6KVDC 隔离双输出 DC/DC 电源模块——TPJ-2W 系列,可以用于医疗仪器和设备中

TPJ-2W一款有超高隔离电压的电源模块,主要用于隔离度要求高的如医疗仪器和设备,特别在安全设备的应用中起着相当重要的作用,它的绝缘设计完全能满足对隔离电压要求超过6KVDC的应用,在额定负载2W的情况下,工作温度范围为…

鸿蒙原生应用元服务-访问控制(权限)开发场景与权限声明

一、场景介绍 应用的APL(Ability Privilege Level)等级分为normal、system_basic和system_core三个等级,默认情况下,应用的APL等级都为normal等级。权限类型分为system_grant和user_grant两种类型。 二、配置文件权限声明 应用需要…

基于springboot+vue花店商场管理系统

项目介绍: 基于springbootvue花店商场管理系统 开发系统:Windows 架构模式:MVC/前后端分离 JDK版本:Java JDK1.8 开发工具:IDEA 数据库版本: mysql8.0 数据库可视化工具: navicat 服务器&#…

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne 王婆的瓜可甜? 自 23 年 8 月份 EdgeOne 开放订阅套餐后,腾讯云用户使用 EdgeOne 来为自己网站进行加速和防护的站点数量,呈现爆发式增长趋势。 金融服务业受到的 Web…