Transformer——decoder

news2024/11/18 2:41:31

上一篇文章,我们介绍了encoder,这篇文章我们将要介绍decoder
Transformer-encoder

decoder结构:

在这里插入图片描述

如果看过上一篇文章的同学,肯定对decoder的结构不陌生,从上面框中可以明显的看出:

  • 每个Decoder Block有两个Multi-Head Attention层

  • 第一个Multi-Head Attention层采用了Masked操作,所以叫多头掩码注意力模块

  • 第二个Multi-Head Attention就是和encoder的一样,不过他的K、V矩阵输入源来自Encoder的输出编码矩阵,而Q矩阵是由多头掩码注意力层,经过Add &Norm层之后的输出计算来的

  • Add &Norm,和前面encoder的一样

  • feed forward,它包含一个全连接层,对输入特征进行非线性变换,并产生输出。在训练过程中,Feed Forward会根据损失函数的梯度进行参数更新,以优化模型的性能。他的输入层参数和Embedding的维度一样。

  • Linear,是一种简单的神经网络组件,通常用于处理线性可分的问题。它包含一个全连接层和一个激活函数,对输入进行线性变换,并产生输出。与Feed Forward不同,Linear在训练过程中不会根据损失函数的梯度进行参数更新,因为它的输出取决于输入的线性组合。Linear的长度,实际上就是你词向量的种类数量。

  • softMax,把linear的输出做分类概率运算,算出每种词向量的概率。

这里我们详细说一下多头掩码注意力模块,其他的和encoder中都一样,就不详细介绍了。

Masked Multi-Head Attention

在下面第9点介绍多头掩码注意力
在介绍之前,我们先来说一下transformer的训练过程,网上搜了很多,没有找到谁具体讲过,所以我就借助“文心一言”来进行了询问,大概了解了这个过程,但是不能保证正确,如果有知道同学看到了,欢迎给我留言。

  1. 先有encoder的输入“你好吗”(也就是问题)和decoder的输入“好的很”(也就是答案)。

  2. 把encoder的输入“你好吗”输入encoder中,把“你好吗“转化为Embedding,然后对Embedding添加position信息,decoder也同理

  3. 把添加了pos的Em,做成6组QKV,那么总共就是18个QKV,然后每组都送入一个注意力模块,总共有6组注意力模块,这6组就称为多头注意力模块,然后把这6组的输出经过一个conact和Linear(具体可以看上一篇文章)合并后输出,这个输出就是注意力矩阵。

  4. 把注意力矩阵经过残差链接和归一化后,放入一个Feed Forward中后再使用一次残差链接和归一化,encoder的输出就有了。

  5. 接下来我们看decoder的输入,在transformer的训练中,我们使用的是Teacher Forcing方法,我们是告诉了transformer正确的答案是什么的,也就是“好得很”。

  6. 首先decoder会把encoder的输入做成QK,然后放入一个多头注意力模块中,接下来一直到Linear的操作,和encoder的一样。

  7. decoder中的Linear输入的方法和encoder的一样,可以参考上篇文章最后,不过linear的输出,最后是使用了softmax做分类器。从下图可以看出,Linear的输出,是和你的词向量类别有关,假设你的词向量类别有1w个,那么这里就会输出1w的类别,如下图在这里插入图片描述然后使用softMax对着些输出做概率计算,就可以算出概率最大的词向量是哪个,softMax的计算,可以参考我的BP神经网络,大概方式类似于下面在这里插入图片描述

  8. 假如现在经过softMax的运算后,最大概率的字是"好",那么就把这个字和标准答案中的"好得很"对比一下,如果不是"好"字,那么就使用梯度下降法,反向去更新两个Feed forward和所有的QKV,更新完后回到decoder输入。

  9. 接下来把标准答案中的“好”直接输入到decoder的输入,下面是带有掩码的多头注意力在这里插入图片描述
    经过EM+pos,还有QKV后,我们把他输入了多头掩码注意力模块,这里为什么要加个掩码呢?掩码又是什么呢?我们看下面这张图在这里插入图片描述
    我们需要把"好"字加入到”你好吗”的后面,但是我们又不能让多头注意到“好”字后面“得很”,所以我们就需要把后面的字给遮起来,这个就是掩码。经过softMax的变化,可以看到下图在这里插入图片描述
    比如“好”字,后面的“得很”,都是0,说明好字只和前面的内容有关系,则接下来就是“好”字的[0.37,0.62,0,0]作为多头掩码的输出,也可以抽象的看成,是把“好”拼在了“你好吗”的后面,但是其实是“你好吗”作为QK,"好"作为V。

  10. 接下来就和上面的3一样,一直到softMax做出预测,如果是预测的不是“尼”,就反向更新梯度下降,如果是“尼”,则把“好尼”送入多头掩码中,然后把“好尼”拼在“你好吗”的后面。一直循环到softMax预测到结束标志。

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

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

相关文章

84基于matlab的数字图像处理

基于matlab的数字图像处理,数据可更换自己的,程序已调通,可直接运行。 84matlab数字图像处理图像增强 (xiaohongshu.com)https://www.xiaohongshu.com/explore/656219d80000000032034dea

微机原理_4

一、单项选择题(本大题共 15 小题,每小题 3 分,共 45 分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 1在产品研制的过程中,通常采用( )类型的存储芯片来存放待调试的…

发布鸿蒙的第一个java应用

1.下载和安装华为自己的app开发软件DevEco Studio HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 2.打开IDE新建工程(当前用的IDEA 3.1.1 Release) 选择第一个,其他的默认只能用(API9)版本,搞了半天才发现8&#xff…

Linux加强篇006-存储结构与管理硬盘

目录 前言 1. 从“/”开始 2. 物理设备命名规则 3. 文件系统与数据资料 4. 挂载硬件设备 5. 添加硬盘设备 6. 添加交换分区 7. 磁盘容量配额 8. VDO虚拟数据优化 9. 软硬方式链接 前言 悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非…

WPF绘图技术介绍

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 WPF绘图基本用法绘制直线在XAML中绘制直线在C#代码中绘制直线使用Path绘制直线注意 矩形绘制在XAML中绘制矩形在C#代码中绘制矩形设置矩形的位…

2.1 总线问题

同一时间只能有一个去控制总线,因此需要一个输出开关去确保总线不出错 一旦同时开启输出开关,下面的锁存器还会被上面的数据修改如果上下同时开启可写,且同时开启可输出, 则短路

前端vue3——html2canvas给网站截图生成宣传海报

文章目录 ⭐前言⭐选择html2canvas实现网页截图💖 截图 ⭐图片url截图显示不出来问题💖 解决 ⭐最终效果💖 定义海报 ⭐总结⭐结束 ⭐前言 大家好,我是yma16,本文分享关于 前端vue3——html2canvas给网站截图生成宣传…

什么是无监督学习

1 概况 1.1 定义 无监督学习(Unsupervised Learning)是机器学习的一种类型,它涉及从未标记的数据中发现隐藏的模式。与监督学习不同,无监督学习的数据没有显式的标签或已知的结果变量。其核心目的是探索数据的内在结构和关系。无…

OSG粒子系统与阴影-自定义粒子系统示例<2>(5)

自定义粒子系统示例(二) 目前自定义粒子的方法有很多,在OSG 中使用的是 Billboard 技术与色彩融合技术。色彩融合是一种高级的渲染技术,如果读者有兴趣,可参看 OSG 粒子系统实现的源代码。这里采用简单的布告牌技术(osg::Billboard)与动画来实…

在 STM32 上实现温度补偿和校正

本文介绍了如何在 STM32 微控制器上实现温度补偿和校正,以提高温度传感器的测量精度。首先,我们将简要介绍温度补偿和校正的原理和目的。然后,我们将详细讨论在 STM32 上实现温度补偿和校正的步骤和方法。同时,提供了一个简单的示…

K8s 中 Pod OOMKilled 原因

目录 Exit Code 137 解决方案 JVM 感知 cgroup 限制 使用 JDK9 的容器感知机制尝试 问题分析 容器内部感知 CGroup 资源限制 在 Java10 中,改进了容器集成 JVM 参数 MaxDirectMemorySize -XX:MaxDirectMemorySize 的默认值是什么? 其他获取 ma…

AI先行者第四辑:AI落地铁路的快与慢

人工智能的模型不能解决所有的问题,它可能只能做到80%,剩下10%、20%都是靠你对项目的理解,一点点做针对性的优化。 本篇作者顾子晨,中国铁道科学研究院集团有限公司基础设施检测 研究所 高级工程师|AICA首席AI架构师培…

[蓝桥杯训练]———高精度乘法、除法

高精度乘法、除法 一、高精度乘法⭐1.1 初步理解1.1.1 高精度的定义1.1.2 为什么会有高精度1.1.3 高精度乘法的复杂度 1.2 思想讲解1.3 代码实现1.3.1 声明1.3.2 实现高精度乘法1.3.3 整体实现1.3.4 代码测试 二、高精度除法⭐2.1 初步理解2.2 思想讲解2.3 代码实现2.3.1 声明2…

ubuntu20.04配置OpenCV的C++环境

ubuntu20.04配置OpenCV的C环境 这里以opencv-3.4.16为例 复现https://github.com/raulmur/ORB_SLAM2此项目,需安装opencv及其他依赖,可见README.md详情 1.下载opencv源代码 https://opencv.org/releases/ 2.下载OpenCV的扩展包opencv_contrib&#x…

免杀原理(php)

免杀原理 0x01 前言 何为免杀,免杀就是一种逃脱杀毒软件查杀的方法,免杀的目的就是绕过“墙”,去执行危险的操作。那么如何绕过这堵“墙”,就是免杀的本质。有句俗话说得好“知己知彼,百战不殆”,想要用好…

【Vulnhub靶机】Jarbas--Jenkins

文章目录 信息收集主机发现端口扫描目录爆破 漏洞探测whatwebhash-identifierwhatweb 文档说明:https://www.vulnhub.com/entry/jarbas-1,232/ 靶机下载:Download (Mirror): 信息收集 主机发现 扫描C段 sudo nmap -sn 10.9.75.0/24端口扫描 sudo nma…

通过视频文件地址截取图像生成图片保存为封面图

安装 RPM Fusion 软件库 FFmpeg并不包含在 CentOS 官方软件库中,需要使用第三方软件库安装。可以使用 RPM Fusion 软件库来获取 FFmpeg。 首先,使用以下命令安装 RPM Fusion 软件库: sudo yum install epel-release -y sudo rpm -Uvh https…

BTC 复兴:Ordinals 带来创新活力,BitVM 与 BitStream 相继问世

除了备受瞩目的 ETF,今年 Bitcoin 生态迎来全新的发展活力和机遇。Ordinals 协议的横空出世,以此为基础诞生的 BRC20 协议给整个比特币生态带去了一波新的能量,迎来铭文热度高涨。而诸如 BitVM、BitStream 等新技术甫一问世,便引发…

vulnhub6

靶机地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova 准备工作 可以先安装 kali 的字典: sudo apt install seclists ​ 或者直接输入 seclists​,系统会问你是否安装,输入 y 即可自动安装 733 x 3751414 x 723 ​ 默认路…

引用、动态内存分配、函数、结构体

引用 定义和初始化 **数据类型 &引用名 目标名;**引用和目标共用同一片空间(相当于对一片空间取别名)。 引用的底层实现:数据类型 * const p; ------> 常指针 int const *p; -----> 修饰 *p const int *p; ----->…