Transformer模型-7- Decoder

概述

image.png

Decoder也是N=6层堆叠的结构,每层被分3层: 两个注意力层和前馈网络层,同Encoder一样在主层后都加有Add&Norm,负责残差连接和归一化操作。

Encoder与Decoder有三大主要的不同

  1. 第一层 Masked Multi-Head Attention: 采用Masked操作
  2. 第二层 Multi-Head Attention: K, V矩阵是使用Encoder编码信息矩阵C进行计算,而Q使用上一个Decoder的输出计算。
  3. 概率计算输出: Linear和Softmax作用于前向网络层的输出后面,来预测对应的word的probabilities

Encoder的输入矩阵用X表示,输出矩阵用C表示

流程图表示如下:

Positional Encoding特征值Output Embedding带掩码的多头注意力层多头注意力层前馈网络层Add&NormLinearSoftmaxOutputProbilities

分析如下:

  1. 我们将 输入转换为嵌入矩阵,再加上位置编码,输入解码器
  2. 解码器收到输入,将其发送给带掩码的多头注意力层,生成注意力矩阵M
  3. 将注意力矩阵M和Encoder输出的特征值R作为多头注意力层的输入,输出第二层注意力矩阵
  4. 从第二层的多头注意力层得到注意力矩阵,送入前馈网络层,后者将解码后的特征作为输出
  5. 前馈网络层的输出经过Add&Norm后,做linear及Softmax回归,并输出目标句子的特征

Decoder 的输入

Decoder的输入结构与encoder的一样。

见Transformer模型-4-Inputs-笔记

Masked Multi-Head Attention

输入组成


由如下几个部分组成

1.初始输入:前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding
3.中间输入:Encoder Embedding
4.Shifted Right:在输出前添加 起始符(Begin),方便预测第一个Token

Shifted Right是在起始位添加起始符(Begin),让整个输入向后移一位,是为了在T-1时刻需要预测T时刻的输出。

举例: I like eat hamburg

正常的输出序列位置关系如下:

1  0"I"
2  1"like"
3  2"eat"
4  3: "hamburg"

在执行的过程中,我们在初始输出中添加了起始符,相当于将输出整体右移一位(Shifted Right),所以输出序列如下:

1  0</s> #起始符
2  1"I"
3  2"like"
4  3"eat"
5  4"hamburg"

这样我们就可以通过起始符预测“I”,也就是通过起始符预测实际的第一个输出。

具体步骤

Time Step 1

  • 初始输入: 起始符 + Positional Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder: 产生预测I

Time Step 2

  • 初始输入:起始符 + I + Positonal Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测like

Time Step 3

  • 初始输入:起始符 + I + like + Positonal Encoding
  • 中间输入:(我爱吃汉堡) Encoder Embedding
  • Decoder:产生预测eat

Time Step 4

  • 初始输入:起始符 + I + like + eat + Positonal Encoding
  • 中间输入:(我爱吃汉堡) Encoder Embedding
  • Decoder:产生预测hamburg

Masked


主要用途

  1. 引入类对焦矩阵,实现并行解码加速整个训练过程;
  2. 在生成attention时保存信息不泄露(没有生成不该生成的数据)

Masked的工作方式: 以"I like eat hamburg"说明

  1. Masked Multi-Head Attention层:在生成I时不能看到Like、eat、hambugers更不能生成他们之间的相关度信息,解码时只能看到自己或<起始符>,后面的信息都隐掉,即masked

image.png

上图表示:输入矩阵 + Mask = Mask矩阵

图中黑色框表示被Mask的部分

  1. Multi-Head Attention则是把Encoder信息与Decoder信息进行整合

image.png

并行化处理-原因分析

早在Seq2Seq模型采用的是逐步Decoder,在Encoder时一次性输入全部数据,生成第一个字时,会先结合 <起始符> ,再生成;然后用生成第二个字符时 由第一个字符再结合起始符达成,以此类推,整个过程是串行化的过程

而在大规模的模型训练过程中,解决效率的的关键就是把串行计算改为计算(并行解码) ,即一次性输入,一次性解码。当一次性将信息全部输入,模型一次计算可能会计算所有数据。但并行会影响到结果输出 —— 因为计算时如数据全可见,会对预测会有影响,而加入了Masked是可以避免数据泄露的。我们输入时还是一次性输入全部数据,在Attention时追加一个Masked保证一个字符只能看到前一个字或起始符。

公式推导

1.得到Q,K,V: 输入数据:I like eat hamburg,进行三次线性变化,得到Q,K,V。

image.png

2.Masked计算:当Q∗K=QKTQK=QKT得到相当度信息后,再和Masked矩阵做按位相乘得到masked QKTQKT 。Masked保存此次解码只看到该看到的,隐去看不到的或不应该看到的。

image.png

3.得到Attention(Q,K,V)公式:拿到softmax(QKTdk)softmax(dkQKT) 结果后再和 V(value) 做一次 Attention计算得到Attention(Q,K,V)

image.png

公式:

Attention(Q,K,V)=softmax(QKTdk)∗V*A**tt**e**n**t**i**o**n*(*Q*,*K*,*V*)=*so**f**t**ma**x*(*d**k**Q**K**T*)∗*V*

Multi-Head Attention

也称 Cross Multi-Head Attention 即是结合Encoder与Encoder而得到的信息,获取整合的Attention(Q,K,V),其中数据获取来源分为:

Q: 由masked Multi-head Attention输出,再经过Add&Norm后得到的数据
K\V: 是Encoder输入出经过两次线性变化的而得数据,其中的3/4分给了Multi-Head Attention

最后 将所有的Q (Decoder端所有的 token) 去和encoder的输出的数据一起计算,来衡量他们之间的相关度,最后结合Value生成Attention。

Decoder -输出

transformer的output probabilities,从字面上我们即可理解transformer的输出token是由各个词的概率计算而得。

原理: 数据经过 (cross) multi-head Attention及线性变化之后,输出softmax,最后输出数据,输出则是每个位置上单词的概率分布

结构分析

在这里插入图片描述

用softmax预测输出单词


用Softmax来预测下一个单词,通过之前的各种操作后得到一个最终输出Z来预测单词:

image.png

又因为Mask,使得单词的输出Z0只包含<起始符>的信息,如下:

起止符这里用begin表示

image.png

先贴个图,后面随着笔者对其学习研究的加强会补充更多的内容,现在主要是想强调输出是由概率计算而得,加深印象。


如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓
请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉如何学习AI大模型?👈

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

请添加图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
请添加图片描述

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

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

相关文章

XXL-JOB 漏洞大全

一、前言 在当今的数字化时代&#xff0c;任务调度平台对于企业级应用来说至关重要。它们负责自动化和协调各种时间敏感或周期性的任务&#xff0c;确保业务流程的顺畅运行。XXL-JOB作为一款流行的分布式任务调度平台&#xff0c;因其强大的功能和易用性&#xff0c;被广泛部署…

MySQL篇(存储引擎)(持续更新迭代)

目录 一、简介 二、使用存储引擎 1. 建表时指定存储引擎 2. 查询当前数据库支持的存储引擎 三、三种常见存储引擎 1. InnoDB存储引擎 1.1. 简介 1.2. 特点 1.3. 文件格式 1.4. 逻辑存储结构 表空间 段 区 页 行 2. MyISAM存储引擎 2.1. 简介 2.2. 特点 2.3. …

Unity3D入门(二) :Unity3D实现视角的丝滑过渡切换

1. 前言 上篇文章&#xff0c;我们已经初步了解了Unity3D&#xff0c;并新建并运行起来了一个项目&#xff0c;使相机视角自动围绕着立方体旋转。 这篇文章&#xff0c;我们来讲一下Unity3D怎么过渡地切换视角。 我们继续是我上篇文章中的项目&#xff0c;但是需要向把Camera…

2024最新最全:网络安全人士【必备的30个安全工具】

1.Wireshark Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 2.Metasploit Meta…

学习笔记——Swin Transformer(ICCV 2021 best paper)

有关ViT的学习笔记详见&#xff1a;学习笔记——ViT(Vision Transformer)-CSDN博客 ViT在图像分类方面的结果令人鼓舞&#xff0c;但由于其低分辨率的特征映射和复杂度随图像大小的二次方增长&#xff0c;其架构不适合作为密集视觉任务或高分辨率输入图像的backbone。根据经验&…

如何模拟异常情况进行接口测试自动化?

接口测试是软件测试中的重要环节&#xff0c;尤其是在分布式系统和微服务架构中&#xff0c;接口的稳定性和正确性直接影响系统的整体性能。在实际应用中&#xff0c;除了要验证接口的功能性&#xff0c;还需要测试接口在各种异常情况下的表现&#xff0c;如网络异常、超时、接…

华为地图服务 - 如何在地图指定位置增加气泡?-- HarmonyOS自学19

场景介绍 本章节将向您介绍如何在地图的指定位置添加气泡。 您可以通过气泡在道路上指定位置显示测速、拥堵情况。气泡支持功能&#xff1a; 支持设置四个方向的图标&#xff08;传入的图标宽高需要相同&#xff09;。支持设置图标碰撞规则。支持设置当前气泡的候选坐标段&a…

二叉搜索树(附源码C++)

游凡/搜索二叉树https://gitee.com/you-fan-a/search-binary-tree 一、什么是二叉搜索树&#xff1f; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它根结点的值。若它的右子树不空&#xff0c;则右子树上所有结点的值均大于它根结点的值。它的左、右树又分为⼆…

Linux移植之系统烧写

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用&#xff0c;方便进一步记录自己的实践总结。 前面我们已经移植好了 uboot 和 linux kernle&#xff0c;制作好了根文件系统。但是我们移植都是通过网络来测试的&#xff0c;在实际的产品开发中…

Autosar Dcm开发-诊断2E或31服务实现pending功能

文章目录 前言Dcm规范功能实现总结前言 项目开发过程中,有需求在31服务(Routine)收到请求时,等待应用层反馈执行完后再进行响应。所以pending一段时间,本文介绍该功能的实现。 Dcm规范 以Routine为例,其服务包含以下返回状态 0:E_OK,服务成功执行 1:E_NOT_OK,服务…

【PythonCode】力扣Leetcode46~50题Python版

【PythonCode】力扣Leetcode46~50题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C…

数据仓库建模方法论 :维度模型

使用ER模式建立的数仓&#xff0c;优点是没有冗余的数据。缺点是&#xff1a;数仓是用于分析的&#xff0c;分析的数据量特别大&#xff0c;多个表需要join操作&#xff0c;运行的时候特别慢。 比如&#xff1a;统计哪一年&#xff0c;哪个国家的哪个品类卖的最好&#xff1f;…

如何实现一个流畅的滚动列表

如何实现一个流畅的滚动列表 在网页开发中&#xff0c;滚动列表是展示大量数据时常用的交互方式。通过结合CSS动画和视觉设计&#xff0c;我们可以让列表内容自动滚动&#xff0c;为用户提供顺畅的浏览体验。今天&#xff0c;我将带你一步步实现一个流畅、富有视觉吸引力的滚动…

地平线占用预测 FlashOcc 参考算法-V1.0

1.简介 3D Occupancy Networks 的基本思路是将三维空间划分成体素网格&#xff0c;并对每个网格进行各类感知任务的预测。目前以网格为中心的方法能够预测每个网格单元的占用率、语义类别、未来运动位移和实例信息。3D occupancy 可以对道路障碍物进行更细粒度的划分&#xff…

如何利用nw.js打包vue项目

引言 最近有一个开发windows桌面应用的需求, 需要将vue项目打包成.exe文件&#xff0c;最好是变成可安装版(非绿色版)。特此记录一下如何通过nw.js将vue项目打包成.exe。可能这种方式不是最优&#xff0c;仅供大家参考&#xff01; nw.js简介&#xff08;以下描述来自nw.js官…

如何估算 Transformer 模型中的参数数量

最有效的理解新机器学习架构&#xff08;以及任何新技术&#xff09;的方式是从零开始实现它。虽然这种方法非常复杂、耗时&#xff0c;并且有时几乎不可能做到&#xff0c;但它能帮助你深入理解每一个实现细节。例如&#xff0c;如果你没有相应的计算资源或数据&#xff0c;你…

AI宠物拟人化新玩法,教你如何用0成本打造爆款创意内容!

近年来&#xff0c;随着AI技术的快速发展&#xff0c;各种创新玩法不断涌现&#xff0c;尤其是在内容创作领域&#xff0c;AI带来的变革尤为显著。 **其中&#xff0c;宠物拟人化逐渐成为社交媒体上的一大热门话题。**通过AI生成工具&#xff0c;我们不仅可以将宠物拟人化&…

面试面经|大模型算法岗常见面试题100道

本文提供了一份全面的大模型算法岗位面试题清单&#xff0c;包括基础理论、模型结构、训练微调策略、应用框架、分布式训练和模型推理等方面的知识点&#xff0c;旨在帮助求职者准备相关技术面试。 一、基础篇 1、目前主流的开源模型体系有哪些&#xff1f; Transformer体系&a…

基于yolov8和openpose人体骨骼关键点实现的摔倒姿态识别检测系统实现

【参考源码】 GitHub - HRonaldo/Openpose_YOLO 本项目参考上面框架进行全面改进&#xff0c;改进如下&#xff1a; &#xff08;1&#xff09;将检测框架换成当前最流行框架yolov8&#xff0c;并封装成类实现模块化设计。关于yolov5优化项目可以访问&#xff1a;https://bl…

队列的各种接口的实现(C)

队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头 队列的实…