本文深入解析了大语言模型的自回归工作机制和Transformer架构,详细介绍了自注意力机制的基本原理、Q/K/V矩阵的核心作用,并通过Python代码直观展示了自注意力机制的计算过程,帮助读者理解大模型如何通过关注文本中的其他单词来生成上下文向量,实现强大的语义理解和生成能力。

一、自注意力机制(Self-Attention)

自注意力组件的输入(可能是token解析器的输出,也可能是另一个Transformer块的输出;为便于理解,此处暂以“文本”和“单词”代指数学层面的输入)为单个单词,它会对自身提出一个问题:“要理解当前这个单词,我需要重点关注文本中的哪些其他单词?”

这种机制被称为“自注意力”,核心原因是每个单词都会关注文本中的所有其他单词。

为便于理解,我们先暂不考虑权重,拆解自注意力机制的基本逻辑:自注意力会通过“关注所有其他单词”并“融合其嵌入向量”,为每个单词生成一个上下文向量(Context Vector) 。以下是“无可训练权重的自注意力”的实现步骤:

步骤1:生成嵌入向量

为文本“I like spiking neural networks”生成嵌入向量(示例中为3维的虚拟嵌入向量)。

步骤2:设定Q、K、V矩阵

在无训练权重的场景下,设Q=K=V(Q=查询矩阵Query Matrix,K=键矩阵Key Matrix,V=值矩阵Value Matrix),后续将进一步解释三者的作用。

步骤3:计算注意力得分

通过“当前单词的嵌入向量”与“所有其他单词的嵌入向量”进行点积运算(点积本质是“两个向量对应元素相乘后求和”),得到注意力得分。点积结果越高,说明两个单词的关联性越强;点积结果越低,说明关联性越弱。

此处,q(查询向量)代表当前单词(如示例中的“I”),k(键向量)代表所有单词的嵌入向量(包括当前单词自身,即“I”)。

此外,还可将点积结果除以“嵌入向量维度的平方根”进行缩放:在本示例的3维嵌入向量场景下,缩放作用不明显;但当嵌入向量维度超过1000时,缩放至关重要——若不缩放,下一步使用的softmax函数可能会生成接近0的值,影响模型效果。

步骤4:通过Softmax归一化注意力得分

对注意力得分应用Softmax函数,将其归一化为概率值(所有得分之和为1)。
这一步的核心作用是:明确“某个单词(如“spiking”)需要对另一个单词(如“neural”)投入多少注意力”。同时,Softmax函数能确保注意力权重始终为正值,使输出结果可解释为“概率”或“相对重要性”——权重越高,代表重要性越强。

步骤5:生成上下文向量

最终,通过“以注意力权重为权重,融合所有单词的值向量”,更新当前单词的表示:例如,“spiking”的新表示会融合所有其他单词的信息,这个输出结果就是上下文向量。

具体计算方式为:将“其他单词的嵌入向量”与“归一化后的注意力得分”相乘,再对所有结果求和。

关键特性:上下文向量的维度与输入嵌入向量的维度完全一致。

二、Q、K、V矩阵的核心作用

至此,你可能会疑问:Q(查询)、K(键)、V(值)三者的具体作用是什么?

  1. Query(查询):代表模型当前试图理解的单词/令牌;
  2. Key(键):每个单词/令牌都有对应的键向量,用于与查询向量匹配;
  3. Value(值):代表单词/令牌的实际内容;
  4. 匹配逻辑:当查询向量与某个键向量匹配时,模型会提取该键向量对应的“值向量”。

三、含可训练参数的自注意力机制

上述是“无任何可训练参数”的自注意力机制基础逻辑。在实际的Transformer块中,自注意力组件会使用可训练的Q、K、V投影矩阵——这些矩阵本质是“可学习的权重”,能将输入令牌的信息投影到三个不同的空间,从而实现注意力计算。

因此,同一个单词会生成三个不同的向量:Q(查询向量)、K(键向量)、V(值向量)。

该架构与前文“无线性投影的自注意力”基本一致,区别仅在于:前文将投影矩阵设为“单位矩阵”(即Q=K=V,与输入嵌入向量完全相同),而实际架构中使用“可训练的线性投影矩阵”。

上图展示了Transformer块中“原始自注意力模块”的结构:

  1. 首先计算Query矩阵与Key矩阵的点积;
  2. 对结果进行缩放并归一化,得到注意力得分;
  3. 将注意力得分与Value矩阵相乘并求和,最终输出包含丰富语义信息的上下文向量。

示例说明

以句子“I like spiking neural networks”(“我喜欢脉冲神经网络”)为例:

  1. 若以“spiking”为查询向量(Query),它会通过“我需要哪些单词来定义自己?”的逻辑,与所有单词的键向量(Key)(I、like、spiking、neural、networks)进行匹配;
  2. 匹配后,“spiking”与“neural”(神经)、“networks”(网络)的得分更高;
  3. 因此,“spiking”的上下文向量会更多地融合“neural”和“networks”的值向量(Value)信息。

四、为何需要Q、K、V三个独立矩阵?

以多义词“bank”为例(可表示“银行”或“河岸”):

  1. 当“bank”作为查询向量(Query)时,若要表达“银行”含义,需与“loan”(贷款)等单词的键向量匹配;
  2. 当“bank”作为键向量(Key)时,需同时承载“银行”和“河岸”两种含义,以匹配不同场景的查询;
  3. 若不区分Q、K、V,模型将失去这种“根据上下文灵活调整语义匹配”的能力。

此外,Q、K、V矩阵均为可训练参数,能将向量投影到不同的子空间:例如,查询向量(Q)可侧重“语义角色”,键向量(K)可侧重“语义关联”,值向量(V)可侧重“内容细节”——这种分工能大幅提升模型的表达能力。

结论:不区分Q、K、V的机制虽更简单、计算成本更低,但会失去Transformer模型核心的“强表达能力”,无法实现高效的语义理解与生成。

五、用Python代码直观理解自注意力机制

以下通过简洁的Python代码,复现含可训练参数的自注意力机制步骤:

import torch
import torch.nn as nn
import torch.nn.functional as F

# 设置随机种子为25,确保结果可复现
torch.manual_seed(25)

"""步骤1:为文本生成嵌入向量"""
# 输入文本为“I like spiking neural networks”,嵌入向量维度设为4
# 张量形状:(序列长度=5, 嵌入维度=4)
X = torch.randn(5, 4)
print("输入嵌入向量:\n", X, "\n")

embed_dim = X.size(1)  # 嵌入维度 = 4
d_k = d_v = embed_dim  # 为简化计算,设键向量、值向量维度与嵌入维度一致


"""步骤2:初始化Q、K、V矩阵"""
# 初始化Q、K、V的权重矩阵
W_Q = torch.randn(embed_dim, d_k)
W_K = torch.randn(embed_dim, d_k)
W_V = torch.randn(embed_dim, d_v)

# 计算Q、K、V(通过输入嵌入向量与权重矩阵的矩阵乘法)
Q = X @ W_Q  # 形状:(5, 4) @ (4, 4)(5, 4)
K = X @ W_K  # 形状:(5, 4)
V = X @ W_V  # 形状:(5, 4)

print("查询矩阵Q:\n", Q, "\n")
print("键矩阵K:\n", K, "\n")
print("值矩阵V:\n", V, "\n")


"""步骤3:计算Query与Key的点积,得到注意力得分"""
# 计算注意力得分(Q与K的转置矩阵相乘)
scores = Q @ K.T  # 形状:(5, 4) @ (4, 5)(5, 5)
# 对得分进行缩放(除以键向量维度的平方根)
scores = scores / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))

print("原始注意力得分(Softmax前):\n", scores, "\n")


"""步骤4:通过Softmax将注意力得分归一化为概率"""
# 应用Softmax函数,得到注意力权重(按最后一个维度归一化)
attn_weights = F.softmax(scores, dim=-1)  # 形状:(5, 5)
print("注意力权重:\n", attn_weights, "\n")


"""步骤5:注意力权重与Value矩阵相乘并求和,生成上下文向量"""
# 对值向量进行加权求和,得到上下文向量
context = attn_weights @ V  # 形状:(5, 5) @ (5, 4)(5, 4)
print("输出上下文向量:\n", context, "\n")

# 步骤5结束后,即可得到输入序列对应的上下文向量

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2025 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》下方扫码获取~
在这里插入图片描述

① 全套AI大模型应用开发视频教程

(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
在这里插入图片描述

② 大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
在这里插入图片描述

③ 大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
在这里插入图片描述

④ AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
在这里插入图片描述

⑤ 大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
在这里插入图片描述

⑥ 大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

图片

以上资料如何领取?

在这里插入图片描述

为什么大家都在学大模型?

最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

图片

不出1年,“有AI项目经验”将成为投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!
在这里插入图片描述
在这里插入图片描述

这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

以上全套大模型资料如何领取?

在这里插入图片描述

Logo

更多推荐