08 · 大模型是个超级自动补全,这事关尊严¶
先讲给朋友听(如果你只有一分钟)¶
大模型没有大脑,没有世界观,它甚至不理解自己在说什么。它毕生只练一门手艺:猜下一个词。你看到的"思考""推理""创造力",都是上万次快速猜词拼出来的幻象。这不丢人——人类语言学家承认吧,人类大脑的直觉,有时候也就是高级一点的模式补全。
你的 Aha Moment¶
每一个 Java 老段位工程师转 AI,心里都横着一根刺:"这玩意不就是个更会聊天的正则表达式吗?凭什么叫人工智能?"
今天把这话掰开。
模型生成一句回答,内部的真相是:它把"现在纸上已有的字"扫一遍,然后对下一个字,给出几万种候选字的概率分布。 选一个,写下来,扫一眼,再猜下一个。一个字一个字往外蹦——对,就是 05 篇那个 yield 的节奏——直到蹦出"回答完毕"的标记。
没有任何一步叫做"理解",每一步都叫"接话"。
Aha 通常发生在这个瞬间:当你接受它是个接话机器,那些玄学问题瞬间全部落地。
- 为什么会幻觉(一本正经胡说八道)?接话机器没有"我知道"和"我不知道"的概念,只有"下一个词最可能是什么"。你问它一个偏门问题,它也要接——接得越流畅,越像真的。
- 为什么 Prompt 有用?你不是在"下指令",你是在给接话机器布置上文语境。"请用JSON回答"和"请随便聊聊"决定了接话往哪个风格流。
- 为什么 Few-shot 有效?给三个示例,等于给它打了"接话模板"的样,后面照着接。
- 为什么微调有用?用大量"好回答"样本再训练,等于把它接话的品味往你的业务方向掰了一点点。
"超级自动补全"不是贬低它,是解开它的钥匙。 你数据结构的底子如果还在,想想 Trie 树的自动补全——那个只会在"输入前缀已知"的世界里接话的小玩意;LLM 是它的究极进化版,只是它接话的依据是几乎整个人类互联网。
不讲术语的版本:三段式成人礼¶
一个聊天机器人的诞生,要过三关。用你 IT 圈最熟悉的职场来类比:
第一段:预训练——通识教育。
把互联网上几乎全部公开文本(几十万亿字)灌给它,训练目标只有一个:猜下一个词,猜错了就调参。这个阶段不教礼貌、不教逻辑,就是海量阅读。读完之后,它认识了语法、常识、代码风格、甚至各个领域的黑话,但它同时是个"接话疯子"——你问他"今天天气",它可能接一句"真好,昨天也是"(因为在训练数据里这种接法出现频率高)。
这个阶段耗资数百万美元起,产出叫"基座模型"(Base Model)。跟你没关系,你永远只消费它的产出。
第二段:SFT(监督微调)——入职培训。
工程师们手工/半自动编写几十万条"理想对话",比如:
用这些高质量样本再训练一轮,模型学会了"对话的规矩":要有角色感(用户/助手)、回答要切题、要懂礼貌。训练完,基座模型从接话疯子变成懂规矩的客服。 市面上绝大多数开源模型(Qwen、Llama、DeepSeek)发布时都已经是这个阶段。
第三段:RLHF / DPO(人类反馈强化学习)——绩效考核 + 企业文化。
让模型一个问题的多个回答排个队,人类标注员投票哪个好,用这些偏好数据训练一个"打分模型"(Reward Model),再用强化学习打磨主模型:高分的回答风格被强化,低分的被抑制。
这一阶段教给模型"安全"与"人类偏好":哪些话不能说(违法、偏见)、什么样的回答人类爱听(有条理、有结构、有自知之明"作为AI模型")。ChatGPT 们温文尔雅的性格,90% 来自这里。
三段式对你的实际意义:你用 API 调用的、在公司部署的,全都是"入职培训 + 绩效考核"都完成了的成品。你不需要懂任何一段的数学,但你必须知道模型身上带着前两段的烙印——所以它懂礼貌、懂结构、懂拒绝,但依然会幻觉。 18 篇会教你怎么用 LoRA 微调给它补"你公司的黑话课",那是你的第二次机会。
Java 老司机对照室¶
| LLM 圈的黑话 | 你已经懂的概念 | 一句话翻译 |
|---|---|---|
| 上下文 window(8k/128k/1M tokens) | 滑动窗口 / LRU 缓存 | 模型的"工作记忆容量",超出的部分它真的想不起来 |
| 幻觉 hallucination | 过拟合输出 | 模式匹配过度自信,没有 ground truth 校验 |
| temperature 温度 | 采样随机性参数 | 掷骰子的尺度,0 = 永远选最可能的,越高越发散 |
| top_p 核采样 | 概率截断 | "只在概率排名前 p% 的候选里抽签" |
| system prompt | 全局配置 / 拦截器规则 | 每轮对话前强制注入的"岗位说明书" |
| few-shot | 模板 + 示例数据 | 用示例把格式"焊死"进接话方向 |
| 思维链 CoT | 中间步骤展开 | 让它把推理过程写出来,往往答案质量更高(相当于 chain-of-responsibility) |
| fine-tuning 微调 | 模型定制训练 | 用你的领域数据给它"补课",不进也能干,进了更香 |
| RAG | 查询时外挂知识库 | 开卷考试代替闭卷背诵(第 12 篇主角) |
| function calling | 远程过程调用 RPC | 让模型吐结构化参数,由你的代码执行(第 14 篇主角) |
这张表建议截图贴工位。LLM 圈 80% 的"新概念",拆开都是你见过的软件工程旧相识。
动手实验室¶
实验 1:用 30 行代码手写一个"超级自动补全"¶
没有 API、没有模型、零依赖。你即将亲手实现 LLM 生成的内核——下一个词概率分布 + 按温度采样:
import random
class MiniLLM:
"""一个迷你版大模型:只认识 4 个词,但它五脏俱全"""
def __init__(self):
# 每个上文对应的下一个词概率分布(真实模型这里是上万亿参数)
self.brain = {
"今天": {"天气": 0.6, "周末": 0.3, "股市": 0.05, "加班": 0.05},
"天气": {"很": 0.7, "不": 0.2, "有": 0.1},
"很": {"好": 0.9, "差": 0.1},
"周末": {"去": 0.5, "不": 0.5},
"不": {"加班": 0.9, "出门": 0.1},
}
def sample_next(self, word, temperature=1.0):
"""temperature=0:永远选最可能的(贪婪, deterministic)
temperature=1:照概率掷骰子
temperature>1:放大随机性,让冷门词也有机会"""
probs = self.brain.get(word, {"。": 1.0})
if temperature == 0:
return max(probs, key=probs.get)
# 核心一步:按温度缩放 log 概率
scaled = {w: p ** (1 / temperature) for w, p in probs.items()}
total = sum(scaled.values())
r = random.random() * total
for w, weight in scaled.items():
r -= weight
if r <= 0:
return w
return list(probs)[-1]
def generate(self, start, n, temperature=1.0):
out = [start]
for _ in range(n):
nxt = self.sample_next(out[-1], temperature)
out.append(nxt)
if nxt == "。":
break
return "".join(out)
llm = MiniLLM()
# 温度 0:确定性生成,每次结果一模一样(评测/线上服务常用)
print("T=0:", [llm.generate("今天", 6, temperature=0) for _ in range(3)])
# 温度 1:照概率生成,每次不一样
print("T=1:", [llm.generate("今天", 6, temperature=1.0) for _ in range(3)])
# 温度 5:很疯,冷门词也接得出来
print("T=5:", [llm.generate("今天", 6, temperature=5.0) for _ in range(3)])
跑完对比三组输出,你会亲眼看到:
- T=0 组三行完全一样——线上系统(客服机器人、代码生成、结构化输出)几乎都开低温,要稳定复现
- T=1 组每次不同,但都在"天气/周末"两个高频分支上打转——接话的本质暴露无遗
- T=5 组跑出"今天股市加班"这种胡话——这就是幻觉的玩具版:它接得流畅,但完全不代表事实
p ** (1 / temperature) 这一步是整个实验的灵魂:温度越高,低概率词被相对放大,骰子越"不公平地随机"。真实模型的温度机制与此同构,只是概率表有上万亿行、每步扫一遍的上下文不是 4 个词而是几万个 token。
这个实验建议讲给同事听。 当你用 30 行代码复刻了"ChatGPT 生成内核的最简骨架",你对整个行业的祛魅就完成了——而祛魅,正是你工程化驾驭它的起点。
实验 2:幻觉现场体验(无需代码)¶
打开任意对话模型,依次问:
- "《Java编程思想》第四章的标题是什么"——大概率流畅编造(幻觉)
- "我们公司 2026 年报销流程第几条写了什么"——必然不知道(知识截止)
- 同样的问题问两遍,看答案是否有细微差异(采样随机性)
在笔记里记下这三个瞬间。18 篇 LoRA 微调和第 12 篇 RAG,治的都是这些病。
费曼复述卡¶
- 向产品经理解释:为什么说"模型不是在思考,是在接话"?举一个幻觉的例子说明这个解释的力量。
- 三个训练阶段(预训练/SFT/RLHF)用职场类比讲给同事听:通识教育、入职培训、绩效考核各教了什么?
- 实验 1 里 temperature 从 0→5,输出发生了什么变化?为什么线上客服系统工程师会把温度设成 0?
三题过不了,回到"不讲术语的版本"重读第二段。第二阶段是全程唯一的概念密度区,慢一点没关系——这些概念会在后面 12 篇(RAG)和 14 篇(Agent)里反复兑现,读不懂的地方先标记,实战会替你补上。
今日一句话¶
大模型不是会思考的神,是个读过全互联网的接话机器——幻觉是它的胎记,温度是它的骰子,Prompt 是你给它的上文。