type
Post
status
Published
date
Feb 3, 2026
slug
Paper_4
summary
tags
NLP
LLMs
category
LLMs
icon
password
☠️
忙得根本没时间看新论文
notion image

0.Intro

最近看了UC Berkeley的一篇论文,讲的是一种反思进化prompt的方法,方法很有趣,并且拿来改造了一下是work的,所以记录分享一下。
GEPA 的核心洞察其实很简单:LLM 生成的轨迹本身是丰富的自然语言信号,为什么非要把它们压成一个标量 reward,再用梯度去逼近?原文是这样讲的:
“the interpretable nature of language can often provide a much richer learning medium for LLMs, compared with policy gradients derived from sparse, scalar rewards.”
RLVR 类方法在可验证的任务上确实有效,但同时样本效率确实很低,从这个角度来看,语言本身就是 LLM 最擅长的媒介,让它直接阅读自己的推理链、工具调用记录和评价器的诊断信息,然后自己提出改进建议,这比盲目的策略梯度优化似乎是更加优雅的选择。
notion image
上图是Seed Prompt 与 GEPA 优化后的第二跳查询生成提示的对比,种子提示只有一句话:“Given the fields question, summary 1, produce the fields query.” 而GEPA进化出来的提示长得多,里面充满了从失败案例中提炼出的具体教训——比如明确要求查询去捕捉summary1中暗示的更广实体,避免重复第一跳已经覆盖的内容,甚至给出了人口统计和专辑名称的具体反例。这些扩充内容实际上都是GEPA通过几十次rollout自动学到的。

1.Methods

普通进化算法很容易陷入“全局最优”的局部陷阱:一旦某个策略在多数样本上领先,后续所有变异都围绕它打转,难以跳出去。在这个问题上,GEPA为每个训练样本单独维护一个“当前最佳”集合,然后只从那些在至少一个样本上拿到最高分的候选里采样,还会剔除被严格支配的个体。这种做法其实类似多目标优化里的 illumination策略,但在这里被用得稍微克制了一些。
notion image
上图是Gepa的整体流程,可以理解为:从候选池里按 Pareto 频率采样 → 小批次反馈 → 反射式提示突变 → 小批次验证通过后再评估 Pareto 集 → 加入池子。整个循环对大batch评估比较谨慎,只有确认局部改进后才会验证全局表现。相比起来的话,GRPO每一次策略更新都需要全量 rollout,浪费巨大。

2.Results

GEPA在四个任务上平均比GRPO高10%,最高19%,rollout少35倍;对MIPROv2的提升也达到14%。不过论文里用的都是相对结构化的compound AI系统,其实从直觉上来看,在一些开放任务中,诊断信号的噪声也会随之增加,其效果是不是会变好就和你的任务领域相关了。
notion image

3.Conclusion

“As a result of GEPA's design, it can often turn even just a few rollouts into a large quality gain.”
虽然,原文中这样的话很有魅力,但其实现实中很多任务的评价本身很黑盒,这种情况下自然就难以提供论文里丰富的textual feedback。一旦反馈退化到纯标量,GEPA的优势还在吗?
notion image
上图展示的优化轨迹其实比较有趣,类似于一种“可解释进步”。每一步的提示变化都对应明确的经验教训:先是学会了更细粒度的隐私风险判断,然后开始主动要求工具返回更结构化的输出,再后来学会了在委托前先做可行性检查。这些积累下来的教训层层叠加,最终把性能推到一个手动调试很难达到的高度。 因此其实GEPA真正吸引人的地方可能不仅在于它比GRPO省多少rollout,同时在于它让优化过程变得可以阅读、可以干预、可以继承。传统RL训练完后你只剩下一个权重文件,而GEPA可以留下一个带着”完整家谱”的prompt集合,每一代都在讲故事。 如果未来我们要优化那些动辄几十个模块、运行数小时的超级agent,GEPA这套基于语言反思的遗传-帕累托框架,会不会比纯粹的RL更适合?或者说,我们是否终于找到了一种能让LLM真正“理解”自己行为的优化范式? 这个问题目前还没有答案,不过Gepa目前在我的任务中还比较work😶‍🌫️。