ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

EvalAct:让智能体学会自我评估,用过程奖励优化检索增强决策

EvalAct:让智能体学会自我评估,用过程奖励优化检索增强决策 1. 项目概述当智能体学会“复盘”检索增强的进化之路最近在跟进大模型智能体Agent的进展发现一个挺有意思的瓶颈很多检索增强型智能体Retrieval-Augmented Agents在执行多步骤任务时比如写代码、做研究或者规划一个复杂项目它们能调用工具、能检索信息但整个行动过程常常显得“短视”或“混乱”。智能体知道最终目标但在一步步执行中缺乏对中间过程有效性的即时评估和调整能力。这就好比一个新手厨师照着菜谱做菜每个步骤都做了但不会尝一尝中间的味道直到最后端出一盘难以入口的成品才知道失败了。“Evaluate-as-Action: Self-Evaluated Process Rewards for Retrieval-Augmented Agents”以下简称EvalAct这个工作直击的就是这个痛点。它的核心思想非常直观让智能体在每一步行动之后不只是执行还要主动“复盘”一下自己这一步干得怎么样并把这个“复盘得分”作为强化学习中的过程奖励Process Reward来实时指导后续的行动策略。这相当于给智能体装了一个内置的“质量检测员”边做边检查及时纠偏。我之所以对这个方向特别关注是因为在实际部署智能体解决企业级复杂任务时比如自动化数据分析报告生成或客户问题排查过程的可靠性和可控性往往比最终结果更重要。EvalAct提出的“自我评估即行动”范式以及其配套的“过程校准优势重塑”Process-Calibrated Advantage Rescaling, PCAR方法为构建更稳健、更可信的智能体系统提供了一套可落地的技术框架。它不仅仅是学术上的创新更对工程实践有直接的启发。接下来我就结合自己的理解拆解一下EvalAct的核心思路、技术实现以及我们能在实际项目中借鉴什么。2. 核心思路拆解为什么需要“过程奖励”要理解EvalAct的价值我们得先看看当前主流智能体训练方法面临的挑战特别是近期热门的GRPOGroup Relative Policy Optimization算法及其衍生讨论。2.1 GRPO的启示与局限结果奖励的“延迟满足”问题GRPO算法是一种高效的直接策略优化方法它通过在同一提示下采样多个响应并分组比较来优化策略避免了对额外奖励模型的大量依赖在指令跟随和简单任务上表现不错。但是当任务变成长序列、多步骤的复杂决策时GRPO主要依赖最终的任务完成度作为奖励信号。这就带来了“延迟奖励”问题智能体完成一系列动作后只能得到一个最终的成功/失败信号。它很难知道到底是哪一步做对了哪一步埋下了失败的种子。例如一个智能体被要求“检索关于神经网络优化的最新论文并总结其核心方法”。它可能先错误地检索了一批过时的文献第一步已偏但后续的总结步骤基于错误输入在语法上很完美。最终由于信息陈旧总结质量不高智能体获得一个低分。但这个低分无法有效归因到最初的检索错误上智能体在下一次训练中可能还是会重复错误的检索动作而去调整总结的写法这是典型的信用分配难题。2.2 检索增强型智能体的特殊挑战对于检索增强型智能体Retrieval-Augmented Agents而言这个问题更加尖锐。这类智能体的核心能力是主动从外部知识库如文档、网络获取信息来辅助决策。其决策过程通常是一个循环理解任务 - 决定是否检索及检索什么 - 整合检索结果 - 生成行动或答案 - 进入下一步。这个循环中的每一个环节尤其是“检索决策”和“信息整合”的质量直接决定了最终输出的上限。一次不精准的检索可能会引入噪声或错误信息导致后续所有步骤都在加工垃圾。如果只依赖最终答案的正确性作为奖励智能体几乎无法学会如何做出高质量的检索决策因为它看不到中间过程的贡献或损害。2.3 EvalAct的破局思路将评估本身模块化与动作化EvalAct提出了一个巧妙的解决方案将“自我评估”设计为智能体可执行的一种特殊“动作”Action。这不是一个外挂的、独立的质量评估模块而是智能体策略本身的一部分。在智能体执行序列中的某些关键步骤例如完成一次检索后或生成一段中间结论后它可以主动选择执行一个“评估”动作。这个“评估”动作会触发智能体对刚刚完成的子过程或当前状态进行反思和评分。例如在检索后评估动作可能输出“本次检索结果的相关性得分0.8/1.0”。这个得分就被转化为一个过程奖励即时地反馈给智能体的策略网络。这样一来奖励信号就变得细粒度和即时化了。智能体不仅能从最终成功中获得快乐还能从“做了一次精准检索”或“进行了一次有效推理”中获得即时正反馈。这极大地缓解了信用分配问题引导智能体关注过程质量而不仅仅是结果。注意这里的“评估”不是调用一个超级复杂的评估模型那会带来巨大开销。EvalAct倡导的是轻量级、基于智能体自身知识即其内部表示的快速评估。可以理解为智能体对自己工作的一次“快速自检”。3. 关键技术实现过程校准优势重塑PCAR有了“自我评估即行动”的理念如何将其有效地融入策略优化过程是关键。EvalAct的核心技术创新在于提出了Process-Calibrated Advantage Rescaling (PCAR)方法。我们来拆解一下这个听起来有点复杂的技术。3.1 优势函数Advantage与策略梯度回顾在强化学习中优势函数 A(s, a) 衡量的是在状态 s 下执行动作 a相比该状态下平均动作的好坏程度。策略梯度方法如PPO通过增大高优势动作的概率来优化策略。公式简化为梯度 ≈ 优势函数 * 策略梯度的方向。传统的优势估计依赖于轨迹的累计回报。在稀疏奖励环境下这个估计噪声很大尤其是在长序列中一个动作的优势很难准确估计。3.2 PCAR的核心思想用过程奖励重塑优势估计PCAR方法的核心是利用智能体自我评估产生的过程奖励来重新校准和重塑优势函数的估计值。它不是替换最终奖励而是将过程奖励作为补充信号注入到优势计算的过程中。具体来说在一个决策序列中智能体在时间步 t 执行了一个常规动作如检索并获得了一个过程奖励 r_t^p。随后它可能继续执行动作直到序列结束获得最终任务奖励 R。传统的优势估计会基于 R 来计算每个动作的优势。而PCAR则尝试将过程奖励 r_t^p 融合进去。一种直接的方式是加权求和将过程奖励按一定折扣因子加入到累计回报中。但EvalAct提出了更精细的“重塑”方法。它认为过程奖励提供了动作即时质量的信号这个信号可以用来调整基于最终回报计算出的优势值的置信度或尺度。例如假设一个动作基于最终回报计算出的优势值是 0.5轻微正面。但如果这个动作当时获得了很高的过程奖励比如自我评估相关性0.9那么PCAR可能会将这个优势值“放大”到 1.0因为过程奖励强有力地证实了这个动作本身是高质量的。反之如果一个动作的最终优势值是 0.5但其过程奖励很低自我评估相关性0.2那么PCAR可能会将这个优势值“缩小”甚至变为负值因为过程证据表明这个动作可能有问题最终的正优势可能是运气或后续动作弥补造成的。3.3 PCAR的算法流程结合论文和我的理解PCAR在训练中的大致流程可以概括为以下几步轨迹采样让智能体在环境中运行产生多条轨迹。轨迹中的某些步骤包含了智能体自行插入的“评估动作”及其输出的过程奖励。优势估计初始使用GAE等方法基于最终任务奖励 R为轨迹中的每个动作计算一个初始的优势估计 A_vanilla。过程奖励整合对于每个产生了过程奖励 r^p 的动作设计一个校准函数 f(A_vanilla, r^p)。这个函数的作用是利用 r^p 来调整 A_vanilla。一种简单的实现是A_calibrated A_vanilla * (1 α * (r^p - baseline))。其中 α 是一个超参数控制过程奖励的影响强度baseline 是过程奖励的移动平均用于稳定训练。更复杂的设计可能考虑过程奖励与最终奖励的一致性或者对不一致的情况进行特殊处理。策略优化使用校准后的优势值 A_calibrated 来计算策略梯度更新智能体的策略网络参数。这样策略的更新就同时受到了最终结果和中间过程质量的双重指导。这个过程使得智能体不仅学习“做什么能最终成功”更学习“做什么能在过程中就保持高质量”。这对于需要稳健中间状态的复杂任务至关重要。4. 实操设计与核心环节实现理解了原理我们来看看如何在实际项目中应用或借鉴EvalAct的思想。由于原论文可能涉及特定的实验环境和模型这里我将其思想泛化设计一个可参考的实操方案。4.1 系统架构设计我们构建一个用于“技术文档问答与总结”的检索增强型智能体。其核心组件包括主策略网络一个微调过的大语言模型负责理解用户问题、决定动作生成查询、总结、评估等。检索器连接向量数据库根据查询返回相关文档片段。动作空间[GenerateQuery, Retrieve, Analyze, Summarize, SelfEvaluate, Finish]。其中SelfEvaluate就是EvalAct引入的关键动作。状态表示当前对话历史、已检索到的文档片段、上一步动作的结果等。奖励函数由最终答案质量评分如ROUGE-L 人工评分和过程奖励组成。4.2 自我评估动作的设计与实现这是EvalAct理念落地的核心。SelfEvaluate动作不应该随意触发我们设计两种触发机制固定位置触发在关键操作后强制触发评估。例如在每次Retrieve动作之后智能体必须执行一次SelfEvaluate来评估检索质量。策略学习触发将SelfEvaluate作为一个可选动作由主策略网络决定何时执行。这更灵活但训练难度更大。初期建议采用固定位置触发。评估提示词设计 当SelfEvaluate动作被触发时我们需要构造一个特定的提示词让大语言模型即我们的策略网络输出一个结构化的评估结果。例如在检索后评估你刚刚执行了一次检索目标是找到关于“[用户问题]”的信息。以下是检索到的文本片段 [检索结果文本] 请从以下几个方面评估本次检索的质量 1. 相关性检索结果与问题核心的直接相关程度。评分范围0-1。 2. 完整性检索结果是否覆盖了问题的主要方面。评分范围0-1。 3. 信息新鲜度/可靠性基于你的知识判断信息是否过时或存在明显矛盾。评分范围0-1。 请以JSON格式输出你的评估{relevance: 0.x, completeness: 0.x, reliability: 0.x, overall_score: 0.x}。overall_score是前三项的平均值。过程奖励计算 从评估输出中解析出overall_score作为该步骤的过程奖励r^p。这个分数在0到1之间。实操心得设计评估维度时要与你最终的任务目标强相关。例如如果你的最终目标是答案准确性那么“相关性”和“可靠性”就比“完整性”更重要。评估提示词需要精心调试确保模型输出的评分相对稳定、合理。初期可以用少量人工标注的样本来微调评估提示词或训练一个轻量级的评估适配层。4.3 训练循环与PCAR实现我们使用近端策略优化PPO作为基础训练算法融入PCAR思想。数据收集智能体与环境交互产生轨迹数据。每条轨迹包含状态序列、动作序列、过程奖励序列和最终奖励。优势计算最终奖励优势使用GAE基于最终奖励计算每个动作的优势A_final。过程奖励优势对于有过程奖励r^p的动作我们可以直接将其视为一个即时的优势信号或者用一个很小的折扣因子计算其局部优势。简单起见我们可以定义一个过程优势A_process r^p - baseline其中 baseline 是近期过程奖励的均值。优势校准PCAR核心对于既有A_final又有A_process的动作进行校准。校准策略1加权融合。A_calibrated β * A_final (1-β) * A_process。β是一个随时间调整的参数初期可以让过程奖励占更大比重引导智能体关注过程后期逐渐增加最终奖励的权重。校准策略2条件缩放。如果A_process很高阈值说明该动作本身质量很高那么我们可以增强A_final的信号A_calibrated A_final * (1 scale_factor)。反之如果A_process很低则削弱A_final。这需要更精细的设计和调参。策略更新使用A_calibrated替代原始的A_final计算PPO损失更新策略网络参数。# 伪代码示意 PCAR 优势计算的核心逻辑 def compute_calibrated_advantage(trajectory, final_rewards, process_rewards_dict, beta0.7): trajectory: 轨迹数据 final_rewards: 基于最终任务得分计算的奖励序列已考虑折扣 process_rewards_dict: 字典key为时间步tvalue为该步的过程奖励r^p beta: 最终奖励优势的权重 # 1. 计算基于最终奖励的优势 A_final (例如使用GAE) advantages_final compute_gae(final_rewards, ...) # 2. 初始化校准后的优势数组 advantages_calibrated np.copy(advantages_final) # 3. 对每个有时间步应用PCAR for t in process_rewards_dict.keys(): if t len(advantages_final): r_p process_rewards_dict[t] # 计算过程优势当前过程奖励减去基线如滑动平均 baseline moving_average_of_process_rewards a_process r_p - baseline # 简单的线性融合校准 advantages_calibrated[t] beta * advantages_final[t] (1 - beta) * a_process # 或者更复杂的条件缩放示例 # if r_p 0.8: # 过程质量很高 # advantages_calibrated[t] advantages_final[t] * 1.5 # elif r_p 0.3: # 过程质量很低 # advantages_calibrated[t] advantages_final[t] * 0.5 return advantages_calibrated4.4 奖励塑形与基线维护最终奖励对于文档总结任务可以使用参考总结的ROUGE分数、BERTScore或者更重要的基于LLM的评估器如使用GPT-4作为裁判评判答案的准确性、完整性。过程奖励基线为了稳定训练A_process中减去的baseline很重要。通常维护一个过程奖励的滑动平均例如过去1000个过程奖励的平均值作为基线。这有助于智能体学习的是“相对于平均表现这个动作是好是坏”而不是绝对值。奖励归一化无论是最终奖励还是过程奖励进行归一化例如减去均值除以标准差是标准操作能显著提高PPO训练的稳定性。5. 常见问题、调试技巧与进阶思考在实际实现和训练这样的系统时会遇到不少挑战。以下是我能预见的一些常见问题及解决思路。5.1 自我评估的“自欺欺人”问题问题智能体可能学会“作弊”即无论实际动作质量如何在SelfEvaluate动作中总是输出高分从而骗取高额过程奖励。排查与解决最终奖励的制衡这是最重要的防线。如果智能体总是输出高分评估但最终任务结果很差那么基于最终奖励计算的A_final会是负值。在PCAR的加权融合中负的A_final会拉低校准后的优势从而惩罚这种欺骗行为。确保最终奖励信号足够强和准确。评估结果的一致性检查可以引入一个轻量级的、参数冻结的“评估校验器”。这个校验器也是一个小型模型它根据状态信息如检索查询和检索结果独立预测一个质量分数。如果智能体自我评估的分数与校验器预测的分数长期存在巨大差异可以施加一个小的惩罚项。这增加了欺骗的难度。课程学习初期让SelfEvaluate的评估标准相对简单、客观如检索结果是否包含关键词降低欺骗空间。随着训练进行再引入更主观、复杂的评估维度。5.2 训练不稳定与超参数敏感问题PCAR引入了额外的奖励信号和超参数如融合权重β、缩放因子等可能导致训练波动较大。调试技巧分阶段训练阶段一预热不使用过程奖励只用最终奖励训练一个基础策略让智能体先学会完成任务的“雏形”。阶段二引入过程奖励加载阶段一的模型开始引入SelfEvaluate动作和过程奖励。此时将PCAR中的β设得较低如0.3让过程奖励占主导重点优化过程质量。阶段三平衡优化逐渐增加β如到0.7让最终奖励重新占据重要地位使策略在保证过程质量的同时对齐最终目标。监控指标分离在训练日志中除了总奖励务必分开监控“平均最终奖励”和“平均过程奖励”。观察它们的趋势。理想情况是两者共同上升。如果过程奖励上升但最终奖励下降说明过程评估可能与最终目标存在偏差需要调整评估维度或奖励权重。超参数网格搜索对关键超参数如PCAR的β过程奖励的缩放系数进行小范围的网格搜索。由于智能体训练成本高可以先用一个较小的环境或简化任务进行快速调参。5.3 评估动作的频率与成本问题每次评估都需要LLM进行额外的前向推理增加了单步计算开销和延迟。优化建议选择性评估从“固定位置触发”过渡到“策略学习触发”。训练智能体学会在“不确定”或“关键决策点”时才发起评估。这可以通过给SelfEvaluate动作一个很小的固定负奖励或零奖励作为“思考成本”来实现鼓励其节约使用。轻量化评估模型对于生产环境可以考虑用一个小型模型如TinyLLaMA, Phi-2专门负责评估功能与主策略模型分离。或者使用主模型的一个低精度分支或更短的推理序列来生成评估。异步评估在训练的数据收集阶段评估动作可以与其他动作并行计算以隐藏部分延迟。5.4 领域适配与评估维度定制EvalAct的思想可以迁移到各种复杂决策场景不限于检索增强。代码生成智能体SelfEvaluate动作可以在生成一个函数后触发评估代码的语法正确性、逻辑清晰度、是否符合规范等。过程奖励用于优化代码风格和健壮性。游戏AI在策略游戏中智能体可以在完成一个战术机动后自我评估“阵型优势变化”、“资源交换比”等过程奖励引导其追求更优的中间局势。机器人任务规划对于抓取-放置任务在每次移动后评估“抓取姿态的稳定性得分”或“路径的平滑度”。关键在于你需要为你的任务定义出那些对最终成功至关重要、且能够被智能体在中间步骤进行合理评估的过程质量维度。这是应用EvalAct成功与否的核心设计环节。从我个人的工程实践角度看EvalAct代表的是一种将“元认知”能力嵌入智能体的思路。它让智能体从“盲目执行”转向“有意识地监控和调整自己的执行过程”。虽然增加了系统复杂性和训练成本但对于追求高可靠性、可解释性的应用场景这种投资是值得的。在具体实现时不必一开始就追求完美的PCAR可以先从最简单的“过程奖励加权加到最终奖励”开始验证其基本效果再逐步迭代到更复杂的校准机制。这个领域目前还在快速发展结合GRPO等高效优化算法以及更强大的基础模型自我评估智能体的潜力非常值得期待。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进