Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents
核心思想
理论上的 Gödel 机要求对改进进行形式化证明,在实践中不可行。本文提出 Darwin Gödel Machine (DGM):用经验验证替代形式化证明,维护一个 Agent 档案(archive)实现开放式探索,避免局部最优陷阱。
核心假设:编码基准测试上的性能提升表明更好的编码能力,从而意味着更强的自我修改和自我改进能力。
方法详解
1. 系统架构
1.1 自修改循环
DGM 在两个阶段之间交替:
- 自修改阶段:选中的 Agent 分析基准日志并生成修改版本
- 评估阶段:修改后的 Agent 在编码基准上测试;只有保留代码编辑功能的才进入档案
1.2 群体档案(Population Archive)
- 维护所有已发现 Agent 的档案(初始化为一个基础 Agent)
- 允许从档案中任意 Agent 分支(非零概率),不仅限于最佳表现者
- 这是与贪心方法的核心区别:创新之路可能经过低性能节点
2. 父代选择机制
选择概率综合考虑:
- Agent 在基准测试上的性能分数
- 保留代码编辑功能的后代数量
- 确保多样性同时偏好适应性强的个体
与贪心方法的区别:贪心方法只选择当前最佳 Agent 作为父代,而 DGM 以概率方式选择,允许从看似较差但潜力更大的 Agent 分支。
3. 分级评估策略
利用计算预算的分级评估:
| 阶段 | 任务数 | 目的 |
|---|---|---|
| Stage 1 | 10 | 验证基本代码编辑功能 |
| Stage 2 | 50 | 估计通用有效性 |
| Stage 3 | 200 | 高置信候选者(Stage 2 > 40%) |
这种方法在成本与准确性之间取得平衡,考虑到 LLM 的随机性。
4. 基础 Agent 设计
围绕冻结的基础模型(Foundation Model)构建:
- 自修改:Claude 3.5 Sonnet (New)
- SWE-bench 评估:Claude 3.5 Sonnet (New)
- Polyglot 评估:o3-mini
- 工具:Bash(命令执行)+ Edit(文件编辑)
5. 消融变体
| 变体 | 描述 |
|---|---|
| DGM w/o self-improve | 固定元 Agent 重复修改后代(类似 ADAS) |
| DGM w/o open-ended | 只保留最新 Agent;功能丢失则回退 |
| 完整 DGM | 档案 + 开放式探索 + 自我改进 |
实验结果
主要性能提升
| 基准 | 初始 | 最终 | 提升 |
|---|---|---|---|
| SWE-bench | 20.0% | 50.0% | +30.0 pp |
| Polyglot (50 任务) | 14.0% | 38.0% | +24.0 pp |
| Polyglot (完整) | 14.2% | 30.7% | +16.5 pp |
消融对比
- DGM w/o self-improve:增益快速饱和
- DGM w/o open-ended:单次差修改后即陷入停滞
- 完整 DGM 显著优于两种消融变体
跨模型迁移
| 配置 | 基线 | DGM Agent |
|---|---|---|
| Claude 3.7 Sonnet | 19.0% | 59.5% |
| o3-mini | 23.0% | 33.0% |
跨基准迁移
| 方向 | 表现 | 基线 |
|---|---|---|
| SWE-bench Agent → Polyglot | 28.9% | 14.2% |
| Polyglot Agent → SWE-bench | 24.5% | 20.0% |
迁移能力说明 DGM 学到的是通用编码能力而非过拟合到特定基准。
自主发现的改进
DGM 自主发现了以下策略:
- 按行号的精细文件查看
- 基于字符串替换的精确文件编辑
- 多次尝试 + 投票策略
- 跨尝试的学习机制
- 同行评审评估机制
实验设置细节
- 迭代次数:80(每次迭代产生一个新 Agent)
- 并行度:SWE-bench 2 并行,Polyglot 4 并行
- 计算成本:约 2 周 / SWE-bench 单次运行 + 大量 API 费用
安全考虑
已实施的保障措施
- 沙箱执行环境
- 严格时间限制
- 自改进限制在 Python 代码
- 所有修改的可追溯谱系
- 主动性能和代码变更监控
潜在风险
- 基准优化错位:仅优化指标可能引入漏洞
- 可解释性退化:迭代自修改可能产生越来越不透明的逻辑
- 累积错位:连续代际可能放大初始偏差
个人思考
- 开放式探索的必要性:档案机制避免了局部最优陷阱,”创新之路经过低性能节点”这一洞察非常深刻。
- 经验验证 vs 形式证明:务实的选择——在实践中形式化证明不可行,经验验证是合理的替代。
- 自引用对齐:将下游任务性能与自改进能力挂钩,创造了自然的对齐激励。
- 迁移性说明 DGM 学到的是通用编码技能,而非针对特定基准的 tricks。
- 与 HGM 的关系:DGM 用性能+后代数选择父代,而 HGM 用 Clade-Metaproductivity(更理论化的指标)——两种选择压力的对比很有趣。