Transformer之Residuals Decoder

news2025/2/26 11:39:54

The Residuals

我们需要提到的编码器架构中的一个细节是,每个编码器中的每个子层(self-attention,,ffnn)周围都有一个残余连接,然后是 layer-normalization 步骤。
在这里插入图片描述
如果我们要可视化向量和与 self attention 相关的 layer-norm 运算,它看起来是这样的
在这里插入图片描述
这也适用于解码器的子层。如果我们考虑一个由2个堆叠的编码器和解码器组成的Transformer,它看起来就像这样
在这里插入图片描述

The Decoder Side

现在我们已经涵盖了编码器方面的大部分概念,我们基本上也知道了解码器的组件是如何工作的。但是让我们看看它们是如何协同工作的。

编码器首先处理输入序列。然后,顶部编码器的输出被转换成一组注意向量K和v。这些将被每个解码器在其编码器-解码器注意层中使用,这有助于解码器专注于输入序列中的适当位置
完成编码阶段后,我们开始解码阶段。解码阶段的每一步都从输出序列中输出一个元素(在本例中是英语翻译句子)
以下步骤重复该过程,直到达到一个特殊符号,表明 transformer 解码器已完成其输出。每一步的输出在下一个时间步中被馈送到底部的解码器,解码器像编码器一样将它们的解码结果气泡化。就像我们对编码器输入所做的那样,我们在这些解码器输入中嵌入并添加位置编码来指示每个单词的位置。
在这里插入图片描述
解码器中的 self attention 的运行方式与编码器中的略有不同:

在解码器中, self attention 层只允许关注输出序列中的早期位置。这是通过在 self attention 计算的 softmax 步骤之前 mask 未来位置(将其设置为-inf)来完成的。

“Encoder-Decoder Attention”层的工作原理就像多头 self attention 一样,只是它从下面的层创建查询矩阵,并从编码器堆栈的输出中获取键和值矩阵。

The Final Linear and Softmax Layer

解码器堆栈输出一个浮点数向量。我们怎么把它变成一个词?这是最后一个线性层的工作,然后是一个Softmax层。

线性层是一个简单的全连接神经网络,它将解码器堆栈产生的向量投影成一个更大的向量,称为logits向量。

假设我们的模型知道从训练数据集中学习到的1万个唯一的英语单词(我们模型的输出词汇表)。这将使logits向量有10,000个单元格宽,每个单元格对应一个唯一单词的分数。这就是我们如何解释线性层之后的模型输出。

然后softmax层将这些分数转换为概率(所有分数都是正的,加起来都是1.0)。选择概率最高的单元格,并生成与之关联的单词作为此时间步骤的输出。
这个图从底部开始,产生的矢量作为解码器堆栈的输出。然后将其转换为输出字

Recap Of Training

既然我们已经介绍了经过训练的Transformer的整个前向传递过程,那么了解一下训练模型的直觉将会很有用。

在训练期间,未经训练的模型将经历完全相同的向前传递。但由于我们是在一个标记的训练数据集上训练它,我们可以将它的输出与实际的正确输出进行比较。

为了可视化这一点,假设我们的输出词汇表只包含六个单词(a、am、i、thanks、student和(句子结束的缩写))。
在这里插入图片描述
一旦定义了输出词汇表,就可以使用相同宽度的向量来表示词汇表中的每个单词。这也被称为 one-hot 编码。例如,我们可以用下面的向量表示单词am

在这里插入图片描述
在这个概述之后,让我们讨论模型的损失函数——我们在训练阶段优化的度量,以得到一个训练好的、希望非常准确的模型。

The Loss Function

假设我们正在训练我们的模型。假设这是我们训练阶段的第一步,我们正在用一个简单的例子来训练它,把“merci” 翻译成 “thanks” 。

这意味着,我们希望输出是一个表示单词thanks的概率分布。但是由于这个模型还没有经过训练,这种情况还不太可能发生。
由于模型参数(权重)都是随机初始化的,因此(未受训的)模型为每个单元格/单词产生具有任意值的概率分布。我们可以将其与实际输出进行比较,然后使用反向传播调整所有模型的权重,使输出更接近所需的输出
如何比较两个概率分布?我们简单地用一个减去另一个。要了解更多细节,请查看交叉熵和 Kullback–Leibler divergence。

但请注意,这是一个过于简化的例子。更现实地说,我们将使用一个多于一个单词的句子。例如输入:我是一名学生,期望输出:我是一名学生。这真正的意思是,我们希望我们的模型连续输出概率分布,其中:

  1. 每个概率分布都由一个宽度词汇大小的向量表示(在我们的示例中是6,但更现实的数字是30,000或50,000)。
  2. 第一个概率分布在与单词i相关的单元格上的概率最高
  3. 第二个概率分布在与单词am相关的单元格上的概率最高
  4. 以此类推,直到第五个输出分布表示符号,它也有一个与它相关联的来自10,000个元素词汇表的单元格。

我们训练模型的目标概率分布在一个样本句子的训练样例中
在足够大的数据集上训练模型足够长的时间后,我们希望生成的概率分布看起来像这样
希望经过训练,模型能输出我们期望的正确翻译。当然,如果这个短语是训练数据集的一部分,它并没有真正的指示(参见:交叉验证)。请注意,每个位置都有一点概率,即使它不太可能是那个时间步长的输出——这是softmax的一个非常有用的特性,它有助于训练过程
现在,由于模型一次产生一个输出,我们可以假设模型从该概率分布中选择概率最高的单词,然后扔掉其余的。这是一种方法(称为贪婪解码)。另一种方法是抓住,比如说,前两个单词(例如‘I’ 和 ‘a’),然后在下一步中,运行模型两次:一次假设第一个输出位置是单词 ‘I’ ,另一次假设第一个输出位置是单词“a”,考虑到保留位置#1和#2,哪个版本产生更少的错误。我们对#2和#3等位置重复此操作。这种方法被称为“beam search”,在我们的示例中,beam_size是两个(意味着在任何时候,两个部分假设(未完成的翻译)都保存在内存中),top_beams也是两个(意味着我们将返回两个翻译)。这些都是你可以尝试的超参数。

Reference

https://jalammar.github.io/illustrated-transformer/

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

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

相关文章

计算机专业大学四年应该如何规划(Java方向)

计算机专业的学生,如何在大学四年内提高自己的竞争力,毕业之后直接进大厂工作? 以下将从大学四年计算机专业的学习规划、课程设置、能力提升、参考书籍等方面,为同学们提供一些建议和指导。 大一: 主攻技能学习并且达…

Excel中使用ROW函数自动更新行号或编号

操作步骤: 1、在编号“1”的单元格输入公式“ROW()-1”; 2、在上一步填好公式的单元格基础上下拉填充,即可批量得到编号,如果删掉其中的一行或几行,编号会自动进行更新。

nginx 日志,压缩,https功能介绍

一, 自定义访问日志 (一)日志位置存放 1,格式 2, 级别 level: debug, info, notice, warn, error, crit, alert, emerg 3,示例 服务机定义 错误日志存放位置 客户机错误访问 查看错误日志 4&#xff…

[云原生] k8s之pod容器

一、pod的相关知识 1.1 Pod基础概念 Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理…

虚拟机安装+固定ip地址

一、下载CentOS 二、安装CentOS 1、打开你的VMware Workstation Pro,并点击“创建新的虚拟机” 2、点选典型(推荐)(T),并点击“下一步” 3、点选稍后安装操作系统(S),并点击“下一步” 4、点选Linux,并点击“下一步” 6、点击“…

【探索AI】十一 深度学习之第1周:深度学习概述与基础

深度学习概述与基础 深度学习的发展历史与现状神经网络的基本原理前向传播与反向传播算法常见的激活函数与优化算法深度学习框架(如TensorFlow或PyTorch)进行基础操作 深度学习的发展历史与现状 深度学习的发展历史可以追溯到上世纪40年代,当…

java上机编程题面试,记一次美团Java研发岗的面试经历

第一篇:SpringBoot面试篇 1.1 35常见SpringBoot知识点 问题一:Spring Boot、Spring MVC 和 Spring 有什么区别? 问题二:什么是自动配置? 问题三:什么是 Spring Boot Stater ? 问题四&#x…

uniapp生成app包引导用户开启通知权限和热更新

uniapp生成app包引导用户开启通知权限和热更新 引导用户开启通知权限 export function setPermissions() {// #ifdef APP-PLUS if (plus.os.name Android) {var main plus.android.runtimeMainActivity();var pkName main.getPackageName();var uid main.getApplicationI…

数据库JSON类型到映射JAVA上

Mysql存放JSON数据如何映射JAVA实体类 概述:最近写在写SKU模块中,需要表中字段存放JSON类型数据,mybatis-plus在查询的时候如何跟JSON类型所匹配呢?再次记录一下。 直接上代码,后面有解释到底如何映射上的。 Mysql表…

java 商机管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 商机管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

跨越边界:Compose Multiplatform 跨平台开发的未来之路

跨越边界:Compose Multiplatform 跨平台开发的未来之路 1. 引言 在移动应用和软件开发领域,跨平台开发一直是一个备受关注的话题。随着移动设备多样化和用户需求的不断增长,开发者们迫切需要一种在多个平台上共享代码的解决方案。Jetpack C…

深入浅出JVM(十七)之并发垃圾收集器CMS

上篇文章介绍用户线程与GC线程并发执行时可能产生的问题以及使用三色标记法演示原始快照和增量更新两种解决方案 这篇文章将主要介绍并发垃圾收集器中的CMS,其中CMS使用增量更新来解决对象消失问题,如果不了解增量更新的同学可以查看上篇文章深入浅出JV…

oracle with check option 学习

with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果; 你插入,那么插入这条记录在刷新视图后必须可以看到; 如果修改,修改完的结果也必须能通过该视图看到; scott登录了以后创…

day04_拦截器Apifox角色管理(登录校验,API接口文档,权限管理说明,角色管理,添加角色,修改角色,删除角色)

文章目录 1. 登录校验1.1 需求说明1.2 实现思路1.3 ThreadLocal1.4 AuthContextUtil1.5 拦截器使用1.5.1 拦截器开发1.5.2 拦截器注册 1.6 代码优化1.6.1 配置优化1.6.2 代码优化1.6.3 前端修改 2. API接口文档2.1 Apifox接口管理平台2.1.1 接口管理平台简介2.1.2 Apifox简介2.…

minGW-64-win使用

本文适用于win7 win10。 下载 官网下载地址:MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64/mingw-w64-release at SourceForge.net 不过我下了exe安装版报错,如下图,所以最后选择了zip方式。 zip版本解压 配置环境变量 ;C…

自定义el-dialog的样式

实现效果: 样式代码如下:(可以写在common.scss文件夹中) .el-dialog__header {padding: 16px 20px;border-bottom: 1px solid #DCDFE6;display: flex;align-items: center;.el-dialog__title {font-size: 16px;position: relativ…

Flask基础学习4

19-【实战】问答平台项目结构搭建_剪_哔哩哔哩_bilibili 参考如上大佬的视频教程&#xff0c;本博客仅当学习笔记&#xff0c;侵权请联系删除 问答发布的web前端页面实现 register.html {% extends base.html %}{% block head %}<link rel"stylesheet" href&qu…

C++ 反向迭代器的设计与实现

在本文开始之前&#xff0c;先明晰几个 关键词 的含义&#xff08;T : 模板参数&#xff09;&#xff1a; Ref : T& / const T&Ptr : T* / const T* 一、反向迭代器设计的上帝视角 我们希望将 反向迭代器 设计成一种适配器——传 list::iterator 得到 list 的反向迭代…

批量剪辑利器:轻松调整视频画面尺寸,打造专业级视听体验!

在数字时代&#xff0c;视频已成为我们生活中不可或缺的一部分。无论是制作个人Vlog、企业宣传片&#xff0c;还是进行专业的影视剪辑&#xff0c;调整视频画面的高度和宽度都是至关重要的一步。然而&#xff0c;面对大量视频文件&#xff0c;如何快速、高效地调整画面尺寸呢&a…

第四十六回 扑天雕两修生死书 宋公明一打祝家庄- Python使用闭包来将单个方法的类转换成函数

原来那人是鬼脸儿杜兴&#xff0c;在蓟州受过杨雄的恩&#xff0c;目前在扑天雕李应家里做主管。杨雄和石秀去拜见李应&#xff0c;李应写了封信&#xff0c;派了副主管送去祝家庄请求放了石迁。结果人家不答应。 李应又派了杜兴去&#xff0c;杜兴被羞辱而回。李应亲自带着人…