
你问它一句话它没有理解你的问题也没有去查任何东西。它只干了一件事算出下一个 token 最可能是哪个从概率分布里挑一个吐出来然后把这个 token 接回输入的末尾再算一遍。反复几百次屏幕上就出现了一段看起来很像人写的话。我是十年后端转 AI 这一年把这条链路从头到尾拆过一遍——手稿、脑图、配图全是自己产的。这篇用 12 张原理图把这趟链路走完文本怎么变成数字、注意力到底在算什么、最后那个字是怎么被挑出来的。每停一站都回答一个你今天就可能撞见过的现象。 本文路线图①它只是在猜下一个 token一句话本质与整条数据流②分词为什么同样字数中文更吃 token③嵌入查表整数 id 怎么变成有语义的向量④位置编码不注入位置狗咬人和人咬狗一模一样⑤QKV每个 token 拿着检索词去和全场比对⑥缩放点积四步公式里为什么非要除以根号 d_k⑦因果掩码它为什么只能从左往右写⑧多头一个头只能盯一种关系⑨O(n²)上下文一长就又贵又慢的数学根源⑩Block残差、归一化、以及存知识的那三分之二参数⑪从 logits 到吐字温度和采样到底在调什么⑫收口为什么幻觉是固有特性不是 bug▍ 一、它只是在猜下一个 token整条链路长这样文本 →〔分词〕→ token id →〔查嵌入表〕→ 向量 →〔加位置信息〕→ 过 N 层 →〔LM Head 投影〕→ logits →〔温度 softmax〕→ 概率分布 →〔采样〕→ 一个 token →接回输入重来一遍。这叫自回归生成。它的训练目标是续写得像训练语料不是说得对——这一句话能解释你后面遇到的几乎所有现象为什么会一本正经胡说它求像、为什么字是一个一个蹦出来的一次只算一个、为什么对话越长越慢每个新 token 都要回看全部历史。后端视角先摆一个类比在这儿后面会反复用到这一趟就是一次没有索引的全表关联——每个 token 都要跟全场所有 token 比一遍所以代价是平方级的不是线性的。▍ 二、分词为什么中文更吃 token模型不认字符只认整数。分词器把文本切成token子词单元再映射成词表里的 id主流算法是BPE从字符开始反复把出现最频繁的相邻对合并成新单元直到词表达到目标大小。所以tokenization会被切成tokenization——高频词整块留着低频词拆成可复用的词根碎片。硬数字要看清它属于谁GPT-2 那一代的词表是50257后来某代分词器扩到10 万级——这些是该模型当年的规格不是现在都这样。经验换算也一样英文大约 4 个字符 1 个 token而中文一个汉字常被切成 1~2.5 个 token。直接后果就摆在你的账单上算钱、算上下文长度都按 token不按字数。同样字数的中文比英文更吃 token也更贵。▍ 三、嵌入查表id 变成有语义的向量光有整数 id 没用——id 之间没有数值意义。嵌入矩阵是一张可学习的查找表形状[词表大小 × d_model]token id 就是行号取出那一行向量作为这个 token 的初始表示。这张表是训练出来的训练完语义相近的词向量也相近。很多模型还把输入嵌入表和输出投影共享同一份权重省下一大块参数。 这里要跟另一个同名的东西划清界限本节说的是 token 级的嵌入是给模型内部用的你做 RAG 时那个把一整段话变成一个向量拿去检索的 embedding是另一回事那个要先过池化、还要归一化另有一套坑。两者名字一样用途完全不同别混。到这一步一句话已经变成了一个[序列长度 × d_model]的矩阵——这才是 Transformer 真正吃进去的东西。▍ 四、位置编码不注入位置词序就没了自注意力有个致命特性置换不变。它本质是对一组向量做加权求和不关心谁在前谁在后——只喂词向量的话狗咬人和人咬狗算出来完全一样。而语言的意义强依赖顺序。所以必须把位置这个信息额外注进去。原始论文用不同频率的正弦函数给每个位置算一个固定向量加到词向量上当前主流做法是 RoPE思路是按位置把 Q、K 向量旋转一个角度旋转后的点积只依赖两者的相对距离——用绝对编码的形式拿到相对位置的效果。位置编码这些年换过好几代、每一代解决什么问题那是另一篇的事。本篇只需要你记住一件事没有它注意力根本分不清词序。▍ 五、QKV拿着检索词去和全场比对进入心脏。一句话概括注意力每个 token 都去看序列里所有 token按相关度加权把别人的信息揉进自己的新表示里。对输入矩阵 X用三个可学习权重矩阵投影出三份QQuery我想找什么、KKey我能被什么匹配、VValue我携带的实际信息。三份形状都跟输入同量级只是各自学到的投影方向不同——同一句话先被翻成三种看法。论文里那个图书馆类比最好使你拿着检索词Q去和每本书的标签K比对匹配度高的书就多取它的内容V。注意 Q、K、V 全都是从同一个输入投影出来的——所谓自注意力自己既是提问方也是被检索方。后端视角再补一句这不是去外库查文档而是序列内部做一次全员互查查完把别人的信息按匹配度揉回自己。▍ 六、缩放点积公式里为什么除以根号 d_k核心公式只有一行原论文写作Attention(Q,K,V)softmax(Q·Kᵀ/√d_k)·V拆成四步看①Q·Kᵀ让每个 token 的 Q 和所有 token 的 K 做点积得到一个n × n的注意力分数矩阵第 (i,j) 格就是第 i 个 token 对第 j 个的关注度原始分②除以 √d_k③softmax按行归一化成概率每个 token 对全序列的关注度加起来等于 1④· V用这组权重对 V 加权求和得到融合了上下文的新表示。第 ② 步是面试最爱问的为什么。原论文脚注给的理由是d_k 越大点积的数值越容易变大会把 softmax 推进梯度极小的区域——原文的说法是the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients。除以 √d_k 把数值范围压回来梯度才健康网络才训得动。所以这个除法不是数学洁癖它是让训练能跑起来的必要条件。▍ 七、因果掩码它为什么只能从左往右写GPT 这类解码器做自回归生成预测第 i 个 token 时只能用 1…i 的信息绝不能看到 i 之后——训练时看到未来等于抄答案推理时根本没有未来可看。做法简单粗暴在 softmax之前把注意力分数矩阵的上三角全部置为负无穷softmax 之后这些位置的概率自然变成 0。为什么必须在 softmax 之前动手归一化按行求和之后再抹零会让剩下的概率加起来不等于 1。这一步正是 GPT 和 BERT 的分水岭BERT 是双向的能通读全文做完形填空适合做理解类任务GPT 是单向因果的只能向左看适合生成。你用的所有对话模型都在这条约束下工作——它写第 100 个字时永远不知道第 101 个字是什么。▍ 八、多头一个头只能盯一种关系不止一组 QKV而是h 个头并行把 d_model 切成 h 份每头维度d_k d_model / h各自独立算注意力最后把 h 个头的输出拼接、再投影回 d_model。动机是不同的头学不同的关系子空间——有的头盯语法主谓一致有的头盯指代它指的是谁有的头盯长距离依赖。单头只能学一种模式多头的意义是同一段话被几种关系同时读一遍再合成一份更完整的表示。规格看两个真实例子原论文的基础配置是8 个头、d_model512所以每头 64 维GPT-3 这个量级则是96 层、96 个头、d_model12288每头正好 128 维该模型论文表 2.1 的原值。注意这是这两个模型各自的规格不是行业标准——引用时必须带上「该模型」三个字别把一次配置写成全行业通例。▍ 九、O(n²)长上下文又贵又慢的根源注意力分数矩阵是n × n的计算和显存都随序列长度平方增长。序列翻倍注意力这块的开销变四倍不是两倍。这就是上下文窗口越长越贵越慢的数学根源。回到第一节那个类比它是一次没有索引的全表关联n 个 token 两两都要比一遍——你把表撑大一倍关联的代价就是四倍。模型一次能吃多少 token同时受三重限制卡着① 位置编码在训练时见过的最大长度② 这个平方级的算力开销③ 缓存历史 K、V 占用的显存。三条里任何一条先到顶窗口就到头了。当前各家的窗口从几千 token 一路做到百万 token 级这是产品现值、变得很快这里只给量级。至于服务端怎么靠缓存和显存管理把并发撑起来那是推理服务化那一篇的地盘本篇不展开。▍ 十、Block残差、归一化、和存知识的那三分之二一个 Transformer 层注意力子层 前馈子层每个子层都裹着残差连接和归一化N 层串起来就是模型主体。**残差**每个子层算的不是Sublayer(x)而是x Sublayer(x)。它给梯度开了一条直通底层的高速公路——几十上百层深的网络梯度反传会指数衰减没有残差根本训不动。**归一化**对每个 token 的特征做归一化稳住激活分布、加速收敛。**前馈网络FFN**注意力负责token 之间互相看FFN 负责对每个 token 单独做非线性变换知识主要就存在这里。结构是先升维再降维原论文的基础配置是 512 → 2048 → 512也就是4 倍这个惯例的出处。按纯算术算FFN 占了每层大约三分之二的参数每层参数量约等于12 · d_model²——拿 GPT-3 的 96 层、d_model12288 代进去量级正好对得上它的 175B。至于这几个零件这些年被换成了什么归一化挪到哪、激活函数换了几轮、FFN 变成多专家那是架构演进的话题本篇只讲它们各自在这一层里干什么。▍ 十一、从 logits 到吐字温度和采样在调什么最后一层输出的是隐向量。取最后一个 token 的隐向量乘以LM Head得到一个长度等于词表大小的向量logits——词表里每个 token 一个原始分数。然后softmax(logits / T)把它变成概率分布。温度 T就是除在 logits 上的那个旋钮T 小于 1分布变尖高分 token 更突出输出更确定更保守适合代码、事实问答T 大于 1分布变平更随机更发散适合头脑风暴T 趋近 0 等价于永远取最高分完全可复现。有了分布还要挑一个出来常见四种贪心每步取最大确定但容易复读top-k只在概率最高的 k 个里采样砍掉长尾**top-p核采样**取累积概率刚好到 p 的最小集合集合大小随分布动态变化比固定 k 更自适应束搜索同时保留多条候选序列适合翻译、摘要这种有标准答案的任务开放式生成里少用容易乏味。另外还有重复惩罚对已出现过的 token 调低分数、压制复读。所以调低温度回答就稳了这件事调的从来不是它有多聪明是它允许自己有多不确定。▍ 十二、收口幻觉为什么是固有特性回到第一节那句话它的训练目标是续写得像不是说得对。它没有内置的事实数据库也没有校验机制。遇到不知道的、超出知识范围的它照样按概率编一个最流畅、最像真的答案出来。所以幻觉是这套机制的固有特性不是一个等着被修好的 bug——缓解手段外挂检索、要求给引用、降温度都是在给这个概率过程加约束而不是给它装上知道自己不知道的能力。同源的还有另外两件事知识截止——它只知道训练语料截止之前的事问它今天必错它没有今天的概念上下文学习——不改任何权重只在 prompt 里给几个示例它就当场学会任务模式GPT-3 论文摘要里那句without any gradient updates or fine-tuning说的就是这件事这也正是提示词工程能work的底层原因。至于这一身本事是怎么来的预训练给脑子和知识监督微调教怎么对话对齐调价值观和偏好——三阶段各自的账怎么算、什么时候才轮到你自己去动权重那是微调那一篇整篇在讲的事。顺带说一句这个领域最反直觉的经验规律模型的效果随参数量、数据量、算力可预测地提升而 Chinchilla 那篇论文的摘要结论是模型规模和训练数据量应该等比例放大“for every doubling of model size the number of training tokens should also be doubled”。你常听到的20 个 token 配 1 个参数是从它的配置反推出来的经验比值不是论文原话引用时最好说清楚。下次再有人跟你说大模型能理解你的意思把第十二张图转给他——它的目标函数里从头到尾没有对这个字只有像。它不是在检索一个答案是在续写一段最像答案的文本。你后面学的所有工程手段——检索、工具调用、约束解码、评测——都是在给这个概率过程加约束。我会持续把 AI 落地里这些绕不过的底层机制一个一个拆成图。学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%免费】