从零对Transformer的理解(台大李宏毅)

Self-attention layer自注意力

在这里插入图片描述对比与传统cnn和rnn,都是需要t-1时刻的状态然后得到t时刻的状态。我不知道这样理解对不对,反正从代码上看我是这么认为的。而transformer的子注意力机制是在同一时刻产生。意思就是输入一个时间序列,在计算完权重后就直接得到状态。

计算注意力机制的参数q,k,v在这里插入图片描述

那么相信大家肯定看不懂上面的,接下来我来说说a(1,n)怎么计算(如图):
在这里插入图片描述
也就是q1 * kn(n=1,2,3,4)
但是相信大家疑惑的是为什么要除以根号d?
很简单因为k和q的维度一样 但是k的行数越多(听不懂就理解k的变量越多)那么和q分别相加相乘后会导致变量变得很大,这个除以维度根号d也就是启平衡的作用。

接下来是进行和特征v相乘

在这里插入图片描述
看图可以知道 我们要输出的第一sequence的第一个向量是b1 ,但是我们是如何得到的呢,很简单,将我们上一步得到的a(1,n) *v[n]。看着很眼熟,是不是可以把它变成矩阵相乘类型。那这些有什么意义? 你看我们生成b1的时候我们考虑道路a1~a4所有的特征,并且假如我们不想考虑a1的特征的时候,我们只需要在这里插入图片描述

如何把它变成矩阵相乘从而加速?

如图 将上述的乘法变成矩阵相乘

在这里插入图片描述
那么我们可能不懂这个W是干什么的?这个就是相对的特征参数。打个比方就是比如一个蛋糕怎么给三个人分,每个人分多少,也就是权重。

ok。理解之后我们开始做乘法,一开始我们是要用同q1乘以k1~k4得到a(1,n) ,如下图
在这里插入图片描述

那么我们是不是可以这样
在这里插入图片描述
那么我们继续推导,假如我们要得到a(2,n),a(3,n)呢?是不是可以加q2,q3?然后对A矩阵进行softmax。
在这里插入图片描述

那么我要得到最后的b1~b4怎么做?是不是只需要做一个简单的行列相乘就行了。
在这里插入图片描述

那么我们总体可以得到
在这里插入图片描述
在这里插入图片描述

多头注意力机制

ok上面我们懂了什么是自注意力,那么这里我们来了解一下什么是多头?
很简单,多头就是多个特征头,我们以两个头为例子,我们的q,k,v特征可以不仅仅是一个维度,可以是多维度,那么多个维度,我们用两个头来举例,q(n,1),q(n,2) n=(1,2,3,4)。但是我们相乘的话不能交叉?什么意思呢?打个比方,我们和某个人进行比较,我们不能拿我们体重的数据去对比人家的身高数据,这样做的意义不大。所以这里的q,k,v分出的头相乘还是只能跟自注意力机制一样q(n,1)*k(n,1),q(n,2)*k(n,2)这样进行(当然这里是矩阵相乘意思到位就行)。如图
在这里插入图片描述


但是最后我们得到两个sequence之后呢,我们并不是简单的相加,我们也可以进行降维,这是什么意思呢?举个例子就是两个不同的男孩子去追同一个女孩,一个男孩子就喜欢关注女孩的外表从而得出女孩的特征,还一个男孩子就喜欢关注女孩子的内在而得到特征。所以我们的任务是调整这两个特征的权重,而达到我们预期效果。如图在这里插入图片描述

位置编码

其实我们仔细观察前面讲的自注意力 的时候发现了一个问题,就是说我们无论输入的序列怎么颠倒,但是我们获得的信息是一样的?为什么?因为我们对不同的q,k,v权重里面获得了固定的信息。不跟传统rnn一样需要上一个时刻的信息。那么这里我们提到了位置编码?
什么是位置编码?为什么要位置编码?
打个比方,我们清楚一件事,就是一个句子的主谓宾很重要,比如我爱你和你爱我完全两个意思,在你追女孩的时候你更想听到你爱我而不是我爱你。所以我们需要对我们输入的向量的对应位置进行编码,论文做法就是加位置编码e[n]。
在这里插入图片描述

还一个问题,为什么是加而不是concat?
我们加的话不会导致它的特征混淆找不到吗?
这里我们给出解释:
我们假设有一个one-hot编码向量p(i),不知道one-hot的可以自己去学一下
p(i)的i代表着第i维是1其他维度是零。这里我们把p(i),因为e(i)是位置编码,我们可以用one-hot编码来表示词的位置。接着我们将其concat后与权重W相乘得到我们对应的q,k,v。如下图
在这里插入图片描述

学过线性代数的我们可以把w堪称wi和wp分别和我们的xi和pi矩阵进行相乘,然后相加。所以相加和concat效果是一样的。但是concat增加了维度,反而会影响训练速度,所以我们选择相加来提高训练速度,不必要做无谓的空间浪费。

Encoder层

我们的编码层做的事情肯定是编码了。
在这里插入图片描述

1.看上这个结构是不是不懂? 不懂就对了。我们来仔细讲讲,首先是Input这里
在这里插入图片描述
这里我们之前讲过的position编号起到作用,意思是我们输入进去的序列需要加上位置信息(也可以成为语序信息)。

2.然后是到多头注意力和残差结构和Norm计算这里我们之前说过了多头注意力这里就不多提
在这里插入图片描述
然后Residual层是残差层,然后norm层是进行序列的计算。具体做法就是求出一个序列的平均然后除以标准差如下图。在这里插入图片描述

做完这些后再进入全连接层后再进行norm和残差就得到我们的一个block的处理。但实际我们有N个encoder叠加进行的,这也是N的意思
在这里插入图片描述

Decoder层

我们得到Encoder的输出后,再输入到Decoder层作为输入
在这里插入图片描述
我们看其实发现我们的Decoder层和我们的Encoder层在主题上差不多(在遮住中间的部分的时候)
但是我们发现有个不同的地方(除去中间遮住的部分),那就是Masked。那我们仔细看看它做了什么

Decoder的功能(以一个序列为例子)

我们看到“机器学习”这四个字,我们Masked做了什么呢?在我们的自注意力机制上面,我们知道我们假如要从输入a1得到b1 那么我们会其他a2-an的qkv进行自注意力计算然后在输出b1,但是我们的Masked却只是计算a1一个人的qkv特征得到b1,b2也只能用a1和a2的特征进行计算得到。一句话就是只能看左边,并且得到的输出会变成下一个词的输入。可能大家还是不懂,看下面的图。
在这里插入图片描述
我们得到机的时候是通过begin得到的(这里说一下,因为我们一个序列要一直做,所以我们会增加begin和end标签),那么我们得到机的时候又把机作为输入得到“器”,但是这个时候的“机”字却包含了之前的begin,以此类推,感觉这个类似rnn。

下面这两张图是对比自注意力和Masked自注意力区别,第一张为自注意力,第二张为Masked自注意力

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

那么中间的部分是什么?

CrossAtention!
它的目的很简单就是把encoder的输出和我们decoder的Masked那一层的输出结合进行crossatention后得到我们的结果。

在这里插入图片描述
具体是这样,从encoder的一个block中获得特征和decoder的Masked提取的特征进行自注意力机制的运算
在这里插入图片描述

最后说一下训练的时候和验证的时候用的损失函数

训练的时候用的交叉熵(也就是一个一个的单词对比),测试的时候用的是bule score 也就是生成的句子和测试的句子之前的对比得分。为什么不在训练的时候用bule score呢?因为不知道怎么用。

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

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

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

相关文章

PostgreSQL的学习心得和知识总结(一百四十五)|深入理解PostgreSQL数据库之ShowTransactionState的使用及父子事务有限状态机

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

信息技术课如何禁止学生玩游戏

在信息技术课上禁止学生玩游戏是一个常见的挑战,但可以通过一系列策略和工具来有效地实现。以下是一些建议: 明确课堂规则和纪律: (1)在课程开始时,明确告知学生课堂规则和纪律,包括禁止玩游戏的规定。 (2)强调遵守…

[Qt] QtCreator编辑区关闭右侧不必要的警告提示

在代码编辑页面,右侧总会出现一些即时Waring,不想看见? 取消勾选插件管理中的ClangCodeModel 插件即可

Linux 内核权限提升漏洞CVE-2024-1086三种修复方法

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。一、漏…

NLP大语言模型的缩放定律

一、简述 ​论文《神经语言模型的缩放定律》包含对交叉熵损失的语言模型性能的经验缩放定律的研究,重点关注Transformer架构。 https://arxiv.org/pdf/2001.08361.pdfhttps://arxiv.org/pdf/2001.08361.pdf 实验表明,测试损失与模型大小、数据集…

已解决VirtualMachineError: 虚拟机错误的正确解决方法,亲测有效!!!

已解决VirtualMachineError: 虚拟机错误的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 分析错误日志 优化代码 内存泄漏排查 优化递归调用 调整JVM参数 使用监控工具 增加物理内存或升级硬件…

优选免单模式:电商销售的新篇章

随着电商市场的日益繁荣,各种创新销售模式层出不穷。其中,优选免单模式以其独特的运作方式和激励机制,吸引了大量消费者的目光。该模式的核心在于通过降低商品售价、引入社交元素以及设计阶梯式奖励,激发消费者的购买热情&#xf…

【C++知识点】类和对象:友元,运算符重载,多态

今天来继续了解类和对象! PS.本博客参考b站up黑马程序员的相关课程,老师讲得非常非常好! 封装 深拷贝与浅拷贝 浅拷贝:简单的赋值拷贝操作 深拷贝:在堆区重新申请空间,进行拷贝操作 首先&#xff0c…

「动态规划」如何求最长湍流子数组的长度?

78. 最长湍流子数组https://leetcode.cn/problems/longest-turbulent-subarray/description/ 给定一个整数数组arr,返回arr的最长湍流子数组的长度。如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。更正式地来说,…

VBA技术资料MF164:列出文件夹中的所有文件和创建日期

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

JAVA大型医院绩效考核系统源码:​医院绩效考核实施的难点痛点

JAVA大型医院绩效考核系统源码:​医院绩效考核实施的难点痛点 绩效考核数字化综合管理系统是一个基于数字化技术的管理平台,用于帮助企业、机构等组织进行绩效考评的各个环节的管理和处理。它将绩效考评的各个环节集成到一个系统中,包括目标…

Appium Android 自动化测试 -- 元素定位

自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到。 Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式Appium 中都支持,而 Appium 还增加了自己…

ciscn_2019_n_1

前戏--------checksec,运行查看 进入就可以发现这段代码 很浅显易懂 我们要得到的后面是 这里 我们要利用的漏洞是 get函数 0x30大小 加上8 exp: from pwn import * ghust remote("node5.buuoj.cn",28777) addr 0x4006BE payload bA * 0x30 bB*0x8 p64(addr…

细说MCU输出两路PWM波形及改变占空比的实现方法

目录 一、硬件及工程 二、建立工程 三、代码修改 四、下载运行 五、改变PWM波形占空比 1、定义两个全局变量 2、启动定时器 3、重写TIM3中断回调函数 六、下载并运行 一、硬件及工程 文章依赖的硬件及工程配置参考本文作者的其他文章:细说ARM MCU的串口接…

3D开发工具HOOPS为BIM应用提供支持:复杂大模型实现Web端轻量化!

在数字化转型的浪潮中,Tech Soft 3D以其HOOPS SDK工具包,为软件开发人员提供了强大的支持。这一工具包不仅支持Windows、Linux、OSX和移动平台等多样化的操作系统,还使得开发人员能够构建出庞大而复杂的建筑和BIM应用程序。HOOPS SDK的多格式…

26.2 Django简介

1. Python三大主流框架 根据当前的信息和流行度, Python的三大框架可以归纳为Django, Flask和FastAPI, 以下是对它们的清晰分点表示和归纳:* 1. Django: 一个高级的Python Web框架, 以快速开发和实用简洁的设计出名.它遵循MVC设计模式(但更倾向于MTV模式), 并提供了许多内置的…

让全栈AI的旗帜猎猎作响:“逆行者”华为云

如果有人问,AI大模型行业,最近的风向是什么?相信很多人都会说,是“内卷”。 近段时间,“降价”成了大模型的第一关键词。各大云服务商争相加入AI降价潮,甚至有公司模型降价达到了97%的惊人幅度。加上厂商抢…

数据库精选题(三)(SQL语言精选题)(按语句类型分类)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据库 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 创建语句 创建表 创建视图 创建索引…

汽车销售系统

摘 要 在现代社会,电脑是企业运作和管理必不可少的工具。我们过去用手记下卖出的商品的年代已一去不复返了。在我国,汽车销售行业的竞争日趋激烈的情况下,如何提高企业的管理水平,提高企业的工作效率,提高企业的服务质…

(vue3)基于vite+vue3+element-plus项目创建

(vue3)基于vitevue3element-plus项目创建 vue.js官方中文文档:https://cn.vuejs.org/guide/quick-start.html vite官方中文文档:https://cn.vitejs.dev/guide/ element-plus官网:https://element-plus.org/zh-CN/guide/installation.html 第…