笃行
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
  • 向量入门

    • 看得见的机器学习数学
    • 向量是什么
    • 向量的加减与数乘
    • 线性组合与张成
  • 矩阵与变换

    • 矩阵是一次变换
    • 矩阵乘法
  • 度量与求解

    • 行列式与面积
    • 解方程组就是倒着走回去
    • 特征向量的直觉
    • 点积与相似度
  • 高维与结构

    • 高维空间的直觉
    • 正交基与投影
    • 秩与低秩
    • 长度与归一化
    • 线性与非线性
  • 概率与信息

    • 概率分布与采样
    • 期望与方差
    • 指数与 softmax
    • 对数与信息量
    • 交叉熵
  • 学习与优化

    • 导数就是坡度
    • 梯度下降
    • 链式法则与反向传播

分蛋糕和扔飞镖:一堆可能性,怎么落成一个结果

抽奖箱里 7 个红球、2 个蓝球、1 个金球。闭上眼睛摸一个——你最可能摸到红的,但这不代表你一定摸到红的。

🧠 一句话结论

分布就是把"一整块蛋糕"(总量 1)按可能性大小切成宽度不等的几段;采样就是闭着眼往切好的蛋糕上落一次点,落在哪段就是抽中哪个。段越宽越容易被落中,但窄段随时可能中——这就是"最可能"和"一定"之间的全部差别。


场景问题

学校门口摆了个抽奖箱,里头 10 个球:7 个红的、2 个蓝的、1 个金的。红球换一块橡皮,蓝球换一支笔,金球换一个书包。

同学甲摸完说:"肯定是红的,红的最多。"

结果他摸出个蓝的。

他不服气:"那我再摸,这次总该红了吧。"——又是蓝的。

甲开始怀疑箱子有问题。可箱子一点问题没有:红球最多,只意味着红球最容易被摸到,不意味着每次都摸到红的。 摸 10 次大概有 7 次红的,但具体哪几次是红的,谁也说不准。

这里头藏着两个必须分清楚的东西:"每种结果有多大机会"是一回事,"这一次到底出了哪个"是另一回事。前者叫分布,后者叫采样。

大模型每吐出一个字,走的就是这套流程。它先算出"下一个字是'的'的机会多大、是'了'的机会多大……",然后从这堆机会里摸一个出来。所以同样一个问题问两遍,答案可能不一样——不是模型三心二意,是它每次都在重新摸球。

实现方案

分布:把一块蛋糕切开

先把抽奖箱画出来。不画 10 个球,画一整块蛋糕:

一整块蛋糕,按机会大小切开红 · 占 7 成蓝 · 2 成金 · 1 成01

规则就两条:

  1. 每段的宽度 = 那个结果被摸中的机会大小
  2. 所有段加起来,正好是一整块(不多不少,机会总和是 1)

这张切好的蛋糕,就叫一个分布——它一次性说清了"每种结果各有多大机会"。

第二条规则值得多看一眼:蛋糕不能切多也不能切少。红球机会变大,别的球机会必然变小——它们在抢同一块蛋糕。这个"此消彼长"后面会反复用到。

采样:闭眼往蛋糕上落一次点

有了切好的蛋糕,"摸一个球"就变成了一个很具体的动作:闭着眼往蛋糕上落一个点,落在哪段就是哪段。

指针闭着眼一次次落下红蓝金落在宽段的次数多,但窄段随时可能中

盯住这个指针:它大部分时候落在最宽的红段上,但偶尔也会落到窄窄的蓝段、甚至金段上。这就是同学甲连摸两个蓝球的全部解释——不是箱子坏了,是他运气差。

从蛋糕里摸出一个具体结果的这个动作,就叫采样。

分布和采样的关系可以一句话说清:分布是"蛋糕怎么切的",采样是"这一下落在哪儿"。 蛋糕不变,落点每次都可能不同。

摸得够多,形状就露出来了

单看一次采样,什么也看不出来。但摸的次数一多,事情就变得很有规律:

摸的次数越多,柱子越长成 7 : 2 : 1 的形状红蓝金

摸个几千次,把每种结果各出现了多少次画成柱子,柱子的高度比例会长成 7 : 2 : 1——正好是当初切蛋糕的比例。

所以分布和采样是可以互相验证的:知道蛋糕怎么切的,就能预测长期摸出来什么样;反过来,摸得足够多,就能倒推出蛋糕是怎么切的。

但要记牢:这个规律只在次数多的时候成立。摸 3 次全是蓝球,一点也不奇怪。

只在最大的几段里摸:top-k

现在换个场景。模型每吐一个字之前,会切出一块有几万段的蛋糕——词表里每个字都占一段。

问题来了:这几万段里,绝大多数是明显不合适的字,各自只占极窄的一丝丝。可它们加起来也能占掉不小一块。一旦不小心落到那些丝上,吐出来的就是一个莫名其妙的字。

一个直接的办法:只留最宽的几段,剩下的全扔掉,然后把留下的重新摊开占满整块蛋糕。

原来的蛋糕:三大段 + 一大把细碎的丝只留最宽的 3 段,剩下全扔,留下的重新摊开占满这些丝加起来也不算少

这个做法叫 top-k:k 就是"留几段"。留 3 段就是 k=3。

好处很直接:那些莫名其妙的字根本没机会被落中了,因为它们已经不在蛋糕上。

从大到小凑够一个总面积:top-p

top-k 有个不太顺手的地方:留几段这个数字是死的,但每次的蛋糕形状是活的。

  • 有时候模型很确定,第一段就占了 95%,剩下的都是渣。这时候留 3 段,等于硬把两段渣塞了进来。
  • 有时候模型很犹豫,前 20 段宽度差不多。这时候只留 3 段,等于把 17 个同样合理的选择直接掐掉。

于是有了另一个办法:不数段数,改数面积。把段按宽度从大到小排好,从最宽的开始一段段往里收,收够一个说定的总面积(比如 90%)就停手。

模型很确定:一段就占了绝大部分收 1 段就够九成,停模型很犹豫:好多段宽度差不多得收 6 段才够九成 —— 收几段是自动变的

这个做法叫 top-p:p 就是"要凑够多少面积"。凑 90% 就是 p=0.9。

两者的差别可以一句话记住:top-k 是"数段数",段数是定死的;top-p 是"数面积",段数随蛋糕形状自动变。 模型确定时 top-p 自动收得紧,模型犹豫时自动放得宽——这正是 top-k 做不到的。

为什么这么做

为什么要把机会画成"一整块蛋糕",而不是各写各的数字?

因为蛋糕能把一件关键的事直接画出来:所有机会加起来必须正好是一整块。这意味着它们在抢同一块蛋糕——一个变大,别的必然变小。各写各的数字看不出这层关系,切蛋糕一眼就看出来了。

为什么要采样,不干脆每次都取最宽的那段?

因为每次都取最宽的,同一个问题问一百遍会得到一模一样的一百个答案。更麻烦的是它容易卡在一个圈里出不来:说完这个词最可能接那个词,说完那个词又最可能接这个词,来回打转。留一点随机,才能走出不同的路。

为什么 top-k 和 top-p 都要"扔掉一部分"?

因为几万段里那些极窄的丝,单看每一根都微不足道,加起来却能占掉相当一块。一旦落中就吐出一个莫名其妙的字,整句话就毁了。扔掉它们,等于把明显不合适的选项从桌上直接拿走——不是靠运气躲开,是让它根本不在场。

为什么别的选择不行

错误直觉一:以为"概率最大"就等于"一定会中"

同学甲的错就在这。红球占 7 成,说的是摸很多次里大概 7 成是红的,不是"这一次一定是红的"。剩下 3 成的机会实实在在地摆在那儿,落中它一点也不反常。

分不清这两件事的后果很具体:模型某次吐出一个不常见的词,你以为是模型出故障了,其实只是这次落点落在了窄段上——完全在设计之内。

错误直觉二:以为每次都取最宽那段最好

听起来最稳妥:每次都挑机会最大的,还能错到哪去?

会错在两个地方。一是说出来的话千篇一律:同一个开头永远导出同一段话,一个字都不带变的。二是容易在原地打转:最可能接的词说完,最可能接的又绕回来了,于是一句话翻来覆去地重复。

"每次挑最大的"看着是稳,实际上是把所有岔路口都焊死了——一条路走到黑,走进死胡同也出不来。

错误直觉三:以为 top-k 和 top-p 是一回事

它们数的东西根本不同:

top-ktop-p
数什么段数(留几段)面积(凑够多少)
留几段定死的随蛋糕形状自动变
模型很确定时硬塞几段渣进来自动收紧,只留那一段
模型很犹豫时把合理选项掐掉自动放宽,多留几段

把它们当成一回事的后果:你以为调 k 和调 p 效果差不多,结果在"模型很确定"和"模型很犹豫"两种场合下表现完全相反。

沉淀结论

  1. 分布 = 把一整块蛋糕(总量 1)按机会大小切成宽度不等的段,所有段加起来正好是一整块
  2. 采样 = 闭眼往切好的蛋糕上落一次点,落在哪段就是哪个结果——宽段容易中,窄段随时可能中
  3. 采样次数一多,统计出来的形状会长成当初切蛋糕的比例;但少数几次完全说不准
  4. top-k = 只留最宽的几段,段数定死;top-p = 从大到小凑够一个总面积就停,段数自动变
  5. "机会最大"不等于"一定会中";每次都取最大会让话千篇一律,还容易原地打转

记忆口诀

分布是蛋糕怎么切的,采样是这一下落在哪儿。
所有段加起来正好一整块,一个变大别的必然变小。
宽段容易中,窄段随时可能中。
摸得够多,形状就长成切蛋糕的比例。
top-k 数段数,top-p 数面积。

延伸阅读

  • 模型每吐一个字都在摸一次球:先算出几万个字各占多宽,再从这块蛋糕上落一次点。所以同一个问题问两遍答案可能不同——不是三心二意,是每次都在重新摸。详见大模型核心原理。
  • top-k / top-p 是生成时的两个旋钮:一个数段数、一个数面积,都是在落点之前先把明显不合适的选项从桌上拿走。详见大模型核心原理。

自测:合上资料能说清楚吗?

  1. 分布和采样有什么区别?
参考答案

分布是"蛋糕怎么切的",采样是"这一下落在哪儿"。

分布一次性说清每种结果各占多宽(所有段加起来正好一整块);采样是闭眼往切好的蛋糕上落一个点,落在哪段就是哪个结果。蛋糕不变,落点每次都可能不同。

  1. 红球占 7 成,同学连摸两个蓝球。箱子有问题吗?
参考答案

没问题,只是运气差。 "占 7 成"说的是摸很多次里大概 7 成是红的,不是"这一次一定是红的"。剩下 3 成的机会实实在在摆在那儿,连中两次一点也不反常。

"机会最大"和"一定会中"是两件事,只有摸的次数多起来,统计比例才会向 7 : 2 : 1 靠拢。

  1. 为什么不干脆每次都取机会最大的那段?
参考答案

会坏在两处。一是千篇一律:同一个开头永远导出一模一样的话,一个字不带变。二是原地打转:最可能接的词说完,最可能接的又绕回来,一句话翻来覆去重复。

每次挑最大看着稳,实际是把所有岔路口都焊死了——走进死胡同也出不来。

  1. top-k 和 top-p 有什么本质区别?
参考答案

数的东西不同:top-k 数段数(留几段,定死的);top-p 数面积(从大到小凑够一个总面积就停,留几段自动变)。

差别在两种极端情况下最明显:模型很确定时(第一段占 95%),top-k 会硬塞几段渣进来,top-p 自动只留一段;模型很犹豫时(前 20 段差不多宽),top-k 会把合理选项掐掉,top-p 自动多留几段。

  1. 为什么要扔掉那些极窄的段?它们不是本来就很难被选中吗?
参考答案

单看每一根确实微不足道,但几万根加起来能占掉相当一块。 一旦落中就吐出一个莫名其妙的字,整句话都毁了。

扔掉它们的意义在于:不是靠运气躲开这些选项,而是让它们根本不在场。风险从"小概率会发生"变成"不可能发生"。

最近更新: 2026/9/10 11:38
Next
期望与方差