图解注意力

图解注意力

Part #2: The Illustrated Self-Attention

在文章前面的部分,我们展示了这张图片来展示自注意力被应用于正在处理单词"it"的一层中:
在这里插入图片描述

在本节中,我们将看看这是如何完成的。请注意,我们将以一种试图理解单个单词发生什么的方式来看待它。这就是为什么我们将展示许多单独的向量。实际的实现是通过将巨大的矩阵相乘在一起来完成的。但我想专注于这里单词层面上发生的事情的直觉。

Self-Attention (without masking)

让我们首先看看在编码器模块中如何计算原始自注意力。让我们看看一个一次只能处理四个标记的玩具变压器模块。

自注意力通过三个主要步骤应用:

  1. 为每个路径创建查询(Query)、键(Key)和值(Value)向量。
  2. 对于每个输入标记,使用其查询向量与所有其他键向量进行评分。
  3. 在将它们乘以相关分数后,将值向量相加

在这里插入图片描述

1- Create Query, Key, and Value Vectors

让我们专注于第一条路径。我们将采用其查询,并与所有键进行比较。这为每个键产生了一个分数。自注意力的第一步是为每个标记路径计算三个向量(现在让我们暂时忽略注意力头):

在这里插入图片描述

2- Score

现在我们已经有了向量,我们只在步骤#2中使用查询和键向量。由于我们专注于第一个标记,我们将它的查询与所有其他键向量相乘,为这四个标记中的每一个都产生了一个分数。

在这里插入图片描述

3- Sum

现在我们可以将分数乘以值向量。得分高的值将在我们加总它们后构成结果向量的很大一部分。

在这里插入图片描述

分数越低,我们展示的值向量就越透明。这是为了表示乘以一个小数如何稀释向量的值。

如果我们对每条路径执行相同的操作,我们最终会得到一个向量,代表每个标记包含该标记的适当上下文。然后,这些向量被呈现给Transformer模块中的下一个子层(前馈神经网络):

在这里插入图片描述

The Illustrated Masked Self-Attention

现在我们已经查看了Transformer自注意力步骤的内部,让我们继续看看掩蔽自注意力。掩蔽自注意力与自注意力相同,只是在步骤#2时有所不同。假设模型只有两个标记作为输入,我们正在观察第二个标记。在这种情况下,最后两个标记被掩蔽了。因此,模型在打分步骤中进行了干预。它基本上总是将未来标记的分数设为0,这样模型就不能提前看到未来的单词:

在这里插入图片描述

这种掩蔽通常是通过一个称为注意力掩蔽矩阵来实现的。想象一个由四个单词组成的序列(例如“robot must obey orders”)。在语言建模场景中,这个序列以四个步骤吸收——每个单词一步(假设现在每个单词都是一个标记)。由于这些模型以批量工作,我们可以假设这个玩具模型的批量大小为4,它将整个序列(及其四个步骤)作为一批处理。

在这里插入图片描述

在矩阵形式中,我们通过将查询矩阵乘以键矩阵来计算分数。让我们如下可视化它,只是不是单词,而是与该单词在该单元格中相关联的查询(或键)向量:

在这里插入图片描述

乘法之后,我们应用注意力掩蔽三角矩阵。它将我们想要掩蔽的单元格设置为负无穷大或一个非常大的负数(例如,在GPT-2中为-10亿):

在这里插入图片描述

然后,对每一行应用softmax会产生我们用于自注意力的实际分数:

在这里插入图片描述

这个分数表的意思是:

    • 当模型处理数据集中的第一个示例(行#1),其中只包含一个单词(“robot”),它的全部注意力(100%)将集中在那个单词上。
    • 当模型处理数据集中的第二个示例(行#2),其中包含单词(“robot must”),当它处理单词“must”时,它的48%注意力将集中在“robot”上,52%的注意力将集中在“must”上。

Masked Self-Attention

Evaluation Time: Processing One Token at a Time

我们可以按照掩蔽自注意力的工作方式使GPT-2运行。但在评估期间,当我们的模型在每次迭代后只添加一个新词,对于已经处理过的标记,重新计算早期路径上的自注意力将是低效的。

在这种情况下,我们处理第一个标记(现在先忽略s)。

在这里插入图片描述

GPT-2保留“a”这个标记的键(key)和值(value)向量。每个自注意力层都保留该标记的相应的键和值向量:

在这里插入图片描述

现在在下一次迭代中,当模型处理单词“robot”时,它不需要为“a”标记生成查询(query)、键(key)和值(value)。它只需重用第一次迭代中保存的那些:

在这里插入图片描述

Self-attention: 1- Creating queries, keys, and values
  • 假设模型正在处理单词 “it”。如果我们谈论的是底层区块,那么该标记的输入将是 “it” 的嵌入和 #9 位置的位置上编码:

在这里插入图片描述

Transformer中的每个区块都有自己的权重(文章后面会分解)。我们首先遇到的是用于创建查询、键和值的权重矩阵。

在这里插入图片描述

乘法的结果是一个向量,基本上是单词 “it” 的查询、键和值向量的串联。

在这里插入图片描述

GPT-2 Self-attention: 1.5- Splitting into attention heads

在前面的示例中,我们直接深入到自注意力中,忽略了“多头”部分。现在对这一概念进行一些说明将是有用的。自注意力在 Q、K、V 向量的不同部分上多次进行。“划分”注意力头仅仅是将长向量重塑为矩阵。小型 GPT-2 有 12 个注意力头,因此这将是重塑矩阵的第一个维度:
在这里插入图片描述

GPT-2 Self-attention: 2- Scoring

我们现在可以继续进行打分——知道我们只看一个注意力头(并且所有其他头正在进行类似的操作)
在这里插入图片描述

现在,令牌可以根据所有其他令牌的键进行评分(这些键在之前的迭代中已在注意力头 #1 中计算出):
在这里插入图片描述

GPT-2 Self-attention: 3- Sum

如我们之前所见,现在我们将每个值与其得分相乘,然后将它们相加,生成注意力头 #1 的自注意力结果:

在这里插入图片描述

GPT-2 Self-attention: 3.5- Merge attention heads

我们处理不同注意力头的方式是首先将它们连接成一个向量:
在这里插入图片描述

但是,这个向量还不能直接发送到下一个子层。我们需要先把这个拼凑出来的隐含状态“怪物”转化为一个统一的表示。

GPT-2 Self-attention: 4- Projecting

我们让模型学习如何最好地将连接起来的自注意力结果映射成一个前馈神经网络可以处理的向量。接下来是我们第二个大的权重矩阵,它将注意力头的结果投射到自注意力子层的输出向量:

在这里插入图片描述

至此,我们已经生成了可以传递到下一层的向量:

在这里插入图片描述

翻译自(https://jalammar.github.io/illustrated-transformer/)

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

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

相关文章

网卡故障但bond0不切换原因及处理、脚本监控bond0网卡状态并做相应操作

文章目录 故障说明监控脚本脚本编写脚本测试正常场景异常场景1异常场景2脚本准备和修改网卡名脚本拷贝到所有需要监控主机修改网卡名批量执行脚本故障说明 在一次交换机升级的割接中,主备交换机重启的时候,我们发现了一个问题,有几台宿主机会中断【ping不通】,交换机重启完…

Typora最新安装教程2024

Typora是一款广受好评的跨平台Markdown编辑软件,支持Windows、MacOS和Linux操作系统。它的设计旨在提供一个无干扰、高效且直观的写作环境。户快速管理和查找文档,支持直接在软件内浏览和操作文件结构。 Typora以其简洁而强大的功能集合,成为…

Java模拟马尔可夫链类问题的验证

马尔可夫链(Markov Chain, MC)是概率论和数理统计中具有马尔可夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochasti…

学习笔记——路由网络基础——路由的高级特性

七、路由的高级特性 1、路由迭代(路由递归) 路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由迭代(路由递归)。 添加一条去往20.1.1.…

JAVA期末复习2

目录 一、Java基础知识 1. 下面几个标识符中,哪些是命名正确的 (A) 2. 分析以下代码,哪些是合法的 (C) 3. 以下代码的执行结果是( B ) 4. 下面哪个不是java中的关键字?( B ) 5. 下面对数组…

毕业设计——可视化实验仿真平台

该程序用于毕业设计,架构为前后端分离技术,涉及技术包括vue3,SpringBoot,spring-secrity,Redis,需要者进群769119544进行相关咨询。 程序分为三个角色:学生、老师、管理员。使用了spring-secrit…

字节豆包全新图像Tokenizer:生成图像最低只需32个token,最高提速410倍

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 在生成式模型的迅速发展中,Image Tokenization 扮演着一个很重要的角色,例如Diffusion依赖的VAE或者是Transformer依赖的VQGAN。这些Tokenizers会将图像编码至一个更为紧凑的隐…

Redis 学习笔记(2)

目录 1 Redis的持久化1.1 RDB持久化方案1.2 AOF持久化方案 2 Redis架构2.1 主从复制架构2.2 哨兵集群设计2.3 哨兵集群设计 3 Redis事务机制4 Redis过期策略与内存淘汰机制4.1 过期策略4.2 内存淘汰机制 5 Redis高频面试题4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩 1 Redis的持久化…

C++STL 初阶(5)vector的简易实现(上)

不同于string只实现一个最简单的版本,vector在此处我们要实现的是模版类,类模版的声明和定义分离非常不方便(会在链接时报错),所以我们都只在一个vector.h下去实现声明和定义。后续我们提及到的库里面实现的vector也是…

HCIP--OSPF(笔记3)

OSPF扩展配置 手工认证 【1】接口认证 -- 直连的邻居间,设定认证口令,进行身份核实,同时对双方交互的数据进行加密保护 [r9-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456 邻居间认证模式、编号、密码必须完全一致 【…

python实训day2

1、 from ming import * # 有点像C语言中的头文件 """在Python开发环境中,封装一个函数,功能目标为:通过两个整数参数一次性获取和、差、积、商四个值 """ def calc(a, b):return a b, a - b, a * b, a / b…

apollo规划架构

算法的基本架构 我们在最开始直接给出规划决策算法架构框图,然后一一介绍每个框图结构的细节: 模块的入口是 PlanningComponent,在 Cyber 中注册模块,订阅和发布消息,并且注册对应的 Planning 类。Planning 的过程之前…

网络技术原理需要解决的5个问题

解决世界上任意两台设备时如何通讯的?? 第一个问题,pc1和pc3是怎么通讯的? 这俩属于同一个网段,那么同网段的是怎么通讯的? pc1和pc2属于不同的网段,第二个问题,不同网段的设备是…

敏捷开发笔记(第7章节)--什么是敏捷设计

目录 1:PDF上传链接 7.1: 软件出了什么错 7.2: 设计的臭味--腐化软件的气味 7.2.1: 什么激化了软件的腐化 7.2.2: 敏捷团体不允许软件腐化 7.3: “copy”程序 1: 初始设计 2: 需求在变化 3: 得寸进尺 4: 期望变化 7.3.1: “copy”程序的敏捷设计 7.3.2:…

leetcode 二分查找·系统掌握 有效的完全平方数

题目: 题解: 就是一个非常普通的二分查找,但是需要注意的是查找的上下界,因为是完全平方,所以可以把上界设为这个数的一半,但是要特殊处理num等于1的时候。 bool isPerfectSquare(int num) {if(num1)retur…

element-plus form表单组件之el-date-picker日期选择器组件

el-date-picker日期选择器组件可根据年,月,日期,时间范围来进行选择,可以自定义日期格式,和样式,还提供多种内置事件。 主要属性如下 属性名说明类型可选值默认值model-value / v-model绑定值&#xff0c…

qt开发-11_Dialog 仿苹果支付界面

QDialog 是 Qt 框架中用于创建对话框的一个基类。对话框是一种特殊类型的窗口,通常用于短暂的交互和信息交换,如接收用户输入、显示消息、询问用户决定等。QDialog 提供了一种方便的方式来实现这些功能,并能够控制用户与其他窗口的交互性&…

自动更新阿里云CDN SSL证书

deploy-certificate-to-aliyun 随着各大CA机构开始收割用户,云厂商们提供的免费SSL证书也由之前的12个月变成现在的3个月。笔者一直使用阿里云的OSS作为图床,说实话在如果继续在阿里云上三个月免费一换也太频繁了 笔者在这里使用github action来每隔两个…

C++ (week9):Git

文章目录 1.git介绍2.git安装3.git配置4.获取自己的SSH公钥5.新建仓库6.邀请开发者7.克隆远程仓库到本地8.在本地进行开发9.本地项目推送到远程仓库10.git的工作原理11.分支管理(1)合作开发的方式(2)分支管理(3)分支合并的原理、冲突管理 12.git 与 svn 的区别13.设置alias别名…

内容安全复习 8 - 视觉内容伪造与检测

文章目录 研究背景内容伪造方法虚假人脸生成人脸替换属性编辑表情重演跨模态人脸编辑 伪造检测方法眨眼检测交互式人脸活体检测一些了解方法挑战 研究背景 图像内容篡改造成新闻报道的偏颇易导致社会和公共秩序的不安,对公共安全产生不良影响。 造成的影响&#x…