LLM的基础模型6:注意力机制

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

本模块的核心目标之一是掌握如何构建和训练基础的Transformer模型。在我们深入讨论模型之前,有必要先来探讨一下注意力机制,这是Transformer模型中至关重要的组成部分。Transformer块在处理完输入序列后,会生成一系列不同的向量,这些向量实际上是用于所谓的“交叉注意力”机制的。本文分为两大部分,前部分则是通俗易懂的解释,后面的部分则是采用数学的视野去阐述。

小白解读(数学免疫)

给没有数学或者计算机背景的人解释注意力机制其实也不难。大模型某种意义上相当于人脑,很多模型的结构设计都来源于人脑。打个不恰当的比方,任何人看到一幅画面,或多或少都会被某个部分吸引,而且这个吸引点因人而异。这个被吸引的部分就是注意力机制。在大模型的训练过程中,通过样本不断地训练注意力机制相关的参数,让大模型能够快速的抓住上下文的重点,以便生成最妥当的后续内容。

从上图中可以看到注意力机制是任何自然语言处理的核心基石。

再举个例子,图书馆(语料)里有藏书(Value)。为了方便检索,每一本书都被做了标记(Key)。当任何人想要了解“漫威”(Query),系统(参数矩阵)会给根据要求给出相关条目以及条目的优先级,例如动漫有所关联,电影也有关联及乃至二战历史也有关联。

这时候大模型为提高效率,并不是所有的书都会仔细看。而是将一些关联度高的条目认真阅读,而关联度低的条目做概要扫描,然后就就对检索内容有全面的了解,之后就可以开始自动生成相关的内容。而注意力机制则是对应落地实现的一种高效算法。

注意力机制很早其实就有了,但是最有影响力的论文是2017年《Attention Is All You Need》,里面展示了如何将样例提炼最重要的信息。

注意力机制数学推理

首先,我们需要明确我们所使用的向量是什么,它代表了我们当前正在处理的标记。假设我们处于模型的第一层,那么输入的词嵌入向量就是我们所说的注意力向量。

注意力机制是通过三种类型的向量构建的:查询向量(Query)、键向量(Key)和值向量(Value)。对于当前处理的每个标记,我们都有一个查询向量;对于序列中的每个标记,我们都有一系列的键向量和值向量。通过将输入的词嵌入向量与特定的权重矩阵相乘,我们得到了查询向量。而查询向量(Q)、键向量(K)和值向量(V)都是通过模型学习得到的,这些权重在训练过程中不断调整。

文中有三个输入向量,每个向量4维。输入乘以权重矩阵之后得到各自的K和V向量。然后查询Q分别和K做点积运算(如图第1个蓝色框框的值为1*0+0*1+2*1=2)

分别求出每个蓝色框框的值之后,则将三个蓝色框架的值根据softmax归一化,即0+0.5+0.5=1

在注意力的计算公式中,使用查询向量(Q)与键向量(K)的转置进行点积运算,并应用softmax函数来获取每个键向量与查询向量的相关性得分。这样,我们就得到了一个与序列长度相同的注意力分数向量。然后用这些注意力分数对相应的值向量进行加权求和,得到最终的输出向量。

紧接着将蓝色框架的数值和V相差,然后累加得到第一个输出向量

注意力机制的关键在于,使用一个查询向量与序列中所有其他标记的键向量进行比较,以判断它们之间的相关性。这个过程在序列中的每个标记都可以并行计算,速度快,效果好。因此,在每次计算注意力时,我们会关注当前的查询向量,并将这个查询向量与所有的键向量进行比较,从而确定每个键向量与查询向量的相关程度。

以此类推,三个Q输入的时候,依次输出三个结果向量。注意的是,注意力机制可以多层,也就是这只是中间的某层。输出的结果可以作为下一层的输入。

总结一下,注意力机制其实要学习的就是三个矩阵,Q矩阵,K矩阵和V矩阵。它们用于和输入相乘,然后提炼出有效的信息存储于矩阵。

注意力机制的关键在于,使用一个查询向量与序列中所有其他标记的键向量进行比较,以判断它们之间的相关性。这个过程在序列中的每个标记都可以并行计算,速度快,效果好。

因此在每次计算注意力时需要关注当前的查询向量,并将这个查询向量与所有的键向量进行比较,从而确定每个键向量与查询向量的相关程度。

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

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

相关文章

MongoDB~索引使用与优化

Study by: https://docs.mongoing.com/indexeshttps://www.cnblogs.com/Neeo/articles/14325130.html#%E5%85%B6%E4%BB%96%E7%B4%A2%E5%BC%95 作用 如果你把数据库类比为一本书,那书的具体内容是数据,书的目录就是索引,所以索引…

NIST 电子病历中的疫苗部分的认证

美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)对电子病历的认证 分几个阶段,每个阶段又分门诊和住院,然后又分若干模块。下面是疫苗模块的数据提交的测试脚本。 170.302k_Immuniza…

数据提取:构建企业智能决策的基石

在数字化时代,数据已成为企业最宝贵的资产之一。而数据提取,作为数据分析和智能决策的第一步,正日益成为企业构建竞争优势的关键环节。本文将探讨数据提取的重要性、方法以及它如何为企业的智能决策奠定坚实基础。 一、数据提取的重要性 洞…

多线程..

线程定义:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中实际运作单位。简单来说,应用软件中相互独立,可以同时运作的功能。 多线程作用:有了多线程,我们就可以让程序…

【机器学习300问】108、什么是多项式回归模型?

一、多项式回归是什么 (1)举例说明 假设你经营着一家农场,想要根据土地面积来预测作物的产量。如果你只用线性模型(即),你可能会发现它并不足以描述实际的产量情况,因为实际产量可能会随着土地…

Acwing 786.第K个数

Acwing 786.第K个数 题目描述 786. 第k个数 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 100010; int q[N];int main() {int n, k;scanf("%d%d", &n, &k);for (int i 0; i < n; …

opencv进阶 ——(十三)基于三角剖分实现换脸

换脸的关键在于人脸对齐&#xff0c;人脸对齐主要包括以下几点&#xff1a; 1、人脸可能存在一定的角度&#xff0c;因此需要先将倾斜方向进行对齐 2、大小对齐&#xff0c;将模板人脸的大小缩放到同一大小 3、要想有好的效果&#xff0c;关键点选取很重要 4、人脸对齐后&a…

黑马python-JavaScript

1.JavaScript的定义&#xff1a; JavaScript是运行在浏览器端的脚步语言&#xff0c;是由浏览器解释执行的、简称js。它能够让网页和用户有交互功能&#xff0c;增加良好的用户体验效果 2.使用方式&#xff1a; 1.行内式&#xff08;主要用于事件&#xff09; <input type&q…

【大数据】计算引擎:Spark核心概念

目录 前言 1.什么是Spark 2.核心概念 2.1.Spark如何拉高计算性能 2.2.RDD 2.3.Stage 3.运行流程 前言 本文是作者大数据系列中的一文&#xff0c;专栏地址&#xff1a; https://blog.csdn.net/joker_zjn/category_12631789.html?spm1001.2014.3001.5482 该系列会成体…

JAVA技术设计模式

设计模式结构图 设计原则 职责单一原则接口隔离原则 一个类对另一个类的依赖应该建立在最小的接口上 依赖倒置面向接口编程,参数或变量,依赖注入,使用父类 开闭原则 对扩展开放(对提供方),对修改关闭(对使用方) 用抽象构建框架,用实现扩展细节 里氏替换原则…

java中的双列集合(Map,HashMap,TreeMap,LinkedHashMap)

双列集合的特点 双列集合一次需要存一对数据&#xff0c;分别为键和值 键不能重复&#xff0c;值可以重复 键和值是一一对应的&#xff0c;每一个键只能找到自己对应的值 键值这个整体 &#xff0c;我们称之为“键值对”或者“键值对对象”&#xff0c;在Java中叫做“Entry对象…

CAPL如何发送一条UDP报文

UDP作为传输层协议,本身并不具有可靠性传输特点,所以不需要建立连接通道,可以直接发送数据。当然,前提是需要知道对方的通信端点,也就是IP地址和端口号。 端口号是传输层协议中最显著的特征,传输层根据它来确定上层绑定的应用程序,以达到把数据交给上层应用处理的目的。…

【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(模型预测)

介绍 这篇文章是《【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类&#xff08;如何使用自定义数据集&#xff09;》的最后一部分内容&#xff1a;模型预测。 在本文中&#xff0c;我们将介绍如何测试模型的预测效果——让已训练好模型对一张新的图片进行分类&a…

在 SEO 中,一个好的网页必须具备哪些 HTML 标签和属性?

搜索引擎优化 &#xff08;SEO&#xff09; 是涉及提高网站在搜索引擎上的可见性的过程。这是通过提高网站在搜索引擎结果页面&#xff08;例如Google&#xff09;上的排名来实现的。网站在这些页面上的显示位置越高&#xff0c;就越有可能获得更大的流量。 搜索引擎优化涉及了…

跑mask2former(自用)

1. 运行docker 基本命令&#xff1a; sudo docker ps -a &#xff08;列出所有容器状态&#xff09; sudo docker run -dit -v /hdd/lyh/mask2former:/mask --gpus "device0,1" --shm-size 16G --name mask 11.1:v6 &#xff08;创建docker容器&…

Mac系统使用COLMAP

安装教程 如有出入&#xff0c;参照官网手册最新版 Installation — COLMAP 3.9-dev documentation 首先确保mac上安装了Homebrew 1.安装依赖项 brew install \cmake \ninja \boost \eigen \flann \freeimage \metis \glog \googletest \ceres-solver \qt5 \glew \cgal \s…

万里长城第一步——尚庭公寓【技术概述】

简略版&#xff1a; 项目概述主要是移动端&#xff08;房源检索&#xff1b;预约看房&#xff0c;租赁管理&#xff0c;浏览历史&#xff09;和后台管理&#xff08;管理员对房源进行操作&#xff09;&#xff1b; 项目使用前后端分离的方法&#xff0c;主要以后端为主&#xf…

rpm安装

rpm安装 命令格式&#xff1a; rpm 【选项】 文件名 选项&#xff1a; -i&#xff1a;安装软件 -v:显示安装过程信息 -h:用#表示安装进度&#xff0c;一个#代表2% -ivh&#xff1a;安装软件&#xff0c;显示安装过程 -e:卸载软件 -q:查看软件是否安装 -ql&#xff1…

信息系统项目管理师0147:工具与技术(9项目范围管理—9.3规划范围管理—9.3.2工具与技术)

点击查看专栏目录 文章目录 9.3.2 工具与技术 9.3.2 工具与技术 专家判断 规划范围管理过程中&#xff0c;应征求具备如下领域相关专业知识或接受过相关培训的个人或小组 的意见&#xff0c;涉及的领域包括&#xff1a;以往类似项目&#xff1b;特定行业、学科和应用领域的信息…

学习anjuke的过程

一、抓包 先看看12.25.1版本的APP是不是还能使用&#xff0c;如果还能使用我们就先破解低版本的。打开APP后发现还能正常使用&#xff0c;因为低版本的难度低我们就破解这个版本。低版本和高版本的算法是一样的&#xff0c;算法破解之后我们后续抓包替换接口就行了。手机安装上…