当前位置: 首页 > news >正文

图解注意力

图解注意力

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/)

相关文章:

图解注意力

图解注意力 Part #2: The Illustrated Self-Attention 在文章前面的部分,我们展示了这张图片来展示自注意力被应用于正在处理单词"it"的一层中: 在本节中,我们将看看这是如何完成的。请注意,我们将以一种试图理解单…...

Typora Markdown编辑器 for Mac v1.8.10 安装

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2. 应用程序显示软件图标,表示安装成功 三、运行调试1、修改主题2、显示文档列表,如下图3、查看版本信息 **安装完成&…...

代码随想录算法训练营Day46|动态规划:121.买卖股票的最佳时机I、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

买卖股票的最佳时机I 121. 买卖股票的最佳时机 - 力扣(LeetCode) 之前用贪心算法做过相同的题,这次考虑使用动态规划来完成。 dp[i]表示前i天的最大利润 我们已知每一天的价格price[i],则dp[i]为每一天的价格price[i]减去当初…...

hive on spark 记录

环境&#xff1a; hadoop 2.7.2 spark-without-hadoop 2.4.6 hive 2.3.4 hive-site.xml <property><name>hive.execution.engine</name><value>spark</value> </property> <property><name>spark.yarn.jars</name>&l…...

【计算机网络体系结构】计算机网络体系结构实验-DHCP实验

服务器ip地址 2. 服务器地址池 3. 客户端ip 4. ping Ipconfig...

攻防世界-pdf

方法一&#xff1a;打开是pdf格式的文件&#xff0c;里面有一张图&#xff0c;题目提示图下面什么都没有&#xff1f;emmm用chrom打开pdf——ctrlf搜索flag&#xff0c;里面是有东西的&#xff0c;ctrla复制就可以了。 方法二&#xff1a;题目提示图下面什么都没有&#xff0c;…...

关于后端幂等性问题分析与总结

后端幂等性&#xff08;Idempotency&#xff09;是指对系统执行一次操作或多次执行相同的操作&#xff0c;其结果始终如一。在分布式系统和API设计中&#xff0c;这是一个关键概念&#xff0c;因为它能保证用户无论请求被路由到哪个节点&#xff0c;多次执行相同的请求都不会导…...

2024广东省职业技能大赛云计算赛项实战——容器云平台搭建

容器云平台搭建 前言 容器镜像使用的是斗学培训平台提供的镜像包&#xff0c;这东西网上都没有&#xff0c;一堆人要&#xff0c;我是靠自己想的方法获取到了&#xff0c;也不敢给。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/ 虚拟机使用的是自行创建…...

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能&#xff0c;以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表&#xff1a; 文本输入&#xff1a; 输入要显示的文字内容&#xff0c;…...

红队内网攻防渗透:内网渗透之内网对抗:代理通讯篇无外网或不可达SockS全协议规则配置C2正反向上线解决方案

红队内网攻防渗透 1. 内网代理通讯1.1 网络不可达实战环境模拟1.1.1 CS代理技术-SockS配置-网络不可达-通讯解决1.1.1.1 反向shell上线入口点主机1.1.1.2 入口点CS搭建sokcs4代理1.1.1.3 本地使用Proxifier访问代理1.1.1 CS代理技术-正反向监听-网络不可达-C2上线1.1.1.4 正向s…...

PHP学习总结-入门篇

PHP简介 PHP (Hypertext Preprocessor)&#xff0c;即“超文本预处理器”。PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP语法吸收了C语言、Java和Perl的特点&#xff0c;便于学习。PHP 是开源免费的&#xff0c;主要适用于Web开发领域&#xff0c;使用广泛。…...

IDEA Plugins中搜索不到插件解决办法

IDEA中搜不到插件有三种解决方案&#xff1a; 设置HTTP选项&#xff0c;可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文&#xff1a;IDEA Plugins中搜索不到插件解决办法本地安装&#xff0c;ile->Settings->Plugin…...

SpringBootWeb 篇-入门了解 Vue 前端工程的创建与基本使用

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 基于脚手架创建前端工程 1.1 基于 Vue 开发前端项目的环境要求 1.2 前端工程创建的方式 1.2.1 基于命令的方式来创建前端工程 1.2.2 使用图形化来创建前端工程 1.…...

折线统计图 初级

此为折线统计图的初级题目。 本次的题目较难&#xff0c;菜鸡请退出。 4. 下图显示了甲、乙两台电脑的价格以及它们已使用的年数&#xff0c;从图中可以知道( )。 15. 妈妈去菜市场买菜&#xff0c;走到半路遇到一位熟人聊了一会儿&#xff0c;突然发现忘了带钱。于是马上回…...

最新下载:XmanagerXShell【软件附加安装教程】

​相信大家都认同支持IPv6&#xff1a;最近越来越多的公司和国家都采用了IPv6&#xff0c;Xmanager的最新版本v5也加入支持这个功能&#xff0c;无论你是同时使用IPv4和IPv6网络或者完全的IPv6网络&#xff0c;Xmanager 5都可完全满足你的要求&#xff0c;使用MIT Kerberos认证…...

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econom…...

读书笔记:《生死疲劳》

《生死疲劳》. 莫言 生死疲劳》是莫言最重要的代表作之一。他用动物的视角、俏皮的语言和鬼才的叙事手法&#xff0c;使这本讲述沉重故事的书中处处充满惊喜&#xff1b;用幽默、戏谑的方式化解现实的痛苦&#xff0c;让人在痛苦时依旧能笑出声来&#xff0c;给人以力量。…...

C++面向对象三大特性--多态

C面向对象三大特性–多态 文章目录 C面向对象三大特性--多态1.虚函数&#xff08;Virtual Function&#xff09;2.纯虚函数&#xff08;Pure Virtual Function&#xff09;和抽象类&#xff08;Abstract Class&#xff09;3.重写&#xff08;Override&#xff09;4.动态绑定&am…...

啥移动硬盘格式能更好兼容Windows和Mac系统 NTFS格式苹果电脑不能修改 paragon ntfs for mac激活码

对于同时使用Windows和Mac操作系统的用户而言&#xff0c;选择一个既能确保数据互通又能满足大容量存储需求的移动硬盘格式尤为重要。下面我们来看看啥移动硬盘格式能更好兼容Windows和Mac系统&#xff0c;NTFS格式苹果电脑不能修改的相关内容。 一、啥移动硬盘格式能更好兼容…...

【面试】i++与++i的区别

目录 1. 情况11.1 i1.2 i 2. 情况23. 情况34. 情况4 1. 情况1 1.1 i 1.代码块 public void test(){int i 10;i;System.out.println(i);}2.字节码 0 bipush 102 istore_13 iinc 1 by 16 getstatic #2 <java/lang/System.out : Ljava/io/PrintStream;>9 iload_1 10 inv…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

比特币:固若金汤的数字堡垒与它的四道防线

第一道防线&#xff1a;机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”&#xff08;Hashing&#xff09;就是一种军事级的加密术&#xff08;SHA-256&#xff09;&#xff0c;能将信函内容&#xff08;交易细节&#xf…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...