news 2026/4/17 8:44:42

遇事不决注意力机制!一文搞懂Transformer核心,从QKV到多头注意力的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
遇事不决注意力机制!一文搞懂Transformer核心,从QKV到多头注意力的完整指南

0 前言

在上一篇文章中,我们学习了词嵌入和位置编码的概念,由于Transformer不认识文字,因此我们需要将文本转化为数据,也就是我们说的词嵌入

光有词嵌入还不够,还需要让Transformer学习词与词之间的位置关系,因此多了一个位置编码,最终将二者相加,得到了Transformer的输入。

这篇文章我们主要了解的是Transformer的注意力机制,如果不了解词嵌入和位置编码的朋友,可以先阅读一下上一篇文章,[彻底搞懂Transformer01:文本到底是怎么转化为数据的?]直接阅读本文也没关系,输入无非就是一个矩阵,细节我们不了解也不影响我们学习自注意力机制。

老规矩,上Transformer的架构图:

1 思维导图

Transformer的结构非常复杂,但是所有的复杂都源于基础的堆砌,因此把每个结构都了解清楚了,整体的网络模型自然也就不是问题。

Transformer主要分为编码器和解码器,我们今天要说的自注意力机制在编码器和解码器中都会用到,也是整个Transformer的整个精髓所在,现在大多数模型,效果不好,就是遇事不决,注意力机制,由此可见注意力机制的地位。

看一下我们要学习的内容,在上一节中,我把自注意力机制和多头注意力分开了,我觉得这二者还是放在一起说比较好。

另外将Add & Norm层和前馈神经网络放到了一起,等到这几部分内容都学习完之后,我们就知道了编码器的结构,再学习解码器的结构,最后看整体结构Transformer的整体结构和一些细节问题,因此本篇文章重点:自注意力机制。

  • 输入处理:词嵌入与位置编码
  • 自注意力机制
  • Add & Norm层和前馈层
  • 解码器的结构
  • 整体结构

要了解自注意力主要学习以下五个部分:

  • Q K V矩阵是啥,干什么用的?
  • 如何计算注意力权重?
  • 得到了权重之后,怎么计算出注意力的结果?
  • 如何通过单个注意力扩展到多头?
  • 输入与输出的参数关系有什么注意的地方?

学习了以上几点,你就可以彻底掌握自注意力机制,也能回答你心中的疑问,机器是哪来的注意力的。

2 Q K V矩阵

首先通过感性的认识介绍一下QKV矩阵的作用。

设想一下我们的输入每一维是一本书,并且每一本书有自己的标签(Key)、和内容(Value),你现在要在这些书里查询(Query)你想要的信息,并且汇总。

比如你要查询去北京游玩的攻略,现在有三本书:标签是北京的景点、北京的交通和以及北京的经济,V是这些书的内容,Q是你要查询的问题,如果是你的话,你会怎么做呢?

你肯定60%的精力去看关于景点的书,30%的精力去看交通的书,10%的精力了解一下北京的经济,这大概就是注意力机制一个非常抽象的理解,这个注意力,就体现在你的重视程度上(注意力分数,也可以说是权重百分比)。

2.1 Q K V矩阵的计算

有了以上感性的认识,我们直接进入真正的Q K V的计算。

假设我们的输入数据X是一个3×6的矩阵,此时我们需要用Wk、Wq以及Wv三个矩阵来提取输入的QKV信息,并且把Wk、Wq以及Wv三个矩阵的大小设置为6×2,输入X与Wk、Wq以及Wv三个矩阵相乘,计算得到QKV,大小为3×2。

QKV矩阵就计算出来了,就这么简单。

2.2 注意力权重的计算

得到了QKV矩阵后,我们再依据注意力机制的公式,来计算注意力的分数(权重),计算注意力机制权重的公式为:

那么放到我们这个例子里就如下图,最终得到一个Y矩阵,也是我们的注意力分数,大小为3×3。

2.3 注意力结果的计算

将计算得到的Y矩阵再与V矩阵相乘,得到结果Z:

在计算得到Z后,我们已经由输入X,得到了结果,由此注意力机制的结果就计算结束了,在这里我们总结一下整个计算过程:

  • 1、我们将输入X兵分三路,分别乘以一个Wk、Wq以及Wv来得到Q K V矩阵;
  • 2、将Q矩阵与K的转置矩阵相乘,除以根号dk,再经过softmax函数得到Y矩阵,也就是注意力分数;
  • 3、将Y矩阵与V相乘得到最终的结果Z

3 多头注意力

那么什么是多头注意力呢?

实质上就是多次使用注意力机制,再拼接的结果。

我们知道由于Transformer里面是由多个一模一样的模块堆砌而成的,为了结构简洁明了,因此我们尽量保持输入与输出一致。

我们刚才可以看到,我们的输入是3×6矩阵,输出是3×2矩阵,因此多头注意力机制中,其实就是用多个相同的注意力机制得到结果后,再将结果拼接到一起,使得输入和输出大小一致。

如下图将Z1、Z2、Z3按照列拼在一起,得到Z,大小为3×6,继续进入下一个相同的模块中:

此时我们再回过头来看注意力机制的计算图和多头注意力机制的图,就一目了然了:

4 参数关系

我们再来研究一下这里面矩阵的关系。

4.1 大小关系

我们的输入大小是3×6,最终要求输出的大小也是3×6,是需要满足一定的关系的。

  • 1、Q与K的转置要能够相乘,那么Q矩阵和K矩阵大小至少要保持一致。
  • 2、注意力分数矩阵的大小是一个正方形,长和宽为输入X的行数。
  • 3、dmodel=dv×num_heads,即输入X的列数=V矩阵的列数×注意力的头数。

验证一下:我们的dmodel=6,dv=2,注意力个数为3,6=3×2。

4.2 举例理解

再多说一句注意力机制的物理含义,我们再来举一个例子:假设现在有3个职业的人在一起,分别为厨师(K)、医生(K)和体育老师(K),他们分别懂得做菜(V)、健康(V)和运动的知识(V)。现在:

  • 1、厨师想要了解健康和运动的知识(Q);
  • 2、医生想要了解做菜和运动的知识(Q);
  • 3、体育老师想了解做菜和健康的知识(Q);

假设他们各自懂的的知识为1×6的向量,放在一起就是3×6的输入X,我们按照文章前面的流程,用Wk、Wq以及Wv三个矩阵来提取输入X的Q K V信息,然后计算得到注意力的分数矩阵Y,大小为3×3。再将Y与V相乘,并且由多头注意力机制得到结果:

我们仔细研究一下Y与V相乘的过程,Y矩阵里面的分数通过softmax得到,每一行的概率加起来为1。

通过Y矩阵我们可以看到他们三人对自己本身的职业并不感兴趣,对对方的职业更感兴趣一些,因此自己对自己的注意力分数不高,对别人的注意分数要高一些。这也就是自注意力机制中“自”的来源,自己对自己的注意力。

通过矩阵相乘的方法,可以得到结果,最终Z11里面包含了20%的厨师的知识,45%的医生的知识,35%体育老师的知识。以此类推,Z1 Z2 Z3里面最终每一行里面最终包含的知识既有厨师自己的,也有医生的也有体育老师的,因此达到了各自的目的,厨师了解到了自己想要知识,其他人也一样,这就是注意力的体现。

再多说一句,Y矩阵是可以训练的,因此具体的注意力分数,是根据实际训练得到的。大家不要认为自己对自己的注意力没有意义,我在这里只是简单举个例子,在实际应用中,这个分数也是很重要的。

最后我们再看上图,虽然输入X和输出Z都是3×6,但是输出的信息中。已经包含了他们各自感兴趣的信息,并且是有权重的,这就是注意力机制的精妙之处。

注意力机制讲完了,下一篇:Add & Norm层和前馈层。

那么,如何系统的去学习大模型LLM?

作为一名深耕行业的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:44:57

软件开发测试全流程指南

引言在数字化转型加速的2025年,软件质量已成为企业核心竞争力的关键要素。本文基于现代软件工程实践,结合敏捷开发与DevOps理念,为测试从业者提供一套覆盖全生命周期的测试方法论和实践指南,帮助团队构建更可靠、可维护的软件产品…

作者头像 李华
网站建设 2026/4/16 14:07:24

揭秘Open-AutoGLM配置难题:3个关键步骤避免90%的安装失败

第一章:Open-AutoGLM Linux 安装教程系统环境准备 在安装 Open-AutoGLM 之前,需确保 Linux 系统满足最低运行要求。推荐使用 Ubuntu 20.04 LTS 或更高版本,系统应具备 Python 3.9、pip 包管理工具及 Git。更新系统软件包索引:sudo…

作者头像 李华
网站建设 2026/4/15 10:31:01

Open-AutoGLM定位修正黑科技(仅限内部使用的3个参数调整技巧)

第一章:Open-AutoGLM坐标定位误差修正技术概述在高精度地理信息系统(GIS)与自动驾驶融合的应用场景中,坐标定位的准确性直接影响系统决策的可靠性。Open-AutoGLM作为一种基于大语言模型与空间推理耦合的智能定位框架,引…

作者头像 李华
网站建设 2026/4/11 20:32:36

从数据库到事件流:现代清结算系统架构全指南

——重构金融级系统的底层逻辑与技术演进清结算系统是任何交易类平台最核心的“稳定器”。它的职责并不显山露水,却直接决定交易能否闭环、账务是否一致、风险能否被识别、对账是否可靠。在数字化金融时代,用户规模、交易链路、并发量不断扩大&#xff0…

作者头像 李华
网站建设 2026/4/12 0:21:26

python基于强化学习和大模型的船舶停靠航行记录 船舶避碰系统_5824700g

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 python基于强化学习和大模型的船舶停靠航行记录 船舶避碰…

作者头像 李华
网站建设 2026/4/14 23:41:27

Open-AutoGLM重大更新:弹窗识别效率飙升,准确率仍保持99.9%+

第一章:Open-AutoGLM 弹窗识别速度提升在自动化测试与UI交互场景中,弹窗的快速准确识别是保障流程连续性的关键。Open-AutoGLM 通过优化视觉模型推理路径与引入异步事件监听机制,显著提升了弹窗检测的响应速度。模型推理流水线重构 传统串行处…

作者头像 李华