Transformer之Residuals Decoder

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.mzph.cn/news/710365.shtml

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

相关文章

基于视觉识别的自动采摘机器人设计与实现

一、前言 1.1 项目介绍 【1】项目功能介绍 随着科技的进步和农业现代化的发展,农业生产效率与质量的提升成为重要的研究对象。其中,果蔬采摘环节在很大程度上影响着整个产业链的效益。传统的手工采摘方式不仅劳动强度大、效率低下,而且在劳…

图像处理基础——频域、时域

傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。 一、什么是频域 时域 时域是信号在时间轴随时间变化的总体概括;频域是把时域波形的表达式做傅立叶等变化得到复频域的表达式,所画出的波形就是频谱图&a…

Docker技术概论(8):Docker Desktop原生图形化管理

Docker技术概论(8) Docker 原生图形化管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:…

字节序转换函数

目录 为什么要字节序转换?网络协议指定通讯字节序为大端字节序转换函数主机字节序转换为网络字节序hton1 (host to network l是length指长整型)htons (host to network s是short指短整型)两个函数的代码案例 网络字节序转主机字节序ntoh1ntohs 为什么要字节序转换&a…

【报名指南】2024年第九届数维杯数学建模挑战赛报名全流程图解

1.官方报名链接: 2024年第九届数维杯大学生数学建模挑战赛http://www.nmmcm.org.cn/match_detail/32 2.报名流程(电脑与手机报名操作流程一致) 参赛对象为在校专科生、本科生、研究生,每组参赛人数为1-3人(指导老师不…

【MySQL】数据查询——DQL基本数据库查询

目录 查询语法1. 查询表中所有的数据行和列,采用“*”符号2. 查询表中指定列的数据。3. 在查询中使用别名,使用“AS”关键字。4. 在查询中使用常量列:如果需要将一些常量的默认信息添加到输出结果中,以方便统计或计算。可以使用常…

Unity 预制体与变体

预制体作用: 更改预制体,则更改全部的以预制体复制出的模型。 生成预制体: 当你建立好了一个模型,从层级拖动到项目中即可生成预制体。 预制体复制模型: 将项目中的预制体拖动到层级中即可复制。或者选择物体复制粘贴。…

Jenkins自动化部署之流水线模式部署

文章目录 任务类型Pipeline流水线项目声明式的Pipeline脚本式Pipeline 示例脚本生成Tools配置示例 高级Pipeline Script from SCM 任务类型 在Jenkins中,有不同类型的任务(项目)适用于不同的构建需求。以下是一些常见的Jenkins任务类型&…

MYSQL03高级_新增用户、授予权限、授权底层表结构、角色理解

文章目录 ①. 登录服务器操作②. 用户的增删改③. 修改用户密码④. MySQL8密码管理⑤. 权限列表及原则⑥. 授予查看回收权限⑦. 底层权限表操作⑧. 角色的理解 ①. 登录服务器操作 ①. 启动MySQL服务后,可以通过mysql命令来登录MySQL服务器,命令如下: mysql –h hostname|hos…

32单片机基础:TIM输出比较

这个输出比较功能是非常重要的,它主要是用来输出PWM波形,PWM波形又是驱动电机的必要条件,所以你如果想用STM32做一些有电机的项目,比如智能车,机器人等。 IC: Input Capture 输入捕获 CC:Capture/Compare一般表示输入捕获和输出…

【学习心得】浏览器开发者工具中出现的VM开头的JS文件是什么?

一、现象描述 在Chrome的开发者工具中,你可能会看到一些以“VM”开头的JavaScript文件(如“VM111.js”)。 二、VM文件到底是什么? “VM”表示的是Virtual Machine(虚拟机),这些文件通常表示由浏…

网站文章被百度快速收录的工具

百度是中国最主要的搜索引擎之一,对于网站管理员来说,网站文章被百度快速收录是至关重要的,因为这直接影响着文章的曝光和网站的流量。然而,许多网站管理员都会问一个常见的问题:文章百度收录需要几天?在这…

C语言基础17 判断

断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。 下面是…

MYSQL01高级_Linux版安装、各级别字符集、字符集与比较规则、SQL大小写规范

文章目录 ①. MySQL - linux版安装②. 字符集的相关操作③. 各级别的字符集④. 字符集与比较规则(了解)⑤. SQL大小写规范⑥. sql_mode的合理设置 ①. MySQL - linux版安装 ①. 进入mysql官网,找到安装文件 ②. 将抽取出来的文件放在linux下的opt下 MySQL Community Serv…

WebSocket介绍与应用

介绍 WebSocket 是基于TCP的一种的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接WebSocket是长连接…

Vue3 + MybatisPlus实现批量删除功能

目录 一、后端 1.1 编写后端接口 1.2 编写service和其实现类 二、前端 2.1 组件加多选样式 2.2 实现多选调用的方法 2.3 编写批量删除的按钮 2.4 执行批量删除请求代码 一、后端 1.1 编写后端接口 PostMapping("/batchDelete") public CommonResult<Boo…

Python中简单正则获取百度新闻页面所有超链接示例

一、示例代码&#xff1a; import re import requestsheaders {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/""85.0.4183.83 Safari/537.36"} resp requests.get(http://news.…

自动化构建平台(三)Linux搭建私有的docker镜像库之Harbor的安装和使用详解

文章目录 前言一、Harbor的安装第一步&#xff1a;安装docker第二步&#xff1a;安装docker-compose第三步&#xff1a;安装Harbor 二、Harbor登录三、Harbor项目管理第一步&#xff1a;创建项目第二步&#xff1a;推送镜像 四、Harbor权限控制五、Harbor自动清理多余的镜像手动…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+图像缩放,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI纯verilog图像缩放视频拼接应用本方案的SDI HLS图像缩放视频拼接应用本方案的SDI视频编码动态字符叠加输出应用本方案的SDI视频编码多路视频融合视频叠加应用FPGA的SDI…

Python实现向量自回归移动平均模型(VARMA算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 向量自回归移动平均模型&#xff08;Vector Autoregressive Moving Average, VARMA&#xff09;是一种…