论文题目: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-Preview 和 START 在处理 LiveCodeBench(难度:hard)编程题时的表现。
📌 QwQ-32B-Preview:
- 采用 长链推理(CoT),自己反思、尝试不同的方法,逻辑看起来很严谨。
- 但在分析复杂测试用例时容易“幻觉”,也就是推理时编出一些错误的假设,导致最终解法是错的。
📌 START:
- 继承了 QwQ-32B-Preview 的推理框架,但 加入了代码执行能力,让模型可以真正跑代码来验证自己的推理。
- 具体做了什么?
1️⃣ 执行代码:用解释器跑代码,看看结果对不对。
2️⃣ 检测错误:如果输出和预期不匹配,说明哪里有问题。
3️⃣ 迭代分析 & 调试:自动找 bug、分析错误,修正代码。
4️⃣ 输出最终答案:确保解法正确再交卷!
总体来看,QwQ-32B-Preview 虽然思考方式不错,但容易犯错。START 靠工具(代码执行)补上漏洞,推理更严谨,答案更靠谱!