【论文笔记】【强化微调】AgentThink:思维链推理 + 工具调用

发布于:2025-06-25 ⋅ 阅读:(19) ⋅ 点赞:(0)

AgentThink: A Unified Framework for Tool-Augmented Chain-of-Thought Reasoning in Vision-Language Models for Autonomous Driving

1. 引述

这是一篇自动驾驶领域的论文。我对这篇论文主要感兴趣的点在于其对于工具调用(Tool Call)的设计。这一点同时也被设计在了其强化微调时的奖励函数上。

2. 论文摘要

视觉-语言模型(VLM)在自动驾驶领域展现出巨大潜力,但其易产生幻觉推理效率低下缺乏真实世界验证的缺点,限制了对环境的精准感知和稳健的逐步推理。

为了解决这些挑战,我们提出了 AgentThink——首个将链式思维(CoT)推理与动态、代理式工具调用相结合的自动驾驶统一框架。AgentThink 的核心创新包括:

  1. 结构化数据生成:构建自动驾驶工具库,自动生成显式融入工具使用的结构化、自验证推理数据,以覆盖多样化驾驶场景;

  2. 双阶段训练流程:结合监督微调(SFT)组相对策略优化(GRPO),赋予 VLM 自主调用工具的能力;

  3. 代理式工具使用评估:提出多工具联合评估协议,严谨衡量模型的工具调用策略和利用效果。

在 DriveLMM-o1 基准上,实验结果表明 AgentThink 将综合推理得分提升了 53.91%,并将答案准确率提高了 33.54%,同时显著改善了推理质量和一致性。消融实验以及在多种基准上的零样本/少样本泛化测试进一步验证了其强大性能。这些成果为构建可信赖且具备工具感知能力的自动驾驶系统指明了发展方向。

3. 方法

3.1 思维链设计

论文思维链的每个步骤都被组织成五个要素:

  • 所选工具(显式输出在思考过程中,也就是 <tool>)
    模型在该步骤决定要调用的外部模块/工具名称(比如 “Open-Vocab Detector” 或 “Depth Estimator”),或者标记不调用任何工具。

  • 子问题 
    针对当前推理目标,模型提出的一个更细粒度的问题。

    例如在判断能否左转时,子问题可能是“前方来车速度如何?”或“左侧车道上有没有行人?”

  • 不确定性标记
    一个布尔值,标记“内部知识能否直接回答子问题”:

    • 如果模型内部已有足够知识,可直接判断,则标记为 False

    • 否则标记为 True,表示需要调用工具辅助判断。

  • 初步答案

    • 当不确定性标记为 False 时,模型直接给出问题的回答;

    • 若不确定性标记为 True,此处留空,等待工具返回结果后再进行下一步推理。

  • 下一步动作选择
    指示是“继续推理”(Continue Reasoning)还是“结束推理并输出最终答案”(Conclude)。

3.2 工具调用

在开放词汇目标检测、轨迹预测等指定任务上,专门针对这方面的模型必然效果比语言模型好。如果让 LLM 去做这些任务,那么大概率是会生成幻觉的,就好比早期的 GPT,你问它数学题,它输出错误答案(幻觉);而现在的 GPT 遇到复杂的数学问题会直接求助 Python,这就是工具调用(Tool Call)。

上图是论文的一个对比实验图,对比使用 tool 和不使用 tool 的效果。

论文的附录里面写了所有使用的 tool,而结果上这些 tool 是一个个的函数。在 SFT 阶段,论文对大模型输出形式进行微调(预热),在微调输出思维链那一块儿就用 <tool> 来指定调用哪个函数。

3.3 奖励函数

论文在摘要提到他们的创新包括: GRPO 微调、调用工具、思维链。事实上,GRPO 微调的论文现在一抓一大把,微调不是创新,微调的设置才是创新,确切来说(主要)是奖励函数的设计。

工具调用和思维链这两个创新需要和微调关联起来,意思就是说奖励函数的设计是包括了这两个创新点。

论文的奖励函数设计思路如下:

  • 最终答案奖励:答案正确就基于正反馈
  • 推理步骤奖励:思维链的推理是否正确(判断答案是不是蒙出来的,或者答案错误但是思路是对的)
  • 工具调用奖励:在 “解题” 过程中,是否用了正确的辅助工具

具体的设计公式(给多少点奖励)论文并未提及。

3.4 方法流程

论文首先是构建了一个数据集。使用特定提示模板,让 GPT-4o 在每一步推理中决定是否调用工具,并生成“子问题 → (工具调用)→ 中间答案 → 下一步动作”的完整链式思维轨迹。

接着使用千问7B作为 LLM,使用 SFT 对模型进行预热,也就是规范模型输出格式,并告诉模型其将要面临的具体任务(比如这个数据集都是自动驾驶的数据,那么模型在监督微调之后,后续的回复就会更倾向自动驾驶)

最后在实际推理时,模型根据每步的“不确定”标记,实时决定是否调用工具,并将工具输出融入后续推理。


网站公告

今日签到

点亮在社区的每一天
去签到