📌 图:Encoder-Only / Encoder-Decoder / Decoder-Only 三种架构(见原文) AI 应用技术全景图 · 第1篇 / 共16篇
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
程序猿Joe · 2026-08-03
大家好,我是程序猿Joe。
我刚工作那会儿,真以为 ChatGPT 是个"会聊天的搜索引擎"。直到有次让它写个排序算法,它边写还边把每一步解释出来,我才回过味儿来------这玩意儿根本不是在搜,它是在猜下一个字。
后来我把 Transformer 的论文翻了两遍,自己又跑通了一个小模型,才算看懂:所谓大模型,本质就是个概率意义上的"接词机器"。这篇我用最直白的话,把这层窗户纸捅破。建议先收藏,后面十几篇都建立在这个认知上。
一、先泼盆冷水:大模型不是在"理解",是在"接龙"
很多人对大模型的第一个误解,是觉得它"读懂"了你的意思。
真相没那么玄。你给它一句话,它只干一件事:根据前面已有的字,算出一个"下一个字最可能是什么"的概率分布,然后挑一个出来。挑完接上去,再算下一个。就这么简单,没别的。
这叫自回归生成。下面这张图就是它的日常:
📌 图:自回归生成:每次只猜下一个字(见原文)
所以你问它"1+1等于几",它并不是心算,而是从历史语料里接出了"2"最可能出现的模式。它能做数学、写代码,是因为训练数据里这类接龙样本太多,不是它真长了脑子。
记住这句话:大模型强在见多识广的接龙,弱在严谨的逻辑与事实。后面讲 RAG、Agent 都是在补它的短板。
二、Transformer 到底有几种"长相"?
现在市面上的大模型,底层几乎都是 Transformer。但同样叫 Transformer,内部结构差得挺多。按"编码器/解码器"怎么组合,能分成三派:
📌 图:Encoder-Only / Encoder-Decoder / Decoder-Only 三种架构(见原文)
1. Encoder-Only(只有编码器) 代表是 BERT。它不擅长接着写,擅长读完一整段后做判断------分类、情感分析、相似度。你司的工单自动分类,大概率就是这类模型在干活。
2. Encoder-Decoder(编码器+解码器) 代表是 T5、翻译模型。先读源语言,再写目标语言。早些年的经典架构,翻译、摘要玩得溜。
3. Decoder-Only(只有解码器) 代表是 GPT 系列,也是当下最主流的。它只干一件事:不停地猜下一个字。ChatGPT、Claude、通义、文心,全都是这路子。
为什么 Decoder-Only 赢了?因为它猜下一个字的能力,刚好能统一拿下聊天、写代码、翻译、摘要,一个架构通吃所有任务。简单,所以能堆到极大规模。
三、注意力机制:一句话讲清,不用背公式
Transformer 最核心的零件叫注意力机制(Attention)。教科书上来就是一堆矩阵,看得人头晕。其实一句话就能懂:
一句话里,每个词都会偷偷看其他词,然后按相关性强弱,把上下文重新搅和一遍。
📌 图:Query / Key / Value 直觉(见原文)
它内部有三个角色:
- Query(查询):当前这个词"我想找点什么信息";
- Key(键):每个词"我这里有什么"的标签;
- Value(值):每个词真正携带的信息。
流程:拿 Query 去和每个 Key 比相似度打分,按分数高低把对应的 Value 加权加起来。哪个词跟当前词关系大,它的 Value 就占更多比重。
比如"它把苹果吃了",模型处理"吃了"时,会重点看"它"和"苹果",从而知道吃的主语和宾语是谁。这就是注意力在干活。
四、这对我们写代码的有什么用?
别觉得这是算法岗的事,跟 CRUD boy 无关。现在但凡接大模型能力的系统,你都得懂这些:
1. 选模型看架构。 要做分类/打标,用 Encoder 类小模型又快又准;要做生成/对话才上 Decoder-Only 大模型。别拿 GPT 去干 BERT 的活,又慢又贵。
2. 理解幻觉从哪来。 因为它是接龙,训练数据里没见过、或者逻辑链长的,就容易接出一个听起来对但其实瞎编的字。这就是幻觉。后面讲 RAG 就是治这个。
3. API 调用时控长度。 自回归是一个字一个字吐的,输出越长越慢越贵。该限长度就限,别让它自由发挥。
python
from openai import OpenAI
client = OpenAI()
# max_tokens 直接决定它"接龙"能接多长,太长又慢又容易跑偏
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "用一句话解释 Transformer"}],
max_tokens=120
)
print(resp.choices[0].message.content)
五、我踩过的几个坑
坑1:以为模型"知道"答案。有次让它算一笔账,它接得有模有样,结果数字全错。后来我学会:凡是涉及精确计算,要么用 Function Calling 接外部计算器,要么把数据喂给它让它只做格式整理。
坑2:上下文给太满。注意力不是无限的,塞太多无关历史,真正重要的信息反而被稀释。这事后面专门有一篇讲 Context Engineering。
坑3:盲目追大模型。很多内部场景,一个 7B 的 Decoder 模型加好提示词,比硬上旗舰模型又快又便宜。架构懂了,才知道怎么选型。
六、一张表搞定:三种架构怎么选?
别死记定义,记住"干什么活用什么架构"就行:
| 架构 | 代表 | 擅长 | 典型场景 |
|---|---|---|---|
| Encoder-Only | BERT | 理解、分类 | 工单分类、情感分析、相似度 |
| Encoder-Decoder | T5 | 序列到序列 | 翻译、摘要、问答抽取 |
| Decoder-Only | GPT | 生成、对话 | 聊天、写码、Agent |
我司内部有个工单自动打标签的需求,一开始就上 7B 的 Decoder 模型,慢且贵;后来换成 100M 级别的 Encoder 小模型,延迟从 800ms 降到 40ms,准确率还更高。架构选错,再怎么调 Prompt 也救不回来。
七、我亲历的能力边界
有次我做内部知识问答,直接拿底座模型硬答,结果它把我们竞品的名字安到了自己产品上------典型的接龙接出了自信的胡说。那一刻我彻底明白:模型的"知识"截止于训练数据,逻辑链一长就露馅。
这也是为什么这套学习地图后面要讲 RAG(补知识)、Agent(补行动)、Context Engineering(补上下文)。Transformer 只是地基,上面那些才是工程里真正救命的。
八、动手数数 token
光说接龙抽象,跑一下就知道模型眼里文字长啥样。一个中文常被切成 1 个 token,但 emoji、"哈哈哈"这种可能被切好几段;英文 "chat" 可能刚好 1 个,长单词又会被拆开。
python
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
text = "大模型是怎么接龙的?"
print(enc.encode(text)) # 一串数字 id
print(len(enc.encode(text))) # token 数,往往比字数多一点
你会发现,计费、限速、上下文窗口,全按 token 算,不是按字。所以写 Prompt 越啰嗦,token 越蹭蹭涨。同样一段中文,丢进不同模型算出来的 token 数还不一样;我日常粗估费用就按"中文字数 × 1.5",八九不离十。跨模型比价时这点最容易被忽略。
三句话记牢:大模型是接词机器不是理解机器;Decoder-Only 靠自回归通吃生成任务;它的短板(知识/逻辑)靠后面 RAG、Agent 补。
九、写在最后
大模型不是魔法,是个见过海量文本的接词机器。它靠 Transformer 架构、用注意力把上下文搅匀;主流走 Decoder-Only 路线,靠自回归一个字一个字吐。
它强在广度,弱在严谨,所以才需要后面那一整套补丁:RAG 补知识、Agent 补行动、Skill 把经验固化下来。Transformer 只是地基,上面那些才是工程里真正救命的东西。
下一篇聊 Prompt Engineering:不改模型一个参数,光靠会提问就能让它脱胎换骨。这招是咱们工程岗性价比最高的武器,没有之一。
如果觉得这篇文章对你有帮助,欢迎点赞、收藏、转发!欢迎在评论区交流。
关于作者:程序猿Joe,从CRUD程序员到架构师的蜕变者,专治各种"代码癌症"。不定期分享技术干货,欢迎关注。