你在使用大模型时,有没有想过:为什么同一个模型,既能解释概念,又能写代码、改文案,甚至还能顺着你的思路继续聊?
想看懂大模型原理,我们马上会撞上一串名词:Embedding、Transformer、Attention、Q/K/V(也常写作 QKV)、Decoder-only。
尤其是 Attention 机制。它到底解决了什么问题,又是怎么解决的?
这些名词不适合一个个硬背。更容易理解的办法,是把自己放到设计者的位置上:
假设我们要从零做一个大模型,会依次遇到什么问题?
文字怎么交给计算机?词和词的关系怎么判断?模型怎么记住前文?它又怎么一句一句生成回答?
每遇到一个问题,我们再拿出一个办法。沿着这条线走下来,那些看起来吓人的名词,其实都只是答案。
01
先从最熟的机器学习开始
机器学习最经典的例子,是线性回归。
假设你要根据面积预测房价,可以先写一个公式:
房价 = w × 面积 + b
这个公式里有两样东西。“面积和房价大致是线性关系”,这是我们先选好的结构;w 和 b 是可以调整的参数。
训练模型,其实就是拿很多真实房价数据,不断调整 w 和 b,让模型预测得越来越准。
训练结束后保存下来的模型,说白了,就是这几个训练好的参数。
机器学习的基本套路,就是先搭一个可调的结构,再用数据把参数调出来。
这个直觉放到大模型里,仍然成立。
大模型的结构复杂得多,参数从两个数字变成几十亿、几百亿甚至更多,但底层还是四个字:结构 + 参数。
这里顺便说清楚一个后面会反复出现的词:神经网络。
大模型并不是在机器学习之外又发明了一套东西。更准确地说,它仍然属于机器学习,只是使用了神经网络这种更复杂的机器学习模型结构。
你暂时不用理解“神经元”是什么,也不用研究每一层怎么连接。先把神经网络想成许多层公式连接在一起:里面有大量可以训练的参数,但归根结底,它也只能接收数字、计算数字。
后面要讲的 Transformer,可以看作一种特别适合处理文字序列的神经网络结构。
02
语言模型到底要预测什么?
对于语言模型,思路仍然没有离开机器学习。
房价模型是:输入房子的面积、地段、楼层,输出一个价格。
语言模型则是:输入前面的一组词,输出后面最可能出现的内容。
输入:猫 / 在 / 吃
希望输出:猫 / 在 / 吃 / 鱼
但计算机不会一次把整句话想好。它实际做的是:根据前面的内容,计算下一个 token 的概率。比如只看其中几个候选:
鱼:62%
饭:18%
东西:7%
飞机:0.0001%
模型先选出“鱼”,把它接回原文,再继续计算下一个 token。这样一步一步往后接,最后才生成一整句话。
输入前面的 token,预测下一个最可能出现的 token。
这个目标看起来只是在“接话”,却有一个很大的好处:很多任务都可以改写成文字。
“把这句话翻译成英文。”
“概括这份报告。”
“写一个判断质数的 Python 函数。”
任务不同,但都能放进输入里。自然语言由此成了一个通用接口。
大语言模型也不等于 AGI。它眼前要解决的,是一个更具体、更能训练的问题:给定一段文字,理解其中的关系,并继续生成合理的文字。
按照机器学习的思路,我们现在已经有了输入和输出,但还没法直接训练,因为中间至少有四个麻烦:
文字怎么变成模型能够计算的数字?
只有文字数字化还不够,模型怎么知道文字之间的关系,比如:“猫”和“狗”比较接近,而“猫”和“利率”相差很远?
一句话里的词互相影响,模型怎么找到这些关系?
模型算完以后,怎么一个 token 一个 token 地生成答案?
Tokenizer、Embedding、Transformer、Attention 和 Decoder,都是为了解决这些问题才出现的。
03
第一个麻烦:怎么把文字合理地变成数字?
这就回到了第一个问题:模型只会做数字计算,文字怎么送进去?
最直接的办法,是先给每个词一个编号:
猫 = 100
利率 = 101
狗 = 102
但编号只代表“它是谁”,不代表“它是什么意思”。
“利率”的编号紧挨着“猫”,不代表它们的意思很接近;“狗”的编号离“猫”更远,也不代表猫和狗的关系更远。
过去的 NLP 给出的关键思路是:不要只给文字一个编号,而要把文字放进一个可以计算距离的向量空间。
这就是 Embedding。
先看完整过程。输入“猫在吃鱼”,Tokenizer 会先切成 token,再给每个 token 一个 ID,最后去 Embedding 表里查出向量:
猫在吃鱼 → 猫 / 在 / 吃 / 鱼
猫 / 在 / 吃 / 鱼 → 125 / 67 / 884 / 391
猫 → [0.12, -0.31, 0.77, …]
吃 → [0.45, 0.08, -0.16, …]
鱼 → [0.19, -0.28, 0.69, …]
这里为了方便理解,先按词展示。真实的 Tokenizer 可能按字、词或词的一部分来切。
真实大模型里的向量可能有几千维,我们没法直接画出来,但可以把它想成一个高维坐标。Embedding 的好处是:文字之间的关系终于可以计算了。
在训练得比较合理的向量空间里
“猫”和“狗”通常更接近
“猫”和“利率”通常更远
原因并不是猫和狗长得像,而是它们经常出现在相似的语境里。猫和狗都容易与“宠物、喂养、动物、毛发”一起出现;利率更常和“银行、贷款、存款、金融”一起出现。
所以,Embedding 表达的不是字面长得像不像,而是:这些词在大量语料里,通常和什么内容一起出现。
这些向量也不是工程师一维一维填进去的。训练刚开始时,它们可以是接近随机的数字。模型不断做“预测下一个 token”的练习,猜错了就调整参数,Embedding 里的数字也会跟着调整。
两个词如果经常出现在相似语境中,就会接收到相似的调整,慢慢在向量空间里靠近。
Embedding 不是预先制作训练数据,而是模型结构的一部分;向量空间本身,也是模型从语料中训练出来的。
到这里,我们终于把文字合理地变成了数字。
但这些还只是 token 的基础向量。它知道“苹果”大概和什么有关,却还不知道当前这句话里的“苹果”究竟是水果还是手机。
04
第二个麻烦:预测下一个词时,该重点看谁?
现在,“猫”“正在”“吃”都已经变成向量了。
接下来,模型要预测后面最可能出现什么:
猫 / 正在 / 吃 / ____
“鱼”“饭”“东西”都有可能,“睡觉”的可能性就很低。
为了做出判断,模型需要回头看前文。但前面的词,对结果影响一样大吗?显然不是。
“吃”直接限定了后面更可能出现食物;“猫”又进一步告诉模型,这种食物最好符合猫的常见行为;“正在”也有作用,但通常没前两个词那么关键。
句子更长时,这个问题会更明显:
小明把苹果放进冰箱。过了一会儿,他打开冰箱,拿出____。
模型要预测“苹果”,就得重新找到前面已经隔了很多词的“苹果”和“冰箱”。
在 Transformer 之前,RNN、LSTM 这类模型通常一个词一个词往后读,再把前面记住的信息继续传下去,像排队传话。
这并不是说它们认为每个词都同样重要。真正的问题是:前面的信息要经过很多步才能走到后面,距离越长越容易变弱;训练时,后一步还要等前一步,也不容易大规模并行。
Transformer 换了一个思路:让当前 token 直接和前文各个 token 计算关系,再决定分别看多少。
原则上,前文里的 token 都可能参与计算;但重要的权重大,不重要的权重小。这就是 Attention,中文叫注意力机制。
Attention 不是简单挑出几个词、丢掉其他词,而是动态计算:当前这一步,应该把多少注意力放在前面的每个 token 上。
这让信息不必再一站一站往后传,也让训练时不同位置的计算更适合并行。Transformer 因此更容易在海量数据和大量计算设备上做大。
而 Transformer 实现 Attention 的核心,就是下一节要讲的 Q/K/V。
05
Q/K/V 如何算出“该看谁”?
Attention 的问题已经清楚了:当前 token 怎么算出对前文每个 token 的关注程度?
Transformer 会把每个 token 当前的向量,分别映射成三份新向量:
**Q = Query:**我现在想找什么信息?
**K = Key:**我能提供什么匹配线索?
**V = Value:**如果你关注我,我真正提供什么信息?
注意,Q/K/V 不是三个层,也不是把一句话切成三份。每个 token 都会同时生成自己的 Q、K、V。
继续看“猫 / 正在 / 吃”。我们重点看最后一个“吃”,因为模型会根据“吃”这个位置加工后的向量,预测下一个 token。
在开始匹配之前,三个 token 已经各自生成了自己的 K 和 V:
“猫”有 K猫,也有 V猫。
“正在”有 K正在,也有 V正在。
“吃”有 K吃,也有 V吃。
K 和 V 属于同一个 token,但用途不同:K 用来参与匹配,V 用来提供这个 token 真正携带的信息。
第一步,模型拿“吃”的 Q,分别去匹配“猫”“正在”“吃”的 K。经过计算,可能得到:
关注“猫”:0.45
关注“正在”:0.15
关注“吃”:0.40
这里的 0.45、0.15、0.40,就是 Q 和 K 算出来的注意力权重。
V 不是权重。V 是一串向量,装着对应 token 要提供的信息。
前面的“关注猫 0.45”,完整意思是:Q吃 和 K猫 的匹配结果为 0.45,所以从同一个“猫”那里取回 0.45 × V猫。
三个 token 的对应关系是:
Q吃 × K猫 → 权重 0.45 → 取回 0.45 × V猫
Q吃 × K正在 → 权重 0.15 → 取回 0.15 × V正在
Q吃 × K吃 → 权重 0.40 → 取回 0.40 × V吃
注意力权重只计算一次,没有“再给 V 加一次权重”。第二步只是拿刚才算出的同一组权重,去决定每个 V 取多少。
最后,把取回的三份信息合在一起:
Attention 输出 = 0.45 × 猫的 V + 0.15 × 正在的 V + 0.40 × 吃的 V
这个结果可以理解成“吃”在当前句子里的上下文摘要。它不再只是字典里的“吃”,还带上了“谁在吃、现在正在做什么”等信息。
经过后续 Transformer 层继续加工后,最终的输出层会根据这个上下文表示,计算下一个 token 的概率:
鱼:42%
饭:25%
东西:12%
睡觉:0.2%
Q 和 K 负责算权重,V 负责提供真正被取回的信息。
如果想看公式,对应的就是:
Q = XWq
K = XWk
V = XWv
Attention(X) = softmax(QKᵀ / √d) V
X 代表这一层所有 token 的输入向量;Wq、Wk、Wv 是训练后保存在模型里的参数。Q、K、V 则是模型每次读到具体内容时,现场计算出来的中间结果。
模型保存的不是“猫应该关注吃”这种固定关系,而是一套根据当前上下文计算注意力权重的方法。
06
Q/K/V 之后,Transformer 怎么循环起来?
一轮 Attention 算完,我们得到的是融合了上下文的新向量。
它不会直接变成下一轮的 Q。Transformer 还会做几步处理:
把原来的信息加回来,避免只剩下别人提供的信息。
让每个 token 自己再加工一次刚拿到的内容。
调整数值,让一层一层计算时保持稳定。
这些步骤的具体名字可以先不记。只要知道:Attention 负责从上下文取信息,后面的处理负责消化信息,最终形成这一层的新向量。
这一层的新向量,会成为下一层的输入。
下一层再使用自己训练好的 Wq、Wk、Wv,重新生成一套新的 Q、K、V,再做一轮 Attention。
Attention 取信息 → 当前层继续加工 → 得到新向量 → 进入下一层 → 重新生成 Q/K/V。
Transformer 会把这样的结构堆很多层。第一层可能先找到“猫”和“吃”的直接关系;再往上几层,模型会在已经融合过的信息上继续计算,逐渐形成更完整的上下文表示。
它像是在一层一层重写每个 token 的表示,让它越来越贴合当前上下文。
原始 Transformer 同时有负责读取输入的 Encoder 和负责生成内容的 Decoder。现在常见的 GPT 类大模型,大多采用 Decoder-only。
这里不需要记结构细节。只要知道:用户的问题和模型的回答会被放进同一条 token 序列,模型只能看已经出现的内容,然后继续预测下一个 token。
把整个使用过程串起来,就是:
输入文字经过 Tokenizer 和 Embedding,变成一组向量。
向量进入多层 Transformer,每层都用 Attention 取信息,再继续加工。
新向量进入下一层,重新生成 Q/K/V。
最后一层算出下一个 token 的概率。
模型选出一个 token,把它接回原文,再把整条链路跑一遍。
这样循环很多次,一段回答就生成了。
从用户输入问题,到模型生成回答,这个过程叫推理,也就是我们平时所说的“使用大模型”。
07
前面讲的是推理,模型又是怎么训练出来的?
推理时,模型里的参数已经训练好了,不会因为你问了一句话就重新改变。
那这些参数最初是怎么来的?
先看一个最简单的训练例子。语料里有一句:
完整语料:猫 / 正在 / 吃 / 鱼
模型看到:猫 / 正在 / 吃
正确答案:鱼
模型先按照前面讲过的流程,给出“下一个 token”的概率。如果它把“饭”预测得很高,把正确答案“鱼”预测得很低,就说明这次猜得不好。
训练程序会比较“模型的预测”和“真实答案”,算出误差,再从后往前调整模型里的参数,让下次预测“鱼”的概率更高一点。
这个从结果反过来调整参数的过程,叫反向传播。这里不用展开公式,只要记住:
预测 → 对照正确答案 → 计算误差 → 调整参数。
模型会在海量语料上把这件事重复无数次。Embedding 里的向量、每层 Attention 的 Wq/Wk/Wv、每层处理信息的参数以及最后的输出层,都会一起被调整。
Q、K、V 和注意力权重是每次运行时临时算出来的;真正训练并保存下来的,是生成它们的那些参数。
这和线性回归终于接上了:线性回归训练后保存 w 和 b;大模型训练后保存几十亿、几百亿甚至更多个参数。
7B、70B、671B,说的就是整个模型里可训练参数的总量,而不是 Q/K/V 的维度。模型文件占硬盘,主要保存的也是这些参数。
08
最后,把整条链路跑一遍
现在你问模型一句:“为什么天空是蓝色的?”
模型内部大致会发生这些事:
Tokenizer 把文字切成 token。
Embedding 把 token 变成基础向量。
每一层 Transformer 用 Attention 从上下文取信息,再继续加工。
新向量进入下一层,重新生成 Q/K/V,继续融合上下文。
最后一层给出“下一个 token”的概率。
模型选出一个 token,把它接回原文,再预测下一个。
重复很多次,形成完整回答。
如果只记三句话
**第一:**大模型没有跳出机器学习,仍然是“结构 + 参数”。
**第二:**Embedding 负责让文字变成可计算的向量;Transformer 负责让这些向量带上上下文。
**第三:**Attention 用 Q/K 判断该关注谁,再按权重取回 V;多层 Transformer 反复做这件事,最后完成下一个 token 的预测。
这就是 Transformer 成为现代大模型基础的原因:它既能在长上下文里动态寻找关系,又适合在大量数据和计算设备上并行训练。
Transformer 不是大模型的全部。
但它是把语言、上下文和生成连接起来的那套核心结构。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~