Qwen DeepResearch 系列

  1. WebResearcher

解决的问题

  1. 推理过少:ReAct架构容易导致上下文observation累积,进而导致reasoning变少

  2. 错误累积:错误的、不相关的observation累积在上下文窗口中,导致推理时间长、影响action

方法

  1. 为避免observation在上下文窗口的累积,则需要修改ReAct架构。当前的action不能再依赖于obser的raw data生成,而是想办法对raw data进行总结。

  2. 如果可以生成raw data的总结式report,那么便是马尔可夫决策,当前round的think-action-report只依赖于上一个round的report。

  3. 进一步的,得以构建并行式的search agent,使用能力更强的内容综合Agent来汇总分析各个agent的report,再给出最终答案

此外,论文给出QA的构建方法,以及trajectory的构建与筛选。

并基于此数据,进行SFT与GSPO的强化学习训练

可能存在的问题:

  1. 可以发现,此论文通过生成report的方式减少obser的累积。其实是上窗口和下窗口的trade off,那么是需要衡量trade off的效果(在flops上和acc上)

  2. report的生成会不会也有错误累积的问题,会不会遗漏掉某些重要信息,会不会有幻觉问题。。

暂时无法在飞书文档外展示此内容

  1. ReSum

解决的问题

方法

WebResearcher的一般化

疑惑

暂时无法在飞书文档外展示此内容

  1. AgentFounder

解决的问题:

Agent post-training的仅仅只是模仿sft的轨迹数据,缺少一个鲁棒的Agentic foundation model

但是训练Agentic foundation model会面临Agent预训练数据匮乏、生成trajectory的api cost过高的问题

为什么trajctory的cost 高,是因为每条traj要多次调用api

  • 同一traj:多个tool response 可能检索到的内容有重复

  • traj之间:tool response有重复

所以不如需先处理好所有可能检索到的内容(pre),然后使用entity-wise的dict structure保存起来,用存储空间换api调用的时间和cost。再根据存储的知识的数据结构,构建对应的QA对

在得到QA对后,

  1. 根据保存的entities' knowledge 生成planing(不调用工具,类似于RAG的感觉,调用工具可能得到的tool response都被我写在prompt中了);

  2. 但还是可能有些tool response没有在knowledge structure中,那么再调用api构建traj,并通过提高奖励密度(step-level,对比学习)提高traj的利用率。

方法:

总体流程是在base model的基础上,进行两阶段的Agentic CPT(持续预训练) 注入高质量、多样化的Agent trajectory数据的知识,再扩大上下文窗口,最后再进行post-training

Stage1: FAS data + short HAS data

Stage2: long & high-quality HAS data

首先,是QA对的构建,QA对的目标是

  • 可扩展:由于是预训练,需要快速合成大量的QA对

  • 多样化:要保证QA对的在各个领域上的多样性

  1. 可扩展:

QA对的构建离不开knowledge的收集与使用特定的数据结构关联多个knowledge。

  • 在WebWalker/WebDancer中:多个网页间通过点击来进行相互的跳转,是天然的链接(从一个官网rootnode开始,可以构建一整个dfs树结构,通过组合不同深度、距离的node网页,构建不同难度的QA)

    • node:网页url

    • next:跳转方向

  • WebSailor则根据entity之间的关系构建knowledge graph(比网页node要更加细粒度)

    • node:entity

    • next:entity之间的关系

  • 然而,AgentFounder在构建knowledge structure时,考虑到其scaling,不再考虑entity之间的关联性(我认为主要是entity过多,pair-wise的关联性会导致平方级的开销,且entity数量越多,关系越复杂越不准确)。

    • node/key:entity

    • value:entity相关的描述

  1. 多样化:

static knowledge structure转换成多样化的需要工具调用(search、visit url)的dynamic任务。

通过组合不同entity的knowledge,生成多样的QA对(多种任务:多跳推理、report、web navigation、数学计算)

再得到QA对后,需要构建traj

  • 不调用工具的(无需使用tool response,仅依赖knowledge structure):Fisrt-order Action Synthesis

  • 调用工具的(使用tool response):High-order Action Synthesis

  1. First-order Action Synthesis(不使用tool response)

生成的action可以根据执行流程分为两类:初始+推理过程【因为react本来就是递推的历程】

  • First action:planing + first action(tool call)【仅依赖q和模型内部的知识】

    • Generate:输入q,生成K个planing+first action $$(planing, first\ action)\sim \pi_{\theta}(q)$$(由于仅使用模型的内部知识,K个内容可能比较相似,可以从q的维度提升到knowledge的维度)

    • Rejected Sample:

      • 目标:在first action的推理目标就是如何获取 需要的外部知识,train-test的一致性

      • 指标:first action是否可能得到需要的 外部知识(knowledge alignment)

      • 方法:llm as judge。输入q+planing+first action+knowledge,输出能获得knowledge的可能性

  • Reasoning action:多步的推理【q+检索到的知识+模型内部知识,RAG,不涉及tool_call和迭代】

    • Generate:1. 根据q,利用内部知识拆成多个子q,并进行回答A1;2. 利用外部知识,改写A1得到A2

    • Rejected Sample:

      • 目标:在推理时,生成完整的推理过程(没有tool call),最终输出正确的答案

      • 指标:A2与正确答案的相似度

      • 方法:llm as judge。输入q+A2+A+knowledge,输出A2 A的相似度

  1. High-order Action Synthesis(使用tool response)

在得到QA对之后,调用tool api 生成traj,依旧存在scaling差的问题。因此如何提高traj的奖励信号密度,进而提高traj的reuse是一大挑战。

提高奖励密度的通用方法是将sample-wise转化为step-wise/token-wise,但是计算每个step action的point-wise的分数是不困难且容易不稳定的,因此不如使用pair-wise的方式,采用对比学习,让模型学会当前step下哪个action更好。也可以实现轨迹的scaling。(对比学习使得step的action空间大了,traj也能scaling了)

暂时无法在飞书文档外展示此内容

这里为什么把sft的data分成两类呢,在我看来主要是因为Agent的CPT相较之前PT,其需要与环境交互(tool-use),即

  • 根据Agent的推理流程进行分类

    • 先生成Action

    • tool respose进行迭代生成Action

  • 可以根据知识的来源进行分类,根据以下两类知识迭代生成action

    • 模型自己的内部知识(initial)

    • 工具调用的环境知识(tool response)

DeepReseach的思考

流程:

  1. 抓取web数据,构建knowledge structure

  2. 组合knowledge,构建QA对

  3. 根据QA对生成traj数据

    1. 不调用tool api

      1. First plan+action【初始】:依赖模型内部知识

      2. reasoning【递推】:依赖模型内部知识+外部的knowledge

    2. 调用tool api

      1. 生成traj数据
  4. Rejected sample

    目标:筛选出与推理的目标对齐的traj 方法:groud truth rule-base/ llm as judge看相似度

  5. sft+RL

与原始的区别,思路的递进:

因为多了工具调用(与外界的交互)

所以需要训练模型如何递归地进行工具调用

  • 训练初始action的生成

  • 训练reasoning的生成

所以需要构建对应的traj数据

由于traj数据是模型采样出来的,可能不好,不满足推理的目标

所以需要根据推理的目标使用llm进行rejected sample

虽然judge的难度比generate低,但是llm judge还是会存在判断维度少、不准确等问题

所以要使用多个llm,在多个目标维度上进行综合性的打分

即使rejected sample做得好,sft也可能导致泛化性差,仅会模仿的问题

所以有了RL,进行迭代式地rollout + rejected + refine

即使探索比较多,但是模型RL的稳定性可能不太好

所以有了clip机制,根据重要性采样的比值,不训练过偏的token

但是clip又会抑制高reward但低概率token的探索,所以DAPO要提高clip-higher的值

即使PPO的效果比较稳定(?),但是训练成本太高

所以有了GRPO,去掉了criticmodel,group的采样,在强推理的数据数据集上,使用rule-base计算平均reward

但是GRPO会将sample-wise的A广播到token-wise上,和重要性采样比例不匹配

因此有了GSPO,sample-wise的计算sequence的important sample ratio

整体就是,问题发现+问题解决的过程

问题就是不满足预期推理的现象,就是问题

为了满足推理预期,需要重新训练模型,那就需要构建与推理预期一致的数据集,急需要structure+rejected sample

再进行一系列的训练(sft+RL),满足泛化性与专业性的trade off。

posted @ 2025-10-13 14:03  qlhh  阅读(52)  评论(0)    收藏  举报