一起学习:大型语言模型(LLM)中的QKV(Query, Key, Value)和多头注意力机制

news2024/11/24 16:20:40

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

在自然语言处理(NLP)领域,大型语言模型(LLM),比如GPT-3和BERT,彻底改变了机器理解和生成人类语言的方式。这些模型的核心理念是QKV(Query、Key、Value)和多头注意力机制。一开始听起来很神秘,我也花了几周时间才弄明白。

以下是论文中的解释。

查询(Q): 代表模型当前关注的项目。 在序列中,查询就像对特定元素提出问题。 键(K): 代表序列中模型可能关注的所有项目。 键是查询用来比较的对象,以确定应该给予多少注意力。 值(V): 每个键都与一个值相关联。 一旦模型确定了哪些键是重要的(基于查询),就会使用相应的值来构建输出。 嗯,这还是有点难以理解。我们来看个例子。

对我们来说,“Tom is going to fish at the river bank”这句话很容易理解。为了让计算机理解它,我们需要将每个词编码成数字,这叫做词嵌入。假设在一个简单的六维空间中,单词“River”可以表示为词嵌入[-0.9, 0.9,-0.2, 0.4, 0.2, 0.6]。那些“相似度”较高的词会彼此靠近。例如,第1组)River、Fish和Fishman,第2组)Hospital、PostOffice和Restaurant。当我们尝试确定“Bank”这个词的位置时,就变得有趣了。它是一个多义词,可以根据所在句子的上下文有不同的解释。它应该更接近第1组还是第2组呢?

现在,我们再看看这句话,

Tom is going to fish at the river bank.

当我们读到它时,我们知道“bank”不可能是取钱的地方。为什么呢?好吧,单词“River”和“Fish”的存在对我们理解上下文的贡献更大,相比之下其他词的贡献较小。因此,它们应该有较高的注意力分数,并且与“bank”更接近。

计算机如何确定应该更多地关注“River”和“Fish”而不是其他词呢?这就是Q(Query)和K(Key)的用武之地。它们是两种线性变换,帮助回答这个问题:在这个句子中,词语之间的相似度分数是多少?

首先,它们的输入都是相同的输入嵌入(我们先不考虑位置嵌入),假设有6个维度,如下图所示。

输入嵌入 对输入嵌入应用K和Q的线性变换,

输出经过MatMul、Scale、Mask和SoftMax的步骤,得到注意力权重,然后与V进行MatMul。然后我们得到最终输出,即值的加权和,其中权重由每个键与查询匹配的程度决定。因此,与原始嵌入相比,新的嵌入更多地捕捉了上下文关系。

例如,单词“bank”与“bank”、“river”和“fish”有最高的注意力分数。因此,模型会更多地关注这些输入词。

为什么我们要经历这个复杂的QKV转换呢?

如果我们被要求描述图片中的内容,我们的大脑不会从左上角一个像素一个像素地扫描,而是会立即关注场景中最突出的元素,比如画面中的男孩。这个过程既高效又有效,展示了注意力的力量。

如果你把QKV视为一组线性投影,代表所谓的注意力头,那么多头注意力就是拥有多组QKV并将输出串联起来。拥有多个头的好处是,它允许我们找到不同的相似性方面。例如,一个头可能专注于附近的名词,而另一个可能关注动宾关系。回到上面的图片,一个“头”可能检测到男孩,另一个看到球。

这就是QKV和多头注意力的直观解释。如果你想了解它的数学部分,“Attention Is All You Need”这篇原始论文是一个很好的起点。祝你学习愉快!

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

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

相关文章

深度学习TensorFlow2基础知识学习前半部分

目录 测试TensorFlow是否支持GPU: 自动求导: 数据预处理 之 统一数组维度 定义变量和常量 训练模型的时候设备变量的设置 生成随机数据 交叉熵损失CE和均方误差函数MSE 全连接Dense层 维度变换reshape 增加或减小维度 数组合并 广播机制&#…

C++ 预处理详解

目录 预处理符号 #define #define定义标识符 #define定义宏 #define的替换规则 #与## 带副作用的宏参数 宏和函数的对比 undef 命令行定义 条件编译 文件包含 头文件被包含的方式 本地文件包含 库文件包含 嵌套文件包含 预处理符号 __FILE__ //进行编译的源…

手写分析文件大小工具

背景: window 用久了磁盘变红了,又不想安装大文件分析的软件,突发奇想能否自己写一个代码,分析有哪些大文件 文件的单位,最高记作G // 文件大小单位static String[] fileSizeUnits {"B", "KB", …

【Spring Boot】如何在IntelliJ IDEA中由同一份spring boot源码运行多个不同端口的实例

我们需要使用一个服务有多个实例的测试场景,那么我们就需要在IntelliJ IDEA中通过不同的端口运行不同的实例,并且运行时的源代码是一样的,那么我们可以在IntelliJ IDEA这样操作,接下来以UserApplication服务为例: 复制…

Kafka 消费者 API 指南:深入探讨消费者的实现与最佳实践

Kafka 消费者 API 是连接应用程序与 Kafka 集群之间的关键接口,用于从 Kafka 主题中拉取消息并进行处理。本篇文章将深入探讨 Kafka 消费者 API 的核心概念、用法,以及一些最佳实践,帮助你构建高效、可靠的消息消费系统。 1. Kafka 消费者 A…

[CAD]接下来导出一张高清大图

选择输出-范围,点击右侧绿色画框,划区一个范围 点击输出区域并设置右侧选项。 下图,大大大 页面设置替代-大大大 输出即可,可以说是非常的清晰了

HttpRunner4 Python版(十二)自动化测试平台 实战开发接入案例 技术实现 功能逻辑大致梳理 实行方案初稿

前言 通过之前的文档相信你对HttpRunner 4.x Python版本以后有较为深入的理解和认识了,本文主要讲解 动化测试平台 实战开发接入案例 技术实现 功能逻辑大致梳理 实行方案初稿,后续具体案例需要根据自身项目组的功能去具体实现,并在日常维护工作中逐步完善并增加其健壮性。 …

使用pyscenedetect进行视频场景切割

1. 简介 在视频剪辑有转场一词:一个视频场景转换到另一个视频场景,场景与场景之间的过渡或转换,就叫做转场。 本篇介绍一个强大的开源工具PySceneDetect,它是一款基于opencv的视频场景切换检测和分析工具,项目地址: h…

Azure Machine Learning - 使用 Azure OpenAI 服务生成文本

使用 Azure OpenAI 服务生成文本 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士&…

DataGrip连接虚拟机上Docker部署的Mysql出错解决

1.1 首先判断CentOS的防火墙,如果开启就关闭 //查看防火墙状态 systemctl status firewalld //关闭防火墙systemctl stop firewalld.service//关闭防火墙开机自启systemctl disable firewalld.service而后可以打开DataGrip连接了,如果连接不上执行如下…

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(一)

背景:之前的框架,Selenium是3.x版本,现在更新到4.15版本后,一些写法如find_element_by_xxx 不再支持,改为find_element(By.xxx)的方式,同时由于Unittest不如Pytest在执行方面灵活(比如只执行冒烟…

【开源】基于Vue和SpringBoot的开放实验室管理系统

项目编号: S 013 ,文末获取源码。 \color{red}{项目编号:S013,文末获取源码。} 项目编号:S013,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

26、卷积 - 实际上是一个特征提取器

矩阵乘法的本质是特征的融合,卷积算法的本质是特征的提取。 回想一下之前所有介绍卷积的时候,描述了一种卷积运算的场景,那就是一个窗口在图片上滑动,窗口中的数值是卷积核的参数,也就是权值。 卷积的计算本质是乘累…

[组合数学]LeetCode:2954:统计感冒序列的数目

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 题目 给你一个整数 n 和一个下标从 0 开始的整数数组 sick ,数组按 升序 排序。 有 n 位小朋友站成一排,按顺序编号为 0 到 n - 1 。数组 sick 包含一开始得了感冒的小朋友的位置。如果位…

DS图应用--最短路径

Description 给出一个图的邻接矩阵,再给出指定顶点v0,求顶点v0到其他顶点的最短路径 Input 第一行输入t,表示有t个测试实例 第二行输入n,表示第1个图有n个结点 第三行起,每行输入邻接矩阵的一行,以此类…

Apollo新版本Beta技术沙龙

有幸参加Apollo开发者社区于12月2日举办的Apollo新版本(8.0)的技术沙龙会,地址在首钢园百度Apollo Park。由于去的比较早,先参观了一下这面的一些产品,还有专门的讲解,主要讲了一下百度无人驾驶的发展历程和历代产品。我对下面几个…

第3章 接入网

文章目录 3.1.1 接入网的定义与接口3.1.2 接入网的功能结构 3.1 接入网概述 3.1.1 接入网的定义与接口 电信网按网络功能分,分为:接入网、交换网和传输网。交换网和传输网合在一起称为核心网。 接入网(Access Network,AN&am…

在AWS Lambda上部署标准FFmpeg工具——Docker方案

大纲 1 确定Lambda运行时环境1.1 Lambda系统、镜像、内核版本1.2 运行时1.2.1 Python1.2.2 Java 2 启动EC23 编写调用FFmpeg的代码4 生成docker镜像4.1 安装和启动Docker服务4.2 编写Dockerfile脚本4.3 生成镜像 5 推送镜像5.1 创建存储库5.2 给EC2赋予角色5.2.1 创建策略5.2.2…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-3线性化Linearization

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-数学基础Ch0-3线性化Linearization 1. 线性系统 Linear System 与 叠加原理 Superposition2. 线性化:Taylor Series3. Summary 1. 线性系统 Linear System 与 叠加原理 Superposition…

Linux基础命令(测试相关)

软件测试相关linux基础命令笔记 操作系统 常见Linux: Redhat系列:RHSL、Centos、FedoraDebian系列:Debian、Ubuntu以上操作系统都是在原生Linux系统上,增加了一些软件或功能。linux的文件及路径特点 Linux没有盘符的概念&#xf…