大模型「按概率输出」到底是怎么回事?

从"今天天气真___"到一个完整的回答——把"按概率输出"拆开讲透:模型到底在算什么、怎么算、又怎么把概率变成你看到的字。

概率输出 自回归生成 Softmax 解码策略 温度采样

一、一句话结论:先纠正直觉

「大模型按概率输出」的准确意思是:

模型不会"想好一句话再写出来",而是每次只干一件事——给定已经写出来的所有字,算出"下一个字应该是哪个"的概率分布,然后按某种策略从分布里挑一个字,接在后面,再重复这个过程。

所以:

一个生活类比:手机输入法的"联想词"。
你打"今天天气真",输入法会在候选栏列出"好 / 棒 / 差 / 热…"。它背后就是一个小概率模型——它并没"理解"你的心情,只是根据海量聊天记录,统计出"真"后面最常接"好"。大模型干的也是同一件事,只是规模大了十万倍、准了十万倍,并且能"续写"而不是只补一个词。

二、先搞懂:模型操作的是「token」,不是字

在你看到的"文字"和模型算的"概率"之间,隔着一道"分词(Tokenization)"。模型既不读汉字也不读字母,它读的是 token(词元)——一串数字编号。

第 1 步:把文本切成 token(中文常按字/词,英文常按子词) 我喜欢吃苹果 我 喜欢 吃 苹果 → 每个 token 映射成一个编号(编入词表): 我 = 882 喜欢 = 9043 吃 = 117 苹果 = 5521 英文例子:playing → "play" + "ing"(拆成子词),所以模型能"拼"出从没见过的词。
关键认知:模型算的"下一个词的概率",其实是P(下一个 token | 前面的 token 序列)。概率分布的"候选名单",就是整个词表——一个可能有 5 万到 20 万个 token 的巨大清单。每次生成,都要对这十几万个候选各算一个数。

三、完整流程:一图看全「从一句话到一个概率分布」

把"今天天气真"变成"好"这一个字,中间要经过下面这条流水线。注意最后一步才得到"概率",而"选字"是另一步(下一节讲)。

① 输入文本「今天天气真」 ② 分词 → token 编号 ③ 嵌入 + 位置编码 变成向量 ④ Transformer 多层 自注意力+前馈 ⑤ 取最后一个位置 ⑥ 线性层 → 词表 Logits ⑦ Softmax → 概率分布 ⑧ 解码策略:选一个 token ⑨ 把选中的 token 接回 ① 自回归循环:把新词拼回去,再算下一个
记住这个循环:第 ⑨ 步把选出来的字又塞回第 ① 步,模型对"更长的上文"再算一次分布、再选一个字……如此反复,直到吐出"结束符"。这就是"自回归(Auto-Regressive)"——自己之前生成的字,是下一步生成的输入。所以大模型"写文章"和"接龙"是同一回事。

四、核心:每一步都在算「下一个词的概率分布」

第 ⑥ 步的"Logits"是一个长度等于词表大小的数组(比如 15 万个数),每个数表示"对应 token 有多匹配"。第 ⑦ 步用 Softmax 把这个数组压成"加起来等于 100% 的概率分布"。

P(tokenᵢ) = exp(zᵢ) / Σⱼ exp(zⱼ) // zᵢ 是第 i 个 token 的 logit;Softmax 把任意实数变成 0~1 且总和为 1 的概率

词表极大,所以绝大多数 token 的概率都接近 0,只有少数几个"像样"。下面画的是"今天天气真"之后,词表里的真实形状——一条长尾,极少数候选吃掉了几乎全部概率。

「今天天气真」之后,词表上部分候选的概率(示意,纵轴=概率,横轴=不同 token) 好 0.46 棒 0.21 热 0.12 冷 0.07 的 剩余十几万 token:概率≈0
读到这里你其实已经懂了 80%:"按概率输出"= 每写一个字,都对全词表算一遍概率、挑一个。模型"说的话"完全由这条分布 + 挑选规则决定。下面两个交互,让你亲手感受分布和高低温度的区别。

五、交互①:温度如何重塑概率分布

同一个上文,模型算出的 logits 是固定的。但我们可以先用一个叫 温度(Temperature) 的数"加工"一下,再算 Softmax——这直接决定了生成是"死板"还是"发散"。

P(tokenᵢ) = exp(zᵢ / T) / Σⱼ exp(zⱼ / T) // T 越小→分布越尖(几乎只选最大的);T 越大→分布越平(大家都有机会)
温度 T: T = 1.0
本次选中:—
采样历史(点"按概率采样"会看到:同样的分布,每次结果可能不同):
看懂了什么?

六、怎么从分布里"挑"出那个词:解码策略

第 ⑧ 步的"选词"有多种玩法(统称解码 / Decoding)。它们都不改变分布本身,只改变"怎么从分布里取一个":

策略做法特点适用
贪心 Greedy永远选概率最高的那个确定、单调,易重复啰嗦需要稳定的场景
温度采样用温度缩放后按概率抽可调创意度,最常见聊天/写作
Top-K只在概率最高的 K 个里抽砍掉离谱长尾,避免胡说通用
Top-P(核采样)只在区间内累计概率≥P 的最小候选集里抽自适应候选数,比 Top-K 更稳当前主流
Beam Search同时保留几条候选路径,选整体概率最高偏"标准答案",翻译/摘要常用翻译、摘要
一句话区分:概率分布是"算"出来的(由模型参数和上文唯一决定);选哪个词是"策略"决定的(由你设的温度/Top-K/Top-P 决定)。模型永远在输出概率,只是"取数方式"不同——这正是"按概率输出"这句话的精确含义。

七、交互②:自回归是怎么一步步"吐字"的

点"下一步",看模型如何把"概率 → 选词 → 拼回输入"循环起来,一点点把句子接出来。每步下方都列出当时的候选分布(取自该步的上文)。

█
第 0 / 6 步
本步从分布中选中:—
这就是"生成"的真相:没有"先想好整句再写",只有"每走一步,看眼前,猜下一个"。翻译、写代码、写诗,全都是这个接龙循环——区别只在模型见过的语料让它"猜"得更准。

八、三个常见误解(看你是否真懂了)

✗
"模型是按概率随机乱说。" —— 错。分布是从海量数据里学出来的规律,通常高度集中在合理的词上(看图四那条长尾:绝大多数概率都给了"好/棒/热")。"随机"只出现在采样这一步,且温度越高越随机。
✗
"模型像人一样'理解'了再回答。" —— 目前更准确的描述是:它在做极复杂的"下一个词预测"。它不"懂"语义,但预测准到表现出"懂"的样子(学界对此仍有争论,但不影响"它按概率输出"这一事实)。
✗
"同一句话每次答案应该一样。" —— 只有在温度=0 且贪心时才(近似)确定。只要开启采样,同样的输入也会因"按概率抽签"而给出不同结果——这恰恰是"概率输出"的直接证据。
✓
正确理解:大模型 = 一个被训练得极好的"下一个词概率函数" f(上文) → 分布,再用解码策略从分布里取字,循环接龙。

九、为什么"概率"能 work?——它是训练目标的必然结果

你可能会问:凭什么"下一个词的概率最高"就等于"人想看到的答案"?答案是模型就是这么被训练出来的:

十、总结:一张图串起全过程 + 口诀

文本 → 分词 → 向量(Transformer) → 全词表 Logits → Softmax 概率 → 选词 把选出的词拼回开头,循环 → 一篇文章就是这么"接"出来的

记忆口诀:

分 token → 过网络 → 算分布 → 按策略取 → 拼回去 → 再来一遍。
模型从不"决定"说什么,它只"打分":给全词表里每个候选的下一个词打分(概率),再让你选的"解码策略"从中挑一个。所谓"按概率输出",就是这句话。

继续深入(站内姊妹篇):
本文为教学示意:交互中的概率与候选为说明性数值,非真实模型输出;词表规模、温度为业界通用设定。
← 返回人工智能总目录