STaR 系列推理:让模型自己教会自己推理


文档摘要

STaR 系列推理:让模型自己教会自己推理 本节摘要:最小的自我改进循环,藏在「理由(rationale)」里。STaR(Self-Taught Reasoner,2022)的做法是:模型先生成一条思维链,只保留那些最终答对的,再在这些保留的轨迹上微调,如此反复。V-STaR(2024)给它配一个学习出来的验证器(verifier),让推理期选择更准;Quiet-STaR(2024)把「理由」下沉到每一个 token 位置。三者都有效,但都不是魔法——只要某条捷径碰巧蒙对了答案,这个循环就会把它一并保留并强化。

STaR 系列推理:让模型自己教会自己推理

本节摘要:最小的自我改进循环,藏在「理由(rationale)」里。STaR(Self-Taught Reasoner,2022)的做法是:模型先生成一条思维链,只保留那些最终答对的,再在这些保留的轨迹上微调,如此反复。V-STaR(2024)给它配一个学习出来的验证器(verifier),让推理期选择更准;Quiet-STaR(2024)把「理由」下沉到每一个 token 位置。三者都有效,但都不是魔法——只要某条捷径碰巧蒙对了答案,这个循环就会把它一并保留并强化。本节讲透这三者的机制、各自的设计巧思(STaR 的 rationalization、V-STaR 的 DPO 验证器、Quiet-STaR 的「思考 token」与混合权重),以及它们在 2026 技术栈里的位置:DeepSeek-R1、o1 这类「可验证任务的 RL」本质上就是 STaR 的答案条件梯度信号被放大到前沿规模。

对应原课程:Phase 15 · Lesson 02 · star-family-reasoning(原英文 phases/15-autonomous-systems/02-star-family-reasoning/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 画出 STaR 的自举循环(采样→保留答对者→微调→重复),并解释 rationalization 为什么是让它能学起来的关键补丁。
  2. 说明 V-STaR 用 DPO 训练验证器的动机,以及为什么收益主要来自推理期选择而非继续微调生成器。
  3. 描述 Quiet-STaR 的「每个 token 一段隐式理由」 机制,包括 end-of-thought token 与混合权重头。
  4. 识别三者的共同安全隐患:答案条件梯度会保留「答对但推理有缺陷」的捷径,在分布外静默失效。
  5. 把 STaR 模式映射到 2026 栈:DeepSeek-R1 / Kimi-k1.5 / o1 的 RL、过程奖励模型、AlphaEvolve、Darwin Godel Machine。

一、问题与直觉

教模型推理,最直白的办法是收集人写的推理轨迹。这又贵又慢,还被人类愿意写多少高质量 CoT 所限。

STaR 提出反问:要是让模型自己写理由、再用已知答案打分呢?循环三步:

  1. 采样一条推理轨迹加答案;
  2. 答对了就把这条留下;
  3. 在留下的集合上微调,重复。

它在 GSM8K、CommonsenseQA 上都涨了,无需新的人类标注。但循环里有个内置偏差:任何碰巧得到正确答案的理由都会被保留,不管推理本身是否站得住脚。V-STaR 用一个学出来的验证器补这个洞;Quiet-STaR 把思想下沉到每个 token。

💡 这三种方法都把最终答案当梯度信号。这是它们最大的力量来源,也是最大的安全软肋。

二、从零实现:STaR 自举循环模拟器

原课程 code/main.py(纯标准库)在一个玩具算术任务上模拟 STaR 循环,让你直观看到三件事:准确率随自举轮次爬升;捷径如何混进来(模拟器内置一类「懒惰理由」,40% 概率蒙对但泛化很差,看 STaR 会不会留下它们);验证器在推理期能帮多少(无法完全剪掉训练期引入的捷径)。

STaR 主循环骨架

def star_round(model, problems, labels, sampler, correct_fn, n_samples=4): kept = [] for q, gold in zip(problems, labels): traces = [sampler(model, q) for _ in range(n_samples)] hit = [t for t in traces if correct_fn(t["answer"], gold)] if not hit: # rationalization: 把正确答案喂回去,让模型「倒推」一条理由 hit = [sampler(model, q, hint=gold)] kept.extend((q, t["rationale"], t["answer"]) for t in hit[:1]) model.finetune(kept) # 在「答对的理由」上微调 return model

设计要点:rationalization 是 STaR 能学起来的关键。如果基模型对某题永远答不对,循环在这题上学不到任何东西;把答案当提示喂回去,逼模型产出一条能通到该答案的理由,再纳入训练集——哪怕这条「倒推」的理由不一定自然。

原始论文的结果量级

  • GPT-J 在 GSM8K 上从 5.8% 涨到 10.7%(反复 STaR + rationalization,绝对约 +5 个点)。
  • CommonsenseQA 上,STaR 训练的 GPT-J 6B 达到 72.5%,接近 在人工标注理由上微调的 GPT-3 175B(约 73%)——后者模型大约大 30 倍。

V-STaR:用 DPO 训练验证器

STaR 把答错的理由直接扔了。Hosseini 等(2024)指出这些也是数据:每一对(理由,「对不对」)都能训一个验证器。他们用 DPO(Direct Preference Optimization) 同时在正确与错误解上训出一个排序器,推理时采 N 条理由、挑验证器打分最高那条。

# 推理期:best-of-N cands = [sampler(model, q) for _ in range(N)] best = max(cands, key=lambda t: verifier.score(q, t["rationale"]))

报告增益:在 GSM8K 和 MATH 上,相对先前的自我改进基线 +4 到 +17 个百分点,且大部分增益来自用验证器做推理期选择,而不是继续拿它微调生成器。

Quiet-STaR:每个 token 一段隐式理由

Zelikman 等(2024)把问题推到极致:要是模型在每个 token 位置都先生成一段短「内部理由」,而不是只在问题与答案之间想一次呢?Quiet-STaR 训练模型在每个预测 token 前先吐一段隐式 thought,再用一个学出来的权重把「带 thought 的预测」与「基线预测」混合。

结果:Mistral 7B 在零样本下,GSM8K 从 5.9% 涨到 10.9%,CommonsenseQA 从 36.3% 涨到 47.2%,且无需任务特定微调。模型学会了「何时思考」——难 token 配更长的内部理由,简单 token 几乎不思考。

三、框架对比

方法 训练信号 推理成本 数据浪费 已知失败模式
STaR 答对就保留 (理由, 答案) 丢弃所有答错理由 捷径理由
STaR + rationalization 上述 + 用正确答案提示重试 更少 倒推理由可能不自然
V-STaR STaR + 用两类样本 DPO 训验证器 N×(best-of-N) 极少 验证器可能强化「自信的错误」
Quiet-STaR 每 token 一段理由 + 混合权重 1.5~3× 极少 仍是答案条件梯度

三者共同的安全隐患

三种方法都用最终答案作为梯度信号。一条通过有缺陷推理得到正确答案的理由——走了捷径、瞎蒙、用了不泛化的模式——会被正向强化。在分布内捷径管用;在分布外它静默失效

V-STaR 的验证器靠「学排序理由」缓解,但验证器是在同一标签集上训的,可能学到「偏好格式漂亮的错误推理」胜过诚实的 uncertainty。更安全的设计是:把 STaR 风格的数据与 (a) 过程监督奖励模型(奖励中间步骤而非仅答案)和 (b) 留出分布外评估(专门打破简单捷径)结合。

它在 2026 栈里的位置

STaR 本身已不新,但这个模式在 2025-2026 无处不在:

  • 在可验证数学问题上做 RL(DeepSeek-R1、Kimi-k1.5、o1)= STaR 的答案条件梯度信号,被放大到前沿规模。
  • 过程奖励模型(Lightman 等 2023「Let's verify step by step」)= 过程监督的替代梯度。
  • AlphaEvolve(第 03 节)= 代码版的 STaR,用程序评估器代替标签。
  • Darwin Godel Machine(第 04 节)= Agent 脚手架自身的 STaR。

理解 STaR,后面这些就全都「咔哒」一声扣上了。它是最小可行的自我改进循环

四、可复用产物

outputs/skill-star-loop-reviewer.md 是一份审查技能:在你「拿一条自教推理管线去训练」之前,用它审一遍——捷径频率有没有估、有没有留出 OOD 测试、验证器是在同一标签集上训出来的吗、梯度信号是答案条件还是过程条件。它把「上线前的最小检查清单」固化成可重复步骤。

code/main.py 是零依赖模拟器,把捷径频率、采样数、是否启用验证器都做成可调参数,适合在团队评审里演示「同样的训练分布准确率 >90%,分布外却崩盘」的对照。

五、练习

  1. 跑模拟器:把捷径频率先设 0、再设 0.4。两次运行的最终准确率在训练分布上可能都 >90%,分布外却差很多——量化这个差距。

  2. 加一个留出 OOD 测试:从另一个分布抽题,评估自举后的模型在分布内与 OOD 上的表现,把差距画出来。

  3. 读 Quiet-STaR 论文(arXiv:2403.09629)第 3 节,用各三句话解释 end-of-thought token 与混合权重头。

  4. 对比 STaR 的「答对才留」与过程监督替代方案(对每步理由独立打分),指出标注成本差异与可能的质量差异。

  5. 设计一条评估能在部署模型里抓到捷径理由。它不必完美,只要能打破 STaR 循环会强化的那些最简单捷径。

本节要点回顾

  1. STaR 是最小可行的自我改进循环:采样理由→保留答对者→微调→重复,无需新的人工推理标注。
  2. rationalization 是关键补丁:基模型答不对的题,把答案当提示喂回去「倒推」一条理由,否则循环学不起来。
  3. V-STaR = STaR + DPO 验证器:用正确与错误两类样本训排序器,推理期 best-of-N;增益主要来自推理选择而非继续微调。
  4. Quiet-STaR 把思想下沉到每个 token:每个预测 token 前先生成隐式 thought,再用学习权重与基线混合;模型学会「何时思考」。
  5. 共同软肋是答案条件梯度:答对但推理有缺陷的捷径会被强化,在分布外静默失效。
  6. 验证器无法根治:它在同一标签集上训,可能偏好「自信的错误」;需配过程奖励模型与留出 OOD 评估。
  7. STaR 是 2026 栈的原型:DeepSeek-R1 / o1 的可验证任务 RL、AlphaEvolve、Darwin Godel Machine 都是它在不同对象上的放大版。

下一节,我们把 STaR 的「标签」换成「程序评估器」——AlphaEvolve 用进化算法让代码自己迭代,看自我改进循环在代码生成上能走多远。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U