Browse this library

Chinese source article

4.1 · 改进器与标准

从系统改自己的代码和搜索策略走到评判标准自演化,明确 L3、L4 的递归条件与外部锚。

View original Markdown ↗

L0 到 L2 都可以由一个固定的外部过程驱动:它反复生成答案、训练模型或搜索脚手架,自己却不因结果而改变。L3 跨过的边界是改进器 UU 也进入更新状态;L4 更进一步,把判断好坏的标准 CC 交给循环。这里才是本库所说的递归自我改进核心。

设一轮改进由提案、执行、评估和接受组成:

δk∼Uk(Ak,Hk),Ak+=Apply⁡(Ak,δk),\delta_k\sim U_k(\mathcal A_k,H_k),\qquad \mathcal A_k^+=\operatorname{Apply}(\mathcal A_k,\delta_k),
ak=Ck(Ak+,Ak,Ek),Ak+1={Ak+,ak=1Ak,ak=0.a_k=C_k(\mathcal A_k^+,\mathcal A_k,E_k),\qquad \mathcal A_{k+1}=\begin{cases}\mathcal A_k^+,&a_k=1\\ \mathcal A_k,&a_k=0.\end{cases}

若 δk\delta_k 只改 θ\theta 或 Σ\Sigma,UkU_k 始终不变,系统最多到 L2。若被接受的改动改变了 Uk+1U_{k+1},下一轮提案分布随之变化,并且这个新改进器还能继续提出改动,系统进入 L3。若 Ck+1≠CkC_{k+1}\ne C_k,则进入 L4。自指、自动写代码或多轮运行都不是充分条件,关键是状态转移落在哪里。

1. L3 改的是寻找改进的方法

最容易观察的 L3 形式是系统修改承载自身的代码。它可以增加工具、修复代理循环、调整搜索策略或重写评估管线。不过,代码位于同一仓库不等于功能上自指。若一个固定修复器只修改被测项目,即使项目恰好包含修复器源码,也要检查修改是否真的改变后续修复行为。

更一般的 L3 不要求源码自写。改进器可以学会怎样选择变异算子、怎样分配实验预算、怎样从失败中构造下一批候选。设候选生成策略带参数 ϕ\phi,历史改进记录为 HkH_k,更新为

ϕk+1=G(ϕk,Hk),Uk+1=Uϕk+1.\phi_{k+1}=G(\phi_k,H_k),\qquad U_{k+1}=U_{\phi_{k+1}}.

证明 L3 成立,需要展示 ϕ\phi 的变化确实改变未来候选分布,而不只是保存了更多任务答案。最直接的对照是用同一初始系统、同一预算和同一测试任务,比较更新前后的改进器能否更快找到有效改动,并在不同项目上保持优势。

递归带来的新问题是归因链变长。第十代系统超过初始版本,收益可能来自某一代偶然发现,也可能来自改进器逐步学会了更好的搜索。完整谱系要记录每代父版本、提案、执行结果、接受证据和资源成本。只有把改进器回放到相同起点,才能把「后代更强」和「改进方法变强」分开。

2. L4 让尺子也会移动

L4 的对象包括评分规则、奖励函数、评测器、任务集、约束和价值表示。修改标准并不必然危险:旧 rubric 可能遗漏关键质量,固定测试集也会过时。困难在于新标准一旦参与选择自身,就会产生自我批准的问题。分数上升可能表示系统更符合任务,也可能只是标准变宽。

可以把观测分数写成 sk=Ck(Ak)s_k=C_k(\mathcal A_k)。当系统和标准同时变化时,

sk+1−sk=[Ck(Ak+1)−Ck(Ak)]+[Ck+1(Ak+1)−Ck(Ak+1)].s_{k+1}-s_k= [C_k(\mathcal A_{k+1})-C_k(\mathcal A_k)] +[C_{k+1}(\mathcal A_{k+1})-C_k(\mathcal A_{k+1})].

第一项是在旧尺子下的能力变化,第二项是换尺子本身造成的分数变化。若实验只报告 Ck+1(Ak+1)C_{k+1}(\mathcal A_{k+1}),两项无法识别。至少要保留一组不受更新影响的任务和终审规则,同时交叉评估新旧系统与新旧标准,才能看出标准究竟补上了缺口,还是把原来的失败改名为成功。

L4 还要面对价值冲突。一个评判器在安全、帮助性、成本和速度之间改变权重,不能只靠同一个优化循环宣布新权重更好。可执行约束能处理明确红线,专家或用户偏好可以决定开放式取舍,长期结果则需要延迟观测。不同证据回答不同问题,不能都压成一个总分。

3. 递归系统怎样保持可控

改进器越深,越需要把接受机制放在更新边界之外。候选可在沙箱中运行,权限和资源上限固定;通过单元测试后进入离线基准;只有在锁定任务上超过父版本且关键能力不退化,才晋升为下一代。评判标准发生变化时,新旧标准并行一段时间,记录它们在哪些样本上分歧,再由外部规则决定是否切换。

回滚是递归运行的基础条件。没有可定位的版本、数据和评价器,系统一旦退化就无法知道该退到哪一代。谱系还要允许分叉:某个后代在代码任务上更强,另一个在安全约束下更稳,强行只保留单一冠军会把多目标问题藏起来。

判断改进器是否真的变强,可以做一次反事实回放。取若干相同的初始系统与问题,把旧改进器和新改进器分别放回起点,给相同预算、工具和验收规则,比较它们找到首个有效改动所需的试验数,以及最终候选在锁定任务上的收益。若新改进器只在自己参与生成的谱系上占优,可能只是记住了局部历史;若能迁移到新代码库、新模型或新任务类型,才说明提案与选择策略获得了更一般的能力。

递归次数也不是主要指标。固定策略运行一千轮仍可能只是在更大预算下随机搜索;改进器只更新一次,却可能显著改变此后所有候选。更有信息量的量是每单位实验成本获得的可复现收益、候选分布覆盖和失败后恢复速度。若后代性能上升但每轮实验数呈指数增长,系统没有学会更高效地改进,只是投入了更多资源。

L4 的反事实更严格。除交叉评价新旧系统外,还可以把新标准用于一批由旧标准没有参与生成的样本,检查它是否稳定捕捉专家关心的差异;再让优化器针对新标准搜索,观察它是否迅速暴露新的漏洞。一个更好的标准既要提高与外部判断的一致性,也要承受被优化后的分布变化。

权限应随证据逐级开放。能在沙箱里修改自己的分析脚本,不等于可以改训练管线;能稳定改训练管线,也不等于可以改决定上线的标准。把写权限、执行权限和晋升权限拆开,既能保留探索自由,也能阻止一次错误跨过全部防线。改进器可以提出控制面改动,但这些改动由更高一级的固定程序或人类批准后才生效。

多目标情形下,单一冠军尤其危险。一个候选提高平均性能却增加尾部风险,另一个保持能力但显著降低成本,两者没有天然的全序关系。保留 Pareto 前沿和各目标的原始测量,比早早压成一个标量更有信息。若最终必须选择,权重来自部署目标和风险承受能力,不应由正在被选择的候选自行决定。

自指智能体 从 Gödel Machine、Gödel Agent 与代码改写系统进入功能性自指。学会更好的改进策略 讨论 STOP、训练配方搜索等工作如何让候选生成与选择策略本身变化。评判标准自演化 处理 rubric、评测器、任务集与奖励变化后的识别问题。三篇依次回答系统怎样碰到自己、怎样学会更好地改、怎样在尺子也变化时仍保留可比较性。