详解Transformer中的Encoder

news2024/9/30 5:39:11

一.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/984168.html

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

相关文章

C51智能小车(循迹、跟随、避障、测速、蓝牙、wifie、4g、语音识别)总结

目录 1.电机模块开发 1.1 让小车动起来 1.2 串口控制小车方向 1.3 如何进行小车PWM调速 1.4 PWM方式实现小车转向 2.循迹小车 2.1 循迹模块使用 2.2 循迹小车原理 2.3 循迹小车核心代码 3.跟随/避障小车 3.1 红外壁障模块分析​编辑 3.2 跟随小车的原理 3.3 跟随小…

世界级黑客丨电脑犯罪界的汉尼拔

被美国FBI称为电脑界的汉尼拔的人,有什么样的故事? 这个人就是世界级黑客凯文李波尔森,他在早期是正儿八经的黑客,他在17岁的时候就使用TRS-80电脑攻入美国国防部的高等研究计划署网络,但是当时他进去啥也没干&#x…

lambda nodejs 函数降低冷启动时间的最佳实践

lambda nodejs 函数降低冷启动时间的最佳实践 lambda nodejs 函数降低冷启动时间的最佳实践 前言什么是冷启动时间打包服务端 js什么是 inline进一步封装的打包工具存在的弊端以及解决方案Next Chapter完整示例及文章仓库地址 前言 本文章的思路,继承发展自这两篇…

vite vue项目 运行时 \esbuild\esbuild.exe 缺失 错误码 errno: -4058, code: ‘ENOENT‘,

vite vue项目运行 npm run dev 报错某个模块启动文件丢失信息 D:\PengYe_code\2\vite-vue3-admin>npm run dev> vite-vue3-admin1.0.2 dev > vitenode:events:504throw er; // Unhandled error event^Error: spawn D:\PengYe_code\2\vite-vue3-admin\node_modules\vi…

jupyter 添加中文选项

文章目录 jupyter 添加中文选项1. 下载中文包2. 选择中文重新加载一下,页面就变成中文了 jupyter 添加中文选项 1. 下载中文包 pip install jupyterlab-language-pack-zh-CN2. 选择中文 重新加载一下,页面就变成中文了 这才是设置中文的正解&#xff…

出现Browse information of one xxxx解决方法

不良现象如下: Browse information of one or more files is not available: Doing a project rebuild might fix this. 解决的方法:将C文件里面的内容全部注释掉,再编译正常。 然后再将注释掉的代码打开,再次编译就正常了。

【笔试强训选择题】Day35.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、Da…

什么是互联网打工人都需要知道的API?

我们生活在一个科技主导的世界。在这里,数据无处不在。作为许多不同产品的用户,我们所追寻的不再是某一个能将工作完成的最佳产品,而是一个不仅能有效完成工作,同时也与我们所使用的其他工具完美兼容的产品。因此,了解…

08-JVM垃圾收集器详解

上一篇:07-垃圾收集算法详解 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行比较,但并非为了挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没…

Web安全研究(四)

No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells Stony Brook University Ruhr-University Bochum 数据集地址:https://github.com/HACHp1/CWSOGG_dataset Web shell作为恶意脚本,攻击者将其上传到被攻陷的Web服务器&#xff…

iTunes备份文件在哪?苹果手机怎么恢复iTunes备份?

iTunes是苹果手机的一个常见应用,很多小伙伴都使用它来备份手机上的重要数据。通过iTunes备份数据到电脑后还可以进行随时管理和查看。itunes备份文件在哪?手机数据丢失怎么恢复iTunes备份?接下来,本文将给大家介绍一下&#xff0…

javaweb03-js基础

文本中涉及的一些基础介绍,不是全的。只写一些最常见、最经常使用的,其他的想了解可以自行查找资料。 前言: script引入 内部引用 script 外部引用 script:src 一、js语法 1.编写语法 (1)区分大小写,建议…

达之云BI平台助力中国融通集团陕西军民服务社有限公司实现数字化运营

中国融通集团陕西军民服务社是一家大型综合类零售购物中心,公司目前管理系统运行了10年左右,面临系统新零售支持发展严重滞后,行业主流应用落地困难,如线上业务、到家业务、全渠道营销、电子发票、自助收银、扫码购、无感停车、未…

拦截器失效和工具类中静态变量注入失败的问题

拦截器失效和工具类中静态变量注入失败的问题 文章目录 拦截器失效和工具类中静态变量注入失败的问题1.拦截器配置冲突2.路径配置错误3.关于工具类中Maper注入失效的问题解决办法1:手动赋值给静态变量 问题描述:项目中需要设置多个拦截器拦截不同路径&am…

【Java实战项目】【超详细过程】—大饼的图片服务器3(ImageDao类详解)

ImageDao详解 一、向数据库中写入图片属性1.与数据库建立连接2.创建并拼接SQL语句3.执行SQL语句4.定义异常类JavaImageServerException5.关闭数据库连接6.写入图片的完整代码 二、查找数据库中所有图片属性1.与数据库建立连接2.创建并拼接SQL语句3.执行SQL语句4.处理结果集5.关…

python+django吉他乐谱推荐交流网站的实现vue

而吉他乐谱推荐交流网站能很好地解决这一问题,轻松应对乐谱推荐,既能提高用户对乐谱评论,又能加快乐谱推荐交流网站的效率,取代人工管理是必然趋势。 本吉他乐谱推荐交流网站以Django作为框架,B/S模式以及MySql作为后台…

Vue错误记录

文章目录 1. 项目build的时候报错Warning: Accessing non-existent property cat of module exports inside circular dependency2. WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not …

嵌入式linux(imx6ull)下RS485接口配置

接口原理图如下: 由原理图可知收发需要收UART_CTS引脚控制,高电平时接收,低电平时发送。通过查看Documentation/devicetree/bindings/serial/fsl-imx-uart.yaml和Documentation/devicetree/bindings/serial/rs485.yaml两个说明文档,修改设备树…

Visual Stadio使用技巧

C语言调试技巧 Debug 和 Release 的介绍 Debug:通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试(可调试)。 Release:通常称为发布版本,它往往时进行了各种优化&a…

照片能做真人三维建模?

易模App开启真人手办定制以来,许多用户朋友在积极尝试,更有用户反馈了一种可以使模型成果更精致的建模方式——螺旋连拍。 螺旋连拍使用易模App人像模式自定义方法,上传拍好的真人照片即可AI建模,操作方法简单。那么如何拍摄用于建…