李宏毅机器学习笔记-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.rhkb.cn/news/502949.html

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

相关文章

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…

指针 const 的组合

1、首先来了解一下常量 const int num 5; 那么num的值是5, num的值不可修改 2、来了解一下指针 int value 5; int* p &value; 我喜欢吧指针和类型放一起,来强调p是一个指针类型, 而赋值的时候就得赋值一个int类型的地址…

《C++11》各种初始化方式的详细列举与对比

在 C 中,初始化对象的方式多种多样。随着 C 标准的演进,特别是 C11 的引入,初始化方式得到了显著的扩展和改进。本文将详细列举 C 中的各种初始化方式,并对它们进行对比,帮助开发者更好地理解和应用这些特性。 1. C98…

前端小案例——520表白信封

前言:我们在学习完了HTML和CSS之后,就会想着使用这两个东西去做一些小案例,不过又没有什么好的案例让我们去练手,本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)

文章目录 Section 4:The Vim Help System(Vim 帮助系统)S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…

10-C语言项目池

C语言项目池 《个人通讯录》 《火车订票系统》 管理员用户1录入火车票信息区间查询/购票2显示火车票信息打印购票信息3查询火车票信息退票4修改火车票信息5添加火车票信息 《学生学籍管理系统》 1录入学生信息2添加学生信息3显示学生信息4查找学生信息5删除学生信息6修改学…

Android 绘制学习总结

1、刷新率介绍 我们先来理一下基本的概念: 1、60 fps 的意思是说,画面每秒更新 60 次 2、这 60 次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅 3、每秒 60 次,也就是 1…

每日一题:BM1 反转链表

文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现(不符合要求,仅作为思路) 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目,现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHead&#xff…

78、使用爱芯派2_AX630C开发板 3.2T高有效算力 低功耗 支持AI-ISP真黑光实验

基本思想:使用爱心元智最新的版本开发板进行实验 AX630C、AX620Q 都是 620E 这一代 一、参考这个官方教程,先把代码在本地交叉编译完成 https://github.com/AXERA-TECH/ax620e_bsp_sdk 然后在拷贝到620c设备上 root@ax630c:~/ax620e_bsp_sdk/msp/out/arm64_glibc/bin# ./…

【Redis经典面试题七】Redis的事务机制是怎样的?

目录 一、Redis的事务机制 二、什么是Redis的Pipeline?和事务有什么区别? 三、Redis的事务和Lua之间有哪些区别? 3.1 原子性保证 3.2 交互次数 3.3 前后依赖 3.4 流程编排 四、为什么Lua脚本可以保证原子性? 五、为什么R…

企业网络性能监控

什么是网络性能监控 网络性能监控(NPM)是指对计算机网络的性能进行持续测量、分析和管理的过程,通过监控流量、延迟、数据包丢失、带宽利用率和正常运行时间等关键指标,确保网络高效、安全地运行,并将停机时间降至最低…

【开源】创建自动签到系统—QD框架

1. 介绍 QD是一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。 主要通过抓包获取到HAR来制作任务模板,从而实现异步响应和发起HTTP请求 2. 需要环境 2.1 硬件需求 CPU:至少1核 内存:推荐 ≥ 1G 硬盘:推…

SUB输入5V升压充电16.8V芯片HU5912

HU5912芯片,作为航誉微电子有限公司推出的一款高性能升压充电管理IC,自其面世以来,便以其出色的性能和广泛的应用领域,受到了业界的高度关注和赞誉。本文将详细介绍HU5912芯片的技术特点、应用优势、市场定位以及其在各类电子设备…

练习(继承)

大家好,今天我们写几道题来巩固一下我们所学的知识,以便我们更好的学习新内容。 方法重写: 继承: 注:java中只能继承一个类 那么今天分享就到这里,谢谢大家!!!

计算机网络 (28)虚拟专用网VPN

前言 虚拟专用网络(VPN)是一种在公共网络上建立私有网络连接的技术,它允许远程用户通过加密通道访问内部网络资源,实现远程办公和安全通信。 一、基本概念 定义:VPN是一种通过公共网络(如互联网&#xff09…

04-spring-理-ApplicationContext的实现

实现1&#xff1a;ClassPathXmlApplicationContext 1、内部维护了 DefaultListableBeanFactory 2、通过XmlBeanDefinitionReader 读取配置文件将结果加入到 DefaultListableBeanFactory 3、没有维护 bean后置处理器 &#xff0c;可以通过在xml配置 <context:annotation-c…

STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标&#xff1a;掌握使用STM32 HAL库点亮LED灯&#xff0c;并通过Proteus进行仿真验证&#xff01; 建立HAL库标准工程 1.新建工程文件夹 新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。 首先需要在某个位置建立工…

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机&#xff08;ELM&#xff09; 极限学习机是一种单层前馈神经网络&#xff0c;具有训练速…

实现AVL树

目录 AVL树概念 AVL树结构 AVL树插入 LL型 - 右单旋 RR型 - 左单旋 LR型 - 左右双旋 RL型 - 右左双旋 插入代码实现 AVL树测试 附AVL树实现完整代码 AVL树概念 前面的博客介绍了搜索二叉树&#xff0c;二叉搜索树-CSDN博客 在某些特定的情况下&#xff0c;⼆叉搜索树…

unity学习11:地图相关的一些基础

目录 1 需要从 unity的 Asset Store 下载资源 1.1 下载资源 1.2 然后可以从 package Manager 里选择下载好的包&#xff0c;import到项目里 2 创建地形 2.1 创建地形 2.2 地形 Terrain大小 2.3 各种网格的尺寸大小 2.4 比较这个地形尺寸和创建的其他物体的大小对比 3 …