STaR、V-STaR、Quiet-STaR —— 自学推理
最小的自我改进循环就藏在推理依据(rationale)里。模型生成一条思维链,留下那些落到正确答案上的,再在这些之上做微调。这就是 STaR。V-STaR 加了个验证器,让推理时的筛选更准。Quiet-STaR 把推理依据下沉到每一个 token。三者都管用。但都不是魔法——这个循环会保留任何碰巧到达正确答案的捷径。
类型: Learn 语言: Python(标准库,bootstrap 循环模拟器) 前置要求: 阶段 13 · 01-03(推理与 CoT),阶段 15 · 01(长程框架) 预计时间: ~60 分钟
问题背景
教模型推理的直接办法是收集人类写的推理轨迹。这个办法昂贵、缓慢,而且上限取决于人类愿意写多少高质量的思维链。
STaR(Self-Taught Reasoner,Zelikman 等人,2022)问的是:要是让模型自己写推理依据,再拿已知答案给它评分呢?循环是这样:
- 采样一条推理轨迹外加一个答案。
- 如果最终答案正确,留下这条轨迹。
- 在留下的轨迹上做微调。
- 重复。
它管用。GSM8K 和 CommonsenseQA 都在没有新增人工标注的情况下提升了。但这个循环有个内建的偏差:任何产出正确答案的推理依据都会被保留,不管推理本身是否站得住脚。V-STaR(Hosseini 等人,2024)用一个学出来的验证器修补了这一点;Quiet-STaR(Zelikman 等人,2024)则把这个想法推广到了每个 token 的内部推理依据上。
核心概念
STaR:在管用的东西上做 bootstrap
从一个带点弱推理能力的基础模型出发。对每道训练题,采样一条推理依据外加一个答案。如果答案和标签吻合,就留下这个(题目,推理依据,答案)三元组。在留下的集合上微调模型。重复。
有一个细节很关键。如果模型一道题永远做不对,循环就没法在它上面学习。STaR 加了 rationalization(合理化):对模型做错的题,把正确答案当提示注入进去,重新提示模型生成一条导向它的推理依据。合理化得到的推理依据被加进训练集。
原论文的结果(Zelikman 等人,2022):一个 GPT-J 基础模型经过反复的带合理化的 STaR 轮次,在 GSM8K 上从 5.8% 提升到 10.7%——绝对提升约 5 个百分点。在 CommonsenseQA 上,STaR 训练的 GPT-J 6B 达到 72.5%,跟一个在手工标注推理依据上微调的 GPT-3 175B(~73%)相当——后者大了大约 30 倍。
V-STaR:用 DPO 训练一个验证器
STaR 把错误的推理依据扔掉了。Hosseini 等人(2024)注意到那些也是数据:每一对(推理依据,"这对不对")都能拿来训练一个验证器。他们在正确和错误的解法上都用直接偏好优化(DPO)来构建一个排序器。推理时,采样 N 条推理依据,挑验证器选出的头名。
报告的提升:在 GSM8K 和 MATH 上比先前的自我改进基线高出 +4 到 +17 个百分点,其中大部分收益来自把验证器用于推理时筛选,而不是用于额外的生成器微调。
Quiet-STaR:每个 token 的内部推理依据
Zelikman 等人(2024)问:要是模型学会在每一个 token 位置生成一小段内部推理依据,而不只是在题目和答案之间呢?Quiet-STaR 训练模型在每个被预测的 token 之前吐出一个隐藏的"想法",再通过一个学出来的权重把考虑了想法的预测和基线预测混合起来。
结果:Mistral 7B 在没有任务专用微调的情况下,GSM8K 的零样本绝对值从 5.9% 涨到 10.9%,CommonsenseQA 从 36.3% 涨到 47.2%。模型学会了"何时该想"——难的 token 拿到更长的内部推理依据;简单的几乎不拿。
为什么三者都有同一个安全隐患
三种方法都拿最终答案当梯度信号。一条经由有缺陷的推理到达正确答案的推理依据——钻了捷径、瞎猜,或者用了不可泛化的模式——会被正向强化。在分布内的题目上捷径管用。在分布外的题目上它会悄无声息地崩掉。
V-STaR 的验证器靠学习给推理依据排序来缓解,但验证器是在同一套标签上训练的。它可能学会偏好格式漂亮的错误推理,而不是诚实的不确定。更安全的设计是把 STaR 风格的数据和这两样结合起来:(a) 过程监督的奖励模型(奖励中间步骤,而不只是答案),以及 (b) 能戳破简单捷径的留出(held-out)OOD 评估。
对比
| 方法 | 训练信号 | 推理成本 | 数据浪费 | 已知失败模式 |
|---|---|---|---|---|
| STaR | 正确就留下(推理依据,答案) | 1x | 丢弃所有错误推理依据 | 捷径式推理依据 |
| STaR + 合理化 | 上面那套 + 带正确答案提示的重试 | 1x | 较少 | 合理化的推理依据可能不可信 |
| V-STaR | STaR + 从正反两类训练的 DPO 验证器 | Nx(best-of-N) | 极少 | 验证器可能强化自信的错误 |
| Quiet-STaR | 每 token 推理依据 + 混合权重 | 1.5-3x | 极少 | 梯度仍以答案为条件 |
它在 2026 技术栈里的位置
STaR 很老了。但这个模式在 2025-2026 年到处冒头。在可验证数学题上做 RL(DeepSeek-R1、Kimi-k1.5、o1)就是 STaR 那套以答案为条件的梯度信号,放大了规模。过程奖励模型(Lightman 等人,2023;OpenAI 的 "Let's verify step by step")是过程监督的替代方案。AlphaEvolve(第 3 课)是面向代码的 STaR,用程序评估器代替了标签。Darwin Godel Machine(第 4 课)是面向 agent 脚手架本身的 STaR。
理解了 STaR,这一切就都通了。它是最小可用的自我改进循环。
reflection-loop实际使用
code/main.py 在一个玩具算术任务上跑一个模拟的 STaR 循环。你能看到:
- 准确率如何随 bootstrap 轮次攀升。
- 捷径如何溜进来:模拟器里有一类"偷懒"的推理依据,40% 的概率能蒙对答案,但泛化很差。看看 STaR 会不会留下它们。
- 一个验证器(V-STaR 风格)在推理时有帮助,但没法完全剪掉训练期间引入的捷径。
拿去用
outputs/skill-star-loop-reviewer.md 帮你在拿一条自学推理流水线去训练之前审计它。
练习
运行模拟器。把捷径频率设成零,再设成 0.4。即便两次运行在训练分布上都打到了 >90%,最终准确率在两次之间会偏离多少?
给模拟器加一个留出的 OOD 测试。从不同的分布抽题,在分布内和 OOD 集合上都评估 bootstrap 出来的模型。量化这个差距。
读 Quiet-STaR 论文(arXiv:2403.09629)第 3 节。各用三句话解释"思考结束"(end-of-thought)token 和混合权重头。
把 STaR 的"对就留下"过滤器,跟一个独立奖励每个推理步骤的过程监督替代方案做对比。指出标注成本的差异,以及可能的质量差异。
设计一套能在已部署模型里抓出捷径式推理依据的评估。它不必完美——它得能戳破 STaR 循环会强化的那些最简单的捷径。
关键术语
| 术语 | 大家嘴上怎么说 | 实际指什么 |
|---|---|---|
| STaR | "自学推理器" | 在落到正确答案的、模型生成的推理依据上微调;如此往复 |
| Rationalization(合理化) | "带提示的重试" | 对基础模型做错的题,注入正确答案再提示它给出推理依据 |
| V-STaR | "带验证器的 STaR" | 用 DPO 在正反两类推理依据上训练验证器,用于推理时筛选 |
| Quiet-STaR | "每 token 推理依据" | 在每个 token 位置生成隐藏想法;与基线预测混合 |
| Answer-conditioned gradient(以答案为条件的梯度) | "基于结果的信号" | 训练循环奖励最终答案,而非推理步骤 |
| Process reward model(过程奖励模型) | "步级验证器" | 在每步正确性而非结果上训练的奖励模型——与 STaR 形成对比 |
| Shortcut rationale(捷径式推理依据) | "答案对,推理错" | 经由不可泛化的模式到达标签的推理依据;STaR 会把这些留下 |
延伸阅读
- Zelikman et al. (2022). STaR: Bootstrapping Reasoning With Reasoning —— 最初的论文。
- Hosseini et al. (2024). V-STaR: Training Verifiers for Self-Taught Reasoners —— 加了一个 DPO 验证器用于推理时筛选。
- Zelikman et al. (2024). Quiet-STaR: Language Models Can Teach Themselves to Think Before Speaking —— 每 token 的内部推理依据。
- Lightman et al. (2023). Let's Verify Step by Step —— 过程奖励模型,另一种梯度信号。
- DeepSeek-R1 paper (arXiv:2501.12948) —— 在可验证任务上做 RL,把 STaR 放大到前沿训练规模。