Attention→K3 三十天课 · Day 4 / 30 课程首页 面试视角 自测题
Day 4 · 概率与采样

打完分之后,AI 不是「选冠军」,而是「抽签」

Day 1 我们说过:AI 每说一个 token 之前,会给词表里所有候选各打一个分。但「打完分选谁」这一步,藏着一个很多人用了一年 AI 都没搞懂的旋钮——温度。今天把它彻底讲透,顺手解决一个日常困惑:为什么同一个问题问两次,答案会不一样。

学完你能回答
AI 每次都挑最高分的 token 吗?
学完你能回答
「温度」和「top-p」有什么区别?
学完你能回答
为什么同一个问题问两次,答案会不同?

1起点:这些你早就会了

今天的主角是「随机」——但别怕,你这辈子早就在跟它打交道了。先把日常经验翻译成 AI 术语:

你已经会的AI 世界里对应的东西
老师批卷:每份卷子都得一个分数AI 给词表里每个候选 token 各打一个分;分数再换算成可能性,合计正好 100%
庙会抽签:好签放得多、烂签放得少,抽到好签的机会大加权随机采样:分数越高的候选,被抽中的概率越大——但不是必然
音箱上的音量旋钮:拧大拧小,随你调温度(temperature):调「随机程度」的旋钮,从「永远挑最高分」到「放飞自我」
按得票率从高到低拉名单,凑够 95% 的票就封箱——票集中时只留几个人,票分散时要拉进十几个top-p:只在累计概率排进前 p% 的头部候选里挑,长尾直接砍掉
掷两次骰子,点数常常不一样同一个问题问两次,AI 的答案也可能不一样
成语接龙走错一步,后面越接越离谱一个 token 抽偏了,后面所有的打分都跟着变

今天的全部内容,就是把中间三行讲透。

2打完分之后:不是谁分高谁上

先回忆 Day 1 的画面:你输入「今天天气真」,AI 给候选打分——「好」55%、「不错」22%、「糟」8%(数字示意,下同)。直觉上下一步应该是「选好,因为它分最高」。很多入门文章也是这么写的。但真实情况是:大多数时候,AI 不直接选冠军,而是按分数比例抽签。

什么叫按分数比例抽签?把 100% 切成一段一段:「好」占 55% 的区间、「不错」占 22%、「糟」占 8%……然后生成一个 0 到 1 之间的随机小数,看它落在谁的区间里,就选谁。分数高 = 区间宽 = 中签率高,但分第二第三的候选永远有机会翻盘。

加权抽签:先打分,再按分数比例切区间,随机小数落在哪段就选谁 第一步给候选打分 55/22/8/15,第二步把 0-1 区间按比例切开,随机数 0.63 落在「不错」区间 第一步 · 打分并换算:每个候选 token 得到一个可能性(示意,合计 100%) 好 55% 不错 22% 糟 8% 其他合计 15% 第二步 · 加权抽签:生成一个 0–1 的随机小数,落在谁的区间就选谁 好 55% 不错 22% 糟 8% 其他 15% 随机小数 0.63 → 落在「不错」区间,这次就选它
图 1 · AI 挑词的真实动作:打分之后不是颁奖,而是把 0–1 区间按分数比例切开,抽一个随机小数。大多数抽签会落在「好」的宽区间里;但像图里这样落在「不错」区间的情况,每 100 次里约发生 22 次——低分候选不是没机会,只是机会小。
打个比方
这就是庙会的加权签筒:住持把「上上签」放了 55 支、「中吉」放了 22 支、「下签」放了 8 支。你大概率抽到好签,但谁也没法保证。
严格来说,AI 的签筒里并没有签——它只是生成一个随机小数、看落在哪个区间。效果和抽签一模一样,但没有任何「手气」或「记忆」,纯粹是数学:每次抽签用的随机数互相独立;但前缀一变,下一张分数表就全部重算。
记住这句话:AI 挑词不是「选冠军」,是「按分数比例抽签」。分高只意味着中签率高,不是免抽金牌。
进阶小注 ·这个「按概率挑」的动作叫采样(sampling);而「永远挑最高分」的做法叫贪心解码(greedy decoding)——它是温度拧到 0 时的特例,下一节细说。

3温度:把「手气」调成一根旋钮

抽签的「比例」本身还能再调。AI 输出面板上那根著名的温度(temperature)旋钮,调的就是抽签前那张「分数表」的形状:

它是怎么做到的?一句话:把所有原始分数先除以温度 T,再换算成概率。除以一个大于 1 的数,大数缩得快、小数缩得慢,大家的差距就变小了——原本 55% 对 8% 的碾压局,被拉平成 38% 对 16% 左右的「人人都有机会」局。温度小于 1 则相反:差距被拉大,高分候选更一家独大;温度趋近 0 的极限,就是「只留冠军」。

同一组分数在三种温度下的概率分布:温度越高分布越平 三组柱状图:T→0 时好≈100%,T=1 时 55/22/8/15,T=2 时被拉平为约 38/26/16/20(示意) T → 0:永远挑最高分 T = 1:按原比例抽签 T = 2:分布被拉平(示意) ≈100% 好 不错 糟 其他 差距拉到极限:只剩冠军 55% 22% 8% 15% 好 不错 糟 其他 分数表原样,照比例抽 38% 26% 16% 20% 好 不错 糟 其他 低分候选中签率明显上升
图 2 · 同一组分数,三种温度三种命:T→0 时冠军通吃;T=1 时按原始比例抽签;T=2 时分布被「压扁」,原来 8% 的「糟」涨到 16%、翻了一倍(T=2 一列为示意数字)。注意:排名没变,变的是各家的中签率——温度从不改变「谁更靠谱」的判断,只改变「给低分候选多少机会」。
记住这个词 温度(temperature):调的是概率分布的形状(所有候选的中签率一起变平或变尖),而不是候选名单。名单一个不少,只是机会重新分配。
进阶小注 ·「原始分数」的学名叫 logits(可正可负、不合 100%);把它们变成合计 100% 的概率用的函数叫 softmax。带温度的完整公式是 p_i = exp(z_i / T) ÷ Σ exp(z_j / T)——温度就藏在那个除法里:T 越大,z/T 彼此越接近,exp 之后差距越小。

4top-p:只让头部候选进签筒

温度有一个「管不着」的麻烦:词表几十万个候选里,尾巴上拖着海量超低分候选——每个也许只有 0.001%,但架不住数量多。温度一调高,这些「妖魔鬼怪」的中签率集体抬头,输出就开始胡言乱语。工程上的解法很粗暴:抽签之前,先把长尾砍掉。砍法就是今天要记住的第二个词:

记住这个词 top-p(核采样):只在累计概率排进前 p% 的候选里挑。
具体做法:把候选按分数从高到低排队,从第一名开始累加概率,加到 ≥ p% 就停——线内的进签筒,线外的一律出局。
top-p 0.95:候选按概率排序,累计到 95% 处截断,右侧长尾出局 七段条形表示排序后的候选概率,累计到 95% 处画截断线,F、G 等长尾候选出局 候选按分数从高到低排队,从左往右累计(数字示意) 累计概率到 95% 就截断 A 40% B 25% C 15% D 10% E 抽签池:A–E 保留(累计 95%),在池内按比例重新抽签 右侧 F、G 等长尾候选:出局 注意:截断的位置是「浮动」的——概率越集中,留下的候选越少;分布越平,留下的越多 top-p = 1.0 是特例:累计到 100% 才停,等于一个都不砍
图 3 · top-p = 0.95 的一刀:候选按分数排序,累计概率到 95% 就截断。A–E 进签筒,F、G 和更后面的几万个长尾候选全部出局。严格来说,砍掉之后池内候选的概率会重新按比例放大到合计 100% 再抽——所以 top-p 0.95 不是「留 5% 的概率乱说」,而是「长尾根本不上场」。

温度和 top-p 的区别(面试加分点)

两个旋钮常被一起提到,但它们拧的根本不是一个东西:

实际使用中两者常搭配:温度负责把控节奏,top-p 负责兜底——哪怕温度调高、分布被拉平,最离谱的那批候选也早就被 top-p 拦在门外了。

进阶小注 ·top-p 又叫核采样(nucleus sampling)。它还有个更简单粗暴的兄弟 top-k(只留前 k 名,不管概率累计到哪)——知道有这个词即可。

5为什么同一个问题问两次,答案会不同?

现在可以回答开头那个日常困惑了。把前两节拼起来,答案只有一句话:只要温度大于 0,AI 每写一个 token 都在抽签,而抽签每次都可能抽中不同的结果。

更关键的是接龙的「滚雪球」效应:假设第一个 token 抽中了「不错」而不是「好」,那么下一步打分时,AI 看到的前缀就变成了「今天天气真不错」——后面所有 token 的分数表都跟着重算,整段话从此走上另一条路。一步之差,越滚越远:这就是为什么两次回答可能开头相似、越到后面分歧越大,甚至连结论都不一样。

所以,「AI 每次回答不一样」不是它善变,也不是它在「思考人生」,而是机制的必然:温度 > 0 时,每一个 token 都是一次独立抽签,而接龙会把早期的小随机放大成后面的大分歧。想要两次回答严格一致?把温度调到 0——永远挑最高分,同样输入就有同样输出(代价是死板、爱复读)。

日常用法一句话总结:要靠谱,温度调低(写代码、查事实、填表);要灵感,温度调高(起名字、写文案、头脑风暴)。同一个模型,旋钮一拧,判若两人。

6面试视角

面试视角
面试官可能会问:「大模型的温度调高会发生什么?为什么?」
八股答「温度调高输出会更随机、更有创造性;调低会更稳定、更确定。一般写代码用低温度,写创意文案用高温度。」——现象背得对,但「为什么」三个字答不上来,追问一句就露馅。
本课答温度作用在 softmax 之前:所有 logits 先除以 T 再算概率。T 调大以后,高低分之间的差距被压缩,概率分布变平,原本只有 8% 的低分候选中签率可能翻一倍——所以输出更跳脱、更意外,也更容易出错;T 趋近 0 的极限就是贪心解码,永远挑最高分,输出确定。排名本身不会变,变的只是各候选的中签率。工程上通常还会配合 top-p(只在累计概率前 p% 的候选里采样)砍掉长尾,防止高温时最离谱的候选上场。

7映射到 K3:报告里的评测配置现在能看懂了

K3 技术报告在公布成绩单之前,先交代了「考试时旋钮拧在哪」。这句话在 §6.1.3,今天每个词你都能看懂:

K3 原文(§6.1.3 评测配置)
「所有 Kimi K3 评测均使用推理力度 max、temperature = 1.0。对于单步任务(如 GPQA Diamond、HLE-Full 以及不使用工具的视觉基准测试),我们设置 top-p = 0.95;对于智能体任务,设置 top-p = 1.0。一般而言,我们建议推理与知识任务使用 top-p = 0.95,编程与智能体场景使用 top-p = 1.0。」

逐词翻译:

  • 推理力度 max:这是 K3 后训练里的「思考深度」档位设置(第 4 周会细讲),评测时开到最高档。
  • temperature = 1.0:评测时不拧温度旋钮——按模型原生分数比例抽签,如实反映模型自己的判断。
  • top-p = 0.95(单步任务):一道题一次性答完的任务(考试答题、知识问答),砍掉累计 95% 之外的长尾,求稳——这种任务里长尾候选基本只会添乱。
  • top-p = 1.0(智能体任务):需要多步操作、调用工具的任务,一个候选都不砍——智能体要在环境里探索,偶尔「不走寻常路」恰恰能撞出更好的解法,砍太狠会损失探索能力。

注意它的条件性:这段话讲的是评测配置——为了公平跑分而定的规矩,不是说模型「只能」这么用。所以原文紧接着才补了一句「一般而言,我们建议……」:那是给日常使用的推荐参数,和评测用的设置是两回事,别混为一谈。

1.0
评测用 temperature
不拧旋钮,按原比例抽
0.95
单步任务的 top-p
长尾候选出局求稳
1.0
智能体任务的 top-p
不砍,保留全部候选
100%
所有候选分数的合计
永远是 1(通用性质)
一句话总结今天 AI 打完分之后不是选冠军,而是按分数比例抽签;温度调「分布的形状」,top-p 调「抽签的名单」;同一问题两次答案不同,是「每步抽签 × 接龙滚雪球」的必然结果。K3 评测用温度 1.0 如实抽签,再用 top-p 按任务类型决定砍不砍长尾。

8自测题(先自己答,再点开看解析)

Q1AI 每写一个 token,都挑分数最高的那个吗?
不一定。只有温度 = 0 时才永远挑最高分(贪心解码)。温度大于 0 时是加权抽签:分高的候选中签率高,但分第二第三的候选按各自的比例也有机会被抽中。所以「打分最高」≠「必然上场」。
Q2「温度」和「top-p」有什么区别?
两者拧的不是一个东西。温度改分布的形状:名单不动,所有候选的中签率一起被拉平或拉尖(机制是 softmax 前把 logits 除以 T)。top-p 改抽签的名单:只在累计概率前 p% 的候选里挑,长尾直接出局,池内比例不变。实践中常搭配使用——温度调节奏,top-p 兜底防离谱。
Q3为什么同一个问题问 AI 两次,答案常常不一样?
只要温度 > 0,每个 token 都是一次独立抽签,两次生成在某个 token 上抽中不同结果很正常;而接龙有滚雪球效应——一个 token 不同,前缀就变了,后面所有打分全部重算,分歧越滚越大。所以两次回答常常开头相似、后面越走越远。要完全一致,得把温度调到 0。
Q4机制层面说:温度调高,到底发生了什么?
所有 logits(原始分数)在进 softmax 之前先除以 T。T 大于 1 时,大数缩得快、小数缩得慢,分数之间的差距被压缩,softmax 算出的概率分布变平——低分候选的中签率上升,高分候选不再一家独大。注意排名没变,变的是中签率。T 趋近 0 的极限就是永远只挑第一名。
Q5K3 报告评测用「temperature = 1.0,单步任务 top-p = 0.95,智能体任务 top-p = 1.0」,这套配置背后的道理是什么?
温度 1.0 表示评测时如实反映模型自己的概率判断,不额外拧旋钮。单步任务(一锤定音的答题)砍掉累计 95% 之外的长尾求稳,因为长尾在那里只会添乱;智能体任务要多步探索环境,一个候选都不砍,保留「不走寻常路」的可能,砍太狠会损失探索能力。还要注意这是评测配置,日常使用参数是报告里另外给的建议,两回事。
《从 Attention 到 K3 · 大模型近十年设计演进》30 天课 · Day 4 / 30 · 返回课程首页