0.3 概率:语言模型的母语
明天到底下不下雨?
天气预报说:「明天降水概率 70%」。
结果第二天是个大晴天。预报错了吗?——没有。70% 的意思从来不是「一定下雨」,而是:在气象条件跟明天相似的一大批日子里,大约 7 成下了雨。单看一天无所谓对错,看一百天就见真章。
这就是概率的本职工作:给「说不准」的事情标上精确的数字。
把所有可能的结果列出来,每个结果分配一个概率,全部加起 来恰好等于 1——这张「可能性清单」就叫概率分布。比如一枚公平骰子的分布是:每一面各 1/6。
但如果骰子被灌了铅呢?分布就歪了——而且没人告诉你歪成什么样。想知道真相只有一个办法:多掷几次,数一数。
🎲 实验 A:这枚骰子被动了手脚
🗣️ 实验 B:掷一枚「语言骰子」
给定开头「今天天气真」,语言模型给每个候选词分配了概率——这就是它的骰子:
实验 A 告诉你的事:估概率要大量数据
推荐玩法:先点几下「掷 1 次」——频率忽高忽低,完全看不出规律;点「掷 100 次」——轮廓渐渐浮现;再点「掷 10000 次」,然后勾选「显示真实概率」——蓝色频率条几乎严丝合缝地贴住橙色虚线。
这个现象(大数定律)对本书至关重要:想把概率估准,就需要海量的观察。语言模型要估的是「什么词接什么词」的概率,这样的组合有天文数字那么多种——这就是为什么训练大模型要吞下十几万亿词的文本(2025 年的主流规模):数据不够,概 率就估不准,模型说话就会露怯。
实验 B 告诉你的事:生成文字 = 掷骰子
再看实验 B。给定开头「今天天气真」,语言模型不会直接给出一个答案,而是给每个候选词分配概率:「好」50%、「不错」18%、「冷」12%……这张清单,就是一枚为这个开头特制的骰子。
生成下一个词的动作,就是掷这枚骰子——点几次「掷一次,生成一个词」你会看到:大部分时候出「好」,偶尔出「冷」,运气好还能抽中 5% 的「蓝」。
这一枚骰子,浓缩了大语言模型的全部工作方式,甚至可以写成全书最重要的表达式:
读作「在给定上文的条件下,下一个词的概率」。ChatGPT 回答你的每一个字,都是掷了一次这样的骰子。这也顺手解开了一个著名谜团:为什么同一个问题,大模型每次回答不一样?——因为答案是抽签抽出来的,不是查表查出来的。
真骰子有两个特点:每次概率不变、这次和上次互不影响。语言模型恰恰相反——每生成一个词,骰子就换一枚新的。「今天天气真」的骰子上「好」占 50%;可一旦生成了「好」,下一枚骰子(对应上文「今天天气真好」)就完全变了样,可能「,」和「啊」占大头。概率永远取决于当前上文,这正是「语言」比「骰子」难的地方,也是模型需要几千亿参数的原因。
小结
- 概率分布 = 给每种可能结果分配概率、总和为 1 的清单。
- 想把概率估准需要大量观察——这是大模型需要海量训练文本的根本原因。
- 语言模型的本质是一枚「特制骰子」:;生成 = 采样,所以每次回答可能不同。
- 与真骰子不同,语言模型每生成一个词就换一枚新骰子——概率永远取决于上文。
延伸阅读
- 中学课本里的「用频率估计概率」一节——你会发现它就是大模型训练的第一性原理。
- 下一节 0.4 导数与梯度:往哪边走能下山:知道了模型要学概率,那「学」的动作到底怎么执行?