站点图标 高效码农

R-Zero突破零数据训练:大模型如何自我进化实现数学与通用推理飞跃?

从空白开始:R-Zero 如何让大模型自己学会推理

“零数据” 不再意味着零能力。本文用工程师的直白语言带你走完 R-Zero 的完整流程:原理、实验结果、动手步骤,以及你可能会踩的坑。


什么是 R-Zero?

R-Zero 是腾讯 AI Lab 在 2025 年 8 月发布的一套训练框架。它的核心目标只有一个:用一块空白画布,让大语言模型(LLM)自己出题、自己答题、自己进步,全程不需要人类标注数据

一句话概括

把同一个基础模型复制两份,一个叫 “出题官”(Challenger),一个叫 “解题官”(Solver)。出题官专门给解题官出难题,解题官想办法答对。两者交替训练,难题越来越刁钻,解题官也越来越强。


为什么传统方法行不通?

传统做法 痛点
人工写数学题 成本高、题目风格单一、难扩容
用现成题库 题目难度固定,模型很快“刷完”
无监督自学 需要大量外部题目,题目质量难控制

R-Zero 绕过了这些坑:题目由模型自己生成,难度实时跟随解题官水平调节,完全不用外部数据


原理解密:Challenger 与 Solver 的“双人舞”

1. 角色分工

  • Challenger(出题官)
    用强化学习(GRPO)训练,奖励函数只看一件事——让当前 Solver 的答题正确率尽量接近 50%
    如果 Solver 100% 答对,说明题目太简单;0% 答对,说明题目太难。50% 正好是“学习区”。
  • Solver(解题官)
    拿到 Challenger 生成的题目后,用自己生成的多份答案做“自洽投票”,得到伪标签,再用同样的 GRPO 强化学习更新自己。

2. 训练循环(3 步循环)

  1. 出题官训练
    冻结解题官,让出题官生成 8 000 道候选题,保留那些让解题官“半信半疑”的题目(正确率在 30%–70%)。
  2. 生成训练集
    用解题官的多答案投票机制给每题打伪标签,形成无人工标注的训练集。
  3. 解题官训练
    冻结出题官,解题官在新题目上做强化学习,提升正确率。

重复 3 轮,效果见下一节。


实验结果:数据会说话

官方在 4 个基础模型上做了完整测试:Qwen3-4B、Qwen3-8B、OctoThinker-3B、OctoThinker-8B。
测试任务分成两类:

类别 具体基准 考察点
数学推理 AMC、AIME、MATH-500、GSM8K、Olympiad-Bench 等 7 项 严格数学能力
通用推理 MMLU-Pro、SuperGPQA、BBEH 跨界常识与推理

关键数字(取平均提升)

模型 数学平均提升 通用推理平均提升
Qwen3-4B-Base +6.49 分 +3.81 分
Qwen3-8B-Base +5.51 分 +4.24 分
OctoThinker-3B +2.68 分 +3.40 分
OctoThinker-8B +2.11 分 +10.07 分

结论

  • 数学训练带来的收益成功迁移到通用推理任务。
  • 小模型也能稳定提升,说明方法对参数量不挑剔。
  • 三轮迭代即可看到单调增长,无需复杂调参。

动手实践:30 分钟跑通 Demo

下面给出官方仓库的精简步骤,确保你在本地或云端可复现。

环境准备

git clone https://github.com/Chengsong-Huang/R-Zero.git
cd R-Zero
pip install -r requirements.txt

目录与密钥

# 建好工作目录
export STORAGE_PATH="/your/big/dir"
export HUGGINGFACENAME="your_hf_id"
mkdir -p $STORAGE_PATH/{evaluation,models,generated_question,temp_results}

# 填写 API 密钥
# 1) tokens.json 里放 Hugging Face & WandB
# 2) evaluation/results_recheck.py 里放 OpenAI Key

一键启动

bash scripts/main.sh Qwen/Qwen3-4B-Base qwen3-4b

脚本会顺序执行:出题官训练 → 题目生成 → 解题官训练,循环 3 轮。
日志、中间 checkpoint、生成的题目都会保存在 STORAGE_PATH


常见问题 FAQ

基于社区提问与作者 issue 整理,拿来即用。

  1. 硬件要求?
    官方在 8×GPU 服务器上实验,但 4B 或 8B 模型单卡即可。显存不够请把 batch size 调小。

  2. 训练卡住?
    多数是 math_verify 库的无限循环 bug。作者已加 timeout,如仍卡住,直接重启脚本,会自动从最新 checkpoint 继续。

  3. 能换成自己的基础模型吗?
    只要模型支持 Hugging Face 接口即可。把脚本里的模型名替换成你的路径即可。

  4. 想跑更大模型?
    需要修改 scripts/main.sh 中的 GPU 数量与并行策略,官方脚本默认单卡。

  5. 如何查看中间题目?
    每轮生成的题目保存在 $STORAGE_PATH/generated_question/iter{1,2,3},纯文本可直接打开。


深入分析:为什么 R-Zero 能成功?

官方在 Qwen3-4B 上做了消融实验,把关键模块一个个关掉,看性能掉多少。

被移除的模块 数学平均分下降 通用平均分下降
出题官强化学习 -3.70 -4.10
重复惩罚 -2.30 -2.85
难度过滤 -0.71 -6.15

解读

  • 出题官强化学习是最大功臣:没有 RL,题目难度随机,学习低效。
  • 难度过滤对通用任务影响最大:说明“太难或太简单”的题目会稀释训练集质量。
  • 重复惩罚则保证题目多样性,防止 Challenger 陷入“换皮”题海。

与监督数据协同:1+1>2

R-Zero 并非排斥人工标注。官方把 R-Zero 三轮后的 checkpoint 再用同一批标注数据做微调,结果比直接用标注数据额外高出 +2.35 分
要点:R-Zero 先让模型进入“高潜力”状态,再喂人工数据,效果事半功倍。


局限与展望

当前局限 未来工作
只适用于答案可验证的领域(数学、代码) 探索主观评价任务(写作、对话)
伪标签准确率随难度增加而下降(63%→第三轮) 引入更鲁棒的标签生成机制
训练开销随轮次线性增加 研究动态早停与高效采样

结语

R-Zero 把“无师自通”从口号变成可行工程方案:

  • 不依赖外部题库,
  • 不依赖人类标注,
  • 小参数量模型也能持续提升。

如果你正在做教育、科学计算或任何需要推理能力的 AI 产品,R-Zero 给出的“自我进化”范式值得一试。
动手跑一遍脚本,观察 Challenger 如何一步步把 Solver 逼到极限,你会对“模型自己教自己”这件事有全新的体感。

退出移动版