看懂《LLM 的 3 种架构》所需要的最低装备——不背定义,只建立画面感
零基础可读 每个词配一个生活类比 标了"可以先跳过"
先说一句让你安心的话:那三篇文章里出现的技术名词,大概只有 8 个是你真正需要的,其余三十多个属于"见了面能打招呼就行,不必深交"。你现在难受,不是因为笨,是因为没人告诉你哪些可以跳过——于是每个词看起来都像必须弄懂,一起压过来就崩了。
这份材料就干两件事:① 用生活里的画面,把 8 个核心词讲清楚;② 明明白白告诉你,剩下哪些现在不用管。
所有大模型(ChatGPT、DeepSeek、豆包、千问……)剥到最里面,只做一件事:
看着前面已有的文字,猜下一个字(词)是什么。
猜完一个字,把它接到后面,再猜下一个。如此循环。你看到的"流畅回答",就是这几百上千次"猜下一个"接起来的结果。
模型不会认字。任何文字进去,都先要过三道加工:
模型把句子切成一个个小碎片,每块叫一个 token。中文里通常一个字或两个字的词算一块;英文里常常是半个单词(比如 unhappiness 可能被切成 un + happi + ness 三块)。
为什么要切?因为如果按"整词"记,字典会无限大、永远有没见过的词;切成小块,任何新词都能拼出来。
模型内部有一本固定的"字典"(词表,几万到十几万条),每个 token 对应一个编号。苹果 可能是 30875 号。这一步纯查表,没有智能。
编号再被换成一长串数字(比如 4096 个小数),这一串数字就代表这个词的"意思"。这串数字叫向量,这个转换动作叫嵌入(embedding)。
关键在这里:这一串数字不是随便给的,而是训练出来的,所以"意思相近的词,数字串也很接近"。苹果 和 香蕉 的数字串很近,和 螺丝刀 很远。
这是唯一必须硬啃的概念,也是最值得啃的。啃下它,三篇文章里 90% 的术语都通了。
看这句话:"小明把书给了小红,因为她明天要考试。"
"她"指的是谁?人一眼知道是小红。但模型怎么知道?它得让"她"这个字回头去看一圈上下文,发现"小红"最相关,于是把"小红"的信息"取"过来。这个"回头看一圈并取信息"的动作,就是注意力。
每个字都会生成三样东西:
| 名字 | 人话 | 类比(图书馆) |
|---|---|---|
| Q(Query,查询) | 这个字"想找什么" | 你在检索框里敲的关键词 |
| K(Key,键) | 别的字"能被什么找到" | 每本书的标题/标签 |
| V(Value,值) | 别的字"实际携带的内容" | 那本书的正文 |
流程就三步:① 拿"她"的 Q,去和每个字的 K 比对,算出一串"相关度";② 把相关度变成加起来等于 100% 的百分比(这一步叫 softmax);③ 按百分比,把所有字的 V 混合起来,得到"她"的新表示。
| 词 | 一句话 |
|---|---|
| 自注意力(Self-Attention) | Q、K、V 都来自同一句话内部——"自己人之间互相看"。上面那个例子就是自注意力。 |
| 多头(Multi-Head) | 同时开好几场小组会,每场关注不同的关系(这场管语法、那场管指代、另一场管语气),最后汇总。所以是"多头"。 |
| 点积(Dot Product) | 算 Q 和 K 有多像的数学操作。你不用会算,知道"算相似度"就够了。 |
| softmax | 把一堆分数变成"加起来等于 100%"的百分比。它是个函数名,不是概念。 |
Attention(Q,K,V) = softmax(QKᵀ / √d) · V
读法:Q 和 K 相乘(算相似度,得到一张"谁该看谁"的分数表)→ 除以 √d(防止数字太大导致 softmax 失真)→ softmax 变成百分比 → 乘以 V(按比例取内容)。
就这么多。这个公式你在原文里不会看到,看到了也不用管。
这是区分三种架构的唯一开关。理解它,三种架构就自然分开了。
模型在训练时,任务是"看着前文猜下一个字"。如果训练时它能看见后面的答案,它会怎么办?——直接抄。抄完考试满分,但什么也没学会。
所以要人为地把"后面的位置"遮起来。这个动作就是掩码(mask),专门遮未来的那种叫 causal mask(因果掩码,"因"在"果"之前,不能倒着看)。
还记得上一节那张"相关度分数表"吗?对于第 5 个字,它跟第 6、7、8 个字的分数,直接改成 负无穷。经过 softmax 之后,负无穷变成 0%——等于"完全看不见"。
画成矩阵就是这样(4 个字为例,蓝格=能看见,灰格=被遮住):
原文说的"上三角区域被遮住",就是这个灰三角。念的时候想:右上角是"未来",被涂灰了。
不盖纸。每个字都能看见全句,包括后面的。
它的产物是什么?一串向量——不是文字。它只负责"把整句读懂、压成一组带上下文信息的数字"。
所以它天生不适合直接写文章,适合"读完给个判断"。
盖纸。每个位置只能看见自己及之前的字。
它的产物是什么?下一个字的概率(92% 是"果"……)。选一个接上去,再来一遍。
所以它天生就是"续写机器",适合生成。
自回归(autoregressive)= 把自己刚才的输出,当成下一步的输入。说白了就是"一边吐一边吃回去"。
刚才生成的"果",接到"远方有棵苹"后面变成"远方有棵苹果",再拿这一整串去猜下一个字。循环。所以"自回归"和"一个一个 token 往外吐"是同一件事的两种说法。
"encoder-only 类型的 LLM 不像 decoder-only 和 encoder-decoder 那些有自回归。"翻译成人话:BERT(编码器)是一次把整句读完、一次给出结论,不会一个字一个字往外吐;GPT(解码器)才是边吐边接。
编码器读完会在句首放一个特殊占位符(BERT 里叫 [CLS]),把这个位置的向量接到一个小的分类层上,直接输出"正面/负面"。一次前向计算就出结果,不需要逐字生成。所以它不是不能输出,而是输出的是"判断",不是"文字"。
原文里会蹦出"预训练""微调",不解释会卡住。它们其实是一条流水线上的三道工序。
喂给它海量文本(整个互联网级别的量,这部分原料叫语料),任务只有一个:猜下一个字。猜错就调整内部参数,猜对就强化。反复几万亿次。
结果:它学会了语法、常识、世界知识、"话该怎么接"——但还不会听指令。
顺便:参数(7B、70B 那个 B 是 billion,十亿)就是这些可调整的数字总量。"参数越大"约等于"脑容量越大",但不等于"越好用"。
用几万到几十万条"人写的问答示范"再训一遍,教它听懂指令:看到"帮我总结"就总结,而不是顺着往下编。
结果:从"接话王"变成"助手"。
让人给它的多个回答排序(哪个更好),用这些偏好继续调。教它"说人话、别乱说、别有害"。
结果:从"助手"变成"你愿意聊的那个助手"。
BERT 不能"猜下一个字"(它没有掩码,会作弊),所以换了个玩法:完形填空——随机挖掉 15% 的词,让它根据左右文填回来(这个任务叫 MLM)。因为要填中间的空,它必须同时看左右两边,这就是"双向"的由来。
另外还有个任务叫 NSP:给两个句子,判断后一句是不是真的接在前一句后面。后来的 RoBERTa 发现这个任务没什么用,就把它去掉了。
提醒:你读的知乎那篇把 NSP 描述成"打乱语序让模型找正确顺序",这个说法其实指的是另一个任务(句子排序,ALBERT 用的)。但它后面举的例子是对的,按例子理解就行。
所有零件都齐了,现在把三种架构用"人话"说一遍。你可以拿这三句去对照原文。
| 架构 | 人话定义 | 它天生擅长 | 为什么(机制层) |
|---|---|---|---|
| Encoder-only BERT、RoBERTa |
只装编码器、不盖纸。通读全文,给一个判断。 | 分类、情感分析、找实体、抽关键词 | 能看前后文 → 判断更准;不逐字生成 → 出结果快、成本低 |
| Decoder-only GPT、Llama、Qwen、DeepSeek |
只装解码器、盖纸。顺着前文一个字一个字往下续。 | 对话、写作、代码、推理 | 只能看前文 → 天然匹配"猜下一个";任何任务都能改写成"续写" |
| Encoder-Decoder T5、BART、原始 Transformer |
两个都装。先通读原文,再边看原文边逐字写出译文。 | 翻译、摘要、按材料生成回答 | 编码器读全(不盖纸)+ 解码器逐字写(盖纸)+ 中间用"交叉注意力"随时回查原文 |
前面讲的注意力,Q、K、V 都来自同一句话(自注意力)。交叉注意力是把 Q 换成"解码器当前写到的地方",K 和 V 换成"编码器读完的原文"。
效果:解码器在写第 3 个词时,可以回头看原文的哪一部分最相关,从那里取信息。这就是翻译能做到"词对词对齐"的原因。
类比:同声传译。他一边听(编码器已经把整段听进去了),一边说(解码器逐词输出),说的过程中不断回看原话的对应位置。
把三篇里最容易卡住的句子挑出来,逐句给人话。建议:先读原文,卡住就回来查这一节。
| 原文怎么说 | 人话 |
|---|---|
| "这种架构更擅长'理解输入',所以其主要应用场景为文本分类、情感分析、信息抽取、命名实体识别等。注意力矩阵采用双向注意力计算,即每个字都能看到上下文得所有信息。" | 它不盖纸。理解"苹"这个字时,允许参考左边和右边的所有字。因为看得全,所以判断得准。适合"这段话是褒是贬""这句话里人名是哪几个"。 |
| "擅长按顺序生成,适合生成类任务……" | 会一个一个往后写。凡是"要产出一段文字"的活,都是它的地盘。 |
| "通过 causal mask 把'未来位置'遮住,这样便可以使大模型在生成前文时'看不到'后文。" | 盖纸。算第 5 个字的表示时,第 6 字及之后的信息被强制设成 0% 权重,等于看不见。目的是防止训练时偷看答案。 |
| "掩码自注意力(Masked Self-Attention):用于处理已经生成的译文。交叉注意力(Cross-Attention):用于从编码器输出的'原文'中提取关键信息。" | 解码器有两套注意力:一套管自己(只能看已写出的译文,也盖纸),一套管原文(随时回查,不盖纸)。前者保证不偷看未来,后者保证不跑题。 |
| "适合序列到序列,文本到文本的转换任务,比如翻译、摘要、问答生成。" | 输入一段、输出另一段,而且输出和输入要"对得上"。翻译最典型:每个译词都得在原句里有出处。"序列"就是"一串 token"的意思,念的时候直接换成"一段文字"。 |
| "三者都属于 Seq2Seq。"(知乎那篇) | 宽泛地说:三种都是"输入一串 → 输出一串"。但严格术语里 Seq2Seq 特指编码器-解码器那种结构,所以这句别原样抄进笔记,容易被挑。 |
| "encoder-only 集中于理解输入的内容,并做针对特定任务的输出。" | 它产出的是判断(一个标签、一个分数),不是文章。这是它和另外两种最本质的差别。 |
| "若任务以生成为主(如对话、写作),优先选择纯解码器架构;若需处理双向上下文(如问答、摘要),可考虑混合结构。"(百度那篇) | 如果你要的是"写东西",用不盖纸……不对,用盖纸的那种(只能看前文的);如果任务必须前后文一起看才能答对,就别用只能往前看的架构,改用"先读全再产出"的结构。 |
| "Decoder-only 几乎'统治'了 LLM 领域,是因为它在处理超大规模数据时表现出的涌现能力和推理效率更具优势。" | 涌现:模型大到某个规模,突然会做一些小模型完全不会的事(比如会算数学题了)。注意:这个说法在学界有争议,有人认为是测量方式造成的错觉。你只需要"知道有这么个词"。 |
| "DeepSeek 通过局部敏感哈希(LSH)将注意力限制在相似 token 之间。" | 一种"省算力"的技巧:不算所有词两两之间的关系(太贵),只用一种哈希把"长得像的词"分到同一批,只在这批里算。但这句本身是错的——LSH 是 Reformer 的方案,DeepSeek 用的是 MLA + MoE。你不需要懂这两个,只需要知道这篇不能全信。 |
| "MoE(混合专家)架构,每个 token 仅激活部分专家模块。" | 模型里养了很多个"专科医生",每个 token 进来只叫相关的几位会诊,不是全员出动。省算力。知道这个名字就够了。 |
| "量化(FP8 / INT8)"、"张量并行 / 流水线并行" | 都是部署和训练工程的活:前者是把数字精度降下来省显存,后者是把一个大模型拆到多张卡上跑。和"架构选型""提示词怎么写"完全无关,放心跳过。 |
按"要不要懂"分成三档。绿=必懂,蓝=知道名字就行,灰=现在可以完全跳过。
| 术语 | 一句话人话 | 在哪一节 |
|---|---|---|
| token 词元 | 文字被切成的小块,模型的最小处理单位 | §2 |
| 向量 / 嵌入 embedding | 用一串数字代表一个词的意思,意思近的数也近 | §2 |
| 注意力 attention | 每个字回头看一圈上下文,按相关度取信息 | §3 |
| Q / K / V | 我想找什么 / 我凭什么被找到 / 我携带什么内容 | §3 |
| 掩码 mask | 把不该看的位置权重设成 0 | §4 |
| 编码器 / 解码器 | 不盖纸的(读全,出判断)/ 盖纸的(只看前文,逐字写) | §5 |
| 自回归 autoregressive | 把自己刚写出的字接回输入,继续猜下一个 | §6 |
| 预训练 / 微调 | 先海量猜字学会说话,再用示范教它听话 | §7 |
| 术语 | 一句话 |
|---|---|
| Transformer | 2017 年提出的那套"注意力 + 编码器/解码器"的模型骨架,今天几乎所有大模型都是它的变体。 |
| 自注意力 / 交叉注意力 | 自己人互看 / 解码器回头看编码器读完的原文。 |
| softmax | 把一堆分数变成百分比、加起来等于 100% 的函数。 |
| 多头 | 同时开多场小组会,各关注不同的语言关系。 |
| 位置编码 / RoPE | 注意力本身不知道词的先后,需要额外告诉它"谁在前"。RoPE 是一种把位置"旋转"进 Q、K 里的做法,Llama 等在用。 |
| Seq2Seq | "序列到序列",指输入一段输出一段。严格用法专指编码器-解码器结构。 |
| 参数量(7B / 70B) | 模型内部可调整数字的总量,B = 十亿。约等于"脑容量",不直接等于好用。 |
| 语料 corpus | 训练用的原料文本,量极大。 |
| 损失 loss | 模型猜得有多离谱的一个数字。训练就是把这个数字压小。 |
| 对齐 / RLHF | 用人类"哪个回答更好"的偏好继续调,教它说人话、别乱说。 |
| 上下文窗口 | 它一次最多能"看见"多少 token。超了就得截断或压缩。 |
| 幻觉 hallucination | 编得很像真的、但其实是错的。原因是它只优化"接得像",不优化"接得对"。 |
| MLM / NSP | BERT 的两个训练任务:完形填空 / 判断两句是否相连。 |
| [CLS] / [SEP] / [MASK] | BERT 的三个特殊符号:句首占位(用来出分类结果)/ 分句 / 被挖掉的位置。 |
| 术语 | 为什么可以跳过 |
|---|---|
| 稀疏注意力 / 滑动窗口注意力 / LSH | 都是"怎么少算点"的省算力技巧,不影响你判断"该用哪种架构"。 |
| 张量并行 / 流水线并行 / 序列并行 / 专家并行 | 训练工程:怎么把模型拆到很多张显卡上。和你的使用场景无关。 |
| 量化(FP8 / INT8 / PTQ) | 部署工程:怎么把模型压小塞进设备。知道是"压缩"就行。 |
| MoE 混合专家 / MLA | 具体型号的内部设计,属于"研究这家人怎么做模型"的话题。 |
| 残差连接 / LayerNorm / FFN / SwiGLU | 模型内部的"稳定器"和"加工层",不影响你理解三种架构的分野。 |
| FlashAttention / 长上下文扩展 | 工程优化。看到当作"性能优化"四个字即可。 |
1. 为什么"猜下一个字"这个训练方式,必须配"盖纸"(mask)?
不盖的话模型能看见答案,直接抄,学不到东西。盖纸逼它只能靠前文推断。
2. 编码器和解码器,结构上最大的差别是什么?
加不加 causal mask(盖不盖纸)。加了就只能看前文,这样才能一个一个往后生成。
3. 为什么 BERT 适合做情感分析,不适合写文章?
它不盖纸、通读全文,擅长给出判断;但它没有"自回归"这个逐字往外吐的动作,产出的是标签而非文章。
4. 翻译为什么要用 Encoder-Decoder,而不是只用 Decoder-only?
因为译文每个词都得在原句里有出处,需要"先读全原文 + 边写边回查原文"(交叉注意力)。只用解码器也能翻,但要靠它自己"记住"原文,对齐性差、长句更容易漏。(这也是"为什么现在大家还是用 Decoder-only 做翻译"的争议点:规模够大时,它能靠上下文硬吃下来。)
最后一句话:你不需要懂 Q、K、V 怎么乘,也能读懂那三篇文章。你真正需要的只有一个画面——模型是顺着前文一个字一个字往下猜的;"盖不盖纸"决定了它能不能看见后文;能看见后文的擅长判断,看不见的擅长写。这句话立住了,剩下所有术语都只是它的注脚。