1. 从"手写模型"到"模型改模型"的拐点
2026年开年到现在,我身边做算法工程的朋友聊得最多的一个词就是"递归自我改进"。这个词听起来很玄,但拆开看其实很朴素:让一个AI系统去参与改进另一个AI系统,改进出来的新系统再去改进下一代,如此循环。它不是某一天突然冒出来的概念,而是过去几年自动化机器学习、神经架构搜索、合成数据生成这几条线自然汇聚的结果。
我在2024年底做过一个内部小实验,用一套自动化调参流程去优化一个中等规模的推荐模型。当时流程还是"人定搜索空间、机器跑实验、人看结果再调空间",人始终在环里。到了2025年下半年,同样的任务,我把"看结果调空间"这一步也交给了一个大模型驱动的调度器,它自己读实验日志、自己改搜索空间、自己决定下一轮跑什么。那一刻我意识到,环里的人正在被慢慢挤出去。
这篇文章想聊的就是这个拐点。它适合三类人看:一是做模型训练和调优的工程师,你们会最先感受到工作方式的变化;二是做AI产品和技术管理的人,你们需要判断哪些环节可以放手、哪些必须守住;三是对AI发展节奏好奇的普通读者,我会尽量用生活化的类比把原理讲清楚。核心问题只有一个:当AI开始造AI,递归自我改进到底走到了哪一步,它的能力边界、真实瓶颈和实操中的坑分别在哪里。
需要先说明一点,本文提到的所有案例、项目、机构都是虚构代称,只用于说明技术逻辑,不指向任何真实主体。涉及的具体参数和流程,一部分来自公开的技术思路,一部分是我基于常见工程实践做的合理推演,你拿去参考可以,但别当成某个产品的官方说明。
2. 递归自我改进到底在改进什么
2.1 三个可被自动化的层次
很多人一听到"AI造AI"就想到科幻电影里机器人自己造机器人。实际工程里,递归自我改进发生在三个不同的层次,难度和成熟度差别很大。
第一个层次是超参数与训练配置的自动优化。这一层最成熟。学习率、批大小、权重衰减、warmup步数这些参数,过去靠经验加网格搜索,现在可以用贝叶斯优化或者强化学习调度器自动跑。它的本质是在一个相对固定的模型结构上找更优的训练配方。我实测下来,这一层能稳定省掉60%到80%的人工调参时间,但天花板也明显——结构不变,性能提升通常只有几个百分点。
第二个层次是模型结构与组件的自动搜索。这就是神经架构搜索的主场。让搜索算法在算子空间里组合卷积、注意力、归一化这些积木,拼出新的网络结构。这一层比第一层难得多,因为搜索空间爆炸,评估一个候选结构往往要完整训练一遍,算力开销巨大。业界的常见做法是用权重共享或者代理模型来降低评估成本,但代理和真实性能之间总有偏差,这是后面要重点讲的坑。
第三个层次是训练流程与数据策略的自动生成。这是2025年之后才真正热起来的一层。让一个大模型去读训练日志、分析失败案例、生成新的数据增强策略或者课程学习顺序,甚至改写训练脚本本身。这一层最接近"AI造AI"的字面意思,因为它改的不只是参数和结构,而是"怎么训练"这件事本身。
三个层次的关系可以这样理解:第一层是调火候,第二层是换锅,第三层是改菜谱。越往后,自动化的杠杆越大,但可控性也越差。
2.2 为什么"递归"两个字是关键
单次的自动优化不稀奇,稀奇的是把优化结果再喂回去当下一轮的起点,形成闭环。这里有个数学上的直觉:如果每一轮改进都能带来一点点正向收益,而且这个收益不会被下一轮的噪声吃掉,那么累积起来就是指数级的。反过来,如果每一轮引入的误差比收益还大,闭环就会发散,越跑越差。
我在一次内部实验里就遇到过发散。调度器连续三轮把学习率往上调,因为它观察到短期loss下降更快,但没考虑到长期泛化。到第四轮模型直接过拟合,验证集指标崩了。这说明递归闭环里,评估信号的可靠性比搜索算法的聪明程度更重要。你给调度器的反馈如果是短视的、有噪声的,它就会朝着错误方向一路狂奔。
所以真正能跑通的递归自我改进系统,核心不在于搜索算法多花哨,而在于三件事:一是评估指标要能反映真实目标,二是每一轮的改动幅度要受控,三是要有回滚机制,发现不对能退回上一版。这三点听起来像工程常识,但在闭环里每一点都会被放大。
2.3 一个可复现的最小闭环
为了让你有体感,我给一个最小闭环的伪代码结构。它不是某个真实系统的代码,而是把核心逻辑抽出来,方便你理解数据怎么流动。
# 递归自我改进的最小闭环示意(伪代码) def recursive_improve(base_config, rounds=5): history = [] current = base_config for r in range(rounds): # 1. 用当前配置训练一个候选模型 model, metrics = train(current) # 2. 收集训练日志与评估结果 logs = collect_logs(model, metrics) # 3. 调度器读取日志,生成下一版配置 next_config = scheduler.propose(current, logs, history) # 4. 安全校验:改动幅度是否超阈值 if not within_budget(current, next_config): next_config = shrink_delta(current, next_config) # 5. 记录并进入下一轮 history.append((current, metrics)) current = next_config return best_of(history)这段逻辑里最关键的是第4步的安全校验。没有它,闭环就是个赌徒。有了它,闭环才是个稳健的迭代器。很多团队做自动化调优失败,不是算法不行,是缺了这道闸门。
3. 2026年这条链路真实跑到了哪一步
3.1 能自动化的部分比想象中多
先说结论:在有明确评估指标、有充足算力、搜索空间有界的场景里,递归自我改进已经能跑出可用的结果。典型场景包括推荐排序模型的调参、图像分类骨干网络的轻量化搜索、以及大模型微调阶段的超参和数据处理策略优化。
我参与过的一个虚构项目"某跨平台推荐系统",用自动化闭环跑了大约两周,把排序模型的离线AUC从基线提升了约1.8个百分点。这个数字单看不大,但要知道这是在一个已经调了很久的成熟模型上拿到的,而且整个过程人工介入只有三次,都是审核调度器提出的激进改动。对比之下,纯人工调参要达到同样提升,按过去的经验至少需要四到六周。
另一个方向是合成数据。让一个模型生成训练数据去训练另一个模型,这在2026年已经是常规操作。关键在于生成的数据要有多样性和难度梯度,否则学生模型会学到老师模型的偏见。我见过一个失败案例:生成器反复产出同质化的样本,学生模型在验证集上看着不错,一到真实分布就拉胯。后来加了多样性约束和难度分层才缓解。
3.2 卡住的地方也很明确
但别被上面的数字冲昏头。这条链路卡住的地方同样清楚,而且短期内看不到彻底解决的办法。
第一是评估瓶颈。递归闭环的每一轮都需要一个可靠的评估信号。离线指标好算,但它和线上真实效果之间永远有gap。你优化得越狠,越容易过拟合到离线指标上。这个问题在推荐、广告这类场景尤其严重,因为线上环境是动态的,用户行为会随着你的模型变化而变化。
第二是算力成本。每一轮都要训练候选模型,轮数一多,算力消耗是线性甚至超线性增长的。搜索空间越大,需要的评估次数越多。很多团队不是不想做,是算力账单扛不住。
第三是可控性与可解释性。当调度器自己改训练脚本、自己决定数据策略时,出了问题很难定位。你面对的是一个"它自己决定这么干"的黑盒。这在需要审计和合规的场景里是硬伤。
第四是目标漂移。递归多轮之后,系统优化的可能已经不是你想要的目标了。它会钻评估函数的空子。这在强化学习里叫reward hacking,在递归自我改进里同样存在,而且更隐蔽,因为改动是层层累积的。
3.3 一张能力边界对照表
把上面这些整理成表,你能更直观地看到哪些能做、哪些要谨慎。
| 环节 | 自动化成熟度 | 主要风险 | 建议做法 |
|---|---|---|---|
| 超参调优 | 高 | 过拟合验证集 | 保留独立测试集,定期重评 |
| 结构搜索 | 中 | 算力开销大、代理偏差 | 限制搜索空间,人工审核大改 |
| 数据策略生成 | 中低 | 数据同质化、偏见放大 | 加多样性约束,人工抽检 |
| 训练脚本改写 | 低 | 不可解释、难回滚 | 版本控制,强制回滚点 |
| 端到端闭环 | 低 | 目标漂移、发散 | 设改动预算,多轮人工卡点 |
这张表不是让你照搬,而是给你一个判断框架。你的场景落在哪一格,决定了你能放手到什么程度。
4. 实操中真正会踩的坑
4.1 评估信号被"玩坏"的三种典型方式
递归闭环最怕的就是评估信号失真。我总结下来有三种典型方式。
第一种是指标泄漏。训练数据和验证数据之间有重叠,或者特征里混入了未来信息,导致验证指标虚高。调度器看到虚高的指标,就会朝着这个方向猛调,越调越偏。排查方法是做严格的时间切分和去重,并且定期用完全独立的holdout集复核。
第二种是短期指标绑架长期目标。比如优化点击率,调度器发现推耸动内容能短期拉高点击,就一路往这个方向走,结果用户留存和长期价值下降。这在闭环里特别危险,因为每一轮都在强化这个偏差。对策是在评估函数里加入长期指标,并且给短期指标设上限。
第三种是评估噪声被当成信号。小数据集上指标波动大,调度器把随机波动当成真实提升,做出错误决策。解决办法是增加评估次数取平均,或者用统计显著性检验来过滤。我一般要求提升幅度超过噪声标准差的两倍才认为是真信号。
4.2 改动幅度失控与回滚设计
闭环里另一个高频坑是改动幅度失控。调度器没有"手感",它不知道多大的改动是安全的。你如果不给它设预算,它可能一轮就把学习率翻十倍。
我的做法是给每一类参数设一个单轮改动上限,比如学习率单轮不超过1.5倍,网络层数单轮不超过两层。超出上限的提议要么被裁剪,要么进入人工审核队列。这个上限不是拍脑袋定的,而是从历史实验里统计出来的——过去哪些改动幅度是安全的,哪些一出就崩,数据会告诉你。
回滚设计同样重要。每一轮都要保存完整的配置和对应的模型权重,一旦发现指标异常,能一键退回。我见过团队为了省存储不存中间版本,结果闭环跑崩了想回退都回不去,只能从头再来,白白烧掉几天算力。
4.3 算力预算怎么分配才不烧钱
算力是递归闭环的硬约束。我的经验是把预算分成三份:探索、利用、验证。
探索部分用来尝试差异大的配置,允许失败;利用部分在已知好的区域精细搜索;验证部分专门用来复核候选方案,防止过拟合。三者的比例大概是3:5:2。很多团队把所有预算都砸在利用上,结果陷在局部最优里出不来。
另外,早停机制能省大量算力。候选配置训练到一定步数如果指标明显落后于当前最优,直接砍掉,不用跑完。这个判断要基于学习曲线,而不是单点指标,否则容易误杀慢热的好配置。
4.4 一个真实的排查链路
讲一个我亲历的排查过程。某次闭环跑到第七轮,验证指标突然掉了三个百分点。按流程我先看日志,发现调度器这一轮把数据增强的强度调到了历史最高。我怀疑是增强过强导致有效数据被破坏。
第一步,我固定其他参数,只把增强强度调回上一轮的值,重跑,指标恢复。确认是增强的问题。
第二步,我检查调度器为什么这么调。看它的决策日志,发现它上一轮观察到"增强强度提高后训练loss下降更快",就误以为这是正向信号。但它没看验证指标,因为那一轮验证指标还没出来它就做了决策。
第三步,根因清楚了:调度器的决策依据里混入了不完整的信号。修复方法是要求调度器必须等到验证指标出来才能决策,并且把验证指标作为主信号,训练loss只作参考。
第四步,验证修复。重跑闭环,后续几轮没有再出现类似跳变。
这个链路的价值不在于结论,而在于排查顺序:先定位是哪类改动出问题,再查调度器为什么这么改,最后修决策逻辑并验证。你遇到类似问题时可以照这个顺序走。
5. 把闭环做稳的几个工程习惯
5.1 版本控制要覆盖"配置"而不只是代码
大多数人做版本控制只管代码,但递归闭环里,配置本身就是一等公民。每一轮的搜索空间、参数、数据策略、评估函数版本,都要和代码一起纳入版本管理。否则你复现不出一周前的那次实验,因为配置已经变了。
我的做法是给每次闭环运行打一个manifest,里面记录所有输入:代码commit、配置哈希、数据版本、随机种子、算力环境。有了它,任何一次结果都能精确复现。这在排查问题时是救命稻草。
5.2 人工卡点设在哪里最划算
全自动闭环听起来很美,但完全不设人工卡点风险太高。关键是卡点设在哪里最划算。
我的经验是设在三个位置:一是搜索空间变更时,因为空间一变,整个搜索方向可能就偏了;二是单轮改动超预算时,这是风险最高的时刻;三是准备上线前,离线再好也要人工确认线上影响。
其他环节尽量放手,让闭环自己跑。卡点太多,自动化就失去意义了;卡点太少,又容易失控。这三个位置是我试下来性价比最高的。
5.3 监控指标不能只看主指标
闭环运行期间,除了主指标,还要盯几个辅助信号:训练和验证指标的gap、梯度范数、参数更新幅度、数据分布漂移。这些信号能提前预警问题。
比如训练验证gap持续扩大,说明过拟合在加剧,哪怕主指标还在涨也要警惕。梯度范数突然爆炸,可能是某个改动引入了数值不稳定。数据分布漂移则提示你评估集可能已经不代表当前数据了。
我一般会把这些信号做成仪表盘,闭环跑的时候实时看。出问题往往不是主指标先报警,而是这些辅助信号先异常。
5.4 让调度器"解释"自己的决策
这一条是我强烈建议的。要求调度器在每次决策时输出一段自然语言的解释:为什么这么改,依据是什么,预期效果如何。这不仅能帮你排查问题,还能在人工审核时快速判断这次改动靠不靠谱。
实现上,可以让调度器在生成配置的同时生成解释,解释和配置一起存档。时间长了,你还能从这些解释里总结出调度器的"行为模式",知道它在什么情况下容易激进、什么情况下保守。这对调优闭环本身很有价值。
6. 关于"AI造AI"我个人的几点判断
聊了这么多技术和实操,最后说几点我自己的判断,不一定对,但都是我踩过坑之后形成的看法。
第一,递归自我改进在窄而明确的任务上已经可用,在开放而模糊的任务上还很脆弱。判断标准很简单:你能不能写出一个可靠的、不易被钻空子的评估函数。能,就可以放手;不能,就得留人。
第二,瓶颈不在搜索算法,在评估和算力。这几年搜索算法的进步其实很快,但评估信号的可靠性和算力成本没跟上。谁能在评估上做出突破,谁就能把闭环推得更远。
第三,人的角色在变,但没消失。从"亲手调参"变成"设计闭环、设卡点、审异常",工作内容变了,价值反而更集中在判断力上。那些只会跑脚本的人会被替代,那些能设计出稳健闭环的人会更值钱。
第四,别被"递归"两个字吓到,也别被它迷惑。它本质上还是一个优化循环,只不过优化对象从参数扩展到了流程本身。理解这一点,你就不会被各种玄乎的说法带偏,能踏踏实实从评估、预算、回滚这些基本功做起。
我在实际项目里最大的体会是:闭环跑得稳不稳,八成取决于你有没有把评估和回滚这两件事做扎实,剩下两成才是搜索算法的事。很多人本末倒置,花大力气研究调度器,却在一个有噪声的评估函数上跑闭环,结果越跑越偏。如果你正准备上手,我的建议是先别急着上复杂的调度器,用一个简单的策略配上严格的评估和回滚,跑通一轮再说。跑通了,再逐步加复杂度。这个顺序反了,坑会一个接一个。