【Transformer】自注意力机制Self-Attention

news2024/12/22 16:40:39

1. Transformer 由来 & 特点

1.1 从NLP领域内诞生

"Transformer"是一种深度学习模型,首次在"Attention is All You Need"这篇论文中被提出,已经成为自然语言处理(NLP)领域的重要基石。这是因为Transformer模型有几个显著的优点:

  1. 自注意力机制(Self-Attention):这是Transformer最核心的概念,也是其最大的特点。通过自注意力机制,模型可以关注输入序列中的所有位置,并为每个位置分配不同的注意力权重。这使得模型能够更好地处理长距离的依赖关系,也就是说,对于句子中距离较远的单词,模型也能有效地捕获其关系。

  2. 并行计算:在之前的很多模型中,如RNN(循环神经网络),处理序列数据需要按照时间步顺序进行,这在处理长序列时会非常慢。而Transformer模型可以同时处理所有的输入,这使得它在大规模数据训练中有显著的效率提升。

  3. 可扩展性:Transformer模型可以轻松地通过增加层数、隐藏层单元数等来增加模型大小,使其能够处理更复杂的任务。

正因为这些优点,Transformer模型在很多NLP任务上都有出色的表现,包括机器翻译、文本摘要、情感分析等等。后续发展出的BERT、GPT等模型,都是基于Transformer的架构,进一步推动了AI领域的进步。

1.2 计算机视觉 + Transformer

尽管Transformer最初是为处理自然语言处理(NLP)任务设计的,但近年来,它也被广泛应用于计算机视觉(CV)领域,包括图像分类、对象检测、图像分割等任务。

Transformer在视觉领域的应用主要体现在以下两个方面:

  1. 图像中的长程依赖:与NLP问题类似,图像中的像素也存在长程依赖性。例如,一幅图像中的某个部分可能会对图像的其他部分产生影响。Transformer的自注意力机制可以捕捉到这些依赖关系

  2. 端到端的全局优化:传统的卷积神经网络(CNN)通常会使用局部的卷积操作来提取图像特征,这些操作不容易捕获全局的图像信息。而Transformer的自注意力机制可以直接处理全局的信息,能实现端到端的全局优化。

其中,一个代表性的视觉Transformer模型是ViT(Vision Transformer)。ViT模型将图像切割为一系列小的patch,然后将这些patch视为序列输入,使用Transformer对其进行编码。这样就可以将全局的图像上下文信息整合到每一个patch的表示中,有助于提升视觉任务的性能。

至今为止,包括ViT在内的一些视觉Transformer模型已经在多个重要的计算机视觉任务中取得了最先进的结果,显示出Transformer架构的巨大潜力和广泛应用性。

必须读:ViT中的Self-Attention

1.3 自注意力机制 Self-Attention

自注意力机制(Self-Attention Mechanism),也被称为自我注意力机制或者只是注意力机制,是Transformer模型的核心部分。自注意力机制的基本思想是在处理序列数据时,不只是关注当前的输入,而是关注整个序列,并且为序列中的每一个元素赋予不同的重要性或权重

自注意力机制的运作流程如下:

  1. 首先,每个输入元素都有三个向量表示:Query(查询),Key(键),Value(值)。这些向量是输入元素经过不同的线性转换(也就是乘以权重矩阵)得到的。

  2. 然后,通过计算Query和所有Key的点积,得到每个元素的得分。这个得分反映了当前元素与其他元素的关联程度。更高的得分意味着这两个元素更相关

  3. 接着,将这些得分经过softmax函数转换为概率值,这样所有的得分加起来就为1了。这个概率值就是注意力权重,反映了模型对每个元素的关注程度。

  4. 最后,用这些注意力权重去加权求和所有的Value,得到最终的输出。

这样,每个输出都包含了整个序列的信息,而且这个信息的整合是根据每个元素与当前元素的相关性进行的。这使得模型能够捕捉到长距离的依赖关系,并且可以并行处理整个序列,大大提高了效率。这就是自注意力机制的魅力所在,也是Transformer模型能够在很多任务上取得优秀表现的原因。

2. 台大李宏毅:自注意力机制 Self-Attention

这一part是看视频做的笔记,视频可以在B站上找到~

  1. 可扩展性强:轻松增加Self-Attention的层数!!自注意力机制扩展性很强
    Seq2Seq模型:
    Seq2Seq模型
  2. 自注意力机制核心:vector --> vector 考虑了整个input sequence才产生了每一个output!!!
    在这里插入图片描述
  3. 上图中,如何产生每一个output vector?

学习链接:20’25’'起看

Step 1: Find the relevant vectors in a sequence!
找到其它vectors中,哪些vector是对判断a1的label是重要的!
在这里插入图片描述
a1和a4有多相关?相关度α计算:使用「计算attention的module」!
下面是 两种常见的【相关度α计算module】
在这里插入图片描述
其中,Dot-product (点积)是最常用的,用在了 Transformer 里。
然后使用计算 Dot-product 来计算 attention score(即:关联性)
下图中经过Dot-product得到的 α1,1 α1,2 … α1,4 就是 α1和α2,α3,α4的关联性!!!
在这里插入图片描述
soft-max的作用是:生成「注意力权重」

将这些得分经过softmax函数转换为概率值,这样所有的得分加起来就为1了。这个概率值就是注意力权重,反映了模型对每个元素的关注程度。

Step 2: Extract information based on attention scores!
根据attention score’ (注意力权重),去抽取重要的information!
在这里插入图片描述
并行计算的思想在这也有体现!上图仅展示计算b1的过程,但b1、b2、b3、b4 实际上是平行被计算的,他们是并行的(从矩阵操作的角度看)!在大规模数据中效率也很高!

下面这些图是从矩阵计算的角度来看attention的执行过程~——
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总而言之,言而总之,self-attention技术可以归结为 一整串的矩阵乘法::顶点
Multi-Head Attention
多组q,k,v分别做self-attention,在同一个网络里。

Positional Encoding 「位置」
一句话概括,Positional Encoding就是句子中词语相对位置的编码,让Transformer保留词语的位置信息。
似乎在NLP用的多。看:【AI理论学习】对Transformer中Positional Encoding的理解

Self-Attention 在 CV领域的使用(原始idea):
一张5x10 pixels的图可以看作是一个vector set。因为RGB的三channels图像那就是5x10x3的tensor,其中的每一个pixel就是一个三维的vector。
在这里插入图片描述
应用了 Self-Attention 的CV models:DETR,self-attention GAN
在这里插入图片描述
CNN其实就是self-Attention的一个特例。 但,数据量少的时候CNN更好用(此时self-attention因弹性大所以容易过拟合),而数据量多的时候self-attention能取得更好的结果! 参见下图。
在这里插入图片描述
此外,Self-Attention取代了RNN!因为干的事情是差不多的,但RNN需要大量的memory,而self-attention能做到“天涯若比邻”!!(如下图所示)
在这里插入图片描述
而且,RNN在计算时不是parallel的!它需要从左到右一个一个往下继续计算(看上图可知)。而self-Attention是parallel计算的,可以平行处理所有的输出,效率非常高!工业界已逐渐把RNN架构的产物逐渐改成self-Attention架构了。

3. 台大李宏毅:Transformer

3.1 概述 | Encoder | Decoder

Transformer是一个sequence-to-sequence (Seq2seq) model。也就是input和output都是sequence。而output的sequence,可以是定长的,也可以是和input一样长的,也可能是我们不知道有多长的需要机器自己判别的。

例如:语音辨识,声音讯号–>文本,这个场景下的output就是机器自己决定的。机器翻译同理。

文本 & 声音讯号互转 案例:中文文字---->台语/闽南语 点击精准空降

「硬train一发」指不知道输出是多长的,干脆直接把数据丢进去让seq2seq模型自己来决定输出啥。

Seq2seq模型中,Encoder读入数据,处理后丢给Decoder,由Decoder来决定要输出多少东西。

1. Encoder
Input一排向量,output一个同样长度的向量
每个Encoder里面可能有好几个blocks,每个block里面可能有好几个layers在干各种事情!
在这里插入图片描述
2. Decoder
以语音辨识为例,即声音讯号转文字。
在这里插入图片描述
Decoder必须自己决定输出的sequence的长度。

3. Encoder 和 Decoder 之间如何传递数据
各式各样的传递方式。。。
在这里插入图片描述

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

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

相关文章

Oracle单实例升级补丁

目录 1.当前DB环境2.下载补丁包和opatch的升级包3.检查OPatch的版本4.检查补丁是否冲突5.关闭数据库实例,关闭监听6.应用patch7.加载变化的SQL到数据库8.ORACLE升级补丁查询 oracle19.3升级补丁到19.18 1.当前DB环境 [oraclelocalhost ~]$ cat /etc/redhat-releas…

[LeetCode - Python]69. x 的平方根(Easy);367. 有效的完全平方数(Easy)

1.题目: 69. x 的平方根(Easy) 1.代码: class Solution:def mySqrt(self, x: int) -> int:# 思路:二分法,左闭右开# 额外添加1:判断0,1是否符合;if x 0 or x 1 :return xleft , right ,…

基于微信小程序的传染病酒店隔离平台设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的传染病酒店隔离平台设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:…

使用线性回归预测票房收入 -- 机器学习项目基础篇(10)

当一部电影被制作时,导演当然希望最大化他/她的电影的收入。但是我们能通过它的类型或预算信息来预测一部电影的收入会是多少吗?这正是我们将在本文中学习的内容,我们将学习如何实现一种机器学习算法,该算法可以通过使用电影的类型…

# ⛳ Docker 安装、配置和详细使用教程-Win10专业版

目录 ⛳ Docker 安装、配置和详细使用教程-Win10专业版🚜 一、win10 系统配置🎨 二、Docker下载和安装🏭 三、Docker配置🎉 四、Docker入门使用 ⛳ Docker 安装、配置和详细使用教程-Win10专业版 🚜 一、win10 系统配…

20230808在WIN10下使用python3将TXT文件转换为DOCX

20230808在WIN10下使用python3将TXT文件转换为DOCX 2023/8/8 19:30 缘起,由于google的文档翻译不支持SRT/TXT格式的字幕,因此需要将SRT格式的字幕转为DOCX。 Ch4.Unreported.World.2022.Mexicos.Psychedelic.Toads.1080p.HDTV.x265.AAC.MVGroup.org.mkv …

FK-坦克大战制作(一)菜单制作

1、Cocos Creator新建2d项目 2.在资源管理器中新建场景menu 新建scences文件夹》新建场景》改名为menu 3.在层级管理器的Canvas下新建Layout节点,并在此节点下新建Label标签 4.双击Label,在属性检查器中进行编辑 5. 添加动画:(对文本进行放大…

代码随想录算法训练营day57

文章目录 Day57回文子串题目思路代码 最长回文子序列题目思路代码 Day57 回文子串 647. 回文子串 - 力扣(LeetCode) 题目 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。…

JavaWeb学习|JSP相关内容

1.什么是JSP Java Server Pages: Java服务器端页面,也和Servlet一样,用于动态Web技术! 最大的特点: 。写JSP就像在写HTML 。区别: 。HTML只给用户提供静态的数据 。JSP页面中可以嵌入JAVA代码,为用户提供动态数据 JSP最终也会被转换成为一…

使用Python和wxPython将图片转换为草图

导语: 将照片转换为艺术风格的草图是一种有趣的方式,可以为您的图像添加独特的效果。在本文中,我们将介绍如何使用Python编程语言和wxPython图形用户界面库来实现这一目标。我们将探讨如何使用OpenCV库将图像转换为草图,并使用wxPython创建一…

科研热点|5本Scopus期刊不再被收录,Scopus期刊目录更新(附下载)!

此次Scopus期刊目录更新后,有5本期刊不再被收录(Discontinued titles July 2023),同上次更新时相比,此次又新增139本期刊(Accepted titles)进入Scopus数据库。目前Scopus 来源出版物列表(Scopus Sources&am…

[Java]JDK新特性

目录 一、JDK新特性 1.1Java Record 1.1.1Record的使用 1.1.2Instance Methods 1.1.3静态方法 Static Method 1.1.4Record构造方法 1.1.5Record与Lombok 1.1.6Record实现接口 1.1.7Local Record 1.1.8嵌套Record 1.1.9instanceof判断Record类型 1.1.10总结 1.2Swit…

std::string 的append方法 存放文本和非文本数据

今天在用std::string来拼接数据 有文本数据 也有 非文本数据 如果是文本数据那么append方法参数为 ( char *data, int len) 将data的前len个字节附加到 string中 如果是非文本数据 则参数为(int size, char data); 重复size个data 附加…

【IMX6ULL驱动开发学习】02.hello驱动程序之cdev注册字符设备驱动程序和设置次设备号

目录 ​编辑 一、register_chrdev 二、解决方法 2.1 alloc_chrdev_region函数:注册一系列字符设备编号 2.2 cdev_init函数:初始化cdev结构体 2.3 cdev_add函数:将字符设备添加到系统中 三、驱动程序 一、register_chrdev major reg…

Java SPI机制的原理和实践

SPI 全称 Service Provider Interface,是 Java 提供的,旨在由第三方实现或扩展的 API,它是一种用于动态加载服务的机制。Java 中 SPI 机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心…

【图像去噪】基于混合自适应(EM 自适应)实现自适应图像去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

SpringMVC的架构有什么优势?——表单和数据校验(四)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

Qt5.14.2+QtCreator+PDB 查看源码

1. 在Creator添加源码 2. 安装PDB文件 Qt下载时没有整合最新的PDB文件下载,如果没有安装PDB文件,即使安装了src也无法调试。 双击MaintenanceTool.exe->设置->资料档案库->临时资料档案库->添加按钮,添加如下下载源&#xff1a…

Android平台GB28181设备接入端如何实现多视频通道接入?

技术背景 我们在设计Android平台GB28181设备接入模块的时候,有这样的场景诉求,一个设备可能需要多个通道,常见的场景,比如车载终端,一台设备,可能需要接入多个摄像头,那么这台车载终端设备可以…

接口测试—Fiddler工具

文章目录 Fiddler 知识1. 导语2. 配置3. 常用命令面试题1. 利用Fiddler抓取android设备https请求 Fiddler 知识 未完待续 1. 导语 为什么要用Fiddler? 提高测试效率. 测试人员通过使用Fiddler自己调试接口,无需麻烦后台同学帮忙. 模拟多种测试环境. 可…