【数据合成】Socratic-Zero 自动合成数据 指导课程学习
Socratic-Zero能自动合成训练数据,帮助模型进行“易错题”的深入学习,并对“简单题”进行延展,帮助模型全面提升能力,在数学类题目上收获了很好的成绩,相信这一方法也能用于其他题目的学习。
Socratic-Zero 论文深度解读:数据构造、训练机制与多智能体协作
本文面向专业计算机工程师,系统解析《Socratic-Zero: Bootstrapping Reasoning via Data-Free Agent Co-evolution》中数据构造机制的核心设计。我们将聚焦三点:
- 三个智能体(Teacher、Solver、Generator)如何协同构造高质量训练数据;
- 训练方法的数学形式化表达与实现细节;
- 关键实验发现及其工程启示。
所有引用均来自原文(arXiv:2509.24726),并辅以精准中文翻译与技术解读。
1. 三智能体协作机制:一个闭环的“苏格拉底式”数据工厂
Socratic-Zero 的核心创新在于构建了一个无需外部标注、仅靠100个种子问题即可自举高质量数学推理数据的闭环系统。该系统由三个角色构成,其协作逻辑可概括为:
Solver 犯错 → Teacher 诊断并出新题 → Generator 学会出题 → 新题喂给 Solver → 循环提升
1.1 Solver:推理执行者,通过偏好学习进化
- 角色定义:Solver 是待训练的模型(如 Qwen3-8B),其策略为 πθS(y∣q)\pi_{\theta_S}(y|q)πθS(y∣q),将问题 qqq 映射为推理轨迹 yyy。
- 训练信号来源:它不依赖人工标签,而是从 正确 vs 错误解法的偏好对 中学习。
- 关键机制:对每个问题 qqq,Solver 生成 k=8k=8k=8 条解法轨迹 {yS(i)}i=1k\{y_S^{(i)}\}_{i=1}^k{yS(i)}i=1k。Teacher 的验证函数 V(q,y)∈{0,1}V(q, y) \in \{0,1\}V(q,y)∈{0,1} 将其分为:
- 胜者集(winning):Yw(q)={y∣V(q,y)=1}∪{yref}Y_w(q) = \{ y \mid V(q,y)=1 \} \cup \{y_{\text{ref}}\}Yw(q)={y∣V(q,y)=1}∪{yref}(若全错,则用参考解)
- 败者集(losing):Yl(q)={y∣V(q,y)=0}Y_l(q) = \{ y \mid V(q,y)=0 \}Yl(q)={y∣V(q,y)=0}
- 训练目标:使用 DPO(Direct Preference Optimization) 最大化胜者相对于败者的对数似然比:
LDPO=−Eq,yw,yl[logσ(βlogπθS(yw∣q)πθref(yw∣q)−βlogπθS(yl∣q)πθref(yl∣q))] \mathcal{L}_{\text{DPO}} = -\mathbb{E}_{q, y_w, y_l} \left[ \log \sigma\left( \beta \log \frac{\pi_{\theta_S}(y_w|q)}{\pi_{\theta_{\text{ref}}}(y_w|q)} - \beta \log \frac{\pi_{\theta_S}(y_l|q)}{\pi_{\theta_{\text{ref}}}(y_l|q)} \right) \right] LDPO=−Eq,yw,yl[logσ(βlogπθref(yw∣q)πθS(yw∣q)−βlogπθref(yl∣q)πθS(yl∣q))]
其中 πθref\pi_{\theta_{\text{ref}}}πθref 是迭代开始时的冻结策略,β\betaβ 为温度系数。
原文佐证:“The Solver’s policy πθS\pi_{\theta_S}πθS is improved through online preference learning… updated using the Direct Preference Optimization (DPO) loss”(Section 3.2)。
1.2 Teacher:固定专家,负责诊断与出题
- 角色定义:Teacher 是一个冻结的、高能力 LLM(如 Qwen3-235B),不参与训练,仅提供两个确定性函数:
- 验证函数 V(q,y)V(q, y)V(q,y):判断解法是否正确;
- 问题精炼函数 G(q,yfail)→(q′,yref′)G(q, y_{\text{fail}}) \to (q', y'_{\text{ref}})G(q,yfail)→(q′,yref′):基于 Solver 的错误解法 yfaily_{\text{fail}}yfail,生成一个新问题 q′q'q′ 及其参考解。
- 出题策略:不是随机增强,而是针对性地暴露 Solver 的弱点。
- 若原题 Solver 偶尔能解(0<sq<10 < s_q < 10<sq<1),则基于其错误尝试生成新题,直击错误根源;
- 若原题 Solver 已掌握(sq=1s_q = 1sq=1),则基于其正确解法生成更难变体。
原文例子(E.1 节):
- 原题:“求满足 2x−3x+5≥2\frac{2x-3}{x+5} \geq 2x+52x−3≥2 的所有实数 xxx(区间表示)。”
- 增强题(第3轮):“求满足 2x−5x2−9+1x+3≤4x+1(x−3)2\frac{2x-5}{x^2-9} + \frac{1}{x+3} \leq \frac{4x+1}{(x-3)^2}x2−92x−5+x+31≤(x−3)24x+1 的所有实数 xxx。”
- 增强分析:“引入多个复杂因子:(1) 需要定义域分析的因式分母,(2) 多个有理项需通分,(3) 分母含平方项,(4) 更复杂的代数操作。该题针对学生在有理不等式求解中的常见错误。”
此例清晰展示了 Teacher 如何将一个简单分式不等式,升级为考察定义域、通分、符号判断、代数变形的综合题,且直接源于 Solver 的失败模式。
1.3 Generator:可扩展的“教师学徒”,学习出题策略
- 角色定义:Generator 是一个可训练模型(如 Qwen3-32B),目标是模仿 Teacher 的出题行为,从而实现低成本、大规模数据生成。
- 训练方法:采用 价值加权监督微调(Weighted Supervised Fine-Tuning, WSFT)。
- 核心思想:并非所有 Teacher 生成的问题都同等重要。Generator 应优先学习那些对当前 Solver 难度适中的问题。
- 价值函数设计:
U(q′∣πθS)=exp(−(sq′−μ)22σ2) U(q' | \pi_{\theta_S}) = \exp\left( -\frac{(s_{q'} - \mu)^2}{2\sigma^2} \right) U(q′∣πθS)=exp(−2σ2(sq′−μ)2)
其中 sq′s_{q'}sq′ 是 Solver 在 q′q'q′ 上的成功率,μ=0.5\mu=0.5μ=0.5 表示目标难度为“50%成功率”(即最近发展区),σ=0.2\sigma=0.2σ=0.2 控制容忍度。 - 训练目标:
LWSFT=−E(q,yfail,q′)∼DG[U(q′∣πθS)⋅logπθG(q′∣q,yfail)] \mathcal{L}_{\text{WSFT}} = -\mathbb{E}_{(q, y_{\text{fail}}, q') \sim \mathcal{D}_G} \left[ U(q'|\pi_{\theta_S}) \cdot \log \pi_{\theta_G}(q' | q, y_{\text{fail}}) \right] LWSFT=−E(q,yfail,q′)∼DG[U(q′∣πθS)⋅logπθG(q′∣q,yfail)]
即:高价值(难度适中)的问题在损失函数中权重更高。
原文佐证:“The Generator is trained via weighted supervised fine-tuning (WSFT) to mimic the Teacher’s generation of high-utility problems… incentivize problems at the frontier of the Solver’s capabilities”(Section 3.3)。
1.4 三智能体协作的典型实例(来自原文)
为帮助读者直观理解 Socratic-Zero 中三个智能体如何协同工作,我们从原文附录 E 中摘取两个典型增强案例,并还原其协作流程。
示例 1:有理不等式的针对性增强(原文 E.1)
-
原始问题(Solver 失败):
“求满足 2x−3x+5≥2\frac{2x - 3}{x + 5} \geq 2x+52x−3≥2 的所有实数 xxx(区间表示)。” -
Solver 的典型错误:
忽略分母符号对不等式方向的影响,或未正确处理定义域 x≠−5x \neq -5x=−5。 -
Teacher 的诊断与增强(第3轮):
生成新题:“求满足 2x−5x2−9+1x+3≤4x+1(x−3)2\frac{2x - 5}{x^2 - 9} + \frac{1}{x + 3} \leq \frac{4x + 1}{(x - 3)^2}x2−92x−5+x+31≤(x−3)24x+1 的所有实数 xxx。” -
增强分析(原文翻译):
“该增强引入多重复杂性因子:(1) 因式分解的分母要求定义域分析;(2) 多个有理项需通分;(3) 分母含平方项;(4) 更复杂的代数操作。新题精准针对学生在有理不等式求解中的常见错误,同时保留核心数学概念。”
-
Generator 的学习目标:
通过 WSFT 学习 Teacher 的这种“从错误中提炼结构性难点”的出题策略,而非简单增加数值复杂度。
示例 2:数论问题的结构迁移(原文 E.2)
-
原始问题:
“求 gcd(10!+6, 11!+14)\gcd(10! + 6,\ 11! + 14)gcd(10!+6, 11!+14)。” -
Solver 的失败模式:
无法识别 11!=11×10!11! = 11 \times 10!11!=11×10! 的关系,导致无法使用欧几里得算法简化。 -
Teacher 的增强:
“求 gcd(12!+8, 13!+26)\gcd(12! + 8,\ 13! + 26)gcd(12!+8, 13!+26),其中第二个数可写为 13⋅12!+2613 \cdot 12! + 2613⋅12!+26。” -
增强意图:
保持 GCD 结构不变,但提升阶乘规模,并显式提示关系,迫使 Solver 主动应用模运算与递推思想。
2. 训练过程详解:从偏好学习到价值加权蒸馏
Socratic-Zero 的训练是一个三阶段交替优化过程,每轮迭代包含 Solver 的在线策略更新、Teacher 的课程增强、Generator 的离线策略蒸馏。以下按执行顺序展开。
2.1 初始化:种子课程与 SFT 基线
- 种子选择:从 MATH 数据集选取 100 个 Level 2–4 问题,覆盖 7 个数学子领域(见 Table 8),确保初始课程既非过易也非过难。
- Solver 预训练:所有 Solver(如 Qwen3-8B)先在 1,500 个 Level 5 问题上进行 LoRA 微调(SFT),学习基础推理格式(如分步推导、答案框定)。
【我认为,此步至关重要。Table 6a 显示,无 SFT 的 Solver 三轮后仅提升 2.34%,而有 SFT 则提升 18.38%。这说明 RL 阶段依赖 SFT 提供的“推理语法骨架”,否则偏好信号过于稀疏。】
2.2 Solver 训练:基于 DPO 的在线偏好优化
对当前课程 Dt={(q,yref)}D_t = \{(q, y_{\text{ref}})\}Dt={(q,yref)} 中的每个问题 qqq:
- 轨迹采样:Solver 生成 k=8k=8k=8 条独立解法 {yS(i)}i=1k\{y_S^{(i)}\}_{i=1}^k{yS(i)}i=1k(温度 T=0.7T=0.7T=0.7)。
- 正确性验证:Teacher 的验证函数 V(q,y)∈{0,1}V(q, y) \in \{0,1\}V(q,y)∈{0,1} 对每条轨迹打分。
- 构建偏好对:
- 败者集:Yl(q)={yS(i)∣V(q,yS(i))=0}Y_l(q) = \{ y_S^{(i)} \mid V(q, y_S^{(i)}) = 0 \}Yl(q)={yS(i)∣V(q,yS(i))=0}
- 胜者集:Yw(q)={yS(i)∣V(q,yS(i))=1}∪{yref}Y_w(q) = \{ y_S^{(i)} \mid V(q, y_S^{(i)}) = 1 \} \cup \{ y_{\text{ref}} \}Yw(q)={yS(i)∣V(q,yS(i))=1}∪{yref}(若全错,则用参考解)
- DPO 优化:最小化以下损失:
LDPO=−Eq,yw,yl[logσ(β(logπθS(yw∣q)πθref(yw∣q)−logπθS(yl∣q)πθref(yl∣q)))] \mathcal{L}_{\text{DPO}} = -\mathbb{E}_{q, y_w, y_l} \left[ \log \sigma\left( \beta \left( \log \frac{\pi_{\theta_S}(y_w|q)}{\pi_{\theta_{\text{ref}}}(y_w|q)} - \log \frac{\pi_{\theta_S}(y_l|q)}{\pi_{\theta_{\text{ref}}}(y_l|q)} \right) \right) \right] LDPO=−Eq,yw,yl[logσ(β(logπθref(yw∣q)πθS(yw∣q)−logπθref(yl∣q)πθS(yl∣q)))]
其中 πθref\pi_{\theta_{\text{ref}}}πθref 是本轮开始时的冻结策略,β=0.05∼0.2\beta=0.05\sim0.2β=0.05∼0.2(见 Table 7)。
关键设计:即使 Solver 全错,仍能构造有效偏好对(参考解 vs 错误解),避免训练中断。
2.3 Teacher 行为:动态课程增强
Teacher(固定 Qwen3-235B)基于 Solver 失败案例 (q,yfail)(q, y_{\text{fail}})(q,yfail) 执行:
-
问题分类(Appendix C.1):
- 若 sq=0s_q = 0sq=0(全错):暂不生成,避免过难;
- 若 0<sq<10 < s_q < 10<sq<1(部分正确):用 错误解 yfaily_{\text{fail}}yfail 作为输入,生成纠错型新题;
- 若 sq=1s_q = 1sq=1(全对):用 正确解 ysuccy_{\text{succ}}ysucc 作为输入,生成进阶型新题。
-
增强函数 GGG:调用 A.3 中的 Prompt,要求:
“基于错误分析生成增强问题,提供完整解答,确保可解性与正确性,针对具体错误点,保持数学本质。”
-
输出:新问题-解对 (q′,yref′)=G(q,yfail)(q', y'_{\text{ref}}) = G(q, y_{\text{fail}})(q′,yref′)=G(q,yfail),加入 DnewD_{\text{new}}Dnew。
2.4 Generator 训练:价值加权监督微调(WSFT)
目标:让 Generator πθG(q′∣q,yfail)\pi_{\theta_G}(q'|q, y_{\text{fail}})πθG(q′∣q,yfail) 学会模仿 Teacher 的高价值出题行为,从而摆脱对昂贵、固定 Teacher 模型的持续依赖。在训练中,Generator 的数据并不会直接使用,未来不熟的时候有可能会用到
-
构建训练集:
DG={(q,yfail,q′)∣(q,yfail)∈Ft, (q′,yref′)=G(q,yfail)} \mathcal{D}_G = \{ (q, y_{\text{fail}}, q') \mid (q, y_{\text{fail}}) \in F_t,\ (q', y'_{\text{ref}}) = G(q, y_{\text{fail}}) \} DG={(q,yfail,q′)∣(q,yfail)∈Ft, (q′,yref′)=G(q,yfail)} -
定义问题价值(Utility):
- 用更新后的 Solver 评估新题 q′q'q′ 的成功率 sq′=1k∑i=1kV(q′,yS(i))s_{q'} = \frac{1}{k} \sum_{i=1}^k V(q', y_S^{(i)})sq′=k1∑i=1kV(q′,yS(i))
- 价值函数(高斯):
U(q′∣πθS)=exp(−(sq′−μ)22σ2),μ=0.5, σ=0.2 U(q'|\pi_{\theta_S}) = \exp\left( -\frac{(s_{q'} - \mu)^2}{2\sigma^2} \right),\quad \mu=0.5,\ \sigma=0.2 U(q′∣πθS)=exp(−2σ2(sq′−μ)2),μ=0.5, σ=0.2
即:50% 成功率的问题价值最高。
-
WSFT 损失:
LWSFT=−E(q,yfail,q′)∼DG[U(q′∣πθS)⋅logπθG(q′∣q,yfail)] \mathcal{L}_{\text{WSFT}} = -\mathbb{E}_{(q, y_{\text{fail}}, q') \sim \mathcal{D}_G} \left[ U(q'|\pi_{\theta_S}) \cdot \log \pi_{\theta_G}(q' | q, y_{\text{fail}}) \right] LWSFT=−E(q,yfail,q′)∼DG[U(q′∣πθS)⋅logπθG(q′∣q,yfail)]
高价值样本在梯度更新中占更大权重。
实验验证(Table 6b):μ=0.5\mu=0.5μ=0.5 时性能最优(35.72%),偏离后下降,证明“最近发展区”假设成立。
2.5 课程更新与重分类
- 新课程:Dt+1=Dt∪DnewD_{t+1} = D_t \cup D_{\text{new}}Dt+1=Dt∪Dnew
- 历史回放:每批训练包含 25% 历史问题,防止灾难性遗忘(Table 7)。
- 动态重分类:所有问题按新 Solver 的 sqs_qsq 重新划入 Mastered / Learning / Difficult 区(Appendix C.3),指导下一轮增强方向。
【我认为,该框架的课程进化机制极为精巧,但依赖 Teacher 的强验证能力。若将 Teacher 替换为弱模型,可能因误判导致错误增强。一个潜在改进是引入“验证置信度”或多个 Teacher 投票机制,提升鲁棒性。】
2.6 三区机制:动态课程调度的核心
Socratic-Zero 将课程中每个问题 qqq 按 Solver 成功率 sq=1k∑i=1kV(q,yS(i))s_q = \frac{1}{k}\sum_{i=1}^k V(q, y_S^{(i)})sq=k1∑i=1kV(q,yS(i)) 动态划分为三区(Appendix C.1):
-
Mastered 区(sq=1s_q = 1sq=1):Solver 已掌握。
→ Teacher 基于正确解法生成更难题(如将 gcd(10!+6,11!+14)\gcd(10!+6, 11!+14)gcd(10!+6,11!+14) 升级为 gcd(12!+8,13!+26)\gcd(12!+8, 13!+26)gcd(12!+8,13!+26),见 E.2)。 -
Learning 区(0<sq<10 < s_q < 10<sq<1):Solver 偶尔成功,存在可纠错误。
→ Teacher 基于错误解法生成针对性纠错题(如将简单分式不等式升级为需通分、分析定义域的复杂题,见 E.1)。 -
Difficult 区(sq=0s_q = 0sq=0):Solver 完全失败。
→ 暂停增强,避免生成超纲题(Appendix C.2)。
原 Difficult 区问题可能随 Solver 进步进入 Learning 区,重新激活并开始进行学习(此时Solver面对一些原本不会做的题目,已经可以有所思路并开始学习了);Learning 区问题被掌握后转入 Mastered 区,用于进阶出题(即出一些更难的变体题目,让Solver的能力更上一层楼)。
3. 关键实验发现与工程启示
3.1 数据构造质量惊人
- 有效性:仅用 100 个种子,Socratic-Generator-32B 生成的数据,让 8B 学生模型在7个数学基准上平均达到 37.72% 准确率,超越 GPT-5 (36.62%)、Claude-4.1-Opus (37.63%) 等商业巨头(Table 5)。
- 问题有效性:生成问题的可解率(Validity Rate)达 95.6%,与 671B 的 DeepSeek-V3.1(96.5%)相当(Table 4)。
3.2 初始 SFT 至关重要
- 消融实验(Table 6a)显示:若 Solver 未经 SFT 初始化,三轮训练后仅从 9.64% 提升至 11.98%;而经 SFT 后,可提升至 28.02%。
- 启示:SFT 提供了基础推理“语法”,RL 阶段在此之上优化“策略”。跳过 SFT 会导致 RL 信号稀疏且无效。
3.3 高斯价值函数最优
- 实验对比了线性奖励和不同 μ\muμ 的高斯函数,发现 μ=0.5\mu=0.5μ=0.5 时性能最佳(35.72%),偏离后性能下降(Table 6b)。
- 证明:“50% 成功率”确实是模型学习效率最高的难度点。
【我认为,论文未探讨价值函数的在线自适应调整。例如,随着 Solver 能力提升,μ\muμ 是否应动态下调?这可能是未来提升样本效率的方向。】
总结
Socratic-Zero 通过 Solver(执行)- Teacher(诊断/出题)- Generator(学出题) 的三元闭环,实现了完全自主、高质量、可扩展的数学推理数据构造。其核心在于:
- 以错误为燃料:Solver 的失败是课程进化的唯一驱动力;
- 以难度为标尺:通过价值函数确保新数据始终处于学习前沿;
- 以模仿为杠杆:Generator 将昂贵的 Teacher 能力蒸馏为可复用的出题策略。
该框架不仅在性能上超越了依赖海量人工数据的传统方法,更提供了一种数据高效、模型自主进化的新范式,对资源受限场景下的大模型训练具有重大工程价值。
在 Socratic-Zero 框架中,将课程中的问题动态划分为 Mastered(掌握区)、Learning(学习区) 和 Difficult(困难区) 三个区域,是实现自适应课程进化(adaptive curriculum evolution)的核心机制。其作用可从以下三个层面理解:
1. 指导 Teacher 的增强策略:精准出题
Teacher 并非对所有失败问题一视同仁地增强,而是根据问题所属区域采取不同策略(Appendix C.2):
-
Learning 区(0<sq<10 < s_q < 10<sq<1):
Solver 偶尔能解,说明已具备部分能力但存在特定错误模式。
→ Teacher 基于 错误解法 yfaily_{\text{fail}}yfail 生成新题,针对性暴露并纠正该错误。例(E.1):Solver 在分式不等式中忽略定义域 → Teacher 生成含多个因式分母、需通分的新题。
-
Mastered 区(sq=1s_q = 1sq=1):
Solver 已完全掌握,继续训练收益低。
→ Teacher 基于 正确解法 ysuccy_{\text{succ}}ysucc 生成更难变体,推动能力边界。例(E.2):Solver 能解 gcd(10!+6,11!+14)\gcd(10!+6, 11!+14)gcd(10!+6,11!+14) → Teacher 升级为 gcd(12!+8,13!+26)\gcd(12!+8, 13!+26)gcd(12!+8,13!+26),要求识别阶乘递推关系。
-
Difficult 区(sq=0s_q = 0sq=0):
Solver 完全无法解决,增强可能生成超纲难题,导致训练信号无效。
→ 暂不用于生成新题,避免课程难度失控(Appendix C.1)。
【我认为,这种“按区施策”机制极大提升了数据构造的教学有效性。传统方法(如随机增强)无法区分“可教之错”与“不可逾越之难”,而 Socratic-Zero 通过三区划分,确保每道新题都落在 Solver 的“最近发展区”。】
2. 保障课程难度动态平衡:避免过易或过难
三区划分使课程难度自动匹配 Solver 的当前能力:
- 若 Solver 能力提升,原 Difficult 区问题可能进入 Learning 区,重新激活增强;
- 若增强过猛,Learning 区问题可能滑入 Difficult 区,系统自动暂停对其增强;
- Mastered 区作为“能力基座”,持续提供进阶素材。
实验证据(Appendix J, Table 9):
Solver 的平均正确率从 Stage 1 的 52.1% 降至 Stage 2 的 48.7%,再回升至 Stage 3 的 50.1%。
这种“先降后升”表明:Teacher 的增强主动拉高难度,而 Solver 通过训练逐步适应,形成良性对抗。
3. 支撑 Generator 的价值学习:定义“好问题”标准
Generator 的价值函数 U(q′)=exp(−(sq′−μ)22σ2)U(q') = \exp(-\frac{(s_{q'} - \mu)^2}{2\sigma^2})U(q′)=exp(−2σ2(sq′−μ)2) 依赖对 sq′s_{q'}sq′(新题成功率)的评估,而 sq′s_{q'}sq′ 的计算直接基于三区划分逻辑:
- 目标:生成 sq′≈0.5s_{q'} \approx 0.5sq′≈0.5 的问题(即 Learning 区中心);
- 实现:通过三区动态重分类(Appendix C.3),确保价值函数始终以最新 Solver 能力为基准。
消融实验(Table 6b):
当 μ=0.5\mu=0.5μ=0.5 时性能最优(35.72%),偏离后下降,证明 Learning 区 = 最优训练区。
总结:三区是“智能课程调度器”
| 区域 | Solver 成功率 sqs_qsq | Teacher 行为 | 教学目的 |
|---|---|---|---|
| Mastered | sq=1s_q = 1sq=1 | 基于正确解生成更难题 | 拓展能力上限 |
| Learning | 0<sq<10 < s_q < 10<sq<1 | 基于错误解生成纠错题 | 修复具体弱点 |
| Difficult | sq=0s_q = 0sq=0 | 暂停增强 | 避免无效训练 |
这一机制将哲学层面的“苏格拉底式提问”转化为可计算的动态课程调度策略,是 Socratic-Zero 仅用 100 个种子问题就实现超越商业大模型性能的关键所在。
