Transformer模型的简单学习

前言

Transformer 来源于一篇论文:Attention is all you need

TRM在做一件什么事情呢?其实一开始它是被用于机器翻译的:

在这里插入图片描述

更详细的:

在这里插入图片描述

更详细的:

在这里插入图片描述

从上图可以看出,一个Encoders 下面包含了 n 个 Encoder,Decoders同理。

需要注意的是,这 n 个 Encoder 从结构上完全相同,n 个 Decoder 从结构上也是完全相同的,同时 Encoder 和 Decoder 的结构是不相同的。还要注意,虽然 Encoder 与 Encoder 之间结构相同,但并非是由一个 Encoder copy n 份得到的 Encoders,因为每个 Encoder 之间的参数并不相同。也就是在训练的时候并非只训练一个 Encoder,而是 n 个 Encoder 都在训练(Decoder同理)。

来看一下原论文中的图示:

在这里插入图片描述

可以看见 Nx 的意思就是有 N 个这样的结构,左边部分就是我们之前说的 Encoder,右边部分就是 Decoder。

接下来我们来详细解释一下这两个部分。

Encoder部分

位置编码

Encoder

在这里插入图片描述

可以看见一个 Encoder 可以被划分为三个部分,第一个部分是 输入部分,第二个部分是 注意力机制部分,第三个部分就是 前馈神经网络部分。

输入部分

输入部分又被分为两块内容:Embedding 和 位置嵌入。

Embedding 是 NLP 中的一个入门小知识点:

在这里插入图片描述

图示就是:

在这里插入图片描述

可以看到上面假设有 “我爱你…” 总共十二个字或单词,此时我们按字切分,每一个字都可以被映射成一个大小为 512 长度的连续向量空间中以供后续操作。

这个过程就是 Embedding。

那么为什么需要 位置嵌入(编码) 呢?

在这里插入图片描述

在上图的 RNN 时间线展开中,词与词之间的顺序可以由时间序列来显式地给出(因为一句话输入 RNN 中,它是一个单词一个单词的进行训练的),因此不需要位置编码,而在 TRM 中则是一下就能直接输入 N 个词,那么词与词之间的位置关系就需要记录,否则无法连词成句了,这就是为什么需要位置编码这一步操作的原因。

论文中的位置编码公式如下:

在这里插入图片描述

其中,pos 指的就是字的位置,2i 和 2i+1 指的是偶数和奇数,即 PE(pos, 2i) 指的就是偶数位置上的字,用 sin 来表示,那么 2i+1 就用 cos 来表示。

结合我们一开始举的例子,一个字被 Embedding 成一个 512 大小的向量,那么就有下图这样的解释:

在这里插入图片描述

得到位置编码之后,我们将位置编码 512 维度和 字 向量的 512 维度进行相加得到一个最终的 512 维度作为我们整个 TRM 的输入:

在这里插入图片描述

为什么位置嵌入会有用:

在这里插入图片描述

注意:这种相对位置信息会在注意力机制那里消失。

多头注意力机制

基本的注意力机制

先来看一张图:

在这里插入图片描述

不难感受到人类在观察东西的时候,有最关注的部分和不怎么关注的部分,上图中颜色越深就表示越受关注,颜色越浅表示不怎么关注。

进一步引申,把人(我们的视角)抽离出来把人替换成一句话,即:婴儿在干嘛。

我们想要知道 “婴儿在干嘛” 这句话更加关注于图片中的哪个区域(也就是这句话和图中哪个区域更相似),想通过公式或者某种方式得到这个结果。

这就是注意力机制的一种基本形式。

在这里插入图片描述

这个东西怎么做呢?有论文中的公式如下:

在这里插入图片描述

上图中,QKV是三个矩阵,计算注意力机制的时候一定要有QKV三个矩阵,首先是 QK转置相乘,然后除以某个值(先不管),再 softmax 做归一化,softmax 之后得到的是一个相似度向量,比如 0.1、0.2、0.4… 最后再乘一个 V 矩阵,得到的应该是一个加权的和,差不多是这样。

归一化概念:

在这里插入图片描述

softmax概念:

在这里插入图片描述

举个例子:

在这里插入图片描述

之前公式中的 QKV 便是这里的 Query、Key 以及 Value,但要注意这是三个矩阵(具体是什么矩阵会在后面详述)。

即 Q 代表 “爱” 这个字的某种向量矩阵,K 是 “我不爱你” 的四个字所对应的某种向量矩阵,而 V 是 “我不爱你” 四个字所对应的某一种值的向量矩阵。

然后进行如下图的计算:

在这里插入图片描述

F(Q,K) 的意思是计算相似性,可以是点乘或者余弦相似度或者MLP等等方式,即 “爱” 这个字分别和 “我不爱你” 四个字进行这种函数计算,然后得到一个值 s1、s2、s3 和 s4,做 softmax 归一化之后得到相似度 a1、a2、a3、a4,四个加起来值为1,最后再和一个value值进行先乘再累加就得到了 Attention Value 。

在 TRM 中怎么操作

主要就是如何得到 QKV 的矩阵值呢?

在这里插入图片描述

因为我们只有单词向量,如何获取 QKV 三个矩阵的值呢?从上图可以看出,就是分别用三个权重参数矩阵来分别进行计算得到相应的三个 QKV 矩阵即可。

接下来计算Attention value :

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

上面图片中的例子只用了一套参数,如果使用了多套参数,那么就成了我们所谓的多头注意力机制:

在这里插入图片描述

类似于CNN中的多通道。

残差和LayerNormalization

先通过一张图来了解一下残差和LayerNormalization大致的流程:

在这里插入图片描述

从上图中不难看出,从下往上看,x1 和 x2是词向量,经过位置编码后被送入注意力机制层,然后输出得到 Attention Value z1 和 z2,然后在残差层,z1和z2合起来成为一个矩阵再和原来经过了位置编码的两个词向量合起来的矩阵进行对位相加,最后进行一下LayerNormalization,这就是残差和LayerNormalization大致做的事情。

什么是残差

在这里插入图片描述

再来看一张图:

在这里插入图片描述

从上往下看,x 作为输入,经过两层 weight layer 网络计算(这两层网络所做的操作可以代称为一个函数F(x)),然后可以看到在经过 F(x)操作之后得到输出,如果没有残差网络的话那么直接输出就结束了,但是有残差网络的话就还会进行一步操作,即将原先输入的 x 原封不动的拿到输出的地方,用来和经过F(x)计算的输出值进行对位相加以形成真正的输出:F(x) + x;

这就是残差做的事情。

残差的作用:

在这里插入图片描述

从上面的计算公式结果中可以看到,在残差网络结构中,即使连乘再多,就算产生梯度消失的情况,结果也不会变成0,因为有个常数 1 存在,这就是残差的作用。

LayerNormalization

在这里插入图片描述

前馈神经网络

在这里插入图片描述

Decoder部分

Decoder部分 就比较简单了,其主要有两个部分:

在这里插入图片描述

一个是多头注意力机制层,还有一个是交互层。

掩盖的多头注意力机制

第一个部分就是 Masked Multi-Head Attention:

在这里插入图片描述

在这里插入图片描述

交互层

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

在这里插入图片描述

这里交互的意思是,相当于decoder 中每个 Q(query) 去询问每个 encoder 输出的量,并与之结合。

Encoder 中的 Q 是 Embedding 来的,是已知的输入,而 Decoder 输出的是 Q 是预测的,也就是结果预测的词。

在这里插入图片描述

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

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

相关文章

triton之paged attention

一 原理 图解大模型计算加速系列之:vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/691038809 二 源码分析 1 测试参数设置 test_paged_attention(num_seqs32,num_heads(64, 64),head_size64,block_size16,dtypetorch.float16,…

【ARM+Codesys案例】RK3568 +Codesys 软PLC方案在电镀生产线的应用

1 电镀生产简介 电镀是一种比较重要的工艺,产品经过电镀工艺处理后,不仅产品质量获得提高,产品性能也会大幅度提高,同时延长了产品的使用时间。电镀生产线是指按一定的电镀生产工艺要求,将有关的各种电镀处理槽、电镀行车运动装置…

ubuntu移动硬盘重命名

因为在ubuntu上移动硬盘的名字是中文的,所以想要改成英文的。 我的方法: 将移动硬盘插到windows上,直接右键重命名。再插到ubuntu上名字就改变了。 别人的方法: ubuntu下如何修改U盘名字-腾讯云开发者社区-腾讯云 在自带的软件…

安卓获取内部存储信息

目录 前言获取存储容量 前言 原生系统设置里的存储容量到底是怎么计算的,跟踪源码,涉及到VolumeInfo、StorageManagerVolumeProvider、PrivateStorageInfo、StorageStatsManager......等等,java上层没有办法使用简单的api获取到吗&#xff1f…

力扣239. 滑动窗口最大值

Problem: 239. 滑动窗口最大值 文章目录 题目描述思路复杂度Code 题目描述 思路 1.编写实现优先队列类: 1.1.实现push(int n):将元素n添加到队列尾,同时将n前面大于n的元素删除 1.2.实现int max():将队列头元素取出(由于实现了push所以此时队…

「光储充放」一体充电站-一文读懂光储充放充电站

“光储充放”一体充电站作为一种储能充电的新形式渐渐走进人们的生活,全国很多地区都开始陆续投放运营“光储充放”一体充电站,今天的这篇文章,就带大家全面了解“光储充放”这一新型充电站。 头图来源 | 视觉中国 01 政策背景 早在2020年…

AI大模型实现德语口语练习

利用AI大模型实现德语口语练习的应用需要整合多种技术和资源,以确保学生能够获得全面、互动和有效的学习体验。以下是实现德语口语练习应用的详细流程和技术要点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 实现流程 …

人脸防欺骗——基于皮肤斑块的快速安全的生物识别实现人脸识别防欺骗方法

1. 概述 深度学习的进步促使面部识别技术在许多领域得到应用,例如在线身份验证(eKYC)和电子设备的安全登录。面部识别是一种生物识别技术,对安全性要求很高。近年来,为了提高人脸识别技术的可靠性,人们引入…

12.Redis之补充类型渐进式遍历

1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…

boot项目中定时任务quartz

最近换项目组,发现项目中定时任务使用的是quartz框架,上一篇文章[springboot定时任务]也是使用的quartz,只不过实现方式不同,于是整理下 定时任务常用方法有Quartz,Spring自带的Schedule框架 Quartz基础知识 quartz…

深圳比创达EMC|EMI电磁干扰行业:行业发展的关键与挑战

在当今的高科技时代,电子产品无处不在,它们为我们的生活带来了极大的便利。然而,随着电子设备的普及和集成度的提高,电磁干扰(EMI)问题也日益凸显。 一、EMI电磁干扰行业:无处不在的挑战 电磁…

【全开源】宇鹿家政系统(FastAdmin+ThinkPHP+原生微信小程序)

:助力家政行业数字化升级 一、引言:家政服务的新篇章 随着移动互联网的普及和人们生活水平的提高,家政服务的需求日益增长。为了满足这一市场需求,并推动家政行业的数字化升级,我们特别推出了家政小程序系统源码。这…

不聚焦情绪,不精神内耗:成长的自我修炼

在我们的人生旅途中,总会遇到各种各样的困境和挑战。如何在逆境中保持积极的心态,专注于个人成长,是每一个人都需要面对和思考的问题。这篇文章将探讨如何不抱怨、不指责、不聚焦情绪、不精神内耗,专注于解决困境和个人成长。 问…

记一次 .NET某工控WPF程序被人恶搞的 卡死分析

一:背景 1. 讲故事 这一期程序故障除了做原理分析,还顺带吐槽一下,熟悉我的朋友都知道我分析dump是免费的,但免费不代表可以滥用我的宝贵时间,我不知道有些人故意恶搞卡死是想干嘛,不得而知,希…

光学测量反射率定标版

在光学测量和成像领域,准确性和一致性是至关重要的。为了确保设备能够提供可靠的数据,必须对其进行精确的校准。这就是反射率定标版发挥作用的地方。本文将深入探讨反射率定标版的概念、重要性、使用方式以及它们如何帮助科学家和工程师实现光学测量的精…

李飞飞亲自撰文:大模型不存在主观感觉能力,多少亿参数都不行

近日,李飞飞连同斯坦福大学以人为本人工智能研究所 HAI 联合主任 John Etchemendy 教授联合撰写了一篇文章,文章对 AI 到底有没有感觉能力(sentient)进行了深入探讨。 「空间智能是人工智能拼图中的关键一环。」知名「AI 教母」李…

JAVA 17

文章目录 概述一 语法层面变化1_JEP 409:密封类2_JEP 406:switch模式匹配(预览) 二 API层面变化1_JEP 414:Vector API(第二个孵化器)2_JEP 415:特定于上下文的反序列化过滤器 三 其他…

Mysql 8.0 主从复制及读写分离搭建记录

前言 搭建参考:搭建Mysql主从复制 为什么要做主从复制? 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。架构的扩展。业务量越来越大,I/O访问频…

运营商系统快速上云的实践分享

运营商系统上云的背景 系统上云是数字经济发展的潮流,在数字化转型的浪潮中,上云已经成为推动各行各业创新和效率提升的关键力量。运营商作为服务行业和企业上云的服务商,积极响应国家号召的同时为行业上云打造案例标杆,自身的系统…

PS中常用的快捷速查表以及常用的工具速查表

PS中常用的快捷速查表:大家有需要可以收藏一下 文件菜单 新建 ... CtrlN 打开 ... CtrlO 在 Bridge 中浏览 ... AltCtrlO 打开为 ... AltShiftCtrlO 关闭 CtrlW 关闭全部 AltCtrlW 关闭并转到 Bridge... ShiftCtrlW 存储 CtrlS 存储为 ... Shi…