【attention|Tensorformer】从attention走向Transformer

news2024/11/28 14:11:47

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

概括
说明: 后续增补

1. 正文

1.0 通俗理解

人类视觉的注意力,简单说就第一眼会注意在一幅图像的重要位置上。
在这里插入图片描述
而在程序中,不管是CV还是NLP,都是对数据进行进行计算(可以理解为数组里面的数字)。在这其中,注意力是怎么呈现的呢?两个字概括:权重。通过权重把重要的数据“挑出来”,重点关注。

所以简单可以概括为:
y = x ∗ h y = x*h y=xh
这里的h就是注意力(权重),对x施加注意力(重点关注部分数据)。

1.1 深度学习之前

在深度学习中注意力之前就有关注意力的研究,主要在计算级视觉注意力(computational visual attention),时间大约是2000-2010年。
在这里插入图片描述

1.2 深度学习

在这里插入图片描述

1.2.1 NLP

在NLP中,最早的是由Bahdanau等人于2014年提出的 Neural Machine Translation by Jointly Learning to Align and Translate(在arxiv上第一版的时间是2014.9.1)

在之前的机器翻译中,编解码网络(Encoder-Decoder)会将所有数据编码到到一个固定的长度,Cho(和Bahdanau一伙的)等发现随着句子长度的增加,网络性能会出现迅速下降。随后Bahdanau提出了RNNsearch
在这里插入图片描述

1.2.2 CV

在CV领域最早的是Mnih等人提出的Recurrent Models of Visual Attention(在arxiv上第一版的时间是2014.6.24)
在这里插入图片描述

1.2.3 发展

与注意力相关的网络发展如下:
在这里插入图片描述

根据位置可分为如下:

  • 通道注意力(channel attention)
  • 空间注意力(sptail attention)
  • 时间注意力(temporal attention)
  • 分支注意力(branch attention)
  • 通道和空间注意力(channel & spatial attention)
  • 时间和空间注意力(temporal & spatial attention)

SE-Net
CVPR-2018
在这里插入图片描述
SK-Net
CVPR-2019
https://arxiv.org/pdf/1903.06586.pdf
在这里插入图片描述
ECA-Net
CVPR-2020
在这里插入图片描述
CBAM
CVPR-2018
在这里插入图片描述
BAM
BMC-2018
https://arxiv.org/pdf/1807.06514.pdf
在这里插入图片描述
No-local
CVPR-2018
https://arxiv.org/pdf/1711.07971.pdf
在这里插入图片描述
在这里插入图片描述

DA-Net
CVPR-2019
https://arxiv.org/pdf/1809.02983.pdf
在这里插入图片描述
ANLNet
ICCV-2019
https://arxiv.org/pdf/1908.07678.pdf
在这里插入图片描述
GC-Net
ICCV-2019
https://arxiv.org/pdf/1904.11492.pdf
在这里插入图片描述
GSoP-Net
CVPR-2019
https://arxiv.org/pdf/1811.12006.pdf
在这里插入图片描述

1.2.4 统一

一般来说,注意力可用如下形式表述:
a t t e n t i o n = h ∗ x attention = h * x attention=hx
h即权重,即我们所说的注意力,x为原始输入。更一般的表述为:
A t t e n t i o n = f ( g ( x ) , x ) Attention = f (g(x),x) Attention=f(g(x),x)
g(x)可以表示产生注意力。f(g(x),x)表示对输入数据施加注意力。

从上图可以看到,关于注意力的生成五花八门,但最终注意力需要与输入相乘,即通过权重扩大部分数据,缩小部分数据。

关于输入数据,我们也可以通过参数变换到另一种空间

对于Transformer:
在这里插入图片描述
对于SE-Net
在这里插入图片描述


不管是卷积还是全连接,整体网络都是从一堆数据另一堆数据,不断重复这个过程。
而注意力是从一堆数据中挑选部分数据出来进行这个过程,所以更加高效。更极致的,整个网络都使用注意力,那么在整个网络中流淌着都是有用的数据,这便是Transformer。


1.2.5 Transformer

5.1 标准情况

内部核心是self-attention,所以我们看下self-attention

我们的是输入是英文,
在这里插入图片描述
通过embedding转换成向量
在这里插入图片描述
我们需要g(x) 和x,我们通过Wq,Wk,Wv把上面两个向量映射到另一个空间,
在这里插入图片描述
我们现在需要计算权重g(x)。对于与x1相关的权重,
在这里插入图片描述
这里插一条,点积(dot prodcut)的几何意思是两个向量的相似度,值越大越相似。计算相似度也有其他方法,这里用的是点积。
在这里插入图片描述
调整相似度。因为值比较大,所以用一些方法将这个值缩到一个较小的范围,最终这个值也就是我们的权重。
在这里插入图片描述
最后用我们的权重乘以对应的x(注意这个的x我们已经映射到一个新的空间v)
在这里插入图片描述
我们得到了第一个输入thinking与其他输入的相关性(权重),同时也施加了注意力。最后我们将第一个输入所施加的注意力求和。

在这里插入图片描述
至此,我们对第一个输入与其他输入之间添加了注意力。

5.2 朴素情况

对于一个更朴素的情况。我们不对输入x进行空间变换,即不映射到3个空间,q,k,v都为x。
在这里插入图片描述
这里score,x1*x1,自己和自己和最相似,所以值自然也是最大的。(图中值没做替换,仅做一般性参考)

5.3 相似度计算

  • 点积 (上面用的是这个)
  • cos
  • 串联 w[:q;k]
  • MLP

5.4 “向量”形式

上面是逐个单词计算,实际上可以一起计算

在这里插入图片描述
在这里插入图片描述

参考

[1] https://arxiv.org/pdf/1811.12006.pdf
[2] https://arxiv.org/pdf/1904.11492.pdf
[3] https://arxiv.org/pdf/1908.07678.pdf
[4] https://arxiv.org/pdf/1809.02983.pdf
[5] https://arxiv.org/pdf/1711.07971.pdf
[6] https://arxiv.org/pdf/1807.06514.pdf
[7] https://arxiv.org/pdf/1903.06586.pdf
[8] https://arxiv.org/pdf/1409.0473v6.pdf
[9] https://arxiv.org/pdf/1409.1259.pdf
[10] https://zhuanlan.zhihu.com/p/33345791
[11] https://zhuanlan.zhihu.com/p/379722366
[12] https://zhuanlan.zhihu.com/p/631398525
[13] https://easyai.tech/ai-definition/attention/
[14] https://zhuanlan.zhihu.com/p/359975221
[15] https://www.cnblogs.com/wangxuegang/p/16901089.html
[16] https://zhuanlan.zhihu.com/p/388122250
[17] https://www.cnblogs.com/wangxuegang/p/16901089.html
[18] https://blog.csdn.net/amusi1994/article/details/118347925#t19
[19] https://blog.csdn.net/Tink1995/article/details/105012972#t4
[20] https://blog.csdn.net/weixin_39190382/article/details/117711239?spm=1001.2014.3001.5502
[21] https://zhuanlan.zhihu.com/p/82312421

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

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

相关文章

vim实用功能汇总

文章目录 1. 读代码1.1 vim中文件跳转1.2 语法高亮模式1.3 Visual 模式 2. 配置vim成为python的IDE 1. 读代码 1.1 vim中文件跳转 vim中文件跳转 这个其实不是靠什么插件完成的,而是vim编辑器自带的功能把光标放在要跳转的文件上,按下gf,即…

YOLOv5改进系列(7)——添加SimAM注意力机制

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

delete 清空表之后,磁盘空间未发生变化?

上篇文章结尾和小伙伴们留了一个小问题,就是关于 optimize table 命令,今天我想花点时间再来和小伙伴们聊一聊这个话题。 1. 删除空洞 1.1 案例展示 首先我们先来看这样一个例子。 我现在有一个名为 sakila 的数据库,该库中有一个 film 表…

C++轻量级跨平台桌面GUI库FLTK的简单使用

C的跨平台桌面GUI库有很多,大体上分成两种流派:retained mode和retained mode。 其中前者是主流的桌面GUI机制框架,包括:Qt、wxwidgets、gtk、juce等后者是一些游戏引擎编辑器常用的GUI机制框架,包括:imgu…

C#常见技能_数组

前几天一个学员在学习C#与数组交互时,也不知道数组可以用来做什么 。下面我们就详细讲讲C# 和数组交互的相关知识。 在C#编程中,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,并且使用索引来访问这些数据。在实际应用中&…

5.2.7 因特网控制报文协议ICMP

5.2.7 因特网控制报文协议ICMP 我们知道因特网的技术核心是IP数据报,IP数据报的最大特点是无连接不可靠,但实际中因特网中也会存在通信线路或者是处理器的故障、路由器拥塞等等使得无法接收或者处理数据报,路由表也误导导致出现路由环路等原…

微软MFC技术运行机制

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下微软MFC技术运行机制。 很多初学者误以为VC开发必须使用MFC,其实不一定的。MFC的使用只能是提高程序在某些情况下的开发效率,而不能替代整个Win32程序设计。我认为我们有…

python grpc使用示例

1. grpc简介 1.1 概述 gRPC是搭建分布式应用接口和客户端的框架。在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像它是本地对象一样,可以更容易创建分布式应用程序和服务。与许多 RPC 系统一样,gR…

AI绘画MidJourney 酷炫艺术风格效果,总有一款你喜欢

文 / 高扬 今天六一儿童节,祝各位大朋友节日快乐。 这次以儿童为主题,看看MidJourney的绘画风格,在这里,我使用的默认V5.1版本。 图画场景是一个男孩和一个女孩在田野玩耍,对应的英文是:A boy and a girl a…

使用PyQT实现模拟表盘时钟的显示效果

代码 class clockThread(QThread):update_ui_signal pyqtSignal(str)def __init__(self, window):super(clockThread, self).__init__()# 信号绑定槽函数self.update_ui_signal.connect(self.draw_time)self.hour 0self.minute 0self.second 0self.window windowself.win…

数据结构与算法·第6章【树】

基本操作 树的相关定义 树的深度(高度):树中叶子结点所在的最大层次 森林: m m m棵互不相交的树的集合 二叉树 二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。 性质 二…

JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像

《JavaCV音视频开发宝典》专栏目录导航 《JavaCV音视频开发宝典》专栏介绍和目录 ​ 前言 两年前博主写了如何利用JavaCV解析各种h264裸流,《JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并解析预览图像》,但是随着时间变化,各…

企业邮箱如何设置邮件审核

有的时候对外给客户或合作伙伴等发送邮件需要领导审核后再发,以前都是先发给领导,领导审核以后再重新发给客户, 这样的流程太过繁琐。 新的邮件审核功能既能满足审核需求,又避免了重复发信,可以极大提高工作效率。 设…

使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub

Vue3TSVite开发组件库并发布到npm 网站在线预览: Vue Amazing UI | Amazing UI Components LibraryAmazing UI 组件库https://themusecatcher.github.io/vue-amazing-ui/参考文档: VitePress 目录 一、安装依赖及配置 1、安装 vitepress 2、在 p…

想要精通算法和SQL的成长之路 - 反转链表

想要精通算法和SQL的成长之路 - 反转链表 前言一. 反转链表 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 反转链表 原题链接 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路如下: 我们可以通过一次遍历&#xff…

该怎么用设计测试用例测网上银行转账?

目录 前言 1、网上银行转账是怎么测的,设计一下测试用例。 回答思路: 2、测试工作的流程?缺陷状态有什么?设计测试用例有几种方法? 修改完以后,有两种处理情况: 3、在项目中找到的经典BUG是什么? 4、定期…

kali系统渗透

用kali远程ssh时,如果不能的话 按照以下方法 ┌──(root㉿kali)-[~]└─# mkdir ~/.ssh┌──(root㉿kali)-[~]└─# vim ~/.ssh/configHost *HostkeyAlgorithms ssh-rsaPubkeyAcceptedKeyTypes ssh-rsa msfconlole -q //进入马上发不显示内容,所以加…

编程实现人脸识别

1.更改url 用翔云平台下的人脸识别的API文档 把他贴到url中: 2.定义参数 (根据平台给定的这些串口接收参数来定义) key和secret在这里找: 3.指定post内容 把这部分定义成一个postString 4.字符串的拼接 sprintf函数调用的主…

使用粒子群优化算法(PSO)辨识锂电池二阶RC模型参数(附MATLAB代码)

目录 一、原理部分 二、代码详解部分 三、结果及分析 一、原理部分 PSO算法由美国学者于 1995 年提出,因其算法简单、效果良好,而在很多领域得到了广泛应用。该算法的起源是模拟鸟群的觅食过程,形成一种群体智能搜索算法。 其核心是&#…

使用Flask高效构建Web应用

1、聊聊Flask框架 Flask官方文档 Flask是Armin ronacher基于Python开发的微型Web框架,诞生于2010年,它依赖于jinja2模板和Werkzeug WSGI服务。Flask的核心简单易于扩展,它不会替你做出太多决策比如使用何种数据库或模板引擎,这些都…