大型语言模型中的QKV与多头注意力机制解析
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/
【工程师视角下的大模型核心机制拆解:QKV 与多头注意力 (QKV and Multi-head Attention in LLM from an Enginee】
https://www.bilibili.com/video/BV1dAJPzvEW5/
在自然语言处理(NLP)领域,大型语言模型(LLM),如GPT-3和BERT,彻底改变了机器理解和生成自然语言的方式。而这些模型的核心机制中,QKV(Query、Key、Value)和多头注意力机制(Multi-Head Attention)起着关键作用。起初,这一机制显得晦涩难懂,有研究者甚至花费数周时间才逐渐弄清其运作原理。
在原始论文中,对QKV机制的解释如下:
Query(查询向量):
表示模型当前关注的元素。在一个序列中,Query就像是在针对某个具体元素发出的“问题”。
Key(键向量):
表示序列中所有可能被模型关注的元素。Query会与所有的Key进行对比,以判断该关注哪些部分、关注的程度如何。
Value(值向量):
每个Key对应一个Value。一旦确定了哪些Key比较重要(基于Query计算),其对应的Value将被用于构建最终输出。
虽然理论解释如此,但实际理解起来仍不容易。以下是一个直观的例子。
例如,一句简单的英文句子:“Tom is going to fish at the river bank.”
人类能够轻松理解这句话。但为了让计算机理解,我们需要先将句子中的每个单词转换成数字向量,这就是所谓的词嵌入(Word Embedding)。假设使用一个六维空间表示词向量,“River”这个词的嵌入向量可能是 [-0.9, 0.9, -0.2, 0.4, 0.2, 0.6]。在嵌入空间中,相似的词彼此靠近。比如:
-
第一组:River, Fish, Fisherman
-
第二组:Hospital, PostOffice, Restaurant
有趣的是,像“Bank”这样的多义词,其含义依赖于语境——需要判断它应该更接近哪一组。
回到原句:
“Tom is going to fish at the river bank.”
人们自然能判断出“bank”在这里不是提款的地方。为何能这样理解?这是因为“River”和“Fish”这两个词在语境中提供了更强的语义线索。它们在理解“bank”的含义时起到更重要作用,因此应给予更高的注意力权重,与“bank”的语义更加接近。
那么,计算机又如何判断该更关注“River”和“Fish”,而非其他词呢?这正是Q(Query)和K(Key)登场的地方。它们是两个线性变换,用于回答一个核心问题:在一个句子中,词与词之间的相似度如何?
首先,Q和K的输入是相同的词嵌入(此处暂不考虑位置嵌入)。以六维向量表示词嵌入为例:
将输入词嵌入分别进行Q和K的线性变换,然后计算Query与所有Key之间的点积(MatMul),接着进行缩放(Scale)、掩码(Mask)和SoftMax归一化,最终得到各个词的注意力权重。这些权重随后再与V(Value)向量进行点积,从而得到输出向量。最终的输出是各个Value的加权和,而权重则是由Key与Query之间的匹配程度决定的。
因此,这个新生成的向量在语义上比原始的词嵌入更能捕捉上下文间的联系。
举例来说,模型可能会对“bank”与“river”、“fish”的组合给出更高的注意力权重。这意味着模型在构建“bank”的输出时,会更多地参考这些相关词。
那么,为什么非得经历QKV这一套复杂的转化过程呢?
这可以类比于人类对图像的感知。如果让人描述一幅画面,大脑并不会从左上角逐像素扫描,而是立刻将注意力集中在最突出的物体上,例如画面中的一个小男孩。这种处理方式高效而精准,正体现了“注意力机制”的威力。
如果将QKV看作是一组三个线性映射,即一个“注意力头”(Attention Head),那么**多头注意力机制(Multi-Head Attention)**就是拥有多组QKV,并将它们的输出拼接起来。其优势在于能从不同角度捕捉相似性信息。例如,一个头可以专注于相邻的名词关系,另一个头则可能关注动词与宾语之间的联系。回到图像类比,一个“头”可能识别出画面中的男孩,另一个则聚焦于他手中的球。
以上是一种对QKV与多头注意力机制的直观解释。至于更为严谨的数学推导,可参考原始论文《Attention Is All You Need》。在深入学习的过程中,许多技术细节将逐渐变得清晰而有趣。
相关文章:

大型语言模型中的QKV与多头注意力机制解析
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

基于地图的数据可视化:解锁地理数据的真正价值
目录 一、基于地图的数据可视化概述 (一)定义与内涵 (二)重要性与意义 二、基于地图的数据可视化的实现方式 (一)数据收集与整理 (二)选择合适的可视化工具 (三&a…...
利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析
利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析 漫谈图像去雾化的挑战 在计算机视觉领域,图像复原一直是研究热点。其中,图像去雾化技术尤其具有实际应用价值。然而,复杂的气象条件和多种因素干扰使得这…...

分布式链路跟踪
目录 链路追踪简介 基本概念 基于代理(Agent)的链路跟踪 基于 SDK 的链路跟踪 基于日志的链路跟踪 SkyWalking Sleuth ZipKin 链路追踪简介 分布式链路追踪是一种监控和分析分布式系统中请求流动的方法。它能够记录和分析一个请求在系统中经历的每…...

刷leetcodehot100返航版--二叉树
二叉树理论基础 二叉树的种类 满二叉树和完全二叉树,二叉树搜索树 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 节点个数2^n-1【n为树的深度】 完全二叉树 在完全二叉树…...
chmod 777含义:
1.chmod 777 的含义及其在文件权限中的作用 chmod 777 是一种用于修改 Unix 和 Linux 系统中文件或目录权限的命令。它赋予指定文件或目录的所有用户(文件所有者、所属组成员以及其他用户)完全的访问权限,即 读取 (Read)、写入 (Write) 和 执…...
AGI大模型(21):混合检索之混合搜索
为了执行混合搜索,我们结合了 BM25 和密集检索的结果。每种方法的分数均经过标准化和加权以获得最佳总体结果 1 代码 先编写 BM25搜索的代码,再编写密集检索的代码,最后进行混合。 from rank_bm25 import BM25Okapi from nltk.tokenize import word_tokenize import jieb…...

双重差分模型学习笔记4(理论)
【DID最全总结】90分钟带你速通双重差分!_哔哩哔哩_bilibili 目录 总结:双重差分法(DID)在社会科学中的应用:理论、发展与前沿分析 一、DID的基本原理与核心思想 二、经典DID:标准模型与应用案例 三、…...

Mysql 8.0.32 union all 创建视图后中文模糊查询失效
记录问题,最近在使用union all聚合了三张表的数据,创建视图作为查询主表,发现字段值为中文的筛选无法生效.......... sql示例: CREATE OR REPLACE VIEW test_view AS SELECTid,name,location_address AS address,type,"1" AS data_type,COALESCE ( update_time, cr…...

Jenkins 执行器(Executor)如何调整限制?
目录 现象原因解决 现象 Jenkins 构建时,提示如下: 此刻的心情正如上图中的小老头,火冒三丈,但是不要急,因为每一次错误,都是系统中某个环节在说‘我撑不住了’。 原因 其实是上图的提示表示 Jenkins 当…...
Android 中 权限分类及申请方式
在 Android 中,权限被分为几个不同的类别,每个类别有不同的申请和管理方式。 一、 普通权限(Normal Permissions) 普通权限通常不会对用户隐私或设备安全造成太大风险。这些权限在应用安装时自动授予,无需用户在运行时手动授权。 android.permission.INTERNETandroid.pe…...

编程错题集系列(一)
编程错题集系列(一) 人生海海,山山而川。 谨以此系列作为自己一路的见证。本期重点:明明已经安装相关库,但在PyCharm中无法调用 最大的概率是未配置合适的解释器,也就是你的书放在B房间,你在A…...

【原创】基于视觉大模型gemma-3-4b实现短视频自动识别内容并生成解说文案
📦 一、整体功能定位 这是一个用于从原始视频自动生成短视频解说内容的自动化工具,包含: 视频抽帧(可基于画面变化提取关键帧) 多模态图像识别(每帧图片理解) 文案生成(大模型生成…...

Spark(32)SparkSQL操作Mysql
(一)准备mysql环境 我们计划在hadoop001这台设备上安装mysql服务器,(当然也可以重新使用一台全新的虚拟机)。 以下是具体步骤: 使用finalshell连接hadoop001.查看是否已安装MySQL。命令是: rpm -qa|grep ma…...

基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真
基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真 在工业设计与制造领域,刀具的设计与优化是提高生产效率和产品质量的关键环节之一。本文将介绍如何使用 Python 复现一个用于标准干涉槽型设计计算及仿真的界面程序,旨在帮助工程师和…...

c++成员函数返回类对象引用和直接返回类对象的区别
c成员函数返回类对象引用和直接返回类对象的区别 成员函数直接返回类对象(返回临时对象,对象拷贝) #include <iostream> class MyInt { public:int value;//构造函数explicit MyInt(int v0) : value(v){}//加法操作,返回对象副本&…...
AGI大模型(20):混合检索之rank_bm25库来实现词法搜索
1 混合检索简介 混合搜索结合了两种检索信息的方法 词法搜索 (BM25) :这种传统方法根据精确的关键字匹配来检索文档。例如,如果您搜索“cat on the mat”,它将找到包含这些确切单词的文档。 基于嵌入的搜索(密集检索) :这种较新的方法通过比较文档的语义来检索文档。查…...

数字化转型- 数字化转型路线和推进
数字化转型三个阶段 百度百科给出的企业的数字化转型包括信息化、数字化、数智化三个阶段 信息化是将企业在生产经营过程中产生的业务信息进行记录、储存和管理,通过电子终端呈现,便于信息的传播与沟通。数字化通过打通各个系统的互联互通,…...
字体样式集合
根据您提供的字体样式列表,以下是分类整理后的完整字体样式名称(不含数量统计): 基础样式 • Regular • Normal • Plain • Medium • Bold • Black • Light • Thin • Heavy • Ultra • Extra • Semi • Hai…...

IP68防水Type-C连接器实测:水下1米浸泡72小时的生存挑战
IP68防水Type-C连接器正成为户外设备、水下仪器和高端消费电子的核心组件。其宣称的“1米水深防护”是否真能抵御长时间浸泡?我们通过极限实测,将三款主流品牌IP68防水Type-C连接器沉入1米盐水(模拟海水浓度)中持续72小时…...

【技术追踪】InverseSR:使用潜在扩散模型进行三维脑部 MRI 超分辨率重建(MICCAI-2023)
LDM 实现三维超分辨率~ 论文:InverseSR: 3D Brain MRI Super-Resolution Using a Latent Diffusion Model 代码:https://github.com/BioMedAI-UCSC/InverseSR 0、摘要 从研究级医疗机构获得的高分辨率(HR)MRI 扫描能够提供关于成像…...
React学习(二)-变量
也是很无聊,竟然写这玩意,毕竟不是学术研究,普通工作没那么多概念性东西,会用就行╮(╯▽╰)╭ 在React中,变量是用于存储和管理数据的基本单位。根据其用途和生命周期,React中的变量可以分为以下几类: 1. 状态变量(State) 用途:用于存储组件的内部状态,状态变化会触…...

list重点接口及模拟实现
list功能介绍 c中list是使用双向链表实现的一个容器,这个容器可以实现。插入,删除等的操作。与vector相比,vector适合尾插和尾删(vector的实现是使用了动态数组的方式。在进行头删和头插的时候后面的数据会进行挪动,时…...
【自然语言处理与大模型】大模型(LLM)基础知识④
(1)微调主要用来干什么? 微调目前最主要用在定制模型的自我认知和改变模型对话风格。模型能力的适配与强化只是辅助。 定制模型的自我认知:通过微调可以调整模型对自我身份、角色功能的重新认知,使其回答更加符合自定义…...
系统架构设计(九):分布式架构与微服务
基础定义 架构类型定义分布式架构指将系统部署在多个服务器节点上,通过网络协作完成整体功能。强调物理上的分布与任务协作。微服务架构一种分布式架构模式,将系统按照业务维度拆分为多个小型自治服务,每个服务可独立开发、部署、伸缩。 核…...

Java 框架配置自动化:告别冗长的 XML 与 YAML 文件
在 Java 开发领域,框架的使用极大地提升了开发效率和系统的稳定性。然而,传统框架配置中冗长的 XML 与 YAML 文件,却成为开发者的一大困扰。这些配置文件不仅书写繁琐,容易出现语法错误,而且在项目规模扩大时ÿ…...

vue使用Pinia实现不同页面共享token
文章目录 一、概述二、使用步骤安装pinia在vue应用实例中使用pinia在src/stores/token.js中定义store在组件中使用store登录成功后,将token保存pinia中向后端API发起请求时,携带从pinia中获取的token 三、参考资料 一、概述 Pinia是Vue的专属状态管理库…...

遨游科普:三防平板是什么?有什么功能?
清晨的露珠还挂在帐篷边缘,背包里的三防平板却已开机导航;工地的尘土飞扬中,工程师正通过它查看施工图纸;暴雨倾盆的救援现场,应急队员用它实时回传灾情数据……这些看似科幻的场景,正因三防平板的普及成为…...

spring MVC 至 springboot的发展流程,配置文件变化
spring mvc Spring MVC 是 Spring 框架中的一个重要模块,用于构建基于 Java 的 Web 应用程序。它基于 MVC(Model-View-Controller)设计模式,提供了灵活、可配置的方式来开发动态网页或 RESTful 服务 ssm SSM 框架…...
深入解析Spring Boot与JUnit 5的集成测试实践
深入解析Spring Boot与JUnit 5的集成测试实践 引言 在现代软件开发中,测试是确保代码质量和功能正确性的关键环节。Spring Boot作为目前最流行的Java Web框架之一,提供了强大的支持来简化测试流程。而JUnit 5作为最新的JUnit版本,引入了许多…...