李宏毅机器学习笔记-Transformer

目录

1. Seq2seq

2. encoder

Transformer 中的 Block 结构

3. Decoder

4.Encoder和Decoder间的信息传递

5.Training

6.Tips


1. Seq2seq

Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列,输出也是一个序列,输出的长度是由机器自己的来决定的

Seq2seq应用举例:

  • 1.语音识别:将一段声音讯号转换为文字
  • 2.机器翻译:将一种文字转换为另一种文字
  • 3.语音翻译:将声音讯号转换为文字(相当于1+2)

模型架构

2. encoder

目标:将一组向量序列经过处理转化为另一组向量序列。

任务:(特征提取+信息转换+支持下游任务)从输入数据中提取有意义的特征表示,并将这些信息转换为一个上下文向量或一组隐藏状态,供后续的 Decoder 使用。

模型:Encoder 模型可以使用 RNN 或者 CNN,在 transformer 里使用的是 Self-attention

下图左半部分为encoder结构:

  • 一组向量作为输入进入第一个 block
  • 在每个 block 内,输入向量被转换为一组新的向量
  • 这组新向量再作为输入传递给下一个 block。
  • 按照上述流程循环进行,直到所有 block 处理完毕。

下图右半部分为Block 的结构:

  1. Self-Attention 层:输入向量组首先通过 self-attention 层处理,产生一组新的向量。
  2. 全连接(FC)层:新产生的向量组经过 FC 层的进一步处理后,最终将向量组输出。
encoder结构

Transformer 中的 Block 结构

概述: Transformer 中的每个 Block 结构较为复杂,不仅包括 self-attention 层和全连接(FC)层,还结合了 residual connections 和 layer normalization 技术,以提高模型性能和训练稳定性。

流程:

  1. Self-Attention 层:输入向量序列首先通过多头自注意力(Multi-Head Self-Attention, MHSA)层处理。MHSA 使得模型可以关注输入序列中的所有位置,从而产生一组新的向量表示。

  2. Residual Connection:将通过 self-attention 层处理后的新向量与原始输入向量相加,形成残差连接(residual connection)。这有助于缓解深层网络中的梯度消失问题,并促进信息流动

  3. Layer Normalization:对相加后的向量进行层归一化(Layer Normalization),确保每一层的输入具有相同的尺度,从而加速训练过程并提高模型的泛化能力

  4. 全连接(FC)层

  5. 再次 Residual Connection

  6. 再次 Layer Normalization

block里面具体在做的事情

再整个看一下transformer里的encoder,注意结合上述讲解理解结构。 

 

PS.为什么要使用 residual connection (残差连接)呢?

Residual connection(残差连接)是深度学习中的一种技术,主要用于解决深层神经网络训练过程中的梯度消失问题和性能退化问题。这种连接方式首次在2015年由何凯明等人提出的ResNet(残差网络)架构中被广泛应用。 在传统的深层神经网络中,随着网络层数的增加,训练误差可能会出现饱和甚至上升的情况,这与直观上认为更深的网络应该有更好的表现相矛盾。为了解决这个问题,残差连接被引入到网络结构中。 残差连接的基本思想是在网络层之间添加直接的连接,使得信息能够绕过一个或多个层直接传递到后面的层。具体来说,在两个层之间加入一个跳跃连接(skip connection),这样可以将输入直接加到几层之后的输出上。数学上,如果F ( x )表示几个层的变换结果,则残差块的输出可以表示为 x + F ( x ) ,其中 x 是残差块的输入。 这种设计允许梯度在反向传播过程中可以直接通过残差连接流回更早的层,从而减轻了梯度消失的问题,并且使得网络更容易优化。此外,残差连接也使得模型能够在不损害性能的情况下增加更多的层,从而提高了模型的表达能力。

3. Decoder

目标:从Encoder传递过来的上下文表示中生成目标序列。

流程:以声音序列为例,经过 encoder 之后会产生一组新的向量,这组新的向量会输入到 decoder 之中,此时会再往 decoder 里输入一个 BEGIN 向量,代表着任务的开始。这个 BEGIN 向量是使用 one-hat 编码的。

Transformer的Decoder结构有两种主要类型:Autoregressive Decoder (AT)和非自回归性Decoder (NAT),本文主要讲AT。

BEGIN 向量输入之后,decoder 会输出一个通过softmax函数的向量,这个向量的行数于中文字符数相等,每行还有一个代表概率的数值,数值最大的字符就是识别出来的汉字。


经过 decoder 输出的向量会在下一轮成为 decoder 的输入,decoder 同时考虑 encoder 传来的向量组、BEGIN 向量和上一次 decoder 产生的输出来产生一个新的向量,这个流程将以此循环往复。

我们对Encoder和Decoder的架构进行一个比较,可以看出:

  1. 二者大体结构是相似的

  2. Decoder有一个特殊的Masked Self-attention,而不是普通的Self-attention

4.Encoder和Decoder间的信息传递

红圈圈起来的叫做 Cross attention,它是连接 encoder 和 decoder 的桥梁,其中有两个输入来自 encoder,一个输入来自 decoder。

cross attention

Cross attention 内部的结构如上图所示,输入向量 BEGIN 经过了 Masked Self-attention 之后产生的向量需要乘上一个矩阵进行变换之后生成 query 向量,再把这个向量 q 和 encoder 产生的各个 key 向量进行计算,最后才会生成最终的结果

5.Training

6.Tips

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

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

相关文章

es 3期 第20节-运用指标聚合快速统计数值

#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性&#xff…

基于Docker的ETCD分布式集群

目录 1. 说明 2. 配置表 3. 步骤 3.1 放行端口 3.2 docker-compose 文件 3.3 部署到3台服务器 3.4 相关命令 4. 参考 1. 说明 - 以docker容器方式实现ETCD分布式集群,为其他项目提供支持,经过反复试验成功部署(网上资料大都过期或部署失败)。 -…

LeetCode 力扣 热题 100道(二十七)除自身以外数组的乘积(C++)

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂…

DSMM数据安全能力成熟度评估--学习笔记(1)

目录 DSMM是什么? 1、能力成熟度等级评估流程 2、DSMM评估方式? 3、能力成熟度模型使用方法 4、 安全能力维度 4.1 能力构成 4.2 组织建设 4.3 制度流程 4.4 技术工具 4.5 人员能力 5、 能力成熟度等级维度 6、 数据安全过程维度 数据安全能…

【Go】:Sentinel 动态数据源配置指南

前言 在现代微服务架构中,流量控制是确保系统高可用性和稳定性的关键。Sentinel 是一款由阿里巴巴开源的流量控制组件,它不仅支持熔断降级和流量整形,还能通过动态数据源(如本地文件或 Nacos)加载规则,从而…

STM32学习之通信协议1 USART

时钟特性,比如发送一个波形高电平,然后低电平,接收方怎么知道是1、0还是1、1、0、0 ? 这就需要有一个时钟信号来告诉接收方什么时候需要采集数据。时钟特性分为同步和异步。 I2C和SPI有单独的时钟线,所以它们是同步的&…

Arduino 小白的 DIY 空气质量检测仪(3)- TVOC模块、CO2模块

接上回 逐个分析 m_TVOC.h #include <Arduino.h>#include <SoftI2C.h>#include "DFRobot_SGP40.h"// TVOC指数 // 型号&#xff1a;sgp_40 // 接口&#xff1a;VCC->VCC(5V)、GND->GND、SDA->D6、SCL->D7、WAK->GND // 协议&#xff1…

主数据驱动的数据治理框架

目录 数据资产分类 数据治理的重要性 数据质量框架的4个方面 数据治理的核心是加强对数据资产的管控,通过深化数据服务,持续创造价值。数据治 理是在数据资产价值创造的过程中,治理团队对数据资产管理的评价、指导、控制,如下图所示。 数据资产分类 数据资产划分成为主数据…

【大模型实战篇】LLaMA Factory微调ChatGLM-4-9B模型

1. 背景介绍 虽然现在大模型微调的文章很多&#xff0c;但纸上得来终觉浅&#xff0c;大模型微调的体感还是需要自己亲自上手实操过&#xff0c;才能有一些自己的感悟和直觉。这次我们选择使用llama_factory来微调chatglm-4-9B大模型。 之前微调我们是用两块3090GPU显卡&…

AnnotationConfigApplicationContext流程看实例化的beanPostProcessor

接上一篇https://blog.csdn.net/qq_26437925/article/details/144865082 探究一下beanPostProcessors怎么加进来的 目录 首先register(annotatedClasses);后添加了重要的beanDefinition: ConfigurationClassPostProcessorinvokeBeanFactoryPostProcessors(beanFactory);执行后…

pip 下载安装时使用国内源配置

pip 是 Python 的包管理工具&#xff0c;用于安装和管理第三方库。然而&#xff0c;在某些情况下&#xff0c;默认的 PyPI&#xff08;Python Package Index&#xff09;源可能由于网络原因导致下载速度慢或者连接不稳定。幸运的是&#xff0c;我们可以轻松地配置 pip 使用国内…

LinuxC高级day4

作业: 1.思维导图 2.终端输入一个C源文件名(.c结尾)判断文件是否有内容&#xff0c;如果没有内容删除文件&#xff0c;如果有内容编译并执行改文件。 3.终端输入两个文件名&#xff0c;判断哪个文件的时间戳更新

RuoYi-Vue从http升级为https(Jar+Nginx)

一、前提条件 1.已通过数字证书管理服务控制台签发证书。 2.SSL证书绑定的域名已完成DNS解析,即域名与主机IP地址相互映射。 附:阿里云网站运维检测平台 3.已在Web服务器开放443端口(HTTPS通信的标准端口)。 如果使用的是阿里云ECS服务器,请确保已经在安全组规则入方向…

OpenCV相机标定与3D重建(39)计算校正畸变后的新相机内参矩阵函数getOptimalNewCameraMatrix()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据自由缩放参数返回新的相机内参矩阵。 cv::getOptimalNewCameraMatrix 是 OpenCV 库中的一个函数&#xff0c;用于计算校正畸变后的新相机内…

OkHttp深度解析:请求流程、分发器机制、拦截器工作及TCP连接复用

目录 一、OkHttp请求的请求流程是怎样的? 二、OkHttp分发器是怎样工作的? 2.1 请求队列与线程池维护 2.2 异步请求处理 2.3 同步请求处理 2.4 请求执行 2.5 请求完成处理&#xff1a; 2.6 线程池设计 三、OkHttp拦截器是如何工作的? 四、应用拦截器和网络拦截器的…

云计算课程报告实验-WordCount算法实验 过程记录

内容描述 本实验指导书通过在华为鲲鹏上&#xff0c;编译运行WordCount程序。完成实验操作后&#xff0c;读者会掌握简单的程序编写&#xff0c;如WordCount中的getWords、countWords、treeMerge。 实验环境 华为鲲鹏云主机、openEuler 20.03操作系统&#xff1b;安装mpich-3…

2018年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题-纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;目前中南大学MBA在读&#xff0c;也考取过HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &…

kafka使用常见问题

连接不上kafka,报下边的错 org.apache.kafka.common.KafkaException: Producer is closed forcefully.at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortBatches(RecordAccumulator.java:760) [kafka-clients-3.0.2.jar:na]at org.apache.kafka.client…

Jenkins(持续集成与自动化部署)

Jenkins 是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具。 官网&#xff1a;https://www.jenkins.io/ GitLab安装使用 安装前提&#xff1a;内存至少需要4G 官方网站&#xff1a;https://about.gitlab.com/ 安装文档&#xff1a;https://docs.gitlab.c…

MyBatis执行一条sql语句的流程(源码解析)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MyBatis执行一条sql语句的流程&#xff08;源码解析&#xff09; MyBatis执行sql语句的流程加载配置文件加载配置文件的流程 创建sqlsessionFactory对象解析Mapper创建sqlses…