transformer架构的理解

news2024/11/16 3:36:57

一、transformer 架构

如上图所示,transformer(形状像变压器?或者翻译成变形金刚,由不同模块拼装而成)的架构左边是n个结构体相同的编码器(例如,原论文是6个编码器的串联),右边是n个结构相同的解码器原(原论文是6个解码器的串联)。

编码器有多头注意力机制模块和前馈网络两部分组成;解码器是由掩码的多头注意力、多头注意力、前馈网络三部分组成,编码器的输出作为解码器输入的一部分。

----------------------------------------

以下来源于该文。

在Transformer模型中,编码器(Encoder)和解码器(Decoder)各自有独立的输入。通常,在有监督学习的场景下,编码器负责处理输入样本,而解码器处理与之对应的标签。这些标签在进入解码器之前同样需要经过适当的预处理。这样的设置允许模型在特定任务上进行有针对性的训练。

通过一个简单的机器翻译任务来说明这个概念。假设有以下的英语到法语的翻译对:
  • 英语(输入样本): "Hello, world"
  • 法语(标签): "Bonjour, monde"

在这个示例中,编码器(Encoder)会接收"Hello, world"这个句子作为输入。这个句子首先会被转换成一组词向量或者字符向量,然后进入编码器进行处理。
与此同时,解码器(Decoder)会接收与"Bonjour, monde"对应的标签作为输入。同样地,这些标签首先会被转换成一种机器可理解的表示(比如词向量或字符向量),然后进入解码器。
编码器处理完输入样本后,它的输出会与解码器的输入进行某种形式的结合,以生成最终的翻译输出。通过这个机制,模型可以在有监督的学习环境中进行训练,以完成特定的任务,如机器翻译。

如何理解Encoder(编码器部分)

Transformer中的编码器部分,作用是学习输入序列的表示,位置如下图所示:​​​​​​​​​​​​​​ 

 

-----

作者:木羽Cheney
链接:https://www.zhihu.com/question/445556653/answer/3197136641
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 如何理解Encoder(编码器部分)

在Transformer模型的编码器(红色虚线框)部分,数据处理流程如下:

首先,输入数据(比如一段文字)会被送入注意力(Attention)机制进行处理,这里会给数据里的每一个元素(比如每一个字或词)打个分数,以决定哪些更重要,在"注意力机制"(Attention)这个步骤之后,会有一些新的数据生成。

接着,一个“Add”操作会被执行,在注意力机制"中产生的新数据会和最开始输入的原始数据合在一起,这个合并其实就是简单的加法。"Add"表示残差连接,这一操作的主要目的是确保数据经过注意力处理后的效果至少不逊于直接输入的原始数据。

随后,数据会经过一个简单的数学处理,叫做“层归一化”(Norm),主要是为了让数据更稳定,便于后续处理。之后,数据将进入一个双层的前馈神经网络。这里的目标是将经过注意力处理的数据映射回其原始的维度,以便于后续处理。这是因为编码器会被多次堆叠,所以需要确保数据的维度在进入下一个编码器前是一致的。简单来说:就是把经过前面所有处理的数据变回原来的形状和大小。

注意看图中编码器左侧的Nx标识,意味着会有多个编码器堆叠。

最后,为了准备数据进入下一个编码器(如果有的话),数据会再次经过“Add”和“Norm”操作,输出一个经过精细计算和重构的词向量表示。

这样的设计确保了模型在多个编码器层之间能够有效地传递和处理信息,同时也为更复杂的计算和解码阶段做好了准备。简单来说,Transformer的编码器就是通过这些步骤来理解和处理输入的数据,然后输出一种新的,更容易理解的数据形式。如图:

 

1.3 如何理解Decoder(解码器部分)

Transformer中的解码器部分,作用是用于生成输出序列,位置如下图所示:

作者:木羽Cheney
链接:https://www.zhihu.com/question/445556653/answer/3197136641
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

在Transformer模型的解码器(紫色虚线框)部分,数据处理流程如下:

在Decoder部分,数据首先进入一个带遮罩(masked)的注意力(Attention)机制,这个遮罩的作用是确保解码器只能关注到它之前已经生成的词,而不能看到未来的词。

然后,这一层输出的信息会与来自Encoder部分的输出进行融合。具体来说,这两部分的信息会再次经历一个注意力机制的处理,从而综合考虑编码与解码的内容。

这个过程之后,解码器的操作与编码器部分大致相同。数据会经过层归一化、前馈神经网络,再次进行层归一化,最终输出一个词向量表示。输出的词向量首先会通过一个线性层(Linear)。这一步的目的是将向量映射到预先定义的词典大小,从而准备进行词预测。

最后,使用softmax函数计算每个词的生成概率。最终,选取概率最高的词作为该时刻的输出。

现在假设有一个很小的词典,只有3个词:“apple”,“banana”,“ cherry”。线性层会将这个3维向量转换成另一个3维向量(对应“词典”大小)。
假设转换后的向量是 [2.5, 1.0, -0.5]
通过softmax函数,这个向量会转换为概率分布,比如 [0.8, 0.18, 0.02]
这就意味着模型认为下一个词是“apple”的概率是80%,是“banana”的概率是18%,是“cherry”的概率是2%。
这样,就能从解码器的高维输出中预测出一个实际的词语了。

这样,Decoder不仅考虑了之前解码生成的词,还综合了Encoder的上下文信息,从而更准确地预测下一个词。

 

------------
作者:木羽Cheney
链接:https://www.zhihu.com/question/445556653/answer/3197136641
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、注意力机制

q是输入的信息,k,v成组出现,通常是源语言、原始文本等已有的信息,通过计算q与v之间的相关性,得出不同的k对输出的重要程度,再与对应的v相乘求和,就得到了q的输出。

来源于什么是 Attention(注意力机制)?【知多少】_哔哩哔哩_bilibili

注意力机制,就是权重,跟query的内容接近的Vlaue权重就高。

以下视频截图来源于:

注意力机制的本质|Self-Attention|Transformer|QKV矩阵_哔哩哔哩_bilibili

 一维的情况:注意力机制涉及三个向量,q,k,v

例如:腰围(key)与体重(value)形成一个键值对的映射关系,我们要查询(query,请求)腰围是57kg对应的体重。

q(57)与k中56,58的相关性最大,故56和58的权重相比51就会更大,

 二维的情况:

当qkv三个向量都相同,就是self-attention(自注意力)

只关注输入徐磊元素间的关系,将输入转换成qkv,然后进行计算你,捕捉文本的内在联系。

 

multi-head  attention ( 多头注意力机制),在自注意力的基础上,使用多种变换生成的Q、K、v进行运算,再将相关性的结论综合起来,进一步增强self-attention的效果。

还可以参考这个视频。

【Transformer模型】曼妙动画轻松学,形象比喻贼好记_哔哩哔哩_bilibili

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

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

相关文章

第6章 python深度学习—第6章(波斯美女)

第6章 深度学习用于文本和序列 6.1 处理文本数据 与其他所有神经网络一样,深度学习模型不会接收原始文本作为输入,它只能处理数值张量。 文本向量化(vectorize)是指将文本转换为数值张量的过程。它有多种实现方法。 将文本分割…

迪文串口屏文本显示的使用

一、使用背景 由于迪文屏的数据变量显示功能不能显示字母类等字符,比如屏幕上要显示期日时间格式为2024-1-27 11:22:20,则不适合用数据变量显示,此时可以使用文本显示功能。 二、实现过程 1、首先查看迪文屏的使用手册DGUSII 应用开发指南…

两个近期的计算机领域国际学术会议(软件工程、计算机安全):欢迎投稿

近期,受邀担任两个国际学术会议的Special session共同主席及程序委员会成员(TPC member),欢迎广大学界同行踊跃投稿,分享最新研究成果。期待这个夏天能够在夏威夷檀香山或者加利福尼亚圣荷西与各位学者深入交流。 SERA…

【投稿优惠|EI优质会议】2024年材料化学与清洁能源国际学术会议(IACMCCE 2024)

【投稿优惠|优质会议】2024年材料化学与清洁能源国际学术会议(IACMCCE 2024) 2024 International Conference Environmental Engineering and Mechatronics Integration(ICEEMI 2024) 一、【会议简介】 随着全球能源需求的不断增长,清洁能源的研究与应用成为了国际…

【leetcode题解C++】144. 94. 145.二叉树前序、中序、后序遍历 and 102.二叉树的层序遍历

144. 二叉树前序遍历 给出一个根节点,返回前中后序遍历的结果的。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[]示例 3: 输入:root…

vue3 npm i 一直卡到不动

一. 首先node 版本要18.0及以上 查看node版本并安装指定版本 二. 查看npm镜像源以及指定安装npm的镜像 三. 删除项目中的package-lock.json文件 最好是把node_modules安装包也删除掉,然后npm i 就可以了

js打地鼠

文章目录 1实现效果2代码实现 1实现效果 游戏难度:简单,一般,困难,噩梦(控制setInterval的time参数) 按钮功能:结束(可以通过修改gameScore的值来修改判定结束的分数)&am…

python-自动化篇-办公-excel-实例应用(一维转二维)

文章目录 准备代码效果 准备 放根目录 代码 import openpyxl wbopenpyxl.load_workbook(业绩表.xlsx) if not 二维表 in wb.sheetnames:nwswb.create_sheet(二维表)wswb.worksheets[0]rngslist(ws.values)[1:]mmlist({m.value: for m in ws[b][1:]})namelist({m.value: for …

语义分割(3):损失函数解析

文章目录 1. 常见语义分割损失1.1 Cross Entropy1.2 dice Loss1.2.1 为什么使用Dice loss1.2.2 公式1.2.3 Dice loss 和 F1-score代码 1.3 focal loss1.3.1 公式:1.3.2 代码 2. 语义分割损失应用参考 语义分割任务实际上是一种像素层面上的分类,需要识别…

NPDP认证:产品经理的国际专业认证

你是否想证明自己在产品开发与管理方面的专业能力?NPDP认证正是你需要的!🔥 NPDP认证,即产品经理国际资格认证,由美国产品开发与管理协会(PDMA)所发起,是全球公认的新产品开发专业认…

Vulnhub靶机:FunBox 8

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox 8(10.0.2.38) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/funb…

第3章-python深度学习——(波斯美女)

第3章 神经网络入门 本章包括以下内容: 神经网络的核心组件 Keras 简介 建立深度学习工作站 使用神经网络解决基本的分类问题与回归问题 本章的目的是让你开始用神经网络来解决实际问题。你将进一步巩固在第 2 章第一个示例中学到的知识,还会将学到的…

Go 知识for-range

Go 知识for-range 1. for-range 的用法1.1 数组1.2 切片1.3 字符串1.4 map1.5 chan 2. 原理2.1 数组2.2 切片2.3 字符串2.4 map2.5 chan 3. 总结 https://a18792721831.github.io/ 1. for-range 的用法 for-range 表达式用于遍历集合元素,比传统的for更加简单直观…

TF_REPEATED_DATA ignoring data with redundant timestamp for frame

一、问题描述 在进行gazebo 小车仿真时终端会出现TF_REPEATED_DATA ignoring data with redundant timestamp for frame,且在未施加数据的情况下,Rviz中模型车轮有微小移动 其原因是: right_wheel_link与left_wheel_link的TF变换有两个发布者:/gazebo …

jsp原理与EL,JSTL表达式基础内容整理

2024年了,vue都到了灌篮高手的版本,真的没想到我还会在这个时间整理一篇关于jsp页面操作的文章。技术就是一个不用就忘的东西,既然工作中还有用武之地,那就整理一下以备不时之需。 长话短说,不展开叙述,只记…

一键搭建《幻兽帕鲁》服务器

幻兽帕鲁越来越火,官方服务器不堪重负,不少玩家有搭建幻兽帕鲁私服的想法,但又碍于对计算机知识的匮乏而不敢动手,现在它来了,马云家的云服务器一键搭建幻兽帕鲁服务器,一站式解决!!…

C# 设置一个定时器函数

C#中,创建设置一个定时器,能够定时中断执行特定操作,可以用于发送心跳、正计时和倒计时等。 本文对C#的定时器简单封装一下,哎,以方便定时器的创建。 定义 using Timer System.Timers.Timer;class SetTimer {Timer …

智慧文旅:提升旅游体验与推动经济发展的新动力

一、智慧文旅的定义与意义 智慧文旅,即智慧文化旅游,是一种以当地特色文化元素为核心驱动,利用现代科技手段实现旅游景区全面智慧升级的旅游模式。其意义在于为游客提供高效便捷的旅游信息化服务,提升旅游体验,同时推…

谷粒商城【成神路】-【1】——项目搭建

目录 🥞1.整体架构图 🍕2.微服务划分图 🍔3.开发环境 🍔4.搭建git 🌭5.快速搭建服务 🍿6.数据库搭建 🧂7.获取脚手架 🥓8.代码生成器 🍳9.创建公共模块 …

【Vue】1-1、webpack的基本使用

一、什么是 Webpack 概念: webpack 是前端项目工程化的具体解决方案。 主要功能: 它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性能化等强大的功能。 好处: 让程序员把工作重心放到具…