图解注意力
图解注意力
Part #2: The Illustrated Self-Attention
在文章前面的部分,我们展示了这张图片来展示自注意力被应用于正在处理单词"it"的一层中:
在本节中,我们将看看这是如何完成的。请注意,我们将以一种试图理解单个单词发生什么的方式来看待它。这就是为什么我们将展示许多单独的向量。实际的实现是通过将巨大的矩阵相乘在一起来完成的。但我想专注于这里单词层面上发生的事情的直觉。
Self-Attention (without masking)
让我们首先看看在编码器模块中如何计算原始自注意力。让我们看看一个一次只能处理四个标记的玩具变压器模块。
自注意力通过三个主要步骤应用:
- 为每个路径创建查询(Query)、键(Key)和值(Value)向量。
- 对于每个输入标记,使用其查询向量与所有其他键向量进行评分。
- 在将它们乘以相关分数后,将值向量相加
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 记录
环境: 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
方法一:打开是pdf格式的文件,里面有一张图,题目提示图下面什么都没有?emmm用chrom打开pdf——ctrlf搜索flag,里面是有东西的,ctrla复制就可以了。 方法二:题目提示图下面什么都没有,…...
关于后端幂等性问题分析与总结
后端幂等性(Idempotency)是指对系统执行一次操作或多次执行相同的操作,其结果始终如一。在分布式系统和API设计中,这是一个关键概念,因为它能保证用户无论请求被路由到哪个节点,多次执行相同的请求都不会导…...
2024广东省职业技能大赛云计算赛项实战——容器云平台搭建
容器云平台搭建 前言 容器镜像使用的是斗学培训平台提供的镜像包,这东西网上都没有,一堆人要,我是靠自己想的方法获取到了,也不敢给。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/ 虚拟机使用的是自行创建…...

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发
手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能,以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表: 文本输入: 输入要显示的文字内容,…...
红队内网攻防渗透:内网渗透之内网对抗:代理通讯篇无外网或不可达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),即“超文本预处理器”。PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP语法吸收了C语言、Java和Perl的特点,便于学习。PHP 是开源免费的,主要适用于Web开发领域,使用广泛。…...

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

SpringBootWeb 篇-入门了解 Vue 前端工程的创建与基本使用
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 基于脚手架创建前端工程 1.1 基于 Vue 开发前端项目的环境要求 1.2 前端工程创建的方式 1.2.1 基于命令的方式来创建前端工程 1.2.2 使用图形化来创建前端工程 1.…...

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

最新下载:XmanagerXShell【软件附加安装教程】
相信大家都认同支持IPv6:最近越来越多的公司和国家都采用了IPv6,Xmanager的最新版本v5也加入支持这个功能,无论你是同时使用IPv4和IPv6网络或者完全的IPv6网络,Xmanager 5都可完全满足你的要求,使用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…...
读书笔记:《生死疲劳》
《生死疲劳》. 莫言 生死疲劳》是莫言最重要的代表作之一。他用动物的视角、俏皮的语言和鬼才的叙事手法,使这本讲述沉重故事的书中处处充满惊喜;用幽默、戏谑的方式化解现实的痛苦,让人在痛苦时依旧能笑出声来,给人以力量。…...
C++面向对象三大特性--多态
C面向对象三大特性–多态 文章目录 C面向对象三大特性--多态1.虚函数(Virtual Function)2.纯虚函数(Pure Virtual Function)和抽象类(Abstract Class)3.重写(Override)4.动态绑定&am…...

啥移动硬盘格式能更好兼容Windows和Mac系统 NTFS格式苹果电脑不能修改 paragon ntfs for mac激活码
对于同时使用Windows和Mac操作系统的用户而言,选择一个既能确保数据互通又能满足大容量存储需求的移动硬盘格式尤为重要。下面我们来看看啥移动硬盘格式能更好兼容Windows和Mac系统,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…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...