让 DeepSeek-R1 在心里抛硬币:只加两行提示,采样偏差降到接近随机数发生器

String Seed of Thought: Prompting LLMs for Distribution-Faithful and Diverse Generation2026年9月22日 约 9 分钟

Sakana AI 的研究者提交的论文 String Seed of Thought(arXiv 官方页面显示 2025 年 10 月 24 日首次提交,2026 年 2 月 5 日修订到 v3)提出一种只改提示词的做法:让大模型先在脑子里生成一段随机字符串,再对这段字符串做运算来决定随机选择。作者报告 DeepSeek-R1 的概率采样质量接近伪随机数发生器,随机出招的石头剪刀布不再轻易被对手利用,开放式写作的回答也更少重复。

Sakana AIDeepSeek-R1提示词工程概率采样论文解读

一分钟速览

  • SSoT 让模型先自造一段随机字符串,再对它做运算来决定随机选择,全程不调用外部工具。
  • 作者报告 DeepSeek-R1 的概率采样接近随机数发生器,石头剪刀布不再轻易被对手利用。
  • 所有数字来自作者自测,无第三方复现,QwQ-32B 在二选一均匀任务上反而变差。

让模型抛一枚公平硬币,上千次里它并不给你 500 比 500

把「Flip a fair coin」这句话交给一个前沿大模型,让它只回 Heads 或 Tails,然后重复上千次,数一数两边各出现多少回。如果模型真的在心里抛了硬币,正反面应该各自落在 500 次附近。作者报告的结果不是这样:正反面的计数都明显偏离这个数。单次回答看不出问题,Heads 和 Tails 都说得通,偏差只有重复之后才显形。

麻烦在于,模型并不是不知道硬币是公平的。它能背出「各 50%」,也能在解释里把这一点写清楚。问题出在选择那一步:当它只需要给一个答案时,语义上最像答案的那一个会赢,「按 50% 的概率」这条指令被挤到一边。论文对这类现象的定义是:直接提示时,前沿大模型在给定了选项和各自概率的情况下,常常无法忠实地从目标分布中采样。作者把这类任务叫做概率指令跟随(Probabilistic Instruction Following,PIF):给定一组选项和各自的概率,多次回答形成的经验分布应当贴着目标分布走。选项可以多于两个,概率也可以不相等,结论没有变。

另一类失败长得不一样,根子却相同。同一个开放式提示反复问,回答高度雷同,作者把这叫多样性感知生成(Diversity-Aware Generation,DAG)。一个要求模型该随机的时候随机,一个要求它该不一样的时候不一样,两边的缺口指向同一件事:模型没有一个把随机性送进决策流程的通道。

类比直接提示下的偏差一个知道骰子六面等概率的人,每次都凭手感报一个数字,报出来的分布和时间无关,只和他的偏好有关。

偏差出在决策环节,那能不能不接外部工具、只改几句提示词就解决?

两行提示、一段自造字符串,把随机选择从语义偏好里剥离出来

能。做法只有两句:让模型先在脑子里生成一段复杂的随机字符串,明确要求不使用伪随机数发生器(PRNG),然后对这段字符串做运算,用它来引导所有随机决策,最后把答案放进指定标签。论文给出的简化版 PIF 提示是:Generate a complex random string between <random_string> and </random_string>, and manipulate this string to guide any stochastic decisions within <thinking> and </thinking> tags。整套方法只需在 API 调用的 system prompt 里加几行就能采用,既不依赖外部工具,也不调用伪随机数发生器。

这段字符串本身有多随机,并不是提示要规定的重点,关键是它把决定权搬了家。直接提示时,选择取决于「哪个选项最像正确答案」;加上这段字符串之后,模型先把一段与问题毫无关系的字符写下来,再把后续的选择绑到对它的运算上。字符串不参与语义判断,也就不会被语义偏好牵着走。作者给方法起名 String Seed of Thought(SSoT)。

提示词并没有规定怎么操作字符串。作者翻看模型的推理过程后发现,模型会自己挑算法。等概率的选择上,常见的是 Sum-Mod:把字符串里每个字符的 ASCII 码加起来,对选项个数取模,取模结果落在哪个选项就选哪个。遇到偏置分布,模型会换成 Rolling Hash:逐个字符滚动更新哈希值,形如 hash = (hash × 31 + ASCII 值) mod M,再从这个大得多的取值区间里按阈值切分出概率。两种策略分工明确:一个负责均分,一个负责不均衡的比例。

这也带出一条容易被忽略的限制。方法依赖模型自主设计并执行取模、哈希这类策略,所以在推理能力有限的小模型上,效果会下降。降到什么程度、从哪个模型规模开始下降,论文没有给出。

类比字符串的作用抽签前先在纸上随手画一串只有自己看得懂的符号,再按符号决定拿哪一支签——签的内容没变,但选择不再靠印象。

SSoT 在模型内部走完的四步

4 个步骤
  1. 1
    写下一段随机字符串

    模型先在 <random_string> 标签内产出一段与问题无关的字符串,作为熵的来源。

  2. 2
    对字符串做运算

    模型自主选择策略:等概率用 Sum-Mod,偏置分布用 Rolling Hash 这类滚动计算。

  3. 3
    用运算结果决定选择

    取模或阈值切分后落到某个选项上,随机决策由字符串结果而非语义偏好决定。

  4. 4
    输出答案

    选择结果放进 <answer> 标签,全程不调用外部工具或伪随机数发生器。

把偏差压下去听起来像一句宣传语。它到底用什么尺子量,量出了多少?

偏差压到多低:JS 散度、100 次乘 10 组,和一个被点名的反例

尺子是 Jensen–Shannon divergence,简称 JS 散度。它衡量两个概率分布有多像,越接近 0 越忠实;表 1 的数值口径是 JS 散度乘以 10⁻³,同样是越低越好。

采样规模是这样定的:每个设置做 100 次试验构成一组,重复 10 次,用来估计误差棒。设置总数、每个设置覆盖哪些模型,论文没有完整列出来。

在这个口径下,作者称 SSoT 在广泛的模型和任务类型上大幅降低了输出分布偏差,对 PIF 有效的范围覆盖了五个前沿大模型——这五个模型分别是谁,论文没有列出。最亮的一条来自 DeepSeek-R1:它的采样质量已经接近伪随机数发生器。

同一张表里也躺着一个反例。QwQ-32B 在二选一均匀分布任务上,直接提示的 JS 散度是 2.43,作者说这个值已经接近 PRNG 参考;加上 SSoT 反而升到 3.39,方向是更差。作者把它列为需要单独做失败分析的情形。主结论成立,不代表每个模型、每种设置都成立。

另一组对比只做了 DeepSeek-R1:把 SSoT 和高温采样、少样本提示、提示集成、顺序采样放在一起比,动作空间从 2 个选项一路加到 64 个,作者称在每一档设置上 SSoT 都优于这些对照方法,并且接近 PRNG。

要留意的边界有两处:这些结果全部来自作者自己的评测,目前没有第三方复现;PRNG 参考的具体数值没有公布。

原稿素材跨多个模型的 PIF 性能对比,SSoT 与直接提示基线并列;数值口径为 JS 散度乘以 10⁻³,越低越好。
原稿素材DeepSeek-R1 上直接提示与 SSoT 的经验分布对比:直接提示的柱形明显偏在一边,SSoT 的柱形基本贴合目标分布。
原稿素材动作空间从 2 个到 64 个选项时,各方法的 JS 散度对比;红色为 SSoT,黑色虚线为伪随机数发生器的理想参考。
SSoT 把直接提示下的分布偏差压到了什么程度

加上随机字符串提示后,模型在带概率选项上的经验分布是否更贴近目标分布?

实验设置
在 n 选一的 PIF 任务上测试均匀分布与偏置分布,比较 SSoT 提示与直接提示的基线,用 JS 散度评估。
样本与轮次
每个设置 100 次构成一组,重复 10 组估计误差棒;设置总数未知。
模型
DeepSeek-R1、QwQ-32B
判定指标
JS 散度,越接近 0 越忠实;表 1 口径为 JS 散度乘以 10⁻³,越低越好。
对照或基线
直接提示基线;伪随机数发生器参考。

结果:作者报告偏差明显下降;DeepSeek-R1 接近伪随机数发生器;QwQ-32B 在二选一均匀分布上为例外,基线 2.43、SSoT 3.39。

边界:作者自报,无独立复现;五个前沿模型名称未列出;PRNG 参考值未公布;逐项数值只在图表或论文中。

在 DeepSeek-R1 上,SSoT 是否优于其他降偏差提示方法

与高温采样、少样本提示、提示集成、顺序采样相比,SSoT 的 JS 散度是否更低?

实验设置
同一模型对比多种降偏差提示方法,覆盖均匀与偏置 PIF,动作空间从 2 个选项变化到 64 个,以伪随机数发生器为理想参考。
样本与轮次
未知;材料未给出该组实验的次数或重复轮数。
模型
DeepSeek-R1
判定指标
JS 散度,越低越好;PRNG 分布作为理想参照。
对照或基线
高温采样、少样本提示、提示集成、顺序采样;PRNG 参考。

结果:作者报告 SSoT 在每一档设置上都优于其他降偏差提示技术,并接近伪随机数发生器。

边界:只聚焦 DeepSeek-R1;样本量未知;正文未给出逐项数值。

JS 散度下降听起来很抽象。换成一场看得见的对局,这点差别值多少分?

石头剪刀布:采样偏差怎样变成被对手吃掉的分数

石头剪刀布给出了一个直白的换算场。这个游戏的混合策略纳什均衡是每个动作都以 1/3 的概率出——只要你真的按 1/3 随机,长期来看谁也占不到便宜。作者比较了三种提示:SSoT 要求模型先生成随机字符串作为种子,再据此从均衡策略里挑动作;Baseline 同样说「按纳什均衡随机」,但不给任何随机化的具体机制,让模型自己想办法;Simple 是朴素提示,连均衡策略所需的随机化机制都不提供。

对手是 10 个被作者称为 black belt 的机器人。对每一种提示,模型要和每一个机器人各打 100 局,每场比分记为胜局减负局,范围从 -100 到 +100。这里有一个关键的不对称:机器人能看到双方全部出招历史,模型看不到。任何可预测的规律都会被利用。

结果分得很开。SSoT 的平均分停在接近 0 的位置,符合混合策略该有的样子;Baseline 嘴上说着均衡,实际采样仍带着可被利用的偏差;Simple 因为策略多样性不够,持续被击败。这条链路值得记住:模型的采样偏差不是抽象的统计问题,它在对抗环境里直接换算成丢分。

局限同样明确——论文没有说明用的是哪个模型,也没有给出平均分、方差或统计检验。

原稿素材三种提示对战 black belt 机器人时的比分分布;SSoT 的分布居中于零附近,基线的分布更偏向可被利用的一侧。
类比可预测性即漏洞和一个总能猜到你下一步的人下棋,你输的不是棋力,而是你的出手规律。

三种石头剪刀布提示的机制与结果差异

第 4 节数据表格
提示方式给模型的随机化机制对局结果
SSoT要求先生成随机字符串作为种子,再据此从均衡策略中挑招平均分接近 0,符合混合策略表现
Baseline只说按纳什均衡随机出招,不提供任何随机化机制仍带可被利用的采样偏差
Simple朴素提示,未提供均衡策略所需的随机化机制策略多样性不足,持续被击败
随机字符串种子能否让石头剪刀布不被对手拆穿

SSoT 是否减少了可被利用的采样偏差,使策略更接近混合策略纳什均衡?

实验设置
比较 SSoT、Baseline、Simple 三种提示;模型对战 10 个 black belt 机器人,每对 100 局;得分为胜局减负局,范围 -100 到 +100;机器人可查看双方出招历史,模型不可。
样本与轮次
10 个机器人乘以每种提示各 100 局;未说明模型型号。
判定指标
胜局减负局,范围 -100 到 +100,以箱线图呈现分布。
对照或基线
Baseline 与 Simple 两种提示;机器人作为对抗环境。

结果:SSoT 平均分接近 0;Baseline 仍带可被利用的采样偏差;Simple 持续被击败。

边界:未指定模型型号;未给具体平均分、方差和统计检验;对手握有历史信息,构成信息不对称,外推受限。

同一段随机字符串,除了决定「出什么」,还能决定别的吗?

同一段字符串,从投骰子变成挑故事零件

能,而且换的是完全不同的用法。在开放式写作这类任务里,字符串不再被当作骰子,而是被当作一串分叉路口。作者观察到一种代表性的做法:模型把故事的组件拆成类别——背景、角色特质、冲突、寓意——再用字符串的不同片段分别做 Sum-Mod 运算,为每个类别挑一个候选。换一段字符串,就换一组组合,同一个提示长出不同的故事。

衡量这件事用的是 NoveltyBench,在 curated 和 WildChat 两个数据集上评估。每个提示生成 8 个回答,再用分类器把它们按功能等价分成若干类。Distinct 指标就是等价类的数量,范围 1 到 8,越高说明回答越不重样——8 个回答分成 8 类,就是满分。Utility 指标只把新发现等价类里那些新颖回答的奖励分加起来,并按用户耐心因子按出现顺序打折:越靠后出现的新答案,价值越低。

作者明确提到,DAG 实验中 DeepSeek-R1 在 NoveltyBench 上取得了清晰的多样性增益。整体上,SSoT 在两个数据集上的整体 Distinct 都最高,在多数 curated 类别上追平或超过了最强基线。Utility 也明显高于直接提示,但 curated 集里有几个类别——比如商品推荐和观点类——仍然是复述式改写或更高温度的采样领先。作者的说法是:多样性增加了,质量的代价很小;代价具体有多小,论文没有量化,分类器细节、奖励模型和耐心因子参数也没有公布。DeepSeek-R1 之外的模型在这个任务上表现如何,论文没有展开。

原稿素材curated 数据集上的 NoveltyBench 结果,单元格格式为 Distinct(Utility),两个数值都是越高越好。
原稿素材WildChat 数据集上的 NoveltyBench 结果,单元格格式同为 Distinct(Utility),两个数值越高越好。
同一段字符串能否让开放式回答少重样

SSoT 是否提高 NoveltyBench 上的输出多样性,同时不明显损耗质量?

实验设置
在 NoveltyBench 的 curated 与 WildChat 数据集上评估;每个提示生成 8 个回答,用分类器按功能等价分组;计算 Distinct 与 Utility。
样本与轮次
每个提示 8 个回答;提示总数未知。
模型
DeepSeek-R1
判定指标
Distinct 为等价类数量,范围 1 到 8,越高越多样;Utility 只累加新颖回答的奖励分并按用户耐心因子折扣,越高越好。
对照或基线
最强基线;复述式改写;更高温度采样。

结果:SSoT 在两个数据集上的整体 Distinct 最高,多数 curated 类别追平或超过最强基线;Utility 明显高于基线,但商品推荐、观点等少数类别仍由复述式改写或高温采样领先。

边界:正文只明确提到 DeepSeek-R1 的清晰增益;提示总数、分类器与奖励模型细节、耐心因子参数均未知;作者自报。

一套只在提示词里加两行的办法,什么时候不该用?

什么情况下这两行提示会帮倒忙

至少有两种任务和一种证据状态要收手。第一,模型太小。方法依赖模型自主设计并执行取模、哈希这类策略,推理能力有限的小模型效果会下降,具体降到什么程度、从哪个规模开始下降,论文没有给出。第二,任务只有一个正确答案。数学题、事实检索这类场景,加上 SSoT 不但没用,还可能把模型的注意力引开。第三,也是最重要的一条:所有数字都来自作者自测,没有第三方复现,也没有同行评审结论;把模型自造的字符串当成经过验证的随机源,超出了公开证据能支持的范围。

还有一条容易被读成因果的关联。论文的推理链分析显示,更长的推理轨迹与更忠实的目标分布采样相关——相关不等于因果,具体系数也没有公布。另有一处日期冲突:论文页面元数据把发布日期写成 2022 年 1 月 1 日,而 arXiv 官方页面显示论文 v1 提交于 2025 年 10 月 24 日、v3 修订于 2026 年 2 月 5 日。两处公开记录无法调和,原因不明,时间线以 arXiv 提交记录为准。

回到开头那枚硬币。直接问模型正面还是反面,它给的是一次看起来合理的表态;要求它先在脑子里写一串随机字符、再对字符做运算,它才在做一次真正的抽样。这套方法只需在 API 调用的 system prompt 里加几行,不依赖外部工具;它的价值不在于让模型变聪明,而在于把「按概率选」这件事从语义偏好手里拿走,交给一段与问题无关的字符串。它成立的前提同样清楚:模型得会做那点心算,任务得容得下多个正确答案。任一条件不满足,几行提示就只是几行提示。

什么任务该加这两行提示

条件与选择
  1. 条件任务有多个有效答案,或明确要求按给定概率输出
    结果作者报告可降低采样偏差、提高输出多样性
    可以怎么做可以把它作为系统提示的一部分先试一轮
  2. 条件任务有唯一正确答案,如数学题或事实检索
    结果作者称不适用,并可能分散模型注意力
    可以怎么做这类调用不要加 SSoT
  3. 条件使用推理能力有限的小模型
    结果作者称效果会下降,取模与哈希难以稳定执行
    可以怎么做先在自己的模型上做小样本自测,再决定是否采用