详解Vision Transformer中的Encoder

news2025/1/18 8:31:19

一.Transformer架构

在这里插入图片描述
左半边是Encoder,右半边是Decoder。

二.Vision Transformer

Vision Transformer取了Transformer的左半边。包含

  1. Input Embedding
  2. Positional Encoding
  3. 多头注意力机制 + Add & Norm
  4. (前馈网络)Feed Forward + Add & Norm
    在这里插入图片描述

2.1 Input Embedding

在这里插入图片描述

2.2 Positional Encoding

  1. 为什么需要位置编码?

Transformer替代的是RNN(循环神经网络),RNN本身是一种训练网络,天然包含句子之间的位置信息,Tranformer用attention替代了RNN,所以就缺乏位置信息。模型没有办法知道每个单词在句子中的相对位置和绝对位置。

  1. 具体实现方法是:

每个奇数时间步,使用余弦函数创建一个向量。

在这里插入图片描述

  1. 偶数时间步,使用正弦函数创建向量
    在这里插入图片描述
    然后将这些向量添加到相应的嵌入向量中。

这样就成功了为网络提供了每个向量的信息。选用正弦和余弦函数,是因为他们有线性特性。

2.3 多头注意力机制

在这里插入图片描述

它的内部如下:
在这里插入图片描述
多头注意力机制是多个自注意力。
多头注意力模块运用了自注意力,自注意力机制可将输入的每个单词和其它单词关联起来。
比如:模型将You与How 和 are联系起来。
在这里插入图片描述

1. 自注意力机制中的Q,K,V

在这里插入图片描述

在这里插入图片描述
为了实现自注意力,将输入分别输入到三个不同的全连接层,来创建查询向量、键向量、值向量

查询向量、键向量、值向量来自检索系统,
Q:例如当在youtube上输入一个查询词Q,搜索某个视频。
K:搜索引擎将你的查询值映射到一组键K中(如视频标题,视频描述)。
V:与数据库的候选视频相关联。

2. 自注意力机制中的第一个MatMul

查询和键经过点积矩阵乘法产生一个分数矩阵。分数矩阵确定了一个单词应该如何关注其它单词。
在这里插入图片描述

(MatMul)点乘获得分数矩阵:

在这里插入图片描述
分数矩阵确定一个单词应该如何关注其它单词。
在这里插入图片描述
每个单词都会有一个与时间步长中的其他单词相对应的分数。分数越高,关注度越高。这就是查询如何映射到键的。

3.缩放

在这里插入图片描述

在这里插入图片描述
将查询和键的维度开平方将得分缩放,因为这样可以让梯度更稳定,因为乘法可能会产生爆炸效果。

4. softmax

在这里插入图片描述

对缩放后的得分进行softmax计算,得到注意力权重,进行softmax计算后,较高的得分会得到增强,较低的得分得到抑制。
在这里插入图片描述
得到的是注意力权重。

5. 第二个MatMul操作

在这里插入图片描述

在这里插入图片描述

将注意力权重 和 值向量相乘。得到输出向量。

6. concat层

为了使这个计算成为多头注意力计算,在应用自注意力之前将查询、键、值分成N个向量。分割后的向量分别经过相同的自注意力,每个自注意力过程称为一个头,每个头产生一个输出向量。这些向量经过最后的线性层之前被拼接成一个向量。
在这里插入图片描述

理论上,每个头都会学到不同的东西。从而为编码器模型提供更多的表达能力。

7.多头注意力机制总结

多头注意力是一个模块,用于计算输入的注意力权重,并生成一个带有编码信息的输出向量,指示序列中每个词应该如何关注其它所有词。

8.多头注意力机制后的Add & Norm

在这里插入图片描述
接下来,使用残差连接,将多头注意力机制输出向量,加到原始输入上。

2.4 前馈网络 + Add & Norm

在这里插入图片描述

在这里插入图片描述

残差连接的输出经过层归一化(LayerNorm)。归一化后的残差输出被送入点对点前馈网络进行进一步处理。点对点前馈网络是几个线性层,中间有ReLu激活函数。

残差连接有助于网络训练,因为它允许梯度直接流过网络。

使用层归一化来稳定网络,显著减少所需训练时间。

最后:

可将编码器堆叠n次,以进一步编码信息。其中每一层都有机会学习不同的注意力表示。从而有可能提高transformer网络的预测能力。

在这里插入图片描述

参考

超强动画,一步一步深入浅出解释Transformer原理!
https://www.bilibili.com/video/BV1ih4y1J7rx/?spm_id_from=333.999.top_right_bar_window_history.content.click&vd_source=ebc47f36e62b223817b8e0edff181613

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

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

相关文章

Python 完美解决 Import “模块” could not be resolved ...

首先扩展安装Python插件 Ctrl Shift P,在打开的输入框中输入 Python: Select Interpreter 搜索,选择 Python 解析器。 选好解析器后,就可以直接在 VS Code 里运行(快捷键 Ctrl F5)或调试(快捷键 F5&…

打造高效等级查询系统

在现代教育体系中,考试等级查询系统是学生、家长和校园必不可少的工具。易查分是一款功能强大、易于使用的在线成绩查询平台,可以帮助学生和家长方便查询学生的考试成绩和等级,了解学习情况,从而更好的制定学习计划和提供必要的支…

leetcode(力扣):203移除链表元素 leetcode(力扣):206反转链表 leetcode(力扣):876.链表的中间结点多种解法

目录 203.移除链表元素 解法一:将目标元素前一个元素存放地址改为下一元素地址 解法二:遍历原链表,把不是val的节点拿出来进行尾插到新链表​编辑 解法三:有哨兵位解法->头节点不存储有效数据​编辑 206.反转链表 方法一…

一次说清楚BCD编码

背景 在银行报文中,有很多用到BCD编码的地方,BCD编码和常见的二进制编码或者ASCII编码又有区别,所以很容易搞错,弄错概念,下面笔者就一次把BCD编码讲清楚。 一,概念 1,BCD编码,…

vue开发调试

1、调试方式 1.1 为什么调试 当遇到应用逻辑出现错误,但又无法准确定位的时候,同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源。 1.2 调试方法…

NC 添加IRule 后置前置规则

1、在保存后触发后置规则,找到保存的规则,在里面进行添加后置规则。 编写自己的规则,通过 CompareAroundProcesser 《AggCLMasterVo》 processor 的processor.addAfterRule(rule); 方法进行后置规则添加 Cl_SAVE_IRule : 实现 IR…

【API 管理】什么是 API 管理,为什么它很重要?

当今复杂的数字生态系统由许多相互关联的部分组成。API 作为看门人和连接器在其中发挥着关键作用——提供了许多最终用户甚至没有注意到的自动化机会和效率。 企业密切关注 API。它们对于应用程序、数据和各种客户交互的功能至关重要。 这使得 API 管理成为几乎每个部门的组织…

[计算机入门] 搜索文件

3.7 搜索文件 随着计算机的使用,里面存放的资料会越来越多,有些文件我们可能不记得存放在哪里了,这个时候就可以通过计算机自带的搜索功能进行搜索。 1、点击任务栏中的放大镜图标: 2、在弹出的窗口下方输入要查询的文件名&…

华为云云服务器评测|详解 Nacos 安装部署

环境配置 服务器云耀云服务器L操作系统CentOS 7.9 64bit | 公共镜像JDK64 bit JDK 1.8MavenMaven 3.2.xnacos-server2.2.3 下载地址 官方githubRelease 2.2.3 (May 25th, 2023) alibaba/nacos GitHub百度网盘链接:https://pan.baidu.com/s/1K8UE6iJL2ZnosUY83b…

案例聚焦:F5怎么样提升游戏玩家体验?

对手机游戏市场有过了解的小伙伴,定然对Deltatech Gaming Limited这个公司不会陌生。作为印度在线游戏和娱乐行业的领跑者,两个最受欢迎的多人游戏应用分别为多人游戏的 “Addagames” 和扑克类游戏 “Adda52” ,它们会定期举办在线联赛。而这…

【Apollo】Apollo的入门介绍

阿波罗是百度发布的名为“Apollo(阿波罗)”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。 帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 百度开放此项计划旨在建立一个以合作为中…

c语言 3.0

💂 个人主页: 程序员爱摸鱼🤟 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注点赞收藏(一键三连)哦💅 想寻找共同成长的小伙伴,可以互粉哦 💬文章目录…

某堡垒机SQL注入漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、概述 中远麒麟堡垒机能够提供细粒度的访问控制,最大限度保护用户资…

前后端分离项目-基于springboot+vue的it职业生涯规划系统的设计与实现(内含代码+文档+报告)

it职业生涯规划系统在jdk环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务。总之,it职业生涯规划系统集中管理信息,有着保密性强,效率高,存储空间大…

xctf攻防世界 MISC之CatFlag

0x01.进入环境,下载附件 拿到的是一个无后缀的flag文件,用winhex打开后发现是奇奇怪怪的乱码,用kali的strings搜索也没找到flag情况。 0x02.问题分析 题目提示如图: 让直接cat就行,在kali中直接尝试输入&#xff1a…

百度云智大会:科技与创新的交汇点

​ 这次的百度云智大会,可谓是亮点云集—— 发布了包含42个大模型、41个数据集、10个精选应用范式的全新升级千帆大模型平台2.0,发布首个大模型生态伙伴计划,而且也预告了文心大模型4.0的发布,大模型服务的成绩单也非常秀&#x…

198/213动态规划之打家劫舍系列

这两天在学习的时候,发现有个打家劫舍的题目,有意思的很,分享给大家。 基础题目 题目内容 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互…

Navicat 携手华为云 GaussDB,联合打造便捷高效的数据库开发和建模工具方案

近日, Navicat Premium 顺利完成与华为云 GaussDB的兼容性测试认证,并获得华为云授予的技术认证书。 ​ 合作 Navicat 作为华为云 GaussDB 生态工具合作伙伴以及 Gocloud 合作伙伴,此次合作旨在通过Navicat 多年来在数据库开发管理工具上的积…

uniapp 下拉框数据回显的问题

问题 : 现在是下拉框数据回显不了, 绑定的v-model 原因 : uniui 下拉框数据绑定要是 value text 这种格式的 解决办法: 将获取到的后端数据 转换为 需要的格式 ,再进行绑定 下拉框的数据 遍历

08.SCA-CNN

目录 前言泛读摘要IntroductionRelated Work 精读Spatial and Channel-wise Attention CNNOverviewSpatial AttentionChannel-wise AttentionChannel-SpatialSpatial-Channel ExperimentsDataset and Metric设置 评估Channel-wise Attention(问题1)评估M…