一句话定义:采样(Sampling)是让大语言模型在生成每个词时,从候选词的概率分布里“按概率抽签”挑一个,而不是永远挑概率最高的那个。同一个问题每次回答不同,根源就在这一步的随机性。
原理:模型到底在做什么
大语言模型(Large Language Model,LLM)生成文本是逐词进行的。每走一步,模型会给词表里每个候选词打出一个概率,形成一张分布表。比如“今天天气真____”,模型可能给出:好 60%、不错 25%、糟糕 10%、其他 5%。
接下来的动作才是“采样”:如果按概率抽签,六成机会抽到“好”,两成半抽到“不错”,偶尔抽到“糟糕”;如果永远取概率最高的那个,就是确定性的贪心解码(Greedy Decoding)。抽签的比方很贴切——签筒里的签数量不同,抽中概率就不同,但每次抽的结果会变。这解释了为什么同一个提示词(Prompt)问两遍,措辞、举例、甚至结论侧重都可能不一样:中间每一步抽签略有偏差,后面的整段话就沿着不同分支走下去了。
几个常被混为一谈的控制手段
| 手段 | 作用 | 效果 |
|---|---|---|
| 贪心解码 / 束搜索(AI 词典:Beam Search">Beam Search) | 不抽样,取最高概率或保留若干最优路径 | 稳定、可复现,但文字容易刻板、重复 |
| 温度(Temperature) | 调整概率分布的“陡峭”程度 | 低温更保守,高温更发散、更容易跑偏 |
| Top-k | 只在概率最高的 k 个词里抽 | 砍掉长尾里的离谱选项 |
| Top-p(核采样,Nucleus Sampling) | 只在累计概率达到 p 的最小词集合里抽 | 候选集随情况自适应,比固定 k 更灵活 |
要强调的是:温度、top-k、top-p 都是“把签筒改成什么样”,采样本身才是“抽”这个动作。把温度调到 0,输出通常高度稳定,但并不等于数学意义上的绝对可复现——底层计算和并行处理的细微差异仍可能带来波动,工程上做回归测试时要留意这一点。
对从业者和普通人的意义
做产品的人要分清场景:客服、法律条文、结构化数据抽取这类任务,需要稳定和可校验,应该压低随机性甚至改用确定性解码;创意写作、头脑风暴、起名字,反而要放开采样,让候选更分散。做评估的人要意识到,单次跑分会被采样噪声干扰,同一批题目多跑几次看方差,比只看一次结果更靠谱。还有个实用技巧:让模型对同一问题多采几条思路再投票(常被称作自一致性,Self-Consistency),正确率往往比只跑一次高。
对普通用户来说,最实际的一条是:答案不同不代表模型“前后矛盾”或“记错了”,它只是在按概率抽签。想要更稳的输出,就在提问里把约束写清楚、要求它先列步骤再给结论;想要更多灵感,就明确说“给我五个风格不同的版本”。具体支持哪些参数、默认值是多少,各家产品的开放程度不同,以官方页面为准。
