【深度学习】Transformer

李宏毅深度学习笔记
https://blog.csdn.net/Tink1995/article/details/105080033
https://blog.csdn.net/leonardotu/article/details/135726696
https://blog.csdn.net/u012856866/article/details/129790077

Transformer 是一个基于自注意力的序列到序列模型,与基于循环神经网络的序列到序列模型不同,其可以能够并行计算

Transformer架构

Transformer主要由输入部分(输入输出嵌入与位置编码)、多层编码器、多层解码器以及输出部分(输出线性层与Softmax)四大部分组成。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(1)输入部分

  • 源文本嵌入层:将源文本中的词汇数字表示转换为向量表示,捕捉词汇间的关系。
  • 位置编码层:为输入序列的每个位置生成位置向量,以便模型能够理解序列中的位置信息。
  • 目标文本嵌入层(在解码器中使用):将目标文本中的词汇数字表示转换为向量表示。

(2)编码器部分

  • 由N个编码器层堆叠而成。
  • 每个编码器层由两个子层连接结构组成:第一个子层是多头自注意力子层,第二个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。

(3)解码器部分

  • 由N个解码器层堆叠而成。
  • 每个解码器层由三个子层连接结构组成:第一个子层是一个带掩码的多头自注意力子层,第二个子层是一个多头注意力子层(编码器到解码器),第三个子层是一个前馈全连接层。每个子层后都接有一个规范化层和一个残差连接。

(4)输出部分

  • 线性层:将解码器输出的向量转换为最终的输出维度。
  • Softmax层:将线性层的输出转换为概率分布,以便进行最终的预测。

编码器-解码器

左边是N个编码器,右边是N个解码器,Transformer中的N为6。
在这里插入图片描述

编码器
每个编码器层都有两个子层,即多头自注意力层(考虑整个序列的信息)和逐位置的前馈神经网络(Position-wise Feed-Forward Network)。在每个子层后面都有残差连接(图中的虚线)和层归一化(LayerNorm)操作,二者合起来称为 Add&Norm 操作

残差连接:最左边的向量 b 输入到自注意力层后得到向量 a,输出向量 a 加上其输入向量 b 得到新的输出。
层归一化:层归一化比信念网络更简单,不需要考虑批量的信息,而批量归一化需要考虑批量的信息。层归一化输入一个向量,输出另外一个向量。层归一化会计算输入向量的平均值和标准差。(批量归一化是对不同样本不同特征的同一个维度去计算均值跟标准差,但层归一化是对同一个特征、同一个样本里面不同的维度去计算均值跟标准差,接着做个归一化。)

解码器
每个解码器层都有三个子层,掩码自注意力层(Masked Self-Attention)、Encoder-Decoder自注意力层、逐位置的前馈神经网络。同样,在每个子层后面都有残差连接(图中的虚线)和层归一化(LayerNorm)操作。

掩蔽自注意力可以通过一个掩码来阻止每个位置选择其后面的输入信息。

原来的自注意力输入一排向量,输出另外一排向量,这一排中每个向量都要看过完整的输入以后才做决定。根据 a1 到 a4 所有的信息去输出 b1。掩蔽自注意力的不同点是不能再看右边的部分。产生 b1 的时候,只能考虑 a1 的信息,不能再
考虑 a2、a3、a4。产生 b2 的时候,只能考虑 a1、a2 的信息,不能再考虑 a3、a4 的信息。

一开始解码器的输出是一个一个产生的,所以是先有 a1 再有 a2,再有 a3,再有a4。这跟原来的自注意力不一样,原来的自注意力 a1 跟 a4 是一次整个输进去模型里面的。编码器是一次把 a1 跟 a4 都整个都读进去。但是对解码器而言,先有 a1 才有a2,才有 a3 才有 a4。所以只能考虑其左边的东西,没有办法考虑其右边的东西。

编码器-解码器注意力
编码器和解码器通过编码器-解码器注意力(encoder-decoder attention)传递信息,编码器-解码器注意力是连接编码器跟解码器之间的桥梁。解码器中编码器-解码器注意力的键和值来自编码器的输出,查询来自解码器中前一个层的输出。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伺服调试三环讲解

在伺服调试过程中,有些项目要求不高,采用伺服自整定就可以调试好伺服,但有些项目对伺服有着比较高的要求,于是需要采取手动调试伺服参数,下面就介绍一下伺服三环参数的调试的方法。 三环指:电流环、速度环、位置环 带宽关系:电流环带宽>速度环带宽>位置环带宽 三环控…

C语言单链表的算法之插入节点

一:访问各个节点中的数据 (1)访问链表中的各个节点的有效数据,这个访问必须注意不能使用p、p1、p2,而只能使用phead (2)只能用头指针不能用各个节点自己的指针。因为在实际当中我们保存链表的时…

偏微分方程笔记

极小位能原理: C 2 C^2 C2 是一个集合符号,表示所有二阶连续可微函数的集合 弱导数 C 2 C^2 C2 是一个集合符号,表示所有二阶连续可微函数的集合。 C 0 ∞ ( I ) C^{\infty}_0(I) C0∞​(I)表示于 I I I上无穷可微,且在端点a&…

使用pyinstaller 如何打包python项目

参考:【python项目正确打包方法-哔哩哔哩】 https://b23.tv/EDB6zbG Pyinstaller 详解多种打包过程(去坑,填坑)。_pyinstaller -f -w-CSDN博客 1.打开命令提示符: 找到python项目所在位置,输入cmd即可 2. 安装pipenv: 在命令提示符&#…

【强化学习的数学原理】课程笔记--2(贝尔曼最优公式,值迭代与策略迭代)

目录 贝尔曼最优公式最优 Policy求解贝尔曼最优公式求解最大 State Value v ∗ v^* v∗根据 v ∗ v^* v∗ 求解最佳 Policy π ∗ \pi^* π∗一些证明过程 一些影响 π ∗ \pi^* π∗ 的因素如何让 π ∗ \pi^* π∗ 不 “绕弯路” γ \gamma γ 的影响reward 的影响 值迭…

UiPath+Appium实现app自动化测试

一、环境准备工作 1.1 完成appium环境的搭建 参考:pythonappiumpytestallure模拟器(MuMu)自动化测试环境搭建_appium mumu模拟器-CSDN博客 1.2 完成uipath的安装 登录官网,完成注册与软件下载安装。 UiPath业务自动化平台:先进的RPA及自动…

Visual Studio 中的键盘快捷方式

1. Visual Studio 中的键盘快捷方式 1.1. 可打印快捷方式备忘单 1.2. Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用(除非另有指定)。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成&#xff1…

第十四章 集合(List)

一、集合框架体系 集合: (1)可以动态保存任意多个对象 (2)提供了一系列方便的操作对象的方法 二、Collection 1. Collection 接口常用方法 (1)add:添加单个元素 (2…

Cypress测试:7个快速解决问题的调试技巧!

以下为作者观点: 快速编写代码是一项宝贵的技能,但能够有效调试和解决错误和bug,更是一个软件开发人员具有熟练技能的标志。调试是开发过程中的一个关键环节,可以确保软件按预期运行并满足用户需求。 Cypress 调试简介 Cypress …

【Linux】—Xshell、Xftp安装

文章目录 前言一、下载Xshell、Xftp二、安装Xshell三、使用XShell连接Linux服务器四、修改windows的主机映射文件(hosts文件)五、远程连接hadoop102/hadoop103/hadoop104服务器六、安装Xftp 前言 XShell远程管理工具,可以在Windows界面下来访…

uniapp + vue3 + Script Setup 写法变动 (持续更新)

一、uniapp 应用生命周期: https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意: 应用生命周期仅可在App.vue中监听,在其它页面监听无效。 二 、uniapp页面生命周期: https://uniapp.dcloud.net.cn/tutori…

3.js - 色调映射(renderer.toneMapping)

// ts-nocheck// 引入three.js import * as THREE from three// 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js// 导入tween import * as TWEEN…

昇思25天学习打卡营第11天|基于MindSpore通过GPT实现情感分类

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninsta…

【目标检测】DINO

一、引言 论文: DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 作者: IDEA 代码: DINO 注意: 该算法是在Deformable DETR、DAB-DETR、DN-DETR基础上的改进,在学习该算法前&#…

决策树算法的原理与案例实现

一、绪论 1.1 决策树算法的背景介绍 1.2 研究决策树算法的意义 二、决策树算法原理 2.1 决策树的基本概念 2.2 决策树构建的基本思路 2.2 决策树的构建过程 2.3 决策树的剪枝策略 三、决策树算法的优缺点 3.1 决策树算法的优势 3.2 决策树算法的局限性 3.3 决策树算…

Vue报错:Component name “xxx” should always be multi-word vue/multi-word-component

问题:搭建脚手架时报错,具体错误如下: ERROR in [eslint] E:\personalProject\VueProjects\vueproject2\src\components\Student.vue10:14 error Component name "Student" should always be multi-word vue/multi-word-compon…

【分布式数据仓库Hive】常见问题及解决办法

目录 一、启动hive时发现log4j版本和hadoop的版本有冲突 解决办法:删除hive下高版本的slf4j 二、启动hive报错 Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/Object;)V …

Elasticsearch (1):ES基本概念和原理简单介绍

Elasticsearch(简称 ES)是一款基于 Apache Lucene 的分布式搜索和分析引擎。随着业务的发展,系统中的数据量不断增长,传统的关系型数据库在处理大量模糊查询时效率低下。因此,ES 作为一种高效、灵活和可扩展的全文检索…

分别使用netty和apache.plc4x测试读取modbus协议的设备信号

记录一下常见的工业协议数据读取方法 目录 前言Modbus协议说明Netty 读取测试使用plc4x 读取测试结束语 前言 Modbus 是一种通讯协议,用于在工业控制系统中进行数据通信和控制。Modbus 协议主要分为两种常用的变体:Modbus RTU 和 Modbus TCP/IP Modbus …

嵌入式Linux之Uboot简介和移植

uboot简介 uboot 的全称是 Universal Boot Loader,uboot 是一个遵循 GPL 协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB 等高级功能。 也就是说,可以在没有系统的情况…