深入理解深度学习——注意力机制(Attention Mechanism):自注意力(Self-attention)

news2024/12/26 23:50:49

分类目录:《深入理解深度学习》总目录

相关文章:
·注意力机制(AttentionMechanism):基础知识
·注意力机制(AttentionMechanism):注意力汇聚与Nadaraya-Watson核回归
·注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction)
·注意力机制(AttentionMechanism):Bahdanau注意力
·注意力机制(AttentionMechanism):多头注意力(MultiheadAttention)
·注意力机制(AttentionMechanism):自注意力(Self-attention)
·注意力机制(AttentionMechanism):位置编码(PositionalEncoding)


在深度学习中,经常使用卷积神经网络(CNN)或循环神经网络(RNN)对序列进行编码。想象一下,有了注意力机制之后,我们将词元序列输入注意力池化中,以便同一组词元同时充当查询、键和值。具体来说,每个查询都会关注所有的键—值对并生成一个注意力输出。由于查询、键和值来自同一组输入,因此被称为自注意力(Self-attention),也被称为内部注意力(Intra-attention)。

给定一个由词元组成的输入序列 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn,其中任意KaTeX parse error: Undefined control sequence: \inR at position 4: x_i\̲i̲n̲R̲^d(1\leqi\leqn)。该序列的自注意力输出为一个长度相同的序列 y 1 , y 2 , ⋯   , y n y_1,y_2,\cdots,y_n y1,y2,,yn,其中:
KaTeX parse error: Undefined control sequence: \inR at position 48: …dots,(x_n,x_n))\̲i̲n̲R̲^d

接下来比较下面几个架构,目标都是将由 n n n个词元组成的序列映射到另一个长度相等的序列,其中的每个输入词元或输出词元都由 d d d维向量表示。具体来说,将比较的是卷积神经网络、循环神经网络和自注意力这几个架构的计算复杂性、顺序操作和最大路径长度。请注意,顺序操作会妨碍并行计算,而任意的序列位置组合之间的路径越短,则能更轻松地学习序列中的远距离依赖关系。
比较卷积神经网络(填充词元被忽略)、循环神经网络和自注意力三种架构
考虑一个卷积核大小为 k k k的卷积层。由于序列长度是 n n n,输入和输出的通道数量都是 d d d,所以卷积层的计算复杂度为 O ( k n d 2 ) O(knd^2) O(knd2)。如上图所示,卷积神经网络是分层的,因此为有 O ( 1 ) O(1) O(1)个顺序操作,最大路径长度为 O ( n k ) O(\frac{n}{k}) O(kn)。例如, x 1 x_1 x1 x 5 x_5 x5处于上图中卷积核大小为3的双层卷积神经网络的感受野内。当更新循环神经网络的隐状态时,KaTeX parse error: Undefined control sequence: \timesd at position 2: d\̲t̲i̲m̲e̲s̲d̲权重矩阵和 d d d维隐状态的乘法计算复杂度为 O ( d 2 ) O(d^2) O(d2)。由于序列长度为 n n n,因此循环神经网络层的计算复杂度为 O ( n d 2 ) O(nd^2) O(nd2)。根据上图所示,有 O ( n ) O(n) O(n)个顺序操作无法并行化,最大路径长度也是 O ( n ) O(n) O(n)。而在自注意力中,查询、键和值都是KaTeX parse error: Undefined control sequence: \timesn at position 2: n\̲t̲i̲m̲e̲s̲n̲矩阵。考虑《深入理解深度学习——注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction)》中缩放的”点—积“注意力,其中KaTeX parse error: Undefined control sequence: \timesd at position 2: n\̲t̲i̲m̲e̲s̲d̲矩阵乘以KaTeX parse error: Undefined control sequence: \timesn at position 2: d\̲t̲i̲m̲e̲s̲n̲矩阵。之后输出的KaTeX parse error: Undefined control sequence: \timesn at position 2: n\̲t̲i̲m̲e̲s̲n̲矩阵乘以KaTeX parse error: Undefined control sequence: \timesd at position 2: n\̲t̲i̲m̲e̲s̲d̲矩阵。因此,自注意力具有 O ( n 2 d ) O(n^2d) O(n2d)计算复杂性。正如在上图中所示,每个词元都通过自注意力直接连接到任何其他词元。因此,有 O ( 1 ) O(1) O(1)个顺序操作可以并行计算,最大路径长度也是 O ( 1 ) O(1) O(1)

总而言之,卷积神经网络和自注意力都拥有并行计算的优势,而且自注意力的最大路径长度最短。但是因为其计算复杂度是关于序列长度的二次方,所以在很长的序列中计算会非常慢。

参考文献:
[1]LecunY,BengioY,HintonG.Deeplearning[J].Nature,2015
[2]AstonZhang,ZackC.Lipton,MuLi,AlexJ.Smola.DiveIntoDeepLearning[J].arXivpreprintarXiv:2106.11342,2021.

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

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

相关文章

强化服务器安全!CentOS 7如何使用fail2ban防范SSH暴力破解攻击?

前言 本文主要讲解centos7操作系统下,如何使用fail2ban防范SSH暴力破解。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家 😉😉 &#x1…

如何使用Python生成跑马灯视频

在这篇博客中,我将向您展示如何使用Python语言生成一个简单的跑马灯视频。我们将使用OpenCV和Pillow两个库来实现这个功能。 安装依赖库 首先,我们需要安装opencv-python和Pillow两个库。您可以使用以下命令来安装它们: pip install opencv…

Navicat 设置PostgreSQL数据库的表主键ID自增

文章目录 1 新建序列1.1 手动新建1.2 SQL语句新建 2 设置主键自增 1 新建序列 1.1 手动新建 选择 其他->序列 选择一个模式(例如public),然后选择新增序列。 设置序列参数 刷新序列列表即可看到新建的序列 注意: 序列的最大…

C语言实现2048小游戏

大部分同学学习C语言编程以后不知道能通过什么样的项目才可以锻炼自己的思维功力,2048相信大家都应该熟悉,不管是手机上还是网页版的相信大家都玩过,这个简单的控制台版本的游戏是我曾经在伟易达上班时一个嵌入式应用游戏部门的大佬设计的,适…

简单使用gateway,以及gateway所需要的依赖

先声明,使用gateway需要有一定的SpringCloud的基础,再来使用时会看的很明白,使用前需要先开nacos服务,,确定无误。 下面直接开始 首先我们需要两个原来通信的模块,这里分别是service-const与service-provid…

《导航帖》-全系列软考A计划

专栏分享 点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 文章目录 👉关于作者👉前提👉链接追踪&#x1f449…

高通 Camera HAL3:项目开发技术点总结

做高通 Camera HAL3开发的一些技术点的总结、整理。 做个记录,方便后续查阅。 1.目录、so、配置文件 productName是项目名 out Target路径:\out\target\product\productName\chi-cdk:\vendor\qcom\proprietary\chi-cdk\ldc node&#xff1…

【Hive】安装配置及导入Hdfs数据

知识目录 一、写在前面💕二、Hive的安装与配置✨2.1 Hive简介2.2 上传与解压2.3 拷贝MySQL驱动2.4 hive-site.xml文件2.5 启动hive 三、导入Hdfs数据到Hive✨3.1 修改Hadoop集群配置3.2 初始化3.3 创建表3.4 从Hdfs导入数据 四、总结撒花😊 一、写在前面…

【Leetcode】贪心 区间问题 | 用最小数量的箭引爆气球、无重叠区间、划分字母区间、合并区间

452 用最少数量的箭引爆气球 更像一个重叠区间问题,贪心策略:应该在重叠最多处射出。 按区间左端点递增序进行排序,左端点相同时,按右端点递增序排序。 现在欲射穿气球 i i i,当发现相邻的两个区间有重叠时&#xff…

[230604] 听力TPO66汇总·上篇| C1 L1 C2|10:20~12:00

目录​​​​​​​ Science Fiction And Sci-fi-C1 错题分析 C1-3 细节双选题 C1 精听练习 做题笔记 Financial Advice-C2 全对 C2 精听练习 Sleep-L1 错题分析 L1-4 细节题 L1-5 细节双选题 L1 精听练习 做题笔记 词汇:http://t.csdn.cn/Zhuws 两篇对…

编译型语言与解释型语言的区别

用比喻来明编译型语言和解释型语言的区别: 假设你要理解一本书(源代码)将转化为一篇演讲稿(机器代码)。 编译型语言类似于你将整本书翻译成一篇演讲稿。你需要在事先对整本书进行翻译,将其转化为一份完整…

chatgpt赋能python:Python如何使用while函数倒序输出数字?

Python如何使用while函数倒序输出数字? Python是一种高级编程语言,它易于学习、易于使用,这使得它成为了非常受欢迎的编程语言之一。Python在各种应用程序中都有着广泛的应用,从Web开发到数据分析,甚至是人工智能等领…

脑疾病患者福音,又一家脑机接口公司完成首次人体试验

近日,脑机接口公司Precision Neuroscience宣布完成其神经植入系统的首次人体临床试验,该公司设计的植入系统在1平方厘米的面积上有1024个微型电极,这些电极被嵌入到与大脑表面一致的柔性薄膜中。这种薄膜只有人类头发厚度的五分之一&#xff…

chatgpt赋能python:Python中如何倒着输出字符串

Python中如何倒着输出字符串 在Python编程中,字符串是一种不可避免的数据类型,我们往往需要对字符串进行各种操作。其中,倒着输出字符串是一项基本的操作,对于初学者来说,可能并不是很容易理解。本文将介绍如何使用Py…

【算法题001】面试题 01.01. 判定字符是否唯一

题目来源:《程序员面试金典(第 6 版)》 1、Problem: 面试题 01.01. 判定字符是否唯一 文章目录 面试题 01.01. 判定字符是否唯一一、题目描述二、解决方案(一)方案一1、解题思路2、解题方法3、复杂度4、代码实现 &…

二本4年Java经验,大佬五面阿里(定薪45K)

前段时间刚面试上岸,先后面试了各大小公司,拿了一些 offer,有阿里,滴滴,快手,达达,得物等公司。面试的公司大部分都能过,所以这里给大家分享下自己的经验,也给自己做个归…

地震勘探基础(十二)之地震偏移处理

地震偏移处理 地震数据常规处理主要包括地震反褶积,水平叠加和地震偏移成像三大类。地震反褶积通过压缩地震子波提高地震分辨率,水平叠加的目的是提高信噪比,地震偏移成像的目的是提高地震空间分辨率和地震保真度。 在20世纪50年代&#xf…

【1】Midjourney新手必读

Midjourney官网网站:https://www.midjourney.com/ 问题一:Midjourney是什么 Midjourney 是 AI 生成算图工具,输入文字就会自动产生图像,目前架设在Discord频道上。 问题二:Discord频道是什么 Discord是国外的一个社…

Matlab快速入门——数组

学习目标:学习关于数组的详细知识(喜欢的别忘记点赞收藏呦) clear all; A[] %空数组 B[5 6 5 4 1] %行向量 C[5,5,5,4,4] %行向量 D[3;3;3;3;5] %列向量 EC %对行向量转置得到列向量 clear all…

实验篇(7.2) 09. 通过安全隧道走对方宽带上网 (FortiClient-IPsec) ❀ 远程访问

【简介】要想所有的流量都走安全隧道,就需要禁用隧道分割。这样上网流量也会通过隧道到达远端防火墙,再通过远端防火墙的宽带接口去到互联网。我们来看看FortiClient客户端用IPsec VPN是如何实现的。 实验要求与环境 OldMei集团深圳总部防火墙有两条宽带…