人在世上飘 發表於 2025-10-15 11:02:00

AgentFounder浅析——Agent的演化历程与目标

<p>理论上(浅显)分析Agent与传统llm、RAG的不同以及演进历程,根据Agent的目标解读AgentFounder论文的训练策略和数据集构建</p>
<h1 id="agent的目标以及对应的技术方案">Agent的目标以及对应的技术方案</h1>
<h2 id="agent的推理目标">Agent的推理目标</h2>
<p>形式化的表达:</p>
<p>咱们首先来分析一下最开始大模型的功能,即仅根据<span class="math inline">\(\pi\)</span>的内部知识和问题<span class="math inline">\(q\)</span>采样出答案<span class="math inline">\(o\)</span></p>
<p></p><div class="math display">\[o \sim \pi(\cdot|q)
\]</div><p></p><p>然而,模型<span class="math inline">\(\pi\)</span>原有的内部知识可能不足以支撑回答<span class="math inline">\(q\)</span>问题(没有训练过相关领域的数据),那么就需要引入外部知识<span class="math inline">\(R\)</span>,也就是常见的RAG架构。RA 先根据<span class="math inline">\(q\)</span>调用外部tool(向量数据库)得到一定的response(<span class="math inline">\(R\)</span>),再一同输入到<span class="math inline">\(\pi\)</span>中进行答案的生成。有效地缓解<span class="math inline">\(\pi\)</span>在问题<span class="math inline">\(q\)</span>上自身知识不足的问题,人为地注入了外部知识<span class="math inline">\(R\)</span>;<br>
此方法有效建立在 <span class="math inline">\(\pi\)</span>是否在<span class="math inline">\(R\)</span>上有泛化性,<strong>即<span class="math inline">\(\pi\)</span>是否会使用外部知识<span class="math inline">\(R\)</span></strong>。</p>
<p></p><div class="math display">\[R\leftarrow f(q)\\
o \sim \pi(\cdot|q,R)
\]</div><p></p><p>那好,新的问题又出现了,即使<span class="math inline">\(\pi\)</span>会使用<span class="math inline">\(R\)</span>,但是<span class="math inline">\(R\)</span>是否真正能够帮助<span class="math inline">\(\pi\)</span>解决<span class="math inline">\(q\)</span>也是一个问题,<br>
这个<span class="math inline">\(R\)</span>仅依赖于问题<span class="math inline">\(q\)</span>和事先设定好的工具<span class="math inline">\(f(\cdot)\)</span>,也就是说在生成<span class="math inline">\(R\)</span>时,并没有考虑到是否能帮助到后续的模型<span class="math inline">\(\pi\)</span><br>
因此<strong>应该在生成<span class="math inline">\(R\)</span>时,也要依赖于<span class="math inline">\(\pi\)</span></strong>。</p>
<p></p><div class="math display">\[\begin{aligned}
【初始化】tool\_type, tool\_args &amp;\sim \pi(\cdot|q) \\
【获得工具输出】 R_i &amp;\leftarrow f(tool\_args; tool\_type) \\
【迭代生成】o\ |\ tool\_type, tool\_args &amp;\sim \pi(\cdot|q, R_1, ..., R_i)
\end{aligned}
\]</div><p></p><p>因此,可以发现的是,<span class="math inline">\(\pi\)</span>不仅仅要生成答案<span class="math inline">\(o\)</span>,还需要学会工具调用来获取<span class="math inline">\(R\)</span>以更好的执行后面的任务流程。</p>
<p>所以Agent的<strong>目标</strong>(需要的推理能力)分为三类</p>
<ul>
<li>
<p>利用模型内部知识根据q生成第一步的planning。</p>
<ul>
<li><span class="math inline">\(tool\_type, tool\_args \sim \pi(\cdot|q)\)</span></li>
<li>学会如何仅根据q构建完整的<strong>planning</strong></li>
</ul>
</li>
<li>
<p>利用模型内部知识+外部知识(R) 根据q生成下一步的工具调用/答案 的能力 (step-wise)</p>
<ul>
<li><span class="math inline">\(o\ |\ tool\_type, tool\_args \sim \pi(\cdot|q, R)\)</span></li>
<li>学会 single-step下,如何根据需要的信息 <strong>选取工具</strong></li>
</ul>
</li>
<li>
<p>学会连续调用工具,理解工具间的调用关系,(traj-wise)</p>
<ul>
<li><span class="math inline">\(o\sim \pi(\cdot|q, R_1, R_2, ...)\)</span></li>
<li>学会在整体的traj维度下,<strong>协调多个工具之间</strong>的使用关系</li>
</ul>
</li>
</ul>
<p>对应来说:</p>
<ul>
<li>
<p>局部</p>
<ul>
<li>
<p>初始化</p>
</li>
<li>
<p>step-wise的单个工具point-wise的使用</p>
</li>
</ul>
</li>
<li>
<p>整体</p>
<ul>
<li>traj-wise的工具之间的协调调度</li>
</ul>
</li>
</ul>
<h2 id="agent的训练方案">Agent的训练方案</h2>
<p>训练目标需要和推理模型对齐。而训练目标体现在(1)数据集的构建方案(2)训练策略(loss)</p>
<p>那么Agent训练方案的是<strong>数据集构建+模型训练</strong>方式两个难点</p>
<ul>
<li>数据构建
<ul>
<li>以上三类能力对应的数据集的构建</li>
<li>输入输出的pair对,参考公式即可</li>
<li>数据需要可扩展/高质量(因此优先在Web Brower 领域进行研究)</li>
</ul>
</li>
<li>训练策略
<ul>
<li>使用sft教会模型前两种能力(planning生成、学会根据需要的信息选取工具)</li>
<li>使用rl教会模型最后一种能力(工具间的协调调用,因为此任务比较难学习,需要大量的探索以及较高的泛化性要求)</li>
</ul>
</li>
</ul>
<p>相较于传统的single-step的数据及其sft RL的训练方式</p>
<p>Agent的关键区别是给予了llm自主获取外界知识、与外界交互的能力。</p>
<p>因此,Agent的数据和训练目标 均服务于 如何使Agent学会更好的使用工具与外界交互,从而利用外界的信息更好地完成任务</p>
<hr>
<p>思路借鉴:AgentFounder:https://www.arxiv.org/abs/2509.13310</p><br><br>
来源:https://www.cnblogs.com/qlhh/p/19142847
頁: [1]
查看完整版本: AgentFounder浅析——Agent的演化历程与目标