Qwen DeepResearch 系列
-
WebResearcher
解决的问题
-
推理过少:ReAct架构容易导致上下文observation累积,进而导致reasoning变少
-
错误累积:错误的、不相关的observation累积在上下文窗口中,导致推理时间长、影响action
方法
-
为避免observation在上下文窗口的累积,则需要修改ReAct架构。当前的action不能再依赖于obser的raw data生成,而是想办法对raw data进行总结。
-
如果可以生成raw data的总结式report,那么便是马尔可夫决策,当前round的think-action-report只依赖于上一个round的report。
-
进一步的,得以构建并行式的search agent,使用能力更强的内容综合Agent来汇总分析各个agent的report,再给出最终答案
此外,论文给出QA的构建方法,以及trajectory的构建与筛选。
并基于此数据,进行SFT与GSPO的强化学习训练
可能存在的问题:
-
可以发现,此论文通过生成report的方式减少obser的累积。其实是上窗口和下窗口的trade off,那么是需要衡量trade off的效果(在flops上和acc上)
-
report的生成会不会也有错误累积的问题,会不会遗漏掉某些重要信息,会不会有幻觉问题。。
暂时无法在飞书文档外展示此内容
-
ReSum
解决的问题
方法
WebResearcher的一般化
疑惑
暂时无法在飞书文档外展示此内容
-
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对后,
-
根据保存的entities' knowledge 生成planing(不调用工具,类似于RAG的感觉,调用工具可能得到的tool response都被我写在prompt中了);
-
但还是可能有些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对的在各个领域上的多样性
- 可扩展:
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相关的描述
-
- 多样化:
将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
- 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的相似度
-
-
- 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的思考
流程:
-
抓取web数据,构建knowledge structure
-
组合knowledge,构建QA对
-
根据QA对生成traj数据
-
不调用tool api
-
First plan+action【初始】:依赖模型内部知识
-
reasoning【递推】:依赖模型内部知识+外部的knowledge
-
-
调用tool api
- 生成traj数据
-
-
Rejected sample
目标:筛选出与推理的目标对齐的traj 方法:groud truth rule-base/ llm as judge看相似度
-
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。

浙公网安备 33010602011771号