当前位置: 首页 > news >正文

推理大模型的后训练增强技术-Reasoning模型也进化到2.0了,这次居然学会用工具了

论文题目:START: Self-taught Reasoner with Tools

论文链接:https://arxiv.org/pdf/2503.04625

论文简介

Reasoning模型也进化到2.0了,这次居然学会用工具了!✨ 最近有个叫START的方法,让大模型也能学着用工具,比如自己调用代码解释器,来提升推理和解决问题的能力。

具体怎么实现的呢?它会把「思考链」和「工具调用」结合起来,给模型配上了自查、自我探索和自己修bug的能力。简单说,就是教模型边想边动手,用工具解决推理过程中的难题。

具体的训练步骤大概是:

1️⃣ 收集数学和编程题目,比如数学的AIME、MATH,编程的Codeforces、LiveCodeBench这些比赛题目。
2️⃣ 设计一些「友情提示」,比如“这里不如用Python试一下?”
3️⃣ 让模型自己带着工具解题,然后把刚才的提示巧妙地插到推理过程中(通常是在模型犹豫的时候,比如出现「等等…」的地方)。
4️⃣ 对解题过程打分,去掉重复或者没用的步骤,形成高质量的种子数据集。
5️⃣ 用这些种子数据微调模型,让它学到正确的使用工具的思路,并不断“自我精炼”,创造更多解题方案。
6️⃣ 再通过“拒绝采样”技术在更大的数据集上做二次微调,让模型越来越聪明。

研究还发现了几个有趣的现象:

💡 加入工具后,数学题的准确率直接提升了15%,像AMC23考试的正确率达到了95%!编程题的中等难度问题准确率提升更厉害,达到了38.6%!

📈 考试的时候加上一些小提示,也能再提升12%的准确率。
🐞 调整代码模板,训练过程中的debug错误直接少了41%。
💡 给模型加工具(比如Python解释器)带来的提升,比单纯增加训练数据还有效!
🧠 大模型本身其实就已经有使用工具的潜力了,只是需要点拨一下就能激活。
🛠️ 训练的时候用“两阶段”方法(先提示微调再拒绝采样微调),能让模型更好地掌握工具的使用方法。
📍 对了,插入提示的位置也很重要,最好放在连词后(比如“但是”、“等等”之后),停顿之前。

一句话总结:模型加了工具,就像你考试允许开卷一样,效果简直好到飞起!


如上图所示START模型的训练框架,它的训练分为两个阶段:Hint-RFT 和 RFT。

论文效果

1️⃣ Hint-infer(提示推理)

  • 先拿代码和数学数据喂给 QwQ-32B-Preview(一个大模型),它会在特定的地方停下来。
  • 这些停顿点会插入一些智能提示(来自一个提示库),比如“这里是不是可以试试Python?”
  • 之后,模型会继续推理,并且用代码解释器(Python)来执行代码、检查反馈,确保思路正确。

2️⃣ Hint-RFT(基于提示的拒绝采样微调)

  • 在上一步的基础上,模型生成的推理过程会经过一轮筛选,去掉低质量、重复的内容,并进行一些修改,形成一个高质量的种子数据集 D_seed
  • 然后,QwQ-32B-Preview 会用这些数据进行微调,生成一个初版的 START-0,让它能自己感知并使用工具。

3️⃣ RFT(拒绝采样微调)

  • START-0 开始自我蒸馏,自己生成更多解题思路,构建一个更丰富的训练数据集 D_START(这个数据集不仅更有多样性,还强化了工具使用模式)。
  • 最后,用这个扩展版数据集再微调一次,最终得到完整的 START 模型

简单来说,这个流程的关键就是:

  • 先让模型学会用提示来调用工具
  • 再筛选高质量的解题过程进行微调
  • 让模型自己生成更多推理过程,最后再训练一遍

这张图对比了 QwQ-32B-PreviewSTART 在处理 LiveCodeBench(难度:hard)编程题时的表现。

📌 QwQ-32B-Preview

  • 采用 长链推理(CoT),自己反思、尝试不同的方法,逻辑看起来很严谨。
  • 但在分析复杂测试用例时容易“幻觉”,也就是推理时编出一些错误的假设,导致最终解法是错的。

📌 START

  • 继承了 QwQ-32B-Preview 的推理框架,但 加入了代码执行能力,让模型可以真正跑代码来验证自己的推理。
  • 具体做了什么?
    1️⃣ 执行代码:用解释器跑代码,看看结果对不对。
    2️⃣ 检测错误:如果输出和预期不匹配,说明哪里有问题。
    3️⃣ 迭代分析 & 调试:自动找 bug、分析错误,修正代码。
    4️⃣ 输出最终答案:确保解法正确再交卷!

总体来看,QwQ-32B-Preview 虽然思考方式不错,但容易犯错。START 靠工具(代码执行)补上漏洞,推理更严谨,答案更靠谱!

相关文章:

  • 基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等
  • I2C 总线协议
  • 1.6 极限存在准则
  • python-数据结构汇总,树图、代码讲解(字符串、数组、字典、集合、元组)
  • JavaScript运算符与流程控制详解
  • 【每日学点HarmonyOS Next知识】上下拉列表、停止无限循环动画、页面列表跟随列表滑动、otf字体、日期选择
  • C语言修饰符汇总详解
  • 4.数据结构-树和二叉树
  • VLLM专题(二十六)—使用 Docker
  • 使用HTML+JavaScript生成一个贪吃蛇游戏-demo
  • 案例5_1:单位数码管显示0
  • ERC-6909 最小多代币标准
  • 2000-2023年各地级市二氧化碳排放量数据/地级市CO2排放量
  • 高数1.4 无穷小与无穷大
  • React-state响应式内部数据(类组件Hook两种方式整理)
  • Infura 简介
  • 英文LaTeX中左右引号怎么打
  • Unet nn-Unet
  • 【动手学深度学习】简单多层感知机实现图像分类处理
  • linux 常用命令及命令作用
  • 京东回应外卖系统崩溃:订单暴涨所致,已恢复
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 人民日报任平:从汽车产销、外贸大盘看中国经济前景
  • 彭丽媛同巴西总统夫人罗桑热拉参观中国国家大剧院
  • 北京今日白天超30℃晚间下冰雹,市民称“没见过这么大颗的”