news 2026/8/4 22:20:35

大模型原理一次讲清楚:从机器学习、Embedding 到 Transformer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型原理一次讲清楚:从机器学习、Embedding 到 Transformer

你在使用大模型时,有没有想过:为什么同一个模型,既能解释概念,又能写代码、改文案,甚至还能顺着你的思路继续聊?

想看懂大模型原理,我们马上会撞上一串名词: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。它眼前要解决的,是一个更具体、更能训练的问题:给定一段文字,理解其中的关系,并继续生成合理的文字。

按照机器学习的思路,我们现在已经有了输入和输出,但还没法直接训练,因为中间至少有四个麻烦:

  1. 文字怎么变成模型能够计算的数字?

  2. 只有文字数字化还不够,模型怎么知道文字之间的关系,比如:“猫”和“狗”比较接近,而“猫”和“利率”相差很远?

  3. 一句话里的词互相影响,模型怎么找到这些关系?

  4. 模型算完以后,怎么一个 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 还会做几步处理:

  1. 把原来的信息加回来,避免只剩下别人提供的信息。

  2. 让每个 token 自己再加工一次刚拿到的内容。

  3. 调整数值,让一层一层计算时保持稳定。

这些步骤的具体名字可以先不记。只要知道:Attention 负责从上下文取信息,后面的处理负责消化信息,最终形成这一层的新向量。

这一层的新向量,会成为下一层的输入。

下一层再使用自己训练好的 Wq、Wk、Wv,重新生成一套新的 Q、K、V,再做一轮 Attention。

Attention 取信息 → 当前层继续加工 → 得到新向量 → 进入下一层 → 重新生成 Q/K/V。

Transformer 会把这样的结构堆很多层。第一层可能先找到“猫”和“吃”的直接关系;再往上几层,模型会在已经融合过的信息上继续计算,逐渐形成更完整的上下文表示。

它像是在一层一层重写每个 token 的表示,让它越来越贴合当前上下文

原始 Transformer 同时有负责读取输入的 Encoder 和负责生成内容的 Decoder。现在常见的 GPT 类大模型,大多采用 Decoder-only。

这里不需要记结构细节。只要知道:用户的问题和模型的回答会被放进同一条 token 序列,模型只能看已经出现的内容,然后继续预测下一个 token。

把整个使用过程串起来,就是:

  1. 输入文字经过 Tokenizer 和 Embedding,变成一组向量。

  2. 向量进入多层 Transformer,每层都用 Attention 取信息,再继续加工。

  3. 新向量进入下一层,重新生成 Q/K/V。

  4. 最后一层算出下一个 token 的概率。

  5. 模型选出一个 token,把它接回原文,再把整条链路跑一遍。

这样循环很多次,一段回答就生成了。

从用户输入问题,到模型生成回答,这个过程叫推理,也就是我们平时所说的“使用大模型”。

07

前面讲的是推理,模型又是怎么训练出来的?

推理时,模型里的参数已经训练好了,不会因为你问了一句话就重新改变。

那这些参数最初是怎么来的?

先看一个最简单的训练例子。语料里有一句:

完整语料:猫 / 正在 / 吃 / 鱼

模型看到:猫 / 正在 / 吃

正确答案:鱼

模型先按照前面讲过的流程,给出“下一个 token”的概率。如果它把“饭”预测得很高,把正确答案“鱼”预测得很低,就说明这次猜得不好。

训练程序会比较“模型的预测”和“真实答案”,算出误差,再从后往前调整模型里的参数,让下次预测“鱼”的概率更高一点。

这个从结果反过来调整参数的过程,叫反向传播。这里不用展开公式,只要记住:

预测 → 对照正确答案 → 计算误差 → 调整参数。

模型会在海量语料上把这件事重复无数次。Embedding 里的向量、每层 Attention 的 Wq/Wk/Wv、每层处理信息的参数以及最后的输出层,都会一起被调整。

Q、K、V 和注意力权重是每次运行时临时算出来的;真正训练并保存下来的,是生成它们的那些参数。

这和线性回归终于接上了:线性回归训练后保存 w 和 b;大模型训练后保存几十亿、几百亿甚至更多个参数。

7B、70B、671B,说的就是整个模型里可训练参数的总量,而不是 Q/K/V 的维度。模型文件占硬盘,主要保存的也是这些参数。

08

最后,把整条链路跑一遍

现在你问模型一句:“为什么天空是蓝色的?”

模型内部大致会发生这些事:

  1. Tokenizer 把文字切成 token。

  2. Embedding 把 token 变成基础向量。

  3. 每一层 Transformer 用 Attention 从上下文取信息,再继续加工。

  4. 新向量进入下一层,重新生成 Q/K/V,继续融合上下文。

  5. 最后一层给出“下一个 token”的概率。

  6. 模型选出一个 token,把它接回原文,再预测下一个。

  7. 重复很多次,形成完整回答。

如果只记三句话

**第一:**大模型没有跳出机器学习,仍然是“结构 + 参数”。

**第二:**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时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

KDBush核心原理揭秘:扁平KD树如何实现极速空间搜索?

KDBush核心原理揭秘:扁平KD树如何实现极速空间搜索? 【免费下载链接】kdbush A fast static index for 2D points 项目地址: https://gitcode.com/gh_mirrors/kd/kdbush KDBush是一款基于扁平KD树的超快速静态空间索引库,专为2D点数据…

作者头像 李华
网站建设 2026/8/4 22:14:53

告别运行库烦恼:Visual C++运行库合集终极指南

告别运行库烦恼:Visual C运行库合集终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经在打开某个游戏或软件时,突然弹出…

作者头像 李华
网站建设 2026/8/4 22:10:30

OpenClaw安全部署实战:从Docker权限控制到AI智能体风险防范

1. 项目概述:从“养虾”到“安全养虾”的认知升级最近在AI智能体圈子里,OpenClaw(俗称“小龙虾”)的热度持续攀升,几乎成了每个想尝鲜AI自动化的人绕不开的名字。它就像一个功能强大的“瑞士军刀”,能帮你连…

作者头像 李华
网站建设 2026/8/4 22:10:16

python+ffmpeg转码器

需求:一个转码器服务端和一个带界面的客户端,对于有自己运营点播直播节目的传媒行业的中小企业而言,就显得很重要很多自研转码器服务器的企业会采用C/C引用ffmpeg的结构来实现,作者曾经用pythonffmpeg的方法完美地实现了转码器服务器,支持多路点播以及直播转码的需求,也容易维护…

作者头像 李华