Transformer简略了解

Transformer出自论文:《Attention Is All You Need》
该论文的提出,对RNN循环神经网络产生了冲击,席卷了自然语言处理(NLP)领域,后续的GPT4.0版本也是根据其进行训练优化的

一、Transformer主体架构

在这里插入图片描述
可以简化分为Encoders和Decoders,之所以是复数,其主要是由于N个所决定的,论文N的取值为6,每个Encoder结构都是一样的;同理每个Decoder也是相同的结构。但Encoder和Decoder结构大相径庭了

简化流程:输入 —> Encoders(6个Encoder) —> Decoders(6个Decoder) —> 输出
在这里插入图片描述

Ⅰ、Encoders

在这里插入图片描述
Encoders由N个Encoder所组成,其中N在论文中取值为6

Ⅱ、Decoders

在这里插入图片描述
Decoders由N个Decoder所组成,其中N在论文中取值为6

二、Encoder

单挑出一个Encoder进行分析,其主要可分为三部分:
①输入部分、②注意力机制、③前馈神经网络

在这里插入图片描述
在这里插入图片描述

Ⅰ,输入部分

在这里插入图片描述
输入部分主要包括:EmbeddingPositional Encoding位置编码
在这里插入图片描述

RNN中翻译:家驹
RNN结构中,是需要接收前面的数据之后再进行学习,先传入的学习是依据为基准进行的,需要考虑到前面的数据
而在Transformer中,多头注意力机制是可以并行处理数据的,是一并输入的,并不需要考虑之前的汉字之间的前后关系,故需要Positional Encoding位置编码告诉模型哪个字在前哪个字在后

例如:创建一个维度为512的词向量

1.Embedding

以翻译为例:把每个对应的字对应生成不同维度的向量,从而生成一个向量表,方便后续学习,共计512维度

2.Positional Encoding位置编码

论文中给出的位置编码公式:在这里插入图片描述
其中pos表示单词或字的位置;2i代表偶数,2i+1代表奇数
在偶数的位置使用sin,在奇数位置使用cos
在这里插入图片描述

将Embedding得到的512维度和Positional Encoding得到的512维度信息进行相加,得到一个最终的512维度信息,作为整个Transformer的输入
在这里插入图片描述
问:为什么位置嵌入是有用的?
答:正余弦函数,对于同一个Position,不同的函数可以得到一个绝对的位置信息

在这里插入图片描述
但,这种相对位置信息会在注意力机制那里消失

Ⅱ、注意力机制

在这里插入图片描述

1.基本的注意力机制

i)注意力机制的本质

带着问题看图片:婴儿在干嘛?
在这里插入图片描述
颜色深的地方为人们的主要关注的地方
那么如何将关注的区域和这句话进行相互关联,这就是注意力机制所要解决的问题

论文中给出的注意力机制公式:在这里插入图片描述
其中Q,K,V为三个矩阵,通过softmax进行归一化,得到一个相似度向量,然后再乘以V矩阵,最终得到一个加权的和

首先拿到一张图片,将图片进行上下左右四分割,并生成四个Key
在这里插入图片描述在这里插入图片描述
公式中的Q:Query这里传入的是婴儿
K为这里对于生成的Key1Key2Key3Key4
V为Key1-Key4所对应的某种值向量,Value1Value2Value3Value4

点乘:一个向量在另一个向量上投影的长度,是一个标量,可以反应两个向量的相似度。即两个向量点乘结果越大,两个向量越相似

Transformer中原理过程:
婴儿分别与Key1-Key4进行点乘操作,看哪个结果最大,表明越关注哪块区域
例如:婴儿Key3点乘结果最大,表明更关注右上区域
之后在与V矩阵相乘,得到最终的加权和Attention Value

ii)获取Q、K、V矩阵

在这里插入图片描述
以X1为例,X2也类似:在这里插入图片描述
得到Q、K、V之后带入公式即可
实际代码使用的是矩阵,方便并行运算
在这里插入图片描述
多头注意力机制主要是因为参数有多套,得到的Q、K、V也有多套
多头相当于把原始数据信息映射到不同的空间
在这里插入图片描述
例如将原始信息进行映射到两个空间
在这里插入图片描述
将映射到不同空间最终的输出信息进行合并,乘以一个矩阵即得到一个多头注意力机制的输出
在这里插入图片描述

2.残差和LayNorm

i)残差

X作为输入,经过两层网络,这两层网络统一归为函数F(X)
输入参数X通过两层网络得到输出F(X)
残差:将输入X原封不动的与得到的输出F(X)进行对位相加,得到最终的输出
在这里插入图片描述
梯度消失一般情况下是因为连乘的原因,连乘的过程中出现了较小的数,导致越乘越小,从而产生梯度消失
而在残差网络中,通过反向传播链式法则可以看到,因为1的出现导致无论多小的数,确保梯度不为零,从而有效克服了梯度消失的出现,这也是NLP中使用了残差网络就可以使得网络层数更深的原因
在这里插入图片描述在这里插入图片描述

ii)Layer Normalization

Batch Normalization效果差,所以不用
在NLP中,BN使用的很少,一般都是以LN

①Batch Normalization背景

其核心是Feature Scaling,主要是为了让模型收敛的更快
BN重点在于:针对整个Batch中的样本在统一维度特征下进行处理
BN的过程使用的是:整个batch中的样本的均值和方差来模拟全部数据的均值和方差
在这里插入图片描述

②Batch Normalization的优缺点

优点:
1,可以解决内部协变量偏移
2,可以缓解梯度饱和问题

缺点:
1,当batch_size较小的时候,BN效果较差
因为BN是整个batch中的样本的均值和方差来模拟全部数据的均值和方差;若batch_size较小的情况下,就很难代表全部数据
2,在RNN中效果较差
因为RNN的输入是动态的;若有10个样本,其中9个样本长度为5个单词,1个样本长度为10个单词;在输入的时候,前5个单词可以使用10个样本进行计算均值和方差;但,第6个单词到第10个单词,均值和方差就尴尬了,因为只有1个样本有第6到第10个单词,若只用这一个样板进行计算,又变成了缺点1,batch_size小,不能够得到整个batch_size下的均值和方差
在这里插入图片描述

③为什么使用Layer-norm

为什么LayerNorm单独对一个样本的所有单词做缩放可以起到效果?
在这里插入图片描述
因此BN在NLP中是存在问题的!

BN在处理NLP任务中,会将当成同一个语义信息及性能处理,这边出现了问题
在这里插入图片描述
LN则将整个样本进行处理,每个样本都是在同一个语义信息当中的,所以LN是可以理解的
在这里插入图片描述

Ⅲ、前馈神经网络

在这里插入图片描述

Ⅳ、总结

在这里插入图片描述
首先,Inputs输入,得到一个Input Embedding,然后与Positional Encoding位置嵌入进行对位相加,作为整体的输入
得到多头注意力机制,通过残差结构,与多头注意力机制进行相加,得到残差结构的结果,在进行LN得到最终的注意力机制模块的输出结果
然后进行两层Feed Forward全连接,输出结果保持不变,通过残差结构进行相加,然后通过LN得到最终的输出结果

三、Decoder

Decoder和Encoder类似,均由N个完全相同的大模块堆叠构成,论文中N为6
在这里插入图片描述

Ⅰ,Masked Multi-Head Attention掩膜多头注意力机制

在这里插入图片描述
对输入的单词进行mask掩膜操作

mask的作用

正常情况下的机器翻译
在这里插入图片描述

若Decoder中没有mask,和Encoder一模一样的多头注意力机制话;若到生成find的时,所有的单词都会为生成find进行提供相应的语义信息;但模型在预测的时候,find之后的信息是不知道,没有find someone like you这些信息的,模型是看不见未来的单词的,此时就需要mask掉find someone like you这些信息
模型训练find的时候看到了find someone like you未来信息,但是预测的时候是看不到未来信息的,故需要进行mask操作
在这里插入图片描述
此时需要mask掉find someone like you
在这里插入图片描述

Ⅱ,交互层

在这里插入图片描述
这里是Multi-Head Attention,没有mask

在这里插入图片描述
Encoder生成的是K、V矩阵
Decoder生成的是Q矩阵
多头注意力机制由K、V、Q三个矩阵

在这里插入图片描述
在这里插入图片描述

视频学习来源:Transformer从零详细解读(可能是你见过最通俗易懂的讲解)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

绿色能源、引领未来-2024武汉国际氢能源及燃料电池产业展览会

绿色能源、引领未来-2024武汉国际氢能源及燃料电池产业展览会 2024武汉国际氢能源及燃料电池产业博览会 2024 Wuhan International Hydrogen Energy and Fuel Cell Industry Expo 同期举办:2024世界汽车制造技术暨智能装备博览会 时间:2024.8.14-16 …

Vue: 多个el-select不能重复选择相同属性

一、场景 1.需求&#xff1a; 用户可自由选择需要修改的对象并同时修改多个属性&#xff0c;需要校验修改对象不能重复选择&#xff0c;但是可供修改属性是固定的 2.目标效果&#xff1a; 二、实现 1.主要代码&#xff1a; <template><el-selectv-model"se…

uniapp中组件库丰富的Switch 开关选择器使用方法

目录 #平台差异说明 #基础使用 #加载中 #禁用switch #自定义尺寸 #自定义颜色 #自定义样式 #异步控制 API #Switch Props #Switch Event 选择开关用于在打开和关闭状态之间进行切换。 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff0…

全国计算机等级考试| 二级Python | 真题及解析(10)

一、选择题 1.要实现将实数型变量a的值保留三位小数,以下python可以实现的是( ) A.a%0.001 B.a//0.001 C.round(a,3) D.round(3,a) 2.在Python中要交换变量a和b中的值,应使用的语句组是( )。 A…

[足式机器人]Part2 Dr. CAN学习笔记-Ch01自动控制原理

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch01自动控制原理 1. 开环系统与闭环系统Open/Closed Loop System1.1 EG1: 烧水与控温水壶1.2 EG2: 蓄水与最终水位1.3 闭环控制系统 2. 稳定性分析Stability2.1 序言2.2 稳定的分类2.3 稳定的对…

ssm基于echarts的基金交易网站的设计与实现论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

Dockerfile + harbor详解

Dockerfileharbor私服 一 docker工作流 1. docker管理流程 2. 镜像仓库阿里 (1) 阿里私有仓库 公司内部管理项目涉及到的所有docker镜像&#xff0c;会使用私有仓库的方式&#xff0c;集中管理。 (2) 创建阿里Docker仓库 登录阿里云创建私有仓库 网址&#xff1a;容器镜像服…

Shell脚本学习笔记

1. 写在前面 工作中&#xff0c;需要用到写一些shell脚本去完成一些简单的重复性工作&#xff0c; 于是就想系统的学习下shell脚本的相关知识&#xff0c; 本篇文章是学习shell脚本整理的学习笔记&#xff0c;内容参考主要来自C语言中文网&#xff0c; 学习过程中&#xff0c;…

MySQL 存储引擎和索引类型介绍

1. 引言 MySQL 是一个流行的关系型数据库管理系统&#xff0c;提供多种存储引擎以满足不同的业务需求。本文将介绍几种常见的 MySQL 存储引擎和索引类型比较&#xff0c;并给出相应的示例。 2. 存储引擎概述 2.1 InnoDB 存储引擎 InnoDB 是 MySQL 的默认存储引擎&#xff0…

基于spring boot物流管理系统设计与实现

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1 课题背景及意…

FreeRTOS——互斥信号量知识总结及其实战

1互斥信号量的概念 1&#xff09;互斥信号量&#xff1a;是一个拥有优先级继承的二值信号量&#xff0c;在同步的应用中二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中&#xff01; 2&#xff09;优先级继承&#xff1a;当一个互斥信号量正在被一个低优先级的…

LeetCode 每日一题 Day 32 ||递归单调栈

2487. 从链表中移除节点 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [5,2,13,3,8] 输出&#xff1a;[13,8] 解释&#xff1a;需要移除的节点是 5 &#xff0c;2 和 3 。…

你的网站或许不需要前端构建(二)

前一阵&#xff0c;有朋友问我&#xff0c;能否在不进行前端编译构建的情况下&#xff0c;用现代语法开发网站界面。 于是&#xff0c;就有了这篇文章中提到的方案。 写在前面 这篇文章&#xff0c;依旧不想讨论构建或不构建&#xff0c;哪一种方案对开发更友好&#xff0c;…

手机视频监控客户端APP如何实现跨安卓、苹果和windows平台,并满足不同人的使用习惯

目 录 一、手机视频监控客户端的应用和发展 二、手机视频监控客户端存在的问题 三、HTML5视频监控客户端在手机上实现的方案 &#xff08;一&#xff09;HTML5及其优点 &#xff08;二&#xff09;HTML5在手机上实现视频应用功能的优势 四、手机HTML5…

Python使用selenium自动爬取苏宁易购商品数据

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境介绍: python 3.8 pycharm 专业版 selenium 谷歌浏览器 浏览器驱动 selenium: 人是怎么操作浏览器的 那么代码就怎么写 代码思路 开启一个浏览器 (谷歌…

2024年需要关注的主要AI趋势

文 | BFT机器人 在2023年的时候&#xff0c;很少一部分专家预测人工智能将对IT、业务和整个世界产生影响。在2024年的伊始&#xff0c;是时候期待新的一年以及关注了解一下2024年AI进步的趋势了。 大模型助力人工智能 2024年的AI趋势将是ChatGPT等大型语言模型&#xff08;LLM…

每日算法打卡:递归实现组合型枚举 day 4

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析示例代码优化 原题链接 93. 递归实现组合型枚举 题目难度&#xff1a;简单 题目来源&#xff1a;《算法竞赛进阶指南》 题目描述 从 1∼n 这 n 个整数中随机选出 m 个…

前端项目打包并部署

一、vue项目打包 1.1 方式一&#xff1a;vue项目命令行打包 在当前项目路径下&#xff0c;执行命令 npm run build 在当前项目路径下&#xff0c;生成 一个dist文件夹。 将来部署项目&#xff0c;是部署的dist这个文件。 1.2 方式二&#xff1a;使用vue ui打包项目 在终端中…

离线部署的MinIO

网络有不同的部分&#xff0c;例如 DMZ、公共、私有、堡垒等。这实际上取决于您的组织和网络要求。在部署应用程序时&#xff0c;任何应用程序&#xff0c;我们都需要考虑类型以及它是否需要位于网络的特定部分。 例如&#xff0c;如果要部署数据库&#xff0c;则不希望它位于…

Hubery-个人项目经历记录

研究生期间很有幸的进入到了崔老师的组&#xff0c;从此也就进入到了分析人体生理信号的领域&#xff0c;充满挑战的同时也充满了乐趣。借着CSDN整理一下近几年来参与的项目&#xff0c;这里蕴含着我各种美好的回忆&#xff0c;也作为一个展示自己的平台吧。 开始之前&#xff…