Attention机制学习

写在前面
注意力机制是一个很不错的科研创新点方向,但是没有系统记录过学习过程,这里记录科研中遇到的各种注意力机制。

1. Attention机制解释

本质上来说用到attention的任务都有Query,Key,Value三个关键components,目标则是输入query,然后根据query和key的关系以及key和value的关系求出最终的value。总结来说注意力机制可以分为三步:
1.输入Query;
2.计算Query和Key的注意力权重 α \alpha α
3.根据 α \alpha α来计算输入信息对Value的加权平均。
在这里插入图片描述

Attention机制流程(参考)

1.1 Example - 根据腰围估计体重

参考视频,这个大佬up讲的非常好,值得大家去一键三连!

图1.1.1

如图1.1.1所示,这个例子是想通过输入一个腰围( q q q),得到最后的体重预测值( k k k)。每一个 k k k对应一个 v v v,但是 q q q要跟三个 k k k都有一个加权,如图1.1.2所示。
在这里插入图片描述

图1.1.2

其中, α ( q , k 1 ) \alpha(q, k_1) α(q,k1)这个就是注意力权重,代表着 q q q k 1 k_1 k1的相关性,也就是 q q q要在多大程度上参考 k 1 k_1 k1对应的 v 1 v_1 v1 α ( q , k 1 ) \alpha(q, k_1) α(q,k1)的计算方式有很多,比如采用余弦距离、欧式距离、皮尔森等距离度量函数。但是需要注意的就是每一个注意力权重都是在经过距离函数计算之后,都要进行归一化处理。归一化处理的方式也很多,比如softmax处理。图三就是采用了欧式距离度量函数,并且采用softmax归一化处理,从而得到最终的注意力权重。
在这里插入图片描述

图1.1.3

现实中,我们的 q q q肯定大多是多维数据,但是计算的过程是一样的。比如说我们的 q q q不再仅包含一个腰围数据,我们还包括了胸围数据,那么这个注意力机制的计算过程就会变成如图1.1.4所示的形式。
在这里插入图片描述

图1.1.4

需要注意的是, k k k v v v不一定也要是二维的,这里up只是为了给后面的self-attention做铺垫,保持 q , k , v q,k,v q,k,v维度一致性才采用2维。图4也给出了3种计算多维数据的权重分数的计算方式。其中的点积模型和缩放点积模型计算方法需要保证 q q q k k k的维度是一致的,也就是self-attention中的注意力权重的计算方法。图1.1.5则给出了一个将 q , k , v q,k,v q,k,v矩阵化后采用缩放点积权重计算过程。
在这里插入图片描述

图1.1.5

2. 各种Attention机制

2.1 Self-Attention

自注意力机制是注意力机制的变体,他能够基于输入的数据来进行注意力机制的学习,减少了对外部的依赖,让模型更多地关注数据本身或特征的内部相关性。例如,在1.1的那个例子里头,把 Q , K , V Q,K,V Q,K,V都改成输入的 X X X
在这里插入图片描述

图 2.1.1

然后采用缩放点积方式的计算则如下所示。
在这里插入图片描述

图 2.1.2

但是在实际应用中,我们往往会对 X X X映射到 Q , K , V Q,K,V Q,K,V的过程中做一个线性变换,比如大名鼎鼎的Transformer模型。
在这里插入图片描述

图 2.1.3
如图2.1.3所示,Transfomer通过引入三个可训练矩阵, 然后图2.1.2的公式就可以变成下式。

f ( X ) = s o f t m a x ( X W Q ( X W K / d ) T ) X W V f(X) = softmax(XW_Q(XW_K/\sqrt{d})^T)XW_V f(X)=softmax(XWQ(XWK/d )T)XWV

3. 问题归纳

3.1 为什么点积计算能代表向量间的相似性?

向量 A A A B B B的点积可以展开成下式:
A ⋅ B = ∣ A ∣ × ∣ B ∣ × c o s ( θ ) A·B=|A|\times|B|\times cos(\theta) AB=A×B×cos(θ)
由上式可以看到, A A A B B B的相似度取决于模长和向量间的夹角。在DL中,用以计算点积之前,往往会对 A A A B B B进行L2等归一化操作,让 ∣ A ∣ |A| A ∣ B ∣ |B| B等于1或者处于一个较小的范围。这时候 A A A B B B的相似度就取决于向量夹角了。那可能会有疑问为什么不直接计算cos余弦相似度呢?因为向量点积的计算速度是最快的,虽然可能存在误差,但是也算是用误差换时间了。

To be continued…

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

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

相关文章

扩展学习|大数据挖掘与智能体ABM建模

出处:计算社会科学_中南大学_中国大学MOOC(慕课) (icourse163.org)https://www.icourse163.org/course/CSU-1466004186 ps:相关内容来自于本人笔记,若有需要请联系原作者!个人学习留存,侵权必删! 一…

可回收资源的环保螺旋盖葡萄酒

在酿酒师中,选择哪种瓶盖来保存一瓶葡萄酒主要取决于葡萄酒的种类和酿酒师自己的偏好。在20世纪70年代,澳洲朋友引进并推广了一种保存葡萄酒的新方法,这种新方法螺旋盖并在70年代获得专利,投入商业使用,澳大利亚的酿酒…

【STM32】STM32学习笔记-OLED显示屏(10)

00. 目录 文章目录 00. 目录01. OLED显示屏接线图02. OLED函数库03. OLED测试代码04. Keil调试05. 程序下载06. 附录 01. OLED显示屏接线图 02. OLED函数库 oled.h #ifndef __OLED_H #define __OLED_Hvoid OLED_Init(void); void OLED_Clear(void); void OLED_ShowChar(uint8…

图片变成动图如何操作?掌握这个办法就够了

生动有趣的gif动画图片是怎么制作的呢?其实,制作gif动图的方法很简单,无需下载任何软件,使用gif动图制作(https://www.gif.cn/)工具-GIF中文网。只需要上传jpg、png格式的图片,轻松一键就能在线…

Reinfocement Learning 学习笔记PartⅡ

文章目录 Reinfocement Learning六、随机近似与随机梯度下降(Stochastic Approximation & Stochastic Gradient Descent)6.1 Robbins-Monro Algorithm6.2 随机梯度下降 七、时序差分方法(Temporal-Difference Learning)7.1 TD…

OpenAI 承认 ChatGPT 最近的懒惰:由于用户体验到响应缓慢和无用的输出,调查正在进行中

文章目录 一. ChatGPT 指令遵循能力下降引发用户投诉1.1 用户抱怨回应速度慢、敷衍回答、拒绝回答和中断会话 二. OpenAI 官方确认 ChatGPT 存在问题,展开调查三. OpenAI 解释模型行为差异,回应用户质疑四. GPT-4 模型变更受人事动荡和延期影响 一. Chat…

【设计模式--行为型--中介者模式】

设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式 定义 又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变它们之间的交互。 结构 抽象中介者角色…

IntelliJ IDEA 运行 若依分离版后端

一、本地运行 一、选择打开IntelliJ IDEA项目 二、选择若依项目 如:java123 三、等待右下角的准备工作(有进度条的)完成 四、修改MySQL 五、修改资源上传目录 六、修改redis 七、然后点击运行 八、成功图 九、测试访问 二、部署服务器运行 …

策略+工厂完成支付方式选择(微信/支付宝),简单实现

需求 传参String payType wechat 使用微信支付传参String payType ali 使用支付宝支付代码不允许出现if-else 思路 把支付当作一个行为,代码中当作一个接口,payService。2个实现类,分别是微信支付实现类WeChatPayServiceImpl&#xff0c…

【数据结构】单链表的定义和操作

目录 1.单链表的定义 2.单链表的创建和初始化 3.单链表的插入节点操作 4.单链表的删除节点操作 5.单链表的查找节点操作 6.单链表的更新节点操作 7.完整代码 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助…

汽车充电协议OpenV2G的平替cbexigen!!

纵所周知,开源欧规协议 CCS 的 OpenV2G 协议不支持 ISO15118-20:2022 协议,并且软件维护者已经明确不在进行该软件的维护。 前几天在 Github 上冲浪发现了一个宝藏开源项目,完美的实现的 OpenV2G 的 Exidizer 工具的功能:cbexigen…

Goldstein枝切法对存在间断相位缺陷的解缠研究

摘要: Goldstein枝切法作为相位解缠中路径积分法的重要算法之一,其解缠结果易受到噪声或间断相位缺陷所引起的残差点影响。为了研究相位间断缺陷对解缠算法的影响,模拟了具有间断相位缺陷的数据,采用 Gold-stein枝切法进行了系统的解缠研究。…

嵌入式C语言变量、数组、指针初始化的多种操作

在敲代码的时候,我们会给变量一个初始值,以防止因为编译器的原因造成变量初始值的不确定性。 对于数值类型的变量往往初始化为0,但对于其他类型的变量,如字符型、指针型等变量等该如何初始化呢? 数值类变量初始化 整…

巴贝拉葡萄酒是单一品种还是混合品种制成的?

大多数巴贝拉葡萄酒都是由单一的巴贝拉葡萄品种制成的,许多意大利葡萄酒商开始尝试在巴贝拉葡萄酒中加入其它葡萄品种,其中两个最受欢迎的意大利品种是皮埃蒙特的巴贝拉德阿尔巴和达斯蒂。和朋友在一家意大利餐厅吃饭,被酒单吓到了&#xff1…

MySQL数据库 入门

目录 一、MySQL概述 二、MySQL安装 安装数据库 配置数据库 启动停止数据库 客户端连接数据库 三、数据模型 四、SQL 一、MySQL概述 先来讲解三个概念:数据库、数据库管理系统、 SQL 。 而目前主流的关系型数据库管理系统的市场占有率排名如下: …

Android--Jetpack--数据库Room详解一

人生何须万种愁,千里云烟一笑收 一,定义 Room也是一个ORM框架,它在SQLite上提供了一个抽象层,屏蔽了部分底层的细节,使用对象对数据库进行操作,进行CRUD就像对象调用方法一样的简单。 二,角色介…

​【EI会议征稿中】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿,先送审# 第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024) 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月1日-3日 | 中国南京 会议官网&#xff1a…

外包干了4个月,测试技术退步明显

先说一下自己的情况,本科生,20年通过校招进入杭州某软件公司,干了3年的功能测试,当然有半年是被封在了家里,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我…

10个 Python 脚本来自动化你的日常任务

在这个自动化时代,我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。 那么在本文中,我将向您介绍 10 个 Python 自动化脚本,以使你的工作更加自动化&#…

在Mac系统下为SpringBoot 配置Maven 【避坑完整版】

前提背景 电脑罢工,操作系统重装,不仅有大量的软件需要安装,还有很多开发环境需要配置。 就在今天配置Maven的时候各种坑,写下来供大家参考。 一、在讨论安装Maven前先安装一下JDK,方式很多,我这里有个比较快的办法&am…