详细图文解读Transformer模型:《Attention is All You Need》完整版

目录

  • 前言
  • 1、Transformer模型《Attention is All You Need》总结
  • 2、Transformer整体结构
    • 2.1、工作流程
  • 3、Transformer的输入
  • 4、Self-Attention(自注意力机制)
    • 4.1、Self-Attention 结构
    • 4.2、Q, K, V计算
    • 4.3、Self-Attention 的输出
    • 4.4、Multi-Head Attention
  • 5.、Encoder 结构
    • 5.1、Add & Norm
    • 5.2、Feed Forward
    • 5.3、组成 Encoder
  • 6、Decoder 结构
    • 6.1、第一个 Multi-Head Attention
    • 6.2、第二个Multi-Head Attention
    • 6.3、Softmax预测输出单词
  • 7、 Transformer 总结

前言

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

1、Transformer模型《Attention is All You Need》总结

①提出和应用
Transformer模型,由Vaswani等人提出,已成为自然语言处理(NLP)领域的重要模型,尤其在机器翻译、文本生成等任务中表现出色。

②应用案例
i:Google Cloud TPU推荐的参考模型,提供基于TensorFlow和PyTorch的实现。
ii:哈佛NLP团队发布一个基于PyTorch的版本并对论文进行注释。本文尝试简化模型结构并逐步解释其核心概念,旨在帮助普通读者理解。

2、Transformer整体结构

①组成:由Encoder和Decoder两个部分组成,每部分包含6个相同block。
在这里插入图片描述

2.1、工作流程

在这里插入图片描述

①输入表示
首先将输入句子的每个单词转换成一个表示向量X,通过将单词Embedding(词向量)与位置Embedding相加得到。
在这里插入图片描述

②Encoder
将输入向量矩阵传入Encoder,经过6个Encoder block后,输出一个句子所有单词的编码信息矩阵C。
在这里插入图片描述

③Decoder
将Encoder的输出矩阵C传递给Decoder,Decoder根据已经翻译的单词来预测下一个单词。Decoder使用Mask操作来遮蔽掉当前单词之后的单词,确保模型仅使用先前的单词信息进行预测。
在这里插入图片描述

3、Transformer的输入

①总体:Transformer模型中的单词表示向量x是通过单词Embedding和位置Embedding相加得到的。
在这里插入图片描述

②单词Embedding:使用预训练的Word2Vec或GloVe等算法,也可在Transformer模型中进行训练。

③位置Embedding:由于Transformer不像RNN那样顺序处理数据,无法直接利用单词的顺序信息,位置Embedding被用来保存每个单词在句子中的相对或绝对位置。在论文中,使用了一个基于公式的计算方式来生成位置Embedding,具有良好的泛化能力,可以处理不同长度的句子。
在这里插入图片描述

4、Self-Attention(自注意力机制)

Self-Attention是Transformer模型的核心机制。其基本思想是通过计算每个单词与其他单词之间的关系,来更新每个单词的表示。具体步骤如下:
在这里插入图片描述

4.1、Self-Attention 结构

在这里插入图片描述
self-Attention 接收输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 输出。通过Self-Attention输入线性变换得到Q,K,V.

4.2、Q, K, V计算

Self-Attention使用输入矩阵X通过线性变换得到查询(Q)、键(K)、值(V)矩阵。
在这里插入图片描述

4.3、Self-Attention 的输出

得到矩阵 Q, K, V之后计算出 Self-Attention 的输出,计算的公式如下:
在这里插入图片描述
①说明:公式中计算矩阵Q和K每一行向量内积,为防止内积过大,因此除以 dk的平方根。
②过程
步骤i:Q乘以K转置后,输出矩阵行列数都为 n,n 为句子单词数,表示单词之间 attention 强度。
在这里插入图片描述
步骤ii :然后使用Softmax计算每一个单词对于其他单词的attention系数,公式中的Softmax是对矩阵的每一行进行 Softmax,即每一行和都变为 1.
在这里插入图片描述

步骤iii:得到Softmax矩阵之后和V相乘,最终输出Z。
在这里插入图片描述

步骤iv:上图中Softmax矩阵第1行表示单词1与其他所有单词的attention 系数,最终单词1的输出Zi等于所有单词 i 的值 Vi根据attention系数的比例总和
在这里插入图片描述

4.4、Multi-Head Attention

①已知通过 Self-Attention 计算输出矩阵 Z,Multi-Head Attention是由多个 Self-Attention组合形成的
在这里插入图片描述

②步骤i: Multi-Head Attention包含多个Self-Attention 层,首先将输入X分别传递到h个不同的Self-Attention中,计算 h 个输出矩阵Z
在这里插入图片描述

③步骤ii: 8 个输出矩阵后,Multi-Head Attention 将它们拼接在一起传入一个Linear层,得到Multi-Head Attention最终输出Z。Multi-Head Attention 输出的矩阵Z与其输入的矩阵X的维度是一样的。
在这里插入图片描述

5.、Encoder 结构

在这里插入图片描述
①组成:由 Multi-Head Attention, Add & Norm, Feed Forward, Add & Norm 组成。

5.1、Add & Norm

Add & Norm 层由Add和Norm两部分组成,计算公式如下:
在这里插入图片描述
①说明1:X表示Multi-Head Attention或者Feed Forward输入,MultiHeadAttention(X) 和 FeedForward(X) 表示输出。
Add指X+MultiHeadAttention(X)是一种残差连接,解决多层网络训练的问题,让网络只关注当前差异部分,在 ResNet 中经常用到:
在这里插入图片描述
说明2:Norm指Layer Normalization,用于RNN结构,Layer Normalization会将每一层神经元输入都转成均值方差都一样的,加快收敛。

5.2、Feed Forward

Feed Forward层是一个两层全连接层,第一层激活函数为Relu,第二层不使用激活函数。
X是输入,Feed Forward 最终得到的输出矩阵的维度与X一致。
在这里插入图片描述

5.3、组成 Encoder

通过多个 Encoder block 叠加组成 Encoder。第一个Encoder block 输入为句子单词的表示向量矩阵,后续 Encoder block 输入是前一个Encoder block 输出,最后一个 Encoder block 输出矩阵就是编码信息矩阵 C,后续会用到 Decoder 中。
在这里插入图片描述

6、Decoder 结构

Decoder block与Encoder一样,Decoder是由多个Decoder block组合而成
在这里插入图片描述

①组成:Transformer的Decoder block结构,与Encoder block相似,但是存在区别:
i:包含两个Multi-Head Attention层
ii:第一个Multi-Head Attention层采用Masked 操作
iii:第二个 Multi-Head Attention层的K, V矩阵使用Encoder编码信息矩阵C计算,而Q使用上一个 Decoder block输出计算。
iv:最后有一个Softmax层计算下一个翻译单词概率。

6.1、第一个 Multi-Head Attention

①:Decoder block第一个 Multi-Head Attention 采用Masked操作,过程如下
在这里插入图片描述
Decoder 在训练过程中使用 Teacher Forcing并且并行化训练,即将正确的单词序列 ( I have a cat) 和对应输出 (I have a cat ) 传递到 Decoder。那么在预测第 i 个输出时,就要将第 i+1 之后的单词掩盖住,注意 Mask操作是在 Self-Attention 的Softmax之前使用,下面用 0 1 2 3 4 5 分别表示 “ I have a cat ”。

步骤1:Decoder的输入矩阵和Mask矩阵,输入矩阵包含 “ I have a cat” (0, 1, 2, 3, 4) 五个单词表示向量,Mask 是一个5×5矩阵。在 Mask发现单词 0 只能使用单词 0 的信息,而单词1使用单词0, 1的信息,即只能使用之前信息
在这里插入图片描述
步骤2:输入矩阵X计算得到Q,K,V矩阵。然后计算Q和其对应乘积
在这里插入图片描述

步骤3:进行Softmax,计算attention score,在Softmax之前使用Mask矩阵遮挡住每一个单词之后信息,遮挡操作如下:
在这里插入图片描述
步骤4:使用 Mask后矩阵与矩阵V相乘,得到输出Z,则单词1输出向量
Z1是只包含单词 1 信息
在这里插入图片描述
步骤5:得到一个 Mask Self-Attention 输出矩阵Zi ,然后和 Encoder类似,通过Multi-Head Attention拼接多个输出Zi,然后计算得到第一个Multi-Head Attention 输出Z,Z与输入X维度一样。

6.2、第二个Multi-Head Attention

Decoder block 第二个Multi-Head Attention变化不大, 主要区别在于其中 Self-Attention 的 K, V矩阵不是使用上一个 Decoder block 输出计算,而是使用Encoder的编码信息矩阵C计算的。

6.3、Softmax预测输出单词

Decoder block最后部分是利用Softmax预测下一个单词,在之前网络层得到一个最终输出 Z,因为Mask存在,使得单词0输出Z0 只包含单词0 信息
在这里插入图片描述
Softmax根据输出矩阵每一行预测下一个单词
在这里插入图片描述

7、 Transformer 总结

①Transformer通过独特的Self-Attention机制解决传统RNN和CNN在处理长序列时的效率问题。其能够并行处理整个输入序列,并且能够有效捕捉长距离依赖关系,具有较强的表达能力和学习能力。
②通过Encoder和Decoder的交替堆叠,Transformer处理复杂的序列转换任务。模型的输入依赖于单词的Embedding和位置Embedding的结合,输出则通过多个自注意力层进行细致的计算,并最终通过Softmax预测每个词的概率。
③这种架构已经在多个NLP任务中取得显著成功,并且它的核心机制已被广泛应用于各种变体和其他领域,例如图像处理和多模态学习等。

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

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

相关文章

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态🐇一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计🦩1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

vue编写一个可拖动的模块,并可以和任何其他组件组合使用

实现思路&#xff1a; 使用 Vue 的自定义指令&#xff08;directive&#xff09;来处理拖动逻辑。在 mounted 钩子中添加鼠标事件监听器&#xff0c;以实现拖动功能。在 unmounted 钩子中移除鼠标事件监听器&#xff0c;防止内存泄漏。 代码示例&#xff1a; <template&g…

Ubuntu、Windows系统网络设置(ping通内外网)

一、 虚拟机VMware和Ubuntu系统的网络配置说明 1、虚拟机的网络适配器的模式有三种&#xff1a; 桥接模式NAT模式主机模式 2、虚拟机VMware的网卡配置(如何进行配置界面(虚拟机->设置)) 注意&#xff1a; 1、以上桥接模式(ubuntu有独立IP)、NAT模式(没有独立IP)都可以联…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

大模型之三十三- 开源Melo 语音合成

大模型之三十三- 开源Melo 语音合成 文本到语音(TTS)系统从基于基础音素的模型演变成复杂的端到端神经方法,这种方法可以直接将文本转换为语音。这一变革得益于深度学习的进步和计算能力的提升,已经在语音的自然度、韵律控制和跨语言能力方面取得了重大进展 。现代TTS系统…

C# OpenCV机器视觉:特征匹配 “灵魂伴侣”

在一个阳光仿佛被施了魔法&#xff0c;欢快得直蹦跶的早晨&#xff0c;阿强像个即将踏上神秘寻宝之旅的探险家&#xff0c;一屁股墩在实验室那张堆满各种奇奇怪怪小玩意儿的桌前。桌上&#xff0c;零件、线路、半成品设备乱成一团&#xff0c;唯有他那宝贝电脑屏幕散发着清冷又…

【SSH端口转发:实现安全的远程端口映射】

SSH端口转发&#xff1a;实现安全的远程端口映射 在网络应用开发和运维过程中&#xff0c;我们经常需要进行端口转发来实现各种网络访问需求。今天我要分享一个使用SSH进行端口转发的实用脚本&#xff0c;并详细讲解其工作原理。 脚本内容 免密 ssh-copy-id -p 20080 rootxx…

GPT-4o背后的语音技术

GPT-4o背后的语音技术 GPT-4o是一个any2any的多模态模型,能够接受文本、音频、图像、视频等多模态输入,也能够生成包含文本、语音、图像和视频等混合内容的多模态输出。本文主要谈语音多模态的实现,并分享一些对于语音研究未来发展的看法。 GPT-4o (“o” 代表 “omni”) …

简述mysql 主从复制原理及其工作过程,配置一主两从并验证

第一种基于binlog的主从同步 首先对主库进行配置&#xff1a; [rootopenEuler-1 ~]# vim /etc/my.cnf 启动服务 [rootopenEuler-1 ~]# systemctl enable --now mysqld 主库的配置 从库的配置 第一个从库 [rootopenEuler-1 ~]# vim /etc/my.cnf [rootopenEuler-1 ~]# sys…

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现&#xff0c;其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…

医院挂号就诊系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装医院挂号就诊系统软件来发挥其高效地信息处理的作用&#…

【GORM】初探gorm模型,字段标签与go案例

GORM是什么&#xff1f; GORM 是一个Go 语言 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它让我们可以使用结构体来操作数据库&#xff0c;而无需编写SQL 语句 GORM 模型与字段标签详解 在 GORM 中&#xff0c;模型是数据库表的抽象表示&#xff0c;字段标签&am…

R 语言科研绘图第 20 期 --- 箱线图-配对

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

YOLOv10-1.1部分代码阅读笔记-dataset.py

dataset.py ultralytics\data\dataset.py 目录 dataset.py 1.所需的库和模块 2.class YOLODataset(BaseDataset): 3.class ClassificationDataset(torchvision.datasets.ImageFolder): 4.def load_dataset_cache_file(path): 5.def save_dataset_cache_file(prefix,…

【物联网】ARM核介绍

文章目录 一、芯片产业链1. CPU核(1)ARM(2)MIPS(3)PowerPc(4)Intel(5)RISC-V 2. SOC芯片(1)主流厂家(2)产品解决方案 3. 产品 二、ARM核发展1. 不同架构的特点分析(1)VFP(2)Jazelle(3)Thumb(4)TrustZone(5)SIMD(6)NEON 三、ARM核(ARMv7)工作模式1. 权限级别(privilege level)2.…

uniApp开通uniPush1.0个推,SpringBoot集成uniPush1.0个推

uniApp开通unipush1.0个推&#xff0c;SpringBoot程序集成 一、APP开通unipush1.0个推(商户App源码仅支持1.0个推) 1.app模块配置开通推送 2.应用开通推送 3.开通后点击消息推送菜单会看到如下页面 完成以上步骤后 此时android 仅支持在线推送。 4.配置各厂商离线推送 暂未…

JS宏进阶: 工厂函数与构造函数

一、构造函数 在JavaScript中&#xff0c;构造函数是一种用于创建和初始化对象的特殊函数。构造函数的名字通常以大写字母开头&#xff0c;以区分于普通函数。通过new关键字调用构造函数&#xff0c;可以创建一个新的实例对象&#xff0c;并自动执行构造函数内部的代码来初始化…

03_UI自适应

因为Canvas大小是始终和屏幕一致的 所以设置Canvas的屏幕大小 通常设置为1920 * 1080 又因为屏幕的图像及按钮如果想适配各种显示屏需要锁定长或者宽&#xff0c; 之后利用钉子将其他图像利用创建空节点定在左右或者上下两侧 比如unity编辑器通常是锁定宽的&#xff0c;那我…

网络安全——常用语及linux系统

一、网络安全概念及法规 网络安全&#xff1a;网络空间安全 cyber security 信息系统&#xff1a;由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的已处理信息流为目的的人机一体化系统 信息系统安全三要素&#xff08;CIA&#xff09; 保密…

算法日记6.StarryCoding P52:我们都需要0(异或)

一、题目 二、题解&#xff1a; 1、对于这道题&#xff0c;题意为让我们寻找一个数x使得 b[i]a[i]^x&#xff0c; 并且b[1]^b[2]^b[3]^ b[4]^b[5]....0 2、我们把b[i]给拆开&#xff0c;可以得到 3、又因为^满足结合律&#xff0c;因此&#xff0c;可以把括号给拆开 4、接着…