当前位置: 首页 > news >正文

自注意力机制(self-attention)

自注意力机制(self-attention)

在这里插入图片描述之前听过吴恩达老师的课,吴恩达老师CNN那一块讲的特别好,但是后面RNN这一部分我听的不是很明白,今天有看了李宏毅老师attention这部分的课,总结一下笔记。

self-attention

image-20240910185943282

红色框中的这四个向量是考虑了整个sequence后的输出,而且self-attention不仅可以使用一次,

image-20240910190237201

transformer中最重要的就是self-attention

image-20240910191112843

根据 a 1 a^1 a1找到和 a 1 a^1 a1相关的向量,比如如何计算 a 1 a^1 a1 a 4 a^4 a4有多相关

image-20240910191746530

计算有很多不同的方法计算相关度 α \alpha α,但主要是左边这种方法

image-20240910192304824

α \alpha α也叫attention score,实际上通常还要计算和自己的关联性

image-20240910193750547

然后加上一个softmax

image-20240910194104425

你也可以不用softmax

image-20240910194340047

如果关联性比较强,比如 α 1 , 2 ′ {\alpha}'_{1,2} α1,2得分高,那么 b 1 b^1 b1就更接近 v 2 v^2 v2

需要说明的一点是 b 1 , b 2 , b 3 , b 4 b^1,b^2,b^3,b^4 b1b2b3b4不需要依序产生,不需要先算 b 1 b^1 b1,然后再算 b 2 b^2 b2 b 1 , b 2 , b 3 , b 4 b^1,b^2,b^3,b^4 b1b2b3b4是同时得到的

现在计算 b 2 b^2 b2 a 2 a^2 a2×权重参数w得到 q 2 q^2 q2

image-20240910195452601

然后

image-20240910195634997

接下来从矩阵乘法的角度再从新过一遍self-attention

image-20240910200049874

得到qkv后,计算 α {\alpha} α

image-20240910200256491

然后一样的操作

image-20240910200514637

得到 α {\alpha} α矩阵后,进行softmax,使和为1

image-20240910200724613

得到 A ′ A' A

image-20240910201032268

再回顾一下,I是输入,是一排的 α {\alpha} α拼接起来

image-20240910201511237

输入是I,输出是O。虽然self-attention看起来做了很复杂的操作,但实际需要学习的参数只有三个矩阵

image-20240910201622577

self-attention还有一个进阶版本multi-head Self-attention。

我们之前找相关是通过q找相关的k,但是相关有很多不同的形式,

image-20240910203617311

q i q^i qi乘以两个不同的矩阵得到 q i , 1 , q i , 2 q^{i,1},q^{i,2} qi,1,qi,2,q有两个,那么对应的k和v也有两个

image-20240910203823826

具体是怎么计算的呢

image-20240910203946337

q 1 q^1 q1算attention分数的时候只需要管 k 1 k^1 k1不需要管 k 2 k^2 k2

image-20240911094901563

同样的得到attention分数后,只需要乘以 v 1 v^1 v1,得到 b i , 1 b^{i,1} bi,1,这只用到了一个head,另一个head也做一样的事情

image-20240911095530535

接下来把 b i , 1 b^{i,1} bi,1 b i , 2 b^{i,2} bi,2拼在一起,乘以一个矩阵,得到 b i b^i bi传到下一层

image-20240911095720222

这就是multi-head Self-attention。但是现在有个很重要的问题,就是没有位置信息,输入 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4是在seq的最前面还是最后面?

虽然我们给它们标了1234,但只是为了方便理解,对于神经网络来说,它并不知道 a 1 , a 2 , a 3 , a 4 a^1,a^2,a^3,a^4 a1,a2,a3,a4哪个在前哪个在后。所以你做Self-attention的时候,如果觉得位置信息是个重要的信息,可以把位置信息加上

image-20240911101431636

每个位置给一个独特的vector 也就是 e i e^i ei,但是这种方法是人为的,人设的vector就有很多的问题,比如vector设到128,但是sequence有129。论文中vector是通过一个sin cos的函数产生的,当然你可以采用其他的方法,位置vector的设置还是一个有待研究的问题,你可以创造新的方法。有篇文章详细的比较了不同的position vector

image-20240911102146058

每一行代表一个vector,a是最原始的,b是学习出来的,c是使用一个神奇的网络,d是通过rnn学习的

self-Attention在NLP的应用,大家耳熟能详

image-20240911102449025

但是self-Attention不只能用在NLP相关领域,也可以用在其他方面,比如做语音的时候,但是在做语音的时候,你可能会对self-Attention有一个小小的改动,因为用vector表示语音信号,向量的长度会非常大,因为用一个向量表示10ms的语音信息,那么1s的语音就有100个vector,5s就是500个vector,随便一句话可能就成千个vector了,

image-20240911102939501

如果长度很大,Attention Matrix就很大,要计算 L 2 L^2 L2,计算量大,而且消耗的内存也大.所以做语音识别的时候,有一个叫Truncated Self-attention。

image-20240911103228603

不需要看整个句子,只需要看一部分即可(人为设定的),但是我们是怎么知道需要一部分就好,那就取决于你对这个问题的理解。

Self-attention还可以被应用在图像上,我们目前讲的Self-attention都是适合在输入是一排向量的时候,但我们也可以把图像看成是vector set

image-20240911104350697

我们可以把图像的每个位置看成一个三维的向量,那么就是一个50个向量的vector set,从这个角度看,图像就是一个vector set,那么就能用Self-attention。已经有人这么做了

image-20240911104611392

比如1这个像素点产生query,0这个像素点产生key,那么我们考虑就是整张图像

image-20240911104750513

这么看的话,CNN更像是简化版的Self-attention,因为CNN只考虑了卷积核范围内的数据

image-20240911105337595

下面这篇文章会用数学严谨的方式告诉你

image-20240911113009909

只要设置合适的参数,Self-attention可以做到和CNN一样的事,可以发现Self-attention比CNN更加灵活,但是更灵活的model需要更多的data,否则容易过拟合,而有限制的模型可能在数据小的时候也不会过拟合。

16×16的patch(图像的一个块),每个patch就看成一个word

image-20240911113706056

最小的数据量是10M,一千万张图

image-20240911113803946

RNN和Self-attention的区别

image-20240911115618239

Self-attention每一个都考虑了整个sequence而,RNN只考虑了左边的vector,不过RNN也可以用双向的。不过把RNN的output和Self-attention的output对比的话,即使使用了bidirectional的RNN,还是有一定差别。

对于RNN的输出,想要考虑最左边的输入,需要存在memory里,一直不能忘记,一直带到最右边,才能在最后一个时间点被考虑,但对Self-attention来说没有这个问题

image-20240911120053081

还有就是RNN没办法平行处理,必须先产生前面的向量

image-20240911144339055

而Self-attention可以同一时间一次性生成这些向量,所以运算效率上,Self-attention比RNN更有效率。想进一步了解RNN和Self-attention可以看下面这篇文章
Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention
最后,Self-attention也可以用在Graph上面

image-20240911145203529

每一个node可以表示为一个vector,因为graph有edge的信息,所以不需要attention去找关联性,所以在计算

image-20240911145604732

Attention Matrix的时候只需要计算有edge相连的node, 根据domain knowledge没有相连的我们直接设置为0

image-20240911145825292

Self-attention也有非常多的变形

image-20240911150356983

Self-attention的最大问题就是运算量非常大

相关文章:

自注意力机制(self-attention)

自注意力机制(self-attention) 之前听过吴恩达老师的课,吴恩达老师CNN那一块讲的特别好,但是后面RNN这一部分我听的不是很明白,今天有看了李宏毅老师attention这部分的课,总结一下笔记。 self-attention …...

Nuxt3入门:过渡效果(第5节)

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果&#xff0c;以便对所有页面应用自动过渡效果。 nuxt.config.js export defaul…...

【开发工具】IntelliJ IDEA插件推荐:Json Helper——让JSON处理更高效

导语&#xff1a;在Java开发过程中&#xff0c;JSON作为一种轻量级的数据交换格式&#xff0c;被广泛应用于前后端数据交互。今天&#xff0c;我要为大家介绍一款IntelliJ IDEA插件——Json Helper&#xff0c;帮助开发者更高效地处理JSON数据。 一、什么是Json Helper&#x…...

Lua垃圾回收机制

Lua垃圾回收机制 在 Lua 中&#xff0c;一共只有8种数据类型&#xff0c;分别为 nil 、boolean 、userdata 、number 、string 、 table 、 function 、 userdata 和 thread 。其中&#xff0c;只有 string table function thread 四种是以引用方式共享&#xff0c;是需要被 G…...

Java学习路线:详细指引

Java学习路线可以分为几个阶段&#xff0c;每个阶段都有其重点和推荐学习的内容。下面我将按照初学者、进阶和高级三个阶段来举例说明&#xff1a; 初学者阶段 目标&#xff1a; 熟悉Java基础语法理解面向对象编程掌握基本数据类型和数据结构学会使用IDE&#xff08;如Intel…...

商家转账到零钱如何开通-微信支付

商家转账到零钱是微信支付的一项实用功能&#xff0c;允许商户将资金从商户号余额直接转账到用户的微信零钱。我们以上万次成功申请的经验整理了本文的详细的步骤和建议以帮助商户可以快速开通该功能。 1. 准备工作 - 确认申请资格&#xff1a;只有公司性质的商户可以申请此功能…...

自研商家如何快速接入电商平台订单数据?

随着电子商务行业的快速发展&#xff0c;越来越多的商家开始寻求高效的订单管理和数据整合方案。对于那些自研系统的商家来说&#xff0c;如何实现与各大电商平台之间的无缝对接&#xff0c;成为了一项重要挑战。点三电商API正是为此类需求量身打造&#xff0c;为商家提供了一站…...

Win10下借助CMake编译OpenMVS

笔者在编译OpenMVS的过程十分曲折。刚开始借助CMake编译,能够把与库生成相关的工程编译出来,但是与可执行文件相关的工程会报错;后来参考官方教程借助VCPKG编译,发现VCPKG并没有想中强大、好用,最终也是遇到了各种问题没有编译成功。但是,笔者在解决问题的过程发现了问题…...

04_定时器与数码管基础

通过上节课的实验&#xff0c;大家会发现&#xff0c;我们逐渐进入比较实质性的学习了&#xff0c;需要记住的内容也更多了&#xff0c;个别地方可能会感觉吃力。但是大家不要担心&#xff0c;要有信心。这个跟小孩学走路一样&#xff0c;刚开始走得不太稳&#xff0c;没关系&a…...

Python 数学建模——方差分析

文章目录 前言单因素方差分析原理核心代码 双因素方差分析数学模型分析依据典型代码 前言 方差分析也是概率论中非常重要的内容&#xff0c;有时数学建模需要用到。方差分析是干什么的&#xff1f;如果说假设检验用于分析两个总体之间的均值 μ 1 , μ 2 \mu_1,\mu_2 μ1​,μ…...

计算机视觉中,什么是上下文信息(contextual information)?

在计算机视觉中&#xff0c;上下文信息&#xff08;contextual information&#xff09;是指一个像素或一个小区域周围的环境或背景信息&#xff0c;它帮助模型理解图像中对象的相对位置、大小、形状&#xff0c;以及与其他对象的关系。上下文信息在图像中提供了全局的语义和结…...

YOLOv5改进 | 模块缝合 | C3 融合RVB + EMA注意力机制【二次融合】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…...

mysql 更改默认端口号 新增用户密码 赋予权限

默认情况下&#xff0c;mysql的端口是3306&#xff0c;超级用户是root&#xff0c;很多情况下会被黑客扫描到&#xff0c;成为肉鸡&#xff08;作者以前就有过经理&#xff09;&#xff0c;数据库表直接丢失&#xff0c;勒索我。 所以我这里介绍下&#xff0c;更改默认端口&am…...

吐血整理nacos 作为springcloud的配置中心和注册中心

吐血整理nacos 作为配置中心和注册中心 环境版本nacos 版本 nacos启动单机模式启动配置数据库 Spring cloud 连接注册Nacos配置中心导入依赖 注册中心 环境版本 SpringBoot版本SpringCloud版本cloud Alibaba版本2.6.132021.0.52021.0.5.0 参照依据 spring-cloud-alibab 对应…...

【秋招笔试】9.09阿里国际秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集…...

sql语句在sqlserver中能查询出结果,但是代码中查不出来

右键登录名&#xff0c;选择属性&#xff0c;勾选下面两张图片中的项&#xff0c;即可。...

【机器学习】决策树与随机森林:模型对比与应用案例分析

文章目录 一.引言 在现代数据科学的世界中&#xff0c;决策树和随机森林是两个非常重要且广泛使用的机器学习算法。它们不仅因其高效性和强大的表现力而受到青睐&#xff0c;而且在解决实际问题时也表现出了令人印象深刻的能力。本篇文章将深入探讨这两个算法&#xff0c;帮助读…...

Apache SeaTunnel基础介绍

一、什么是Apache SeaTunnel&#xff1f; Apache SeaTunnel&#xff08;最初名为Waterdrop&#xff09;是一个开源的分布式数据集成平台&#xff0c;专为大规模数据处理设计。SeaTunnel可以从多种数据源读取数据&#xff0c;进行实时流式处理或批处理&#xff0c;然后将处理后…...

阿里旗下土耳其电商Trendyol计划进军欧洲市场

阿里旗下土耳其电商Trendyol计划进军欧洲市场 近年来&#xff0c;阿里巴巴集团在全球电商领域的布局持续深化&#xff0c;其旗下土耳其电商巨头Trendyol更是凭借其出色的市场表现和强劲的增长势头&#xff0c;成为了备受瞩目的焦点。近日&#xff0c;Trendyol宣布了一项重要战…...

IBM中国研发裁员与AIGC浪潮下的中国IT产业新篇章:挑战、机遇与未来展望

文章目录 一、跨国公司战略调整与全球IT版图的重构1. 跨国公司的战略考量2. 中国IT产业的应对策略 二、人才市场的深刻变革与应对策略1. 人才流失与再就业压力2. 人才培养与引进策略3. 个人职业规划与发展 三、AIGC浪潮下的中国IT产业新机遇1. AIGC技术的潜力与前景2. 中国IT产…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...