一句话定义:Mirostat 采样(Mirostat sampling)是一种大语言模型(Large Language Model, LLM)解码时的采样策略,它不固定候选词范围,而是动态调整截断阈值,让整段输出的“困惑度”(perplexity)尽量贴近你设定的目标值。
模型每生成一个词,都会给出下一个词的概率分布。传统做法是先用温度(temperature)缩放,再用 Top-k 采样(Top-k sampling)或 AI 词典:Top-p">Top-p 核采样(nucleus sampling)截断,然后从剩下的词里随机抽。问题是这些阈值通常是固定的:分布很尖锐时,Top-p 可能放进一堆小概率词,输出突然跑偏;分布很平坦时,又可能反复抽到少数几个词,文本绕圈复读。Mirostat 把“输出有多惊讶”当成控制目标。它每一步都看已经生成的内容,估计当前困惑度——困惑度低,说明模型很确定、文本可预测;困惑度高,说明选词很意外、随机性大。如果当前困惑度低于目标,它就适当放宽候选范围,允许更意外的词;高于目标,就收紧范围,只从更稳的词里选。这像开车用定速巡航:上坡下坡时自动补油或收油,让车速稳定在设定值,而不是死踩固定油门。
它和相邻概念的区别可以这样看:
| 方法 | 控制目标 | 参数直觉 | 常见毛病 |
|---|---|---|---|
| 温度 | 分布平坦度 | 高更随机,低更确定 | 全局固定,不随上下文变 |
| Top-k | 候选词数量 | 每次只抽前 k 个 | k 固定,分布变化时太死板 |
| Top-p | 候选词累计概率 | 抽累计概率到 p 的集合 | p 固定,随机性会波动 |
| Mirostat | 输出困惑度 | 设定目标困惑度,自动调范围 | 需要调目标值,实现稍复杂 |
对从业者,Mirostat 是调采样参数时的一个“自动挡”。当你发现模型要么复读、要么胡言乱语,可以试它:目标困惑度越低,输出越保守;越高越放飞。实际实现中通常会有不同版本,较新的版本主要改进了计算效率。具体默认值和可用性以你用的推理框架或 API 官方页面为准。对普通人,它解释了为什么同一个模型换个采样设置,文风能从“机器人复读”变成“天马行空”——背后不只有温度,还有对随机性的动态控制。
