李宏毅 X 苹果书 自注意力机制 学习笔记下

news2024/11/23 1:22:10
  • b1 ,b2...不是依序产生,而是同时被计算好的

从矩阵乘法角度看待self-attention运作过程

  •  矩阵运算表示每一个a都要产生 a k v的操作如下:

  •  矩阵运算表示\alpha的计算如下:

A‘是A的normalization ,用softmax

 

  •  矩阵运算表示b计算步骤如下:

 

  •  矩阵运算表示self-attention的全过程: 

    Self-attention的进阶版本---->Multi-head Self-attention

  •  是今天广泛使用的
  • head数是个超参数
  • 多个q,不同q负责不同领域的相关性
  • Multi-head Self-attention操作过程:

得到qi之后,再乘以n个W,qi,n(=head):i表示位置,n表示这个位置的第一个q,有几个qi,n就说明有几个不同的相关性

 


 Self-attention少了位置信息:每一个input出现在sequence的位置确定不了,没有相关的资讯,对于Self-attention,所有的input的位置都是一样的

添加Self-attention中input资讯的方法---Positional Encoding

为每一个位置设置一个vector---positional vector

 


 Truncated self-attention

Truncated self-attention引入

  • self-attention在NLP应用比较广泛,也可以应用到speech中,但是在speech中,要对self-attention做一点改动,如下:
  • 语言变成向量,这个向量级会很长,在计算注意力矩阵的时候,其复杂度(complexity)是长度的平方。假设该矩阵的长度为 L,计算注意力矩阵 A 需要做 L × L 次的内积,如果 L 的值很大,计算量就很可观,并且需要很大内存(memory)才能够把该矩阵存下来。所以如果在做语音识别的时候,我们讲一句话,这一句话所产生的这个注意力矩阵可能会太大,大到不容易处理,不容易训练。为了解决以上问题,我们采用Truncated self-attention

Truncated self-attention操作过程:

不看整个sequence,只看一个小的范围(这个范围是个超参数)=》可以加快运算速度

只看一个小的范围的原因取决于你对问题的理解,该问题需要sequence的哪一处,我们就截取那一处前后的资讯


Self-attention for lmage

一张图像可以看作是一个向量序列,如下图   所示,一张分辨 率为 5 × 10 的图像(图 a )可以表示为一个大小为 5 × 10 × 3 的张量(图 b ), 3 代 表 RGB 3 个通道( channel ),每一个位置的像素可看作是一个三维的向量,整张图像是 5 × 10 个向量。

 

 因为一张图可以用向量表示,所以我们就可以用self-attention处理图像


 self-attention  vs CNN

  •  CNN是简化版的self-attention:self-attention一次性考虑全部的sequence,而CNN的滤波器只是sequence的一个子集。
  • self-attention会以pixel为中心,去考虑哪些pixel是相关的,此时的receptive field不再是人工划定的,而是机器自己学出来的
  • CNN是self-attention的特例,self-attention只要设定合适的参数,进行一些限制,就能做到CNN做到的事

 比较大的model就需要更多的data,要不然就可能overfitting;比较小的model在data比较小的时候就比较不容易overfitting

用不同的data量训练CNN和self-attention,会得到如下的实验结果:(只是众多实验数据中的一个哈,不是绝对结果),原因是 :比较大的model就需要更多的data,要不然就可能overfitting;比较小的model在data比较小的时候就比较不容易overfitting


Self-attention vs.RNN 

  • 目前,循环神经网络的角色很大一部分都可以用自注意力来取代了。
  • 循环神经网络跟自注意力输入都是一个序列的状况。
  • 简述RNN:在RNN中有一个输入序列、一个隐状态的向量、一个循环神经网络的(block)。循环神经网络的块“吃”记忆的向量,输出一个东西。这个东西会输入全连接网络来进行预测。 循环神经网络中的隐状态存储了历史信息,可以看作一种记忆(Memory)。 接下来当第二个向量作为输入的时候,前一个时间点“吐”出来的东西也会作为输入丢进循环神经网络里面产生新的向量,再拿去给全连接网络。输入第三个向量时,第三个向量跟前 一个时间点的输出,一起丢进循环神经网络再产生新的输出。输入第四个向量输入时,把第四向量跟前一个时间点产生出来的输出再一起做处理,得到新的输出再通过全连接网络的层。
Self-attention vs.RNN :
  1. 自注意力的每一个向量都考虑了整个输入的序列,而循环神经网络的每一个向量只考虑了左边已经输入的向量,它没有考虑右边的向 量。但循环神经网络也可以是双向的,所以如果用双向循环神经网络(Bidirectional Recurrent Neural NetworkBi-RNN),那么每一个隐状态的输出也可以看作是考虑了整个输入的序列。 但是假设把循环神经网络的输出跟自注意力的输出拿来做对比,就算使用双向循环神经 网络还是有一些差别的。如图 6.40(b) 所示,对于循环神经网络,如果最右边黄色的向量要 考虑最左边的输入,它就必须把最左边的输入存在记忆里面,才能不“忘掉”,一路带到最右 边,才能够在最后一个时间点被考虑。但自注意力输出一个查询,输出一个键,只要它们匹配 match)得起来,“天涯若比邻”。自注意力可以轻易地从整个序列上非常远的向量抽取信息。
  2. 自注意力跟循环神经网络还有另外一个更主要的不同是,循环神经网络在处理输入、输 出均为一组序列的时候,是没有办法并行化的。比如计算第二个输出的向量,不仅需要第二 个输入的向量,还需要前一个时间点的输出向量。当输入是一组向量,输出是另一组向量的 时候,循环神经网络无法并行处理所有的输出,但自注意力可以。自注意力输入一组向量,输 出的时候,每一个向量是同时并行产生的,因此在运算速度上,自注意力会比循环神经网络 更有效率。
  • 很多的应用已经把循环神经网络的架构逐渐改成自注意力的架构了。

 


Self-attention for Graph 

  • 图也可以看作是一堆向量,如果是一堆向量,就可以用自注意力来处理。
  • 把自注意力用在图上面,会有些地方不一样:
  • 图中的每一个节点(node)可以表示成一个向量。但图还有边(edge)的信息。
  • 如果节点之间是有相连的,这些节点也就是有关联的。
之前在做自注意力的时候,所谓的关联性是网络自己找出来的。但是现在既然有了图的信息,
关联性就不需要机器自动找出来,图上面的边已经暗示了节点跟节点之间的关联性。所以当
把自注意力用在图上面的时候,我们可以在计算注意力矩阵的时候,只计算有边相连的节点
就好。
举个例子,如下图所示,在这个图上,节点 1 只和节点 5 6 8 相连,因此只需要计 算节点 1 和节点 5 、节点 6 、节点 8 之间的注意力分数;节点 2 之和节点 3 相连,因此只需要计算节点 2 和节点 3 之间的注意力的分数,以此类推。如果两个节点之间没有相连,这个节点之间就没有关系。既然没有关系,就不需要再去计算它的注意力分数,直接把它设为 0 就好了。因为图往往是人为根据某些领域知识(domain knowledge )建出来的,所以从领域知识可知这两个向量之间没有关联,就没有必要再用机器去学习这件事情。当把自注意力按照这种限制用在图上面的时候,其实就是一种图神经网络(Graph Neural Network GNN

 

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

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

相关文章

Ubuntu有关redis的命令

防火墙: systemctl status firewalld systemctl stop firewalld systemctl disable firewalld.service ifconfig查看ip地址 redis.conf在/etc/redis下,但是得sudo -i进入root模式 进入/etc/redis下开启redis-server服务 查看6379端口是否可以访问 net…

vue3- antd design vue 引入iconfont

文章目录 前言一、新建iconfont项目 前言 vue3项目中,如何引入第三方的iconfont的图标 一、新建iconfont项目 搜索需要的图标,加入购物车,购物车中图片加入项目 下载项目文件,打开压缩包后,将iconfont.js 文件拷贝到…

基于vue框架的大学生心理健康服务平台mwavu(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,心理专家,心理咨询,健康文章,咨询回复,心理案例,监测预警,解压游戏,放松音乐 开题报告内容 基于Vue框架的大学生心理健康服务平台开题报告 一、研究背景与意义 随着社会的快速发展和教育竞争的日益激烈,大学生面临着…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖方式一:内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定义任务描述及创建任务触发器3. Quartz的…

VirtualBox Ubuntu22.04 NOI linux2.0 Terminal无法打开 终端打不开 两步解决法儿

新安装的虚拟机无法打开Terminal,从应用列表中单击Terminal,左上角任务栏会出现Terminal,并且鼠标转圈,但是过一会左上角Terminal消失,就像一切都没有来过。 解决办法: CTRL ALT F3 进入命令行模式&…

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

如何基于vite实现清除特定环境下的console和debugger

一、解决方法 方法一:使用esbuild 直接在vite.config.ts文件中写,无需下载插件 export default defineConfig(({ mode }) > {// 环境变量const env loadEnv(mode, root, "");return {base: env.VITE_PUBLIC_PATH,plugins: [vue(),...],…

中国书法-孙溟㠭浅析碑帖《九成宫醴泉铭》

中国书法孙溟㠭浅析碑帖《九成宫醴泉铭》 《九成宫醴泉铭》是由魏征撰文、欧阳询书丹,唐贞观六年(公元632年)立碑,篆书体题碑额。内容记载了唐太宗李世民在九成宫避暑山庄发现涌泉的事。 书法法度森严,腴润中见峭劲&…

图文并茂解释水平分表,垂直分表,水平分库,垂直分库

文章目录 1.垂直角度(表结构不一样)垂直分表:垂直分库: 2.水平角度(表结构一样)水平分库:水平分表: 1.垂直角度(表结构不一样) 垂直分表: 将一个表字段拆分成多个表,每个表存储部分字段。好处是避免IO时锁表的次数,分…

数据结构——遍历二叉树

目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题(根据先序中序以及后序中序求二叉树) 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…

java发起POST方法请求第三方接口(编码处理)

文章目录 引言I 案例查询船舶轨迹配置JVM编码参数请求提供方常见问题II 工具类III 知识扩展:程序运行源代码各个阶段对编码的处理Java源码--->字节码Java字节码--->虚拟机--->操作系统操作系统-->显示设备引言 使用场景: 调用第三方平台接口 I 案例 查询船舶…

【MySQL】--数据类型

文章目录 1. 选择数据库1.1 语法 2. 查询当前选中的数据库2.1 语法 3. 常见数据类型分类4. 数据值类型4.1 类型列表4.2 数据类型取值范围 5. 字符串类型5.1 类型列表5.2 关于排序5.3 CHAR和VARCHAR的区别5.4 如何选择CHAR和VARCHAR5.5 VARCHAR与TEXT的区别 6. 日期类型6.1 类型…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

重学SpringBoot3-集成Redis(六)之消息队列

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(六)之消息队列 1. 什么是发布/订阅(Pub/Sub)?2. 场景应用3. Spring Boot 3 整合 R…

EtherNet/IP 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherNet/IP 转 EtherNet/IP GW系列型号 MS-GW22 概述 简介 MS-GW22 是 EtherNet/IP 和 EtherNet/IP 协议转换网关,…

4.扩散模型的似然函数最大化(1)

1.似然函数最大化 扩散模型的训练目标是负的对数似然的一个变分下界(VLB)。在本节中,我们总结并调查最近关于扩散模型的似然最大化的工作。首先我们介绍似然函数最大化的意义,然后重点讨论3种类型的方法:噪声调度优化、逆向方差学习和精确的对数似然估计…

20年408数据结构

第一题: 解析:这种题可以先画个草图分析一下,一下就看出来了。 这里的m(7,2)对应的是这图里的m(2,7),第一列存1个元素,第二列存2个元素,第三列存3个元素,第四列存4个元素,第五列存5个元素&#…

胤娲科技:00后揭秘——AI大模型的可靠性迷局

当智能不再“靠谱”,我们该何去何从? 想象一下,你向最新的GPT模型提问:“9.9和9.11哪个大?”这本应是个小菜一碟的问题,却足以让不少高科技的“大脑”陷入沉思, 甚至给出令人啼笑皆非的答案。近…

卡码网104.建造最大岛屿

题目 104. 建造最大岛屿 (kamacoder.com) 代码&#xff08;ACM 首刷看解析&#xff09;&#xff1a; #include<iostream> #include<vector> #include<unordered_map> #include<unordered_set> using namespace std;int dir[4][2] {1,0,-1,0,0,1,0,-…

C++ 算法学习——1.8 悬线法

1.问题引入&#xff1a;对于一个矩形图&#xff0c;图中放置着不少障碍&#xff0c;要求出最大的不含障碍的矩形。 2.分析&#xff1a;显然一个极大矩形是左右上下都被障碍挡住&#xff0c;无法再扩大的矩形&#xff0c;此时障碍也包括边界。 3.方法&#xff1a;悬线法考虑以…