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

news/2024/10/7 17:53:46 标签: 学习, 笔记, 深度学习
  • 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.niftyadmin.cn/n/5693144.html

相关文章

基于ssm 和uniapp 开发的微信小程序的学生选课系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】

灰狼优化算法(Grey Wolf Optimizer, GWO)是一种基于灰狼社会行为的元启发式算法,主要模拟灰狼群体的捕猎行为(包括围攻、追捕、搜寻猎物等过程)。多旅行商问题(Multi-Traveling Salesman Problem, mTSP)是旅行商问题(TSP)的扩展,它涉及多个旅行商(车辆)从一个起点城…

【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:

使用git clone 时报错unable to access xxx: SSL certificate problem: 这个报错通常是由于SSL证书问题引起的。通常可以按照以下步骤进行排查: 检查网络连接:确保你的网络连接正常,可以访问互联网。尝试使用其他网站或工具测试网络连接是否正…

Study-Oracle-11-ORALCE19C-ADG集群搭建

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 一、ORACLE--ADG VS ORACLE--DG的区别 1、DG是Oracle数据库的一种灾难恢复和数据保护解决方案,它通过在主数据库和一个或多个备用数据库之间实时复制数据,提供了数据的冗余备份和故障切换功能。…

3.点位管理改造-列表查询——帝可得管理系统

目录 前言一、与页面原型差距1.现在:2.目标:3. 存在问题: 二、修改1.重新设计SQL语句2.修改mapper层,使用Mybatis中的嵌套查询3.修改service层4. 修改controller层5.前端修改6.补充区域查看详情7.数据完整性 前言 提示&#xff1…

No.6 笔记 | Linux操作系统基础:全面概览与核心要点

1. 简介与历史 1.1 起源 创始人:Linus Torvalds(芬兰赫尔辛基大学学生)初衷:设计一个替代Minix的全功能Unix操作系统首次发布:1991年10月5日,Linux v0.01版本 2. Linux特点 多用户多任务:用…

【编程基础知识】Java静态导入的艺术与实践

摘要 本文深入探讨了Java静态导入的概念、使用场景以及潜在的弊端。通过实际代码示例和流程图,您将了解如何有效地使用静态导入来简化代码,并提高开发效率。同时,文章将提供实用的表格对比和思维导图,帮助您全面掌握静态导入的知…

电脑操作技巧:如何恢复永久删除的婚礼照片

我们的生活充满了褪色和模糊的快照,是我们记忆的剪贴簿。尽管我们很想记住事情并坚持快乐的回忆,但随着时间的推移,它们会被冲走。为了避免这种情况并记住这些记忆,我们以照片的形式捕捉瞬间。这有助于缓解和分享那些快乐的时刻。…