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

Agentic-R1 与 Dual-Strategy Reasoning

我们在平时用reasoning模型的一个问题,有时候明明可以调用外部工具的时候,比如计算器能快速做一个平方题,它非得磨磨叽叽算好几遍,然后一顿口high,如果数大了,大概率还会算错,根源是其实LLM不懂数学

我以前写过一个文章

LLM到底会解数学题吗?

也会有人反驳我deepseek R1前一阵做的数学多厉害,但是那个是lean,你如果lean是啥都不懂,那就别唠了

另外昨天的时候OAI也拿了IMO的金牌,这两个事情本身都值得称赞,但是从本质上也改变不了LLM就不合适做复杂数学的原因

当然除了数学以外还很多问题,并不是推理步骤越多越好,比如一些偏向事实性的问题,你调一个api或者mcp啥的更好

所以就有了如下这个论文

Image

又是CMU的,CMU的最近论文质量都还可以

这论文讲的啥意思呢?

一. 它的目标

1.问题背景

数学和推理任务:长链式思维( long-CoT)模型在复杂推理如数学问题上其实已经比以前很呦进步了,但计算慢、尤其是文本推理链容易出错,多轮对话更是容易attention稍微一个飘逸recall,基本就容易出错

工具增强(Tool-augmented)agent:通过代码等工具可以实现高效、准确的计算,但对于更“抽象”的推理能力有限,你除非跟它说的很彻底的细化,要不写不清楚。

2. 主要创新

DualDistill 框架:首次通过“分步解轨迹拼接+多教师蒸馏”的方式,把两种互补推理策略(工具增强/文本推理)融于一个学生模型,如图

Image

Agentic-R1 模型:能动态选择合适的推理策略,对算术题自动用代码、对抽象题用自然语言推理。

二 方法机制与细节

1. 轨迹拼接

如图取两个teacher:一个Agentic(工具+代码,基于OpenHands/Claude-3.5),一个Reasoning(文本推理,基于Deepseek-R1)。

  • 每道训练题由老师A解一步、B基于A的输出再解一步,根据逐步解答的正确与否拼接成多段式“复合轨迹”(有手工设计的转场语句,比如“换用代码试试”)。

  • 最终学生模型通过模仿这些解决轨迹来学习如何“选策略”。

2. 训练样本筛选

  • 并不是所有题都适合工具或长文本,需要精选一批区分度明确的数据(如大型数值计算适合工具,少量题适合文本)。

  • 数据主要来自DeepMath等大规模数学数据集,筛选和过滤过程(一会讲)

3. 自蒸馏机制

  • 因为学生模型大小/能力有限,往往对部分问题策略选择不佳,容易“过用工具”或操作失误。

  • 增加自蒸馏步骤:让学生模型自己生成多条解题路线,再用教师进行校验或修正,把有效策略强化、无效例子修正。

4. 目标与评价

  • 希望学生模型不仅能把师傅的策略拼接学到位,还能实际提升数学推理准确率和效率,并自动学会“何时用工具、何时用文本”。

其实思路挺简单和清晰的,大部分都好理解,我就讲两个值得讲的点

第一 小模型(学生)应该学习到什么玩意?

举个例子(论文例子不咋好,我举个简单易懂的)

假定题目

“计算 1 到 100 的和。”

1. Teacher A(文本推理 CoT,Reasoning Teacher)

输出(纯文本推理 CoT):

<think>

我们要求 1 到 100 的和。
经典公式:前 n 项和 = n*(n+1)/2。
代入 n=100 得:100*101/2 = 5050。

</think>

<answer>5050</answer>

2. Teacher B(工具推理,Agentic Teacher)

输出(工具/代码):

<think>

我们可以用代码快速计算 1 到 100 的和。

</think>

<code>
print(sum(range(1, 101)))
</code>
<executor>
输出结果: 5050
</executor>
<answer>5050</answer>

3. 轨迹拼接机制实例

假设这样拼接的场景:

  • Teacher A(文本推理)先解题,但因为某个细节笔误写错公式,没得出正确结果(假设本次A出错)。

  • Teacher B(代码)基于A的推理后补救,代码执行得出正确答案。

于是我们拼出了一条复合训练轨迹,并加入人工设计的“策略切换”提示:

<think>

我们要求 1 到 100 的和。
经典公式用错了,算出来不是正确答案。(假如这里A写错,得个0出来)

</think>

Wait, the text reasoning result seems off, let's try code reasoning.

<think>

我们可以用代码快速计算 1 到 100 的和。

</think>

<code>
print(sum(range(1, 101)))
</code>
<executor>
输出结果: 5050
</executor>
<answer>5050</answer>

重点提示:中间的句子是论文里那种transition segment

比如
Wait, the text reasoning result seems off, let's try code reasoning.

这是人给加上去的,为啥要这么干呢?

Image

目的就是给模型知道啥情况你用reasoning好使,啥情况你直接调tool更牛b

这个实现也简单就是比如一个template通过随便写点代码给条件话的加上去,拼接两个老师的输出,交给学生sft的时候自己去认

for (x, a) in training_set:  y1 = teacher_A.solve(x)  y2 = teacher_B.solve(x, y1)  g1 = grader(y1, a)  g2 = grader(y2, a)  if g1==0 and g2==1:      # 文本错,工具对      trajectory = y1 + "Wait, use text reasoning is too tedious, let’s try code reasoning." + y2  elif g1==1 and g2==0:      # 工具错,文本对      trajectory = y1 + "Wait, the code is not correct, let’s try text reasoning." + y2  elif g1==1 and g2==1:      # 两个都对      trajectory = y1 + "Wait, we can also use CODE-reasoning as alternative to verify." + y2  # 把trajectory作为学生模型的finetune训练样本  training_examples.append(trajectory)

好,我们总结一下:

  • 这样一整条轨迹,前半部分是文本逐步思考,后半通过代码调用计算器给出答案,中间通过"Wait, ..."人工转场语句衔接

  • 论文的“轨迹拼接”过程,就是通过类似的例子,组合出多样推理路径,让学生模型通过蒸馏学会什么时候切换、怎么切换

  • 这让模型既知道遇到算术/复杂题可以用工具,也明白纯文本推理论证也不可少,更能融合两者优点。

第二个问题如何定义数据

 题目筛选与划分(Problem Filtering Heuristics)

分为“Agentic-Favored Subset(适合用工具的子集)”和“Pure Reasoning-Favored Subset(适合用文本的子集)”两类:

一 Agentic-Favored Subset(工具优先)

主要按照两条规则筛选:

数值规模(Numerical Scale) :题目如果最终答案是整数且绝对值“大于1000”,这类题通常涉及大量复杂的算术运算、人答很繁琐,适合优先用工具(如代码计算)解决。

文本模型受限下的难度(Difficulty Under Constraints) :用文本推理模型(Deepseek-R1-Distill-7B),限定推理链最大长度(4096 tokens)解题。如果用这种方式还是解不对,那就判定为“文本推理难度大”——适合靠工具策略。

二 Pure Reasoning-Favored Subset(文本优先)

主要思路:选择那些即使用工具推理(agentic策略)也容易出错的题。这说明这些题工具不适合,还是文本分析更靠谱。

筛选方法:

让工具类模型尝试解题,如果工具策略依然出错,就纳入该子集。

最终处理:
以 DeepMath-103K 数据集为主(2025年大规模数学题万级集),先筛选,再两类子集数量平衡,保证训练时两种策略教师的题量近似对等。

这样确保学生模型训练时既能见到大量“典型用工具”的题,也见到“典型用文本”的题。

数据规模统计

全部筛选和合成后,最后的训练集一共2678条复合轨迹(即拼接后的优质“多步题解”)。

论文中提供了三种拼接类别(两步都对/一步对一步错等)及其数量统计。

举个例子:

举例1(工具优先):
“求一个整数 99999 的阶乘是多少?”
→ 显然答案很大不便人工算,纯文本不好写,直接用工具计算最合适。

举例2(文本优先):
“证明如果x+y是偶数,且x、y都是整数,则x和y同奇偶。”
→ 这种不算数值,主要靠纯文本逻辑推理,用代码没啥好处。

通过这种机制,模型能在训练时“观察”不同老师各自擅长和失误的题型,真正学会策略择优。

过滤过程中还会平衡两类题目数量,构成最终训练集。

开源了,大家想玩可以自己试试

https://github.com/StigLidu/DualDistill

http://www.lryc.cn/news/594234.html

相关文章:

  • 7.19-7.20 Java基础 | File类 I/O流学习笔记
  • 阶段1--Linux中的计划任务
  • VUE2 学习笔记2 数据绑定、数据代理、MVVM
  • AI开发 | 基于FastAPI+React的流式对话
  • 智能驾驶整体技术架构详解
  • Spring Boot总结
  • MPLS-LDP
  • Java 大视界 -- Java 大数据在智能教育在线学习平台用户活跃度提升与留存策略研究中的应用(354)
  • HarmonyOS 网络请求优化实战指南:从0到1写出流畅不卡顿的应用!
  • python doipclient库
  • Spark专栏开篇:它从何而来,为何而生,凭何而强?
  • 事务的传播行为,分别在spring和mysql中讲解
  • 神经网络:卷积层
  • 反欺诈业务 Elasticsearch 分页与导出问题分析及解决方案
  • 子查询转连接查询
  • [AI8051U入门第七步]软件IIC驱动SHT21/(SHT20/HTU21D同时适用)温湿度传感器
  • CarbonTracker-CH₄:全球甲烷追踪系统简介
  • 论文笔记: Holistic Semantic Representation for Navigational Trajectory Generation
  • MySQL学习----Explain
  • 搭建大模型
  • 安卓 Termux.apk
  • SaTokenException: 未能获取对应StpLogic 问题解决
  • 【Lua】多脚本引用
  • cmake语法学习笔记
  • SpringBoot3集成MapstructPlus
  • JMeter连接数据库
  • 数字图像处理(四:图像如果当作矩阵,那加减乘除处理了矩阵,那图像咋变):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
  • FFmpeg 图片处理
  • Hadoop小文件合并技术深度解析:HAR文件归档、存储代价与索引结构
  • 7-大语言模型—指令理解:指令微调训练+模型微调