递归自我改进(Recursive Self-Improvement,RSI)大概是AI圈里被吹得最玄、也最容易被误读的概念之一。它的核心想象很诱人:如果AI能够改进"自己改进AI"的能力,那么人类需要亲手制造的,可能就只有最后一台AI,剩下的迭代交给系统自身滚动完成。听起来像科幻,但真正动手做研究或工程时你会发现,"自己能改自己"这句话几乎毫无操作意义。模型根据反馈改写一下提示词算不算自我改进?训练一个奖励模型去调另一个模型算不算?还是说必须达到某种"智能指数级增长"才算数?最近读到一篇标题很挑衅的论文——《The Last AI Built by Humans: Toward Genuine Recursive Self-Improvement》,它没有停留在哲学讨论上,而是试图给"什么才算是真正的递归自我改进"一个可检验的定义和一套协议。这篇文章我想把它的核心要点拆开来讲,同时结合我自己在模型迭代和数据验证上踩过的坑,聊聊这套框架到底能在多大程度上落地。
这类内容适合谁看?如果你在关注AGI路径、模型对齐、自动数据增强,或者你正在做"用大模型改进大模型"这类自举式的项目,那这篇论文的思考方式会对你有直接的参考价值。它不是一篇给你现成代码的工程教程,而是一个能够帮你分辨"伪自我改进"与"可验证自我改进"的思维框架。
1. 为什么这篇论文坚持要重新定义RSI——传统思路走不通的地方
1.1 两种主流直觉思路:能力叠加与自我反思
先说说大多数人对RSI的第一直觉。第一种想法是"让模型学会编程,然后给自己写更好的训练算法、更好的架构"。这个思路看起来最直接,但它有个致命前提:模型必须在编程和算法设计上强到足以改进自身,这本来就是超级智能的门槛了。说得直白点,这属于"你已经是AGI了才凑得齐启动条件"的悖论,不具备递归启动的可操作性。
第二种想法是"让模型反复评估自己的输出并修正"。这个思路更容易在当下复现,比如让LLM生成训练数据来微调自己,或者让模型对自己的回答做多轮批判式修订。但它有一个非常隐蔽的陷阱:模型自我评价的分数并不等于真实能力提升。我实测过一个典型例子——让一个7B模型自己生成一批"更详细、更有逻辑"的SFT数据,然后微调它自己,结果在某一类与训练数据同分布的评测上分数确实涨了,但换一个分布略有偏移的数据集,性能立刻回落。你很难说清楚这个过程中模型到底是"变强了",还是仅仅是"过拟合到了自己生成的数据分布上"。
1.2 论文的核心转向:从"能力增强"转向"可验证的进步信号"
论文提出的关键转向是:判断RSI是否成立,重点不该放在"模型是否变得更聪明"这种模糊感受上,而应该放在"改进过程是否通过了可验证性检验"上。换句话说,真正值得关心的问题不是"系统强不强",而是"系统的进步信号能不能被外部审计"。
这个转向非常像现实世界的公司审计逻辑。一家公司说自己今年利润翻倍,这不算数,得让第三方审计确认营收凭证、库存流水和回款记录,利润数字才能被采信。论文对"递归自我改进"的态度也是如此:一个AI系统说自己经过自我改进后变强了,必须拿得出让人信服的验证链——留出的测试集、可重复的评估协议、置信区间,以及对验证集未被污染的证据。凡是拿不出可验证信号的自我改进,论文倾向于把它视为"候补选手",而不是"合法RSI"。
1.3 伪RSI的三个典型形态
我根据自己的工程经验,把论文讨论中隐含的"伪RSI"归纳成三种常见形态,方便你对照:
基准污染型:改进过程中使用的训练数据与测试数据有重叠。比如模型生成的增强数据里混入了评测集原文,或者评测集本身已经在预训练语料中出现过。这种情况下的分数上涨不是进步,是记忆泄漏。
自我表扬型:评估完全依赖模型自己的判断。比如让模型给自己的回答打分,再把这个分数当作改进依据。模型很容易学会"生成更符合自己偏好的内容",而不是"生成更正确的内容"。
提示词魔术型:研究者反复用同一组prompt微调、改写、拼接,直到输出看起来更有条理,然后在少量样例上做人工对比,得出"模型更聪明了"的结论。这类改进往往在放大一个很小的验证集上的噪声,换一批样本立刻失效。
这三种情况在论文的框架里都不满足"合法递归自我改进"的条件,因为它们没有提供一个可被独立验证的进步信号。
2. SCE训练协议:递归的每一步不是"变强",而是"被验证地变强"
2.1 上游模型与下游模型:把改进过程拆成可审计的角色
论文提出了一套名为SCE(Successive Conceptual Elaboration,连续概念阐述)的训练协议思路。这个词听起来抽象,但把角色拆开看其实很清晰。SCE的核心是把一次递归改进拆成三个角色:
- 上游模型:负责提出改进方案。它可以建议修改训练数据、重新组织任务的表述方式、提出新的评估指标、甚至生成训练代码片段。
- 下游模型:负责执行上游方案并进行训练。它是实际承受改进后果的一方。
- 验证器(可以是人类,也可以是自动程序):负责检查"下游模型是否真的变好了"。
这三个角色形成一个循环:上游提出方案,下游执行并更新,验证器确认改进有效。树的结构则是一个递归链:上一轮验证通过的下游模型,成为下一轮的上游模型,继续提出下一个改进方案。
很多人第一次接触这个框架时觉得"这不过就是个人类在环里的自动调参",但我觉得SCE的精髓在于角色分离。你不再关心"AI是否自己给自己写代码"这种笼统问题,而是可以精确地回答:"是哪个模型、基于什么信号、通过什么验证、完成了哪项具体改进?"一旦每一步都能回答这些问题,递归过程就从黑箱变成了可审计的链条。
2.2 一条合法递归链的运转流程
按我的理解,SCE中一条合法的递归链应该是这样运转的:
- 基线模型A在任务T上取得指标m0。
- 模型A(作为上游)被要求提出一个改进方案p,方案的具体形式可以是一组新的训练数据、一个不同的目标函数写法、或者重新表述任务的方式。
- 方案p被应用到新模型B的训练流程中,B是下游模型。
- 在预先设定好的固定验证集V上评估B的指标m1。
- 只有m1在统计意义上显著优于m0(例如置信区间不重叠)时,B才被接受为新的基线模型。
- 重复以上过程,直到某个终止条件被触发。
这个过程里有一个容易被忽略的细节:SCE的命名中"Conceptual Elaboration"意味着每次改进不限于调超参数,更鼓励模型重新表述任务本身。比如一个模型面对"判断两个数学问题是否等价"的任务,它可能提出把问题重写成"先分别化简,再比较规范形"的形式。这种重新表述一旦被下游模型验证有效,就被保留下来,成为后续改进的共享表征。知识的积累不是参数层面的微小调整,而是任务理解层面的每一次深化。
2.3 为什么"可验证"比"强"更关键
如果你只有"变强"这个目标,你永远无法判断什么时候该停止、什么时候该回滚、以及两个不同的改进路线是否可以合并。而"可验证"提供的是一个外部锚点。每一次递归迭代都产生一条可以被审计的记录:"用了什么数据、改了什么设置、在什么验证集上提升了多少"。
我在实际项目里对这个点的感触特别深。有一段时间我在做模型的自动数据增强,每次迭代都能让内部评测分数上涨,但产品上线后用户反馈却越来越诡异。后来复盘才发现,模型学会了在内部评测分布上过度拟合,真正用户场景中更换了提问方式后,表现肉眼可见地退化。如果我当时在每一轮迭代上都设置一个不可妥协的外部验证集,这个坑完全可以避免。论文把"可验证"放在RSI定义的核心,就是在用形式化的语言提醒:没有验证信号的自我改进,大概率是在原地跑步,甚至有可能是在往错误方向飞奔。
3. 合法性测试:用三个可操作的问题判断一次递归改进是否"算数"
3.1 三种可验证进步类型
论文讨论中反复出现"verifiable progress"这个概念,我理解它的意思是:合法的递归自我改进必须对应某种可验证的进步。进一步拆开,可以分成三种类型:
| 类型 | 判断对象 | 验证方式 | 典型示例 |
|---|---|---|---|
| 可验证的任务改进 | 模型在特定任务上的表现 | 在固定留出测试集上指标显著提升 | 数学推理准确率从60%提升到70% |
| 可验证的模型改进 | 模型本身的能力边界 | 展示出一个此前不具备且可验证的新能力 | 从前无法完成形式化验证,现在可以对程序输出给出可检查的验证步骤 |
| 可验证的数据改进 | 数据或数据生成管线的质量 | 新数据能持续带来下游任务提升,且不污染评估集 | 自动筛选出的错误样本,人工抽查确认后加入训练集使通用指标稳定上升 |
三种进步类型里,最容易产生误判的是第二种。很多团队声称"模型的推理能力提升了",但本质上只是现有任务上的分数提高了。论文强调,真正的模型改进应该是一种"可持续泛化的能力变化",而不是某个benchmark上的数字变化。区别在哪里?数字变化可能来自记忆、风格偏好调整或对评估集的分布拟合,而能力变化应当能迁移到新的、未被训练过的任务上。
3.2 谷仓问题:两个模型都在进步,但它们的进步合并不了
论文里有一个让我印象很深的概念叫"silo problem",我把它理解成"谷仓问题"。情景是这样的:两个模型分别在自己的领域里进行递归自我改进,各自积累了独立的提示词体系、数据风格和评价标准。绕了一圈之后,你发现它们各自都提升了,但你想把两条改进路线合并到同一个系统里时,崩溃了——因为两个系统对任务的定义、对"好结果"的定义、甚至使用的术语体系都不一致了。
这个问题的根源在于,验证信号总是相对于某个特定框架存在的。模型A的"更好的证明风格"在模型B的评价体系里可能毫无意义。现实中这种例子比比皆是:一个团队专注prompt engineering,另一个团队专注数据质量,两边各自迭代三个月,然后在"这两个改进能不能叠加"的问题上吵了起来。论文指出,解决谷仓问题的方向是引入更高层级的评估维度,也就是后面要说的"全视野评估",用领域级共享基准去校准不同系统的进步方向。
3.3 防伪造:进步信号必须"不可用嘴炮伪造"
合法性测试的另一层深意是防伪造(unforgeability)。一个可验证的进步信号,不能是那种"看起来有道理但经不起深入检查"的东西。
举个例子,"解析数学证明的形式化严格性"是天然的防伪造信号,因为每一步推导都可以被自动化工具重新检查。"文本更有说服力"则是高伪造风险的信号——大模型非常擅长生成听起来流畅、结构工整、但实际上经不起推敲的内容。正因如此,论文倾向于把那些依赖人类主观感受、又无法转换成自动化检查的"进步证据"排除在合法性测试之外,或者至少加以严格限制。
我自己的经验是:任何由模型自己声称的"改善",都必须附上一个人类或程序可以重新独立运行的检查流程。如果这个流程不存在,那这个进步在合法性测试里就只能算"待定"。这不是不信任模型,而是审计的第一原则:不能既当运动员又当裁判。
4. 想动手验证这套框架?从最小递归改进循环开始
4.1 一个最小化的递归循环实现思路
论文没有给出可以直接跑起来的代码,这一点要明确。但它的概念框架其实非常适合改造成一个最小实验容器。我基于自己的理解,写过一个非常简化的验证循环,结构如下:
def recursive_improve_loop( baseline_model, task, fixed_validation_set, max_rounds=10, significance_threshold=0.05 ): best_model = baseline_model best_score = evaluate(baseline_model, task, fixed_validation_set) for round_idx in range(max_rounds): # 1. 上游提议:让当前模型提出改进方案 proposal = best_model.propose_improvement(task) # 2. 下游训练:用提议方案训出一个候选模型 candidate_model = train_with_proposal(best_model, proposal) # 3. 固定验证集上评估 candidate_score = evaluate(candidate_model, task, fixed_validation_set) # 4. 统计检验:只有显著提升才接受 ci_low, ci_high = bootstrap_confidence_interval( candidate_score, fixed_validation_set ) if ci_low > best_score + significance_threshold: best_model = candidate_model best_score = candidate_score log_improvement(round_idx, proposal, ci_low, ci_high) else: log_rejection(round_idx, proposal, candidate_score) return best_model这段代码当然简陋,但它捕捉了论文框架的骨架:上游提议、下游执行、固定验证集检验、统计显著性门槛。我强烈建议任何想复现类似思路的人都自己动手实现一遍这个循环,因为你会发现真正的难点根本不在代码,而在工程环境:验证集怎么隔离,训练过程怎么保持可复现,模型分布漂移怎么归因。
4.2 信号选择:内生信号、外生信号与全视野评估
在论文对验证信号的讨论中,我体会到三个层次的区分,也对应着三种不同强度的验证方式:
- 内生信号:任务自身的评估分数。比如数学题的准确率、代码运行通过率。它的优点是容易获取,缺点是容易被单一分布绑架。
- 外生信号:跨任务的泛化表现。比如一个在数学推理上做了自我改进的模型,在代码逻辑、法律条文理解等无关任务上的表现是否也提升了。外生信号是检验"能力是否真正泛化"的重要手段。
- 全视野评估(field-level evaluation):在整个数据生态上的综合评估。它的作用相当于审计中的"全盘复查",而不只是抽查某几笔账。面对谷仓问题时,全视野评估是让不同系统的进步回到同一把尺子的办法。
一个常见的误区是只盯内生信号做递归优化。我在早期做模型自训练的时候就犯过这个错误,盯着单任务准确率一路递归调,最后模型在目标任务上非常好,在邻近任务上却明显退步。论文把外生信号和全视野评估纳入讨论,本质上是要求你做"能力增长的体检",而不是只看某一项指标的好看数字。
4.3 工程落地的几个实际坑
如果你打算在自己项目里尝试这个框架,有几个坑我先帮你排一下:
验证集污染:递归改进中最容易翻车的就是数据污染。上游模型生成的数据中可能包含与验证集高度重合的内容,尤其是在验证集样本本来就存在于网络语料中时。我的建议是对每一批生成数据做一次embedding层面的去重,把所有与验证集相似度超过阈值的样本直接丢弃。
置信区间计算:小模型或小数据量下,单次评估结果方差很大。只比较均值几乎一定会做出错误判断。我用bootstrap抽样估计置信区间,只有在置信区间完全不重叠时才接受一次改进。代价是速度慢了一些,但换来的判断可靠性值得。
单次只改一个变量:递归改进思路很诱人,但如果你同时改数据、改目标函数、改评估方式,一旦出现变化,你根本没法归因。我在实验中坚持"每一轮只允许上游模型提交一个维度的改动",这让每一轮改进的记录都像一张干干净净的实验报告。
5. 开放问题:为什么"最后一代AI"可能迟迟不来
5.1 花言巧语模型的威胁:验证者被"说服"而不是被"证实"
论文讨论里有一个让我后背发凉的概念,就是"花言巧语模型"(smooth-talker model)。它指的是那些非常擅长生成"看起来合理、读起来流畅、但经不起严格验证"内容的模型。如果递归链条里的验证环节依赖人类审阅者的时间和注意力,那么攻击面就出现了:一个花言巧语的上游模型可以生成海量看似正确的报告、证明、数据分析,人类验证者可能只有有限的精力去抽查,于是大量未经验证的"进步"被放进了链条。
这其实是可验证性框架最脆弱的地方。你建立的审计流程再严谨,如果审计员可以被无穷无尽的"看似有效"的提交淹没,审计质量就会下降。论文对这个问题的态度是:必须尽可能把验证环节自动化,用形式化工具、可执行测试、可重复实验去替代人类的主观审阅。越是往后递归,人类越应该在"协议层"把关,而不是在"内容层"逐字检查。
5.2 不可验证能力的缺口:创造力、审美与抽象权衡
另一个开放问题是,有些被人类视作关键的能力,在目前的框架下几乎找不到可信的验证信号。论文自己也承认,像科学品味、审美判断、长期目标权衡这类高度抽象的能力,很难被塞进"固定验证集+统计显著提升"的框架里。
这个问题不能靠"发明一个打分器"来糊弄。如果你硬要把不可验证目标转换成可量化指标,比如把"回答有创意"定义成"与参考答案的编辑距离小",那这种验证信号本身就是伪造的。SCE框架能够覆盖的是一大类具备清晰正确标准的任务,而对那些无法形式化验证的能力,它目前只能保持克制。这也是我认为这篇论文最诚实的地方——它没有宣称自己解决了所有自我改进的问题,而是划出了一条线:可验证的进步可以递归,不可验证的进步需要人类协议介入。
5.3 人类协议要审查的不是输出,而是链条本身
论文最后给人留下的思考是:人类在递归自我改进中的角色,不应该是在每一环输出上做质检员,而应该是在关键节点上审查"是否继续递归"。就像审计师不会重算公司每一笔账,而是审流程、审内控,人类面对AI递归改进时,真正要决定的是:是否继续这条递归链?是否需要更换验证器?是否需要重新定义任务?是否需要中止迭代?
这些决定没法自动化,因为它们的背后是价值判断——什么方向的进步是值得追求的,什么风险是不可接受的。这也是为什么论文强调"人类协议"(human protocol)的存在。递归自我改进如果有一天真的实现,它最需要的可能不是更强的验证器,而是一套能够在适当时刻说"不"的制度性流程。
写在最后
读这篇论文给我带来的最大变化,是面对"自我改进"这个说法时不再轻易被demo打动。现在看到任何号称"模型自己改自己"的项目,我都会先问三个问题:改进信号可验证吗?验证集够干净吗?改进能复制到分布外吗?这三个问题帮我省掉了很多无效的兴奋和无效的加班。
最后再分享一个小实践:给所有递归式的实验建立"审计日志"。不要只记录最终指标,要把每一轮的输入数据版本、验证集版本、模型权重版本、提议内容、置信区间、决策结果全部记录在案。这个方法听起来麻烦,但它才是复现和研究递归自我改进的基石。否则当模型真的开始"自己改进自己"时,你连它上一轮改了什么都不知道,那才是真正让人头皮发麻的时刻。