LLM 即优化器:从 OPRO 到 FunSearch 的进化式编码
解读 OPRO、FunSearch、ReEvo 和 LLaMEA 四篇核心论文,理解 LLM 如何充当变异器、重组器和候选生成器。
当 LLM 不再只是”生成一个答案”,而是持续生成候选、接收反馈、改进再提交时,它就变成了一个优化器。这条线的工作从 OPRO 到 FunSearch,提供了一个清晰的工程隐喻:生成候选 → 打分 → 选择 → 变异/重组 → 保留谱系。
OPRO:自然语言优化器
OPRO(Large Language Models as Optimizers)把优化问题翻译成自然语言:把历史候选和分数列出来,让 LLM 基于这些信息提出下一个候选。核心发现是 LLM 可以在没有梯度的情况下做黑盒优化,而且历史记录越长、反馈越精确,搜索效率越高。
这对 Self Evolve 意味着:提示词历史 + 分数就是通用优化器接口。无论是调 prompt、调代码、调架构,都可以用同一个模式。
FunSearch:程序进化的重要案例
FunSearch(发表在 Nature)把 LLM 和评估器组合在一起,用进化算法搜索数学和科学发现的程序。它的核心流程是:
- LLM 生成程序变体
- 评估器对每个程序打分
- 高分程序被保留进入种群
- 种群中的程序作为下一轮的”父代”
FunSearch 的意义在于:在 cap set 和 bin packing 这类有明确 evaluator 的任务中,它报告了优于已知结果的程序发现。这个结论不能外推到所有程序进化任务。
ReEvo:反思式进化
ReEvo 将反思引入进化搜索:不是盲目变异,而是让 LLM 分析当前候选的优缺点,然后有针对性地生成改进。这对应 Self Evolve 需要的反馈丰富型优化循环。
LLaMEA:进化优化器本身
LLaMEA 的对象更进一步:它进化的不是任务解,而是优化器本身。LLM 生成元启发式算法,用 benchmark 评估,再改进算法。它提供了一个清晰的”改进改进者”类比,但仍需要结合具体 benchmark 和复现实验理解边界。
对开发者的启示
如果你在构建自进化系统,这条线给了明确的工程模板:
- 每个产物都有适应度函数
- 每次运行都有轨迹
- 每次改进都有谱系
- 种群多样性与单点最优需要权衡
Self Evolve 会持续追踪这些工作的最新实现和 benchmark 复现。