李宏毅机器学习笔记-Transformer

news2025/1/9 4:25:09

目录

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.coloradmin.cn/o/2272390.html

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

相关文章

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误,其实很简单,要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…

Qt 5.14.2 学习记录 —— 일 新项目

文章目录 1、创建2、查看代码 ---- main.cpp3、查看代码 ---- widgt.h4、查看代码 ---- widgt.cpp和widget.ui5、查看代码 ---- Empty.pro6、运行产生的中间文件 1、创建 左上角的文件,新建文件或项目。如果要写一个GUI程序,应当选择Application&#x…

Spring MVC和servlet

1.Spring MVC是Spring框架的一个扩展 2.Spring MVC工作流程 1、用户发送请求至前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及…

蓝牙架构介绍

架构1:hostcontroller双芯片标准架构 这个标准把蓝牙协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝牙模块上,两者之间通过HCI协议进行通信,AP芯片厂商一般会直接采用开源的Bluez来实现Host功能…

MySQL(二)MySQL DDL数据库定义语言

1. MySQL DDL数据库定义语言 1.1. MySQL定义语言 进入MySQL mysql -u root -p(回车后输入密码,即可进入mysq1)1.1.1. 数据库操作 (1)查看数据库 mysql>show databases;注:MySQL语句分隔符为“;”   mysql库很重要它里面有…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

node.js内置模块之---stream 模块

stream 模块的作用 在 Node.js 中,stream 模块是一个用于处理流(stream)的核心模块。流是一种处理数据的抽象方式,允许程序处理大量数据时不会一次性将所有数据加载到内存中,从而提高性能和内存效率。通过流&#xff0…

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础:MPEG2-PS专题(3)——MPEG2-PS格式简介》中可以知道,PS流由一个个pack(包装)组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

ElasticSearch05-集群搭建

零、文章目录 ElasticSearch05-集群搭建 1、Windows集群 (1)安装节点 就是把下载的压缩包解压之后复制三个副本 (2)配置节点 每个文件夹的配置文件config/elasticsearch.yml修改如下node-01 配置如下 cluster.name: myclust…

【服务器项目部署】✈️将本地项目部署到服务器(二)!

目录 👋前言 👀一、功能调整 🌱二、服务部署 💞️三、代码调整 🍻四、章末 👋前言 小伙伴们大家好,上篇文章本地实践了如何将本地项目部署到服务器上,从服务器的选择、服务器环境…

挖掘建模之分类与预测

根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等模型,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。 1.分类与预测 就餐饮企业而言,经常会碰到这样的问题: 1&…

安卓入门十三 常用功能模块一RxJava

响应式编程RxJava 响应式编程:使用RxJava库实现响应式编程范式,提供更简洁、易于维护的异步编程方式。 异步编程的简洁性:响应式编程提供了一种简洁、流畅的方式来处理异步任务。通过使用操作符和线程调度器,可以将异步操作串联…

【LeetCode】:最长乘积等价子数组【简单】

https://leetcode.cn/problems/maximum-subarray-with-equal-products/description/ 以下是解决这道题的详细思路: 一、理解题目要求 题目给定一个由正整数组成的数组 nums,需要找出其中最长的“乘积等价子数组”的长度。一个数组 arr 被称为“乘积等…

Android使用DataBinding和Merge引发的血案

Android使用DataBinding和Merge引发的血案 1.前言: 相信Databinding和Merge大家都不陌生,今天讲解的是Databinding和Merge一起使用遇到的问题,在父布局使用,引用的布局使用Merge会导致id找不到,运行时直接崩溃了&…

JS (node) 的 ACM 模式 + debug方法 (01背包为例)

文章目录 JS 的 ACM 模式输入处理 JS dubug (01背包为例)动态输入在本地通过 Node.js 运行和调试 硬编码 Hard CodingVS Code JS 的 ACM 模式 在 JavaScript 中,ACM 模式一般通过 Node.js 的 readline 模块实现。 输入处理 使用 readline 模块监听输入。 将每行输…

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER…

HTML——56.表单发送

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单发送</title></head><body><!--注意&#xff1a;1.表单接收程序&#xff0c;放在服务器环境中(也就是这里的www文件目录中)2.表单发送地址&#x…

el-table行列转换简单版,仅限单行数据

原始数据格式如下&#xff0c;如果不是此格式&#xff0c;请转换成以下格式在进行以下操作 [{ label: name, value: Tom },{ label: age, value: 25 },{ label: country, value: UK } ]代码如下 <template><el-table :data"tableData" style"width: …

OpenGL材质系统和贴图纹理

上一篇文章当中笔者为大家介绍了风氏光照模型&#xff0c;相信大家也发现了光照着色器当中有设置有很多控制光照强度的参数&#xff0c;而所谓的材质系统就是我们可以人为的去调节这些参数&#xff0c;让一个物体的反光效果能够更加接近我们现实生活当中的一些物体。 材质系统…

【mybatis】Mybatis整体架构解析

从本篇开始我们开始学习mybatis的系列源码&#xff0c;主要的主题可能就是四个方面 从整体把握mybatis系统架构通过一个查询SQL 源码解析核心流程mybatis的缓存机制-源码级别mybatis的插件机制-源码级别spring是如何整合的mybatis框架的 1.整体架构 上述是mybatis的源码&…