Browse this library

Chinese source article

4 · 改进器与评判标准 (L3–L4)

RSI 从这里开始: L3 改的是产生改动的改进器 U, L4 改的是评判候选的标准 C.

View original Markdown ↗

前三部分的系统, 不论改答案, 改参数还是改脚手架, 决定「提出什么改动, 留下哪个, 何时回滚」的那段程序一直是人写的, 判断好坏的那把尺子也一直固定. Good 在 1965 年设想的「超智能机器设计更好的机器」, 要求的恰好是这两样东西被改: 改进器在被改进的对象里, 改完以后还能继续改. 这一部分读的就是这两层. L3 改的是改进器 UU, L4 改的是评判标准 CC, 按 1.1.2 的定义, RSI 的范围就是这两层.

单独成部分, 是因为证据问题在这里换了形式. 改脚手架时, 比较的是两个 Agent 在同一组任务上谁做得好; 改改进器时, 要比较的是两个改进器在之后的若干轮里谁产出更好的后代, 当前分数和后代表现可以完全脱节. 到了 L4, 连比较用的尺子也换了, 内部分数上升可能只是尺子变松了. 三篇读的系统都是 2023 年以后的工作, 只有 Gödel Machine 是 2003 年的理论构造, 它给出了后来所有经验型 L3 系统共用的结构: 评判标准固定, 改进器可改.

三篇的顺序按改动深度排. 4.1 和 4.2 都在 UU: 4.1 把整个 Agent 的代码交给自己改, 改进器和被改进的东西是同一份代码; 4.2 只留下改进流程里一块具名部件, 范围窄, 改了什么可以单独拿出来比. 4.3 进到 CC.

1. RSI 的范围

1.1. L3 与 L4 的条件

L3 要求 Uk+1̸≡actUkU_{k+1}\not\equiv_{\mathrm{act}}U_k 且 Ck+1≡actCkC_{k+1}\equiv_{\mathrm{act}}C_k, L4 要求 Ck+1̸≡actCkC_{k+1}\not\equiv_{\mathrm{act}}C_k, 两者对更浅的组件都不作约束. 用 S′=I(S)S'=I(S) 的写法, 递归要求改完的系统里带着改进器 I′⊆S′I'\subseteq S', 并且 S′′=I′(S′)S''=I'(S') 有定义, I′I' 的行为和 II 不同. 如果 I′≡actII'\equiv_{\mathrm{act}}I, 改进器只是被带着走, 深度仍按被改的组件算.

综述给 L3 的操作性测试是一个反事实: 先把这一轮产出的答案, 算法或任务求解器放到一边, 再问下一轮提出, 选择, 提交或回滚改动的方式, 会不会因为这一轮保留下来的东西而不同. 不会, 就按实际被改的对象归 L1 或 L2. AlphaEvolve 保留的是评估器选出的算法, 外层搜索程序固定, 按这个测试不构成 L3. 自指在这里是功能关系: 递归调用自己, 或者能编辑自己的源代码, 都不足以说明存在自指, 需要的证据是之后的更新方式发生了保留下来的因果变化.

1.2. 改进器的四个动作

落到具体系统, UU 至少包含四个动作: 提出候选改动, 在候选里筛选值得评测的, 提交要保留的那个, 发现有害时回滚. 4.1 的系统可以改到全部四个动作, 因为整份 Agent 代码都在可写范围里. 4.2 的系统只改其中一两个: STOP 改的是「提出加筛选」的脚手架, Promptbreeder 改的是「提出」用的变异提示, A-Evolve-Training 改的是下一轮要探索的方向和提交时的门槛.

CC 也不是一个整体. 综述观察到, 大多数 L4 方法只改其中一个部件: 评分规则, 评测器, 任务集, 奖励函数或价值表示, 其余的任务描述, 受保护的样例, 结果检查和授权规则保持不变. 不变的部分约束了搜索, 也提供了比较新旧标准的证据. 这一点让 L4 的系统可以被检查: 只要还有一部分尺子没动, 就能拿它去量动过的那部分.

1.3. 三篇的演进

改整份代码:4.1.1 · 自指智能体 从 Gödel Machine 起笔: 证明搜索器证出「立刻执行这个改写的效用高于继续搜索」才改写, 改写可以触及证明搜索器自己, 公理和效用函数不在改写范围内. 它的保证很强, 代价是证明搜索很难, 找不到证明就什么也不改. Gödel Agent, SICA, DGM 用经验评测代替证明. DGM 从档案里按分数和子代数采样父代, 分阶段评测后入档, 80 轮后 SWE-bench 从 20.0% 到 50.0%, 一次运行约 22,000 美元.

DGM 的实验里有一个后代删掉了检测工具调用幻觉的标记, 只改两次就拿到满分, 检测所依赖的日志在候选自己的代码库里. HGM 进一步发现当前分数预测不了产出好后代的能力: SICA 和 DGM 用来选父代的信号, 和子树里实际最好后代的相关系数只有 0.27 到 0.44. HGM 用子树里的成功失败次数估计这种「元生产力」, 同样 800 次评测预算下, SWE-Verified-60 上 SICA, DGM, HGM 分别是 50.0, 53.3, 56.7, 两两相差 2 道题.

改一块部件:4.1.2 · 学会更好的改进策略 读的系统范围更窄, 证据也更干净. STOP 把一个种子改进器交给它自己改, 语言模型和元效用固定; 在 LPN 上自改进 4 轮得到的改进器, 不再优化, 直接拿到 5 个没见过的任务上, 全部超过种子改进器, 3SAT 从 21.2% 到 75.1%. 同样流程换成 GPT-3.5, 25 次运行只有 12% 至少提高 3 个点, 改进器会被自己改坏. Promptbreeder 同时进化任务提示和变异提示, 前者是 L2, 后者是 L3.

SePO 把 Promptbreeder 固定的顶层, 也就是提示词 Agent 自己的系统提示, 也交给自己改, 「去掉自改进」的消融降 1.44. Polaris 让 7B 模型做 Gödel Agent 式的自改, 直接复现只有 1/20 成功, 加了修复循环后约 45%. A-Evolve-Training 让 30B 模型自主后训练, 第三轮把内部开发分推到 0.93 到 0.94, 外部榜单仍在 0.84 到 0.85; 循环随后把内部开发分当作可疑证据, 改了下一轮的搜索策略和提升门槛. 外部榜单没变, 所以它仍在 L3.

4.2 还补了一条 2026 年逐渐成形的路线: SIA, Co-Harness 和 WHALE 联合更新模型权重与 harness. 三项工作都观察到两边的瓶颈会随更新切换; WHALE 进一步比较了调度方式, 在它的三个任务上, 小步交替优于只改一边或先后各做一次. 不过联合改 θ\theta 与 Σ\Sigma 仍不自动等于 L3; SIA 的 Feedback-Agent, Co-Harness 的双循环和 WHALE 的切换规则都由人给定. 判断改进器有没有变好, 仍要单独检查 UU 是否留下了能迁移到新任务的更新.

改尺子:4.1.3 · 评判标准自演化 先把「移动的尺子」写成分解式. 设 sC(a)s_C(a) 是系统 aa 在标准 CC 下的分数, 观测到的变化 sCk+1(ak+1)−sCk(ak)s_{C_{k+1}}(a_{k+1})-s_{C_k}(a_k) 拆成旧标准下系统的变化 sCk(ak+1)−sCk(ak)s_{C_k}(a_{k+1})-s_{C_k}(a_k), 加上标准移动带来的变化 sCk+1(ak+1)−sCk(ak+1)s_{C_{k+1}}(a_{k+1})-s_{C_k}(a_{k+1}). 只看左边, 两项混在一起. 对策是交叉评测: 把新旧系统分别放到新旧标准下打分, 得到一张 2×2 表.

起点是一个基线事实: RubricBench 上, DeepSeek-v3.2 直接判断 38.8%, 自生成评分规则 57.8%, 人写规则 84.9%, 模型会执行规则, 定不出专家默认的隐含约束. RQGM 在 epoch 内冻结评测器, 只在边界处用固定的真值锚点比较在任者和挑战者, 替换后删掉旧评测器打出的分. Double Ratchet 的消融给出这一篇最重要的结论: 去掉锚点护栏, 评分函数退化成几乎全判通过, 用三种评分函数训练出的技能任务分却只差 0.038, 所以下游任务分验证不了评判器准不准.

2. 对照与比较协议

2.1. 固定的外层

系统 层级 被改的部分 固定的外层 主要证据
Gödel Machine L3 证明搜索器与任务策略 公理系统, 效用函数 形式证明
DGM L3 整份 Agent 代码 档案管理, 父代选择公式, 基础模型, 基准 分阶段基准分, 跨基准迁移
HGM L3 树与子树统计 基准, 预算, 调度规则 子树成功率, SWE-Lite 去重口径
STOP L3 改进器代码 语言模型, 元效用, 自我应用流程 5 个新任务上的迁移
RQGM L4 评测器 真值锚点, epoch 规则 锚点上的替换与消融
Double Ratchet L4 评分函数表达式 10 样本锚点, 锁定集, 独立终审 锁定集一致性

每个系统能声称的改进, 都以它固定的那部分为前提: Gödel Machine 以公理正确为前提, DGM 以基准反映自我改进能力为前提, 而 HGM 的相关性分析显示这个前提只得到弱支持, RQGM 以锚点数据不受更新影响为前提. 表里还能看出一个趋势: 越往 L4 走, 被固定的东西越少, 系统越要在设计里专门留出一块不动的证据, 例如 RQGM 的真值锚点和 Double Ratchet 的锁定集.

两篇 L3 文章里改进器碰不到最终的尺子, 但中间指标仍会被优化到失真. STOP 的改进器在 LPN 效用上找到形状漏洞, 能力更强的 GPT-4 关沙箱的比率是 GPT-3.5 的三倍多; A-Evolve-Training 的内部开发分在第三轮被刷高. 综述的要求是, 证据来源和接受规则都要在候选的更新边界之外, 候选不能挑选或修改审计数据, 评分规则或接受规则, 反复访问一个留出集也会让它变成开发反馈.

2.2. 比较改进器和比较标准

比较两个改进器, 只报告最好的产物不够. 综述要求在匹配的模型, 工具, 上下文, 算力和停止规则下, 看候选改进器是否比在任者产出更好的后续改动, 审计记录包括当前性能, 之后各轮的产出, 搜索成本, 失败后的恢复, 到新任务的迁移. 4.2 把这个要求写成一个实验: 从第 kk 轮取出成品和保留的改进器, 在没见过的任务上分别用第 0 轮和第 kk 轮的改进器从相同起点跑若干轮, 差别显著才能说改进策略变了. STOP 的迁移表基本就是 k=4k=4 的版本.

比较两个标准时, 共同参照没有了. 交叉评测的 2×2 表只在两个标准都能给两个系统打分时有意义; RQGM 加进来的代码审查是旧标准没有的维度, 那一格就是空的, 只能靠外部锚点. 两个标准判断不一致的样本要保留下来, 再用标准之外的东西判断偏离是否更好地服务外部目标: 新的可执行检查, 密封样例, 对抗探测, 有授权的人工判断. 综述要求提升一个新标准时写明不变的外部目标, 可写的部件, 证据覆盖, 接受规则, 批准者和回滚条件; 4.3 对照的四个系统里, 批准者一栏都是空位.

3. 读法

3.1. 按顺序读

第一次读按 4.1, 4.2, 4.3. 4.1 的五个系统有明确的承接: Gödel Machine 给出结构, Gödel Agent 在运行时改自己的代码, 用环境反馈代替证明, SICA 让档案里最好的 Agent 当元 Agent, DGM 保留所有能工作的后代, HGM 指出分数和后代质量的错配. 4.2 开头把 UU 拆成四个动作, 读完 4.1 再读它, 能看出每个系统各自留下了哪一块. 4.3 开头的分解式和交叉评测表要先读懂, 后面 RQGM 和 Double Ratchet 的每个设计都是在压分解式里的第二项.

读之前最好先过一遍 1.1.2 对 STOP, Gödel Machine, DGM, RQGM 和 AlphaEvolve 的归类走查, 这一部分的正文是那几段走查的展开. 1.2 里关于 RLCER 和 AREX 的归类, 在 4.2 区分 L3 和其它层的对照表里还会再出现一次.

3.2. 按问题读

关心「AI 改自己的代码」能走多远, 读 4.1 的 DGM 和 HGM, 重点看节点删检测标记那一段和 HGM 的相关性表. 关心改进器本身到底有没有变好, 读 4.2 的 STOP 迁移实验和用第 0 轮, 第 kk 轮改进器做的反事实对照. 做评测和奖励模型的读者, 读 4.3 的 RubricBench, Double Ratchet 和 EUREKA: EUREKA 写奖励程序, 比较候选的适应度 FF 一直固定, 它证明的是奖励在 FF 上能训出好策略, FF 没测到的行为不在证据范围里.

这一部分提出的问题在 第 5 部分 得到系统的处理: 5.1 的分层失效里, L3 的共享内部参照和 L4 的移动标尺各占一层, 5.2 读的理论文献从能力增长的角度得到同样的结论, 即持续增长需要的反馈和数据必须来自更新边界之外. 关心实验室层面的 RSI 判断, 接着读 5.2.2, 那里的评测按本部分的定义都在 L0.

4. 改进器怎样成为优化对象

4.1. 两层优化的最小形式

普通自改进固定更新器 UϕU_\phi, 只搜索任务系统 aa:

ak+1=Uϕ(ak,Hk).a_{k+1}=U_\phi(a_k,H_k).

L3 再增加一层, 让元更新 MM 产生新的改进器参数 ϕk+1=M(ϕk,Ek)\phi_{k+1}=M(\phi_k,E_k), 下一轮实际使用 Uϕk+1U_{\phi_{k+1}}. 判断递归性的实验不能只比较 aka_k 的成绩, 还要固定起点和预算, 分别让旧更新器与新更新器处理未见任务. 若

Ex∼T[J(Uϕk+1(a,x))]>Ex∼T[J(Uϕk(a,x))],\mathbb E_{x\sim T}[J(U_{\phi_{k+1}}(a,x))]>\mathbb E_{x\sim T}[J(U_{\phi_k}(a,x))],

才有证据说明被改进的是改进能力. 只展示后代程序比祖先程序强, 无法排除固定搜索器碰巧找到了一个好候选.

改进器的目标也不能只看最终最高分. 一个更新器可能通过生成极多候选提高最好结果, 同时把成本和失败率推高. 更完整的效用应包含预算 BB, 成功概率和尾部损失, 例如 V(U)=E[J(a∗)]−λE[B]−μCVaR⁡α(L)V(U)=\mathbb E[J(a^\ast)]-\lambda\mathbb E[B]-\mu\operatorname{CVaR}_\alpha(L). 当后代更新器改变采样数或评测次数时, 固定预算对照尤其重要, 否则多用算力会伪装成策略进步.

4.2. 信用分配跨越两条时间轴

任务系统的改动通常很快得到反馈, 改进器的改动要经过多次后续更新才能显出效果. 设 ϕ\phi 在内层产生序列 a1,…,aKa_1,\ldots,a_K, 元目标为 J(aK)J(a_K). 对 ϕ\phi 的梯度穿过整条轨迹:

∇ϕJ(aK)=∂J∂aK∏t=1K−1∂at+1∂at∂Uϕ∂ϕ.\nabla_\phi J(a_K)=\frac{\partial J}{\partial a_K}\prod_{t=1}^{K-1}\frac{\partial a_{t+1}}{\partial a_t}\frac{\partial U_\phi}{\partial\phi}.

长链带来消失、爆炸和高方差; 代码改写等离散操作又没有可直接使用的导数. 实际系统因此依赖进化搜索、语言模型提案或轨迹级奖励. 它们能绕开求导, 代价是样本效率低, 而且最终奖励很难指出哪一条改进规则真正有效. 反事实回放能缓解这个问题: 在相同祖先、任务和预算下替换新旧 UU, 比较整段后代谱系, 把起点差异从结果中移开.

5. 评判标准移动后的辨识问题

5.1. 分数增长不再等于对象增长

L4 同时更新对象 aka_k 和评分函数 CkC_k. 观测到的序列 Ck(ak)C_k(a_k) 上升, 可能来自对象变好, 也可能来自尺子变宽松. 两者在单一数字上不可辨识. 最简单的交叉矩阵是同时计算 Ci(aj)C_i(a_j): 用旧尺评新对象检查对象变化, 用新尺评旧对象检查尺度漂移. 若只有对角线 Ck(ak)C_k(a_k), 无论曲线多漂亮都拆不开这两种解释.

设新尺与外部目标的误差为 ek(a)=Ck(a)−J(a)e_k(a)=C_k(a)-J(a). 优化压力会主动寻找 eke_k 为正的区域, 因而平均相关性很高仍不够. 需要在候选生成没有见过的留出分布上测排序一致性, 并加入针对极端候选的压力测试. 若新尺把所有候选都判为通过, 内层训练有时仍能靠原有模型先验得到不错结果, 任务分没有立刻下降, 但选择能力已经消失. Double Ratchet 的消融正展示了这种分离.

5.2. 外部锚不是永远不变的教条

评判标准可以演化, 外部审计仍需保留一个暂时不受该轮更新控制的比较面. 它可以是人类偏好、形式约束、真实环境结果或延迟揭示的新样本. 「外部」描述控制关系, 不要求一套标准永久冻结. 审计者可以在更慢时间尺度更新标准, 条件是本轮候选无法预测或修改这次更新, 并且新旧标准有重叠样本用于校准.

这形成两个时间尺度: 快循环改对象和内部标准, 慢循环审查内部标准与外部目标的偏差. 快循环获得探索能力, 慢循环维持语义连续性. 如果两者合并成同一个模型、同一批数据和同一次优化, 系统既当选手又改规则, 任何上升曲线都缺少稳定参照. 第 5 部分讨论的安全内核、留出评测和谱系回滚, 都是在给这条慢循环保留控制权.