跳到主要内容

0.3 概率:语言模型的母语

明天到底下不下雨?​

天气预报说:「明天降水概率 70%」。

结果第二天是个大晴天。预报错了吗?——没有。70% 的意思从来不是「一定下雨」,而是:在气象条件跟明天相似的一大批日子里,大约 7 成下了雨。单看一天无所谓对错,看一百天就见真章。

这就是概率的本职工作:给「说不准」的事情标上精确的数字。

把所有可能的结果列出来,每个结果分配一个概率,全部加起来恰好等于 1——这张「可能性清单」就叫概率分布。比如一枚公平骰子的分布是:每一面各 1/6。

但如果骰子被灌了铅呢?分布就歪了——而且没人告诉你歪成什么样。想知道真相只有一个办法:多掷几次,数一数。

🎮 动手实验
概率实验室:从骰子到「语言骰子」
第一步:掷一枚被灌了铅的骰子,猜猜每一面的真实概率;第二步:掷一枚「语言骰子」,看语言模型是怎么说话的。

🎲 实验 A:这枚骰子被动了手脚

—
⚀ 1
—
⚁ 2
—
⚂ 3
—
⚃ 4
—
⚄ 5
—
⚅ 6
已掷 0 次

🗣️ 实验 B:掷一枚「语言骰子」

给定开头「今天天气真」,语言模型给每个候选词分配了概率——这就是它的骰子:

好
50%
不错
18%
冷
12%
差
8%
热
7%
蓝
5%
💡 要点:掷得越多,频率越接近真实概率——所以模型要用海量数据才能把概率估准。而语言模型生成文字,本质就是不断掷「下一个词」的特制骰子:这就是为什么同一个问题,大模型每次的回答可能不一样。

实验 A 告诉你的事:估概率要大量数据​

推荐玩法:先点几下「掷 1 次」——频率忽高忽低,完全看不出规律;点「掷 100 次」——轮廓渐渐浮现;再点「掷 10000 次」,然后勾选「显示真实概率」——蓝色频率条几乎严丝合缝地贴住橙色虚线。

这个现象(大数定律)对本书至关重要:想把概率估准,就需要海量的观察。语言模型要估的是「什么词接什么词」的概率,这样的组合有天文数字那么多种——这就是为什么训练大模型要吞下十几万亿词的文本(2025 年的主流规模):数据不够,概率就估不准,模型说话就会露怯。

实验 B 告诉你的事:生成文字 = 掷骰子​

再看实验 B。给定开头「今天天气真」,语言模型不会直接给出一个答案,而是给每个候选词分配概率:「好」50%、「不错」18%、「冷」12%……这张清单,就是一枚为这个开头特制的骰子。

生成下一个词的动作,就是掷这枚骰子——点几次「掷一次,生成一个词」你会看到:大部分时候出「好」,偶尔出「冷」,运气好还能抽中 5% 的「蓝」。

这一枚骰子,浓缩了大语言模型的全部工作方式,甚至可以写成全书最重要的表达式:

P(下一个词∣上文)P(\text{下一个词} \mid \text{上文})

读作「在给定上文的条件下,下一个词的概率」。ChatGPT 回答你的每一个字,都是掷了一次这样的骰子。这也顺手解开了一个著名谜团:为什么同一个问题,大模型每次回答不一样?——因为答案是抽签抽出来的,不是查表查出来的。

这个类比在哪里不准确?

真骰子有两个特点:每次概率不变、这次和上次互不影响。语言模型恰恰相反——每生成一个词,骰子就换一枚新的。「今天天气真」的骰子上「好」占 50%;可一旦生成了「好」,下一枚骰子(对应上文「今天天气真好」)就完全变了样,可能「,」和「啊」占大头。概率永远取决于当前上文,这正是「语言」比「骰子」难的地方,也是模型需要几千亿参数的原因。

小结​

本节要点
  • 概率分布 = 给每种可能结果分配概率、总和为 1 的清单。
  • 想把概率估准需要大量观察——这是大模型需要海量训练文本的根本原因。
  • 语言模型的本质是一枚「特制骰子」:P(下一个词∣上文)P(\text{下一个词} \mid \text{上文});生成 = 采样,所以每次回答可能不同。
  • 与真骰子不同,语言模型每生成一个词就换一枚新骰子——概率永远取决于上文。
📝 动手自测0/3
1. 天气预报说「降水概率 70%」,第二天没下雨。最合理的评价是?
2. 实验 A 里,为什么要掷上万次才能看清骰子的真实概率?
3. 为什么同一个问题,大模型每次的回答可能不一样?

延伸阅读​

  • 中学课本里的「用频率估计概率」一节——你会发现它就是大模型训练的第一性原理。
  • 下一节 0.4 导数与梯度:往哪边走能下山:知道了模型要学概率,那「学」的动作到底怎么执行?