news 2026/6/15 17:41:03

transformer(下)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
transformer(下)

接下来是decoder

decoder其实有两种,接下来介绍的是autoregressive的decoder

以语音辨识为例子,机器收到一段声音讯号作为输入到encoder,此时输出就是一排vector,接下来就是decoder的运作,产生语音辨识的结果

首先先给他一段特殊的符号,代表开始,接下来decoder会吐出一个向量,这个向量和我们要识别的单位是一样的,以中文为例子,这个输出向量的size就是我们中文汉字的长度,不同语言输出的单位是不一样的,比如英文可以选择字母的长度(26个),也可以选择用英文单词,这个可能会比较多,每一个中文的字都会对应一个数值,得到向量之前会和做分类一样跑一个softmax,这个向量里面的分数是一个distribution,也就是他们的分数相加的结果是1,分数最高的中文字就是最终的输出,如下图

接下来第一个输出的向量结果这个汉字会当作decoder新的一个输入,表示成一个one-hot vector当作输入,根据两个输入得到一个输出,还是根据这个输出向量对于每一个字的分数,分数最高的那一个输出,接下来继续拿第二个输出当作第三个输入,这样反复下去,因为decoder自己的输出就是自己的输入,所以也可能看到错误的结果也有可能引发后续的一步错步步错,如下图

看一下decoder的内部结构,看一下transformer里面的,如下图

先把encoder和decoder放在一起比较,如下图

把中间的decoder盖起来,会发现encoder和decoder并没有那么大的差别,有一点区别就是这里的multi-head attention里面也加了一个masked,如下图

我们原来的self-attention每一个输出都需要看所有的输入来综合判断,如下图

但是变成masked之后,我们不会再看右边的输入来输出,即b1考虑a1,b2考虑a1,a2, b3考虑a1,a2,a3, b4考虑a1,a2,a3,a4,如下图

更具体一点就是在计算b2的时候,我们只能a2的query和a1以及a2的key去计算,如下图

那么为什么masked呢?

因为我们decoder的输入是一个一个的,输出也是一个一个的都是顺序的,和self-attention一次性输入输出不一样的,如下图

接下来,还有一个关键的问题,decoder必须自己决定自己输出的长度,如何才能正确的知道输出的长度,如下图

推文接龙,一个人说一个字,然后继续接,当有一个人冒险去推一个“断”的时候才会停下来,如下图

decoder要做的事情也是一样,要去推一个“断”,我们也要准备一个特殊的符号去作为一个断的符号,如下图

当decoder产生完机器学习的习之后就会自动产生end来暂停,如下图

接下来说一下non-autoregressive的model即NAT

不一样的是一次产生整个句子,比如一次投入四个begin,然后产生四个output,这四个output就是一个句子,一种可能的做法是告诉机器一个数字,然后机器根据这个数字产生相对应长度的句子,另一个做法是假设我们这次输出的句子不会超过三百个字,那么我们就一次性产生一个三百个字的句子,然后看这个句子里面哪个会产生end,end右侧的句子我们全部都不算输出,全部忽略

NAT的好处第一个是平行化,如果是AT,那么要做好多次的encoder,但是NAT一次就可以,所以时间上更快,另外一个好处就是比较能够控制他的输出的长度,以语音辨识为例子,那么NAT的decoder假设我们要想让model讲话快一点,那么我们可以把长度变成一半,如下图

可以看一下multi-modality

接下来说一下decoder和encoder是如何穿句子的,即我们刚才遮起来的,叫做cross attention,如下图

首先,encoder根据输入得到三个输出,然后decoder根据begin经过masked self-attention得到一个向量,然后把这个输出的向量乘一个矩阵做一个transform得到一个query,encoder都产生key,把query和k1,k2,k3相乘的到向量,a1',a2',a3',接下来,把a1',a2',a3'乘上v1,v2,v3,再相加得到v,这个v接下来会丢到fully-connected network,这个步骤就叫做cross attention,如下图

当然产生第一个中文字之后,接下里的运作是一样的,如下图

下面是一个实际文献的效果图,如下图

这个encoder和decoder都有很多层,原始paper里面无论那一层,都是encoder最后输出才是进入decoder,但其实不一定非要最后一层,这个可以去研究,如下图

最后,讲解训练的事情

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:12:50

ops-cv计算机视觉算子库深度解读

ops-cv计算机视觉算子库深度解读:AIGC视觉任务的加速引擎 本文基于CANN开源社区的ops-cv仓库进行技术解读 CANN组织链接:https://atomgit.com/cann仓库链接:https://atomgit.com/cann/ops-cv 前言 随着AIGC(生成式人工智能&am…

作者头像 李华
网站建设 2026/6/15 14:18:53

计算机毕业设计springboot动物园管理系统 基于SpringBoot的野生动物园智慧服务平台设计与实现 SpringBoot框架下的城市动物园数字化运营系统开发

计算机毕业设计springboot动物园管理系统7ij5fe16 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着城市公共服务数字化转型的深入推进,传统动物园面临着信息孤岛…

作者头像 李华
网站建设 2026/6/15 14:10:28

【期货量化策略】期货量化交易策略统计套利(Python量化)

一、前言 统计套利是基于统计模型的套利策略,通过寻找价格关系的统计规律进行套利。本文将介绍统计套利的实现方法。 本文将介绍: 统计套利基本原理协整分析配对交易多品种统计套利风险控制 二、为什么选择天勤量化(TqSdk) T…

作者头像 李华
网站建设 2026/5/21 7:15:00

智慧光能追踪辅助系统

智慧光能追踪辅助系统的设计与实现 第一章 设计背景与核心目标 太阳能作为清洁可再生能源,在能源转型中占据重要地位,但传统光伏组件多采用固定安装方式,仅能在特定时段捕获直射光,光能利用率不足30%,且受昼夜交替、季…

作者头像 李华
网站建设 2026/6/15 15:17:06

智慧城市交通系统的设计与实现

智慧城市交通系统的设计与实现 第一章 设计背景与核心目标 城市化进程加速导致交通流量激增,传统交通系统存在信号配时僵化、信息互通不畅、管控缺乏精准性等问题,引发拥堵加剧、出行效率低、环境污染等连锁反应。智慧城市交通系统依托物联网、大数据、…

作者头像 李华
网站建设 2026/6/15 14:41:48

【开题答辩全过程】以 基于springboot与vue的工业塑粉系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华