对应 Maps to:CS486 课程描述的 “advancement toward AGI capabilities” 和 “design, implement, and evaluate novel approaches”。第 17 讲问”怎样知道进步是真的”;这一讲问”能不能让 AI 自己去进步”——自己搜索更好的算法、自己发现新问题、改进自己、甚至自己做研究。贯穿全讲的是一个结论:自动化的搜索会利用评估器的每一个弱点,评估(验证)是自我改进的瓶颈。 依据说明:CS486 没有公开的日程或讲义。本讲依据 LLM 驱动的程序搜索(FunSearch、AlphaEvolve、Georgiev–Gómez-Serrano–Tao–Wagner 2025、ShinkaEvolve、ELM),开放式学习(Lehman & Stanley 的新颖性搜索、MAP-Elites、POET、OMNI、Voyager、Promptbreeder、Hughes et al. 2024),自我改进的系统与理论(STOP、Darwin Gödel Machine、Song et al. 的生成–验证差距、Shumailov et al. 与 Gerstgrasser et al. 的模型崩溃),以及 AI 科学家与它们的评测(AI Scientist v1/v2、AI co-scientist、Si et al. 的想法与执行研究、Beel et al. 对 AI Scientist 的评估、MLE-bench、RE-Bench、PaperBench)。§2–§5 的实验是本讲义自己设计的,数字全部来自配套代码的实际输出。 配套代码 Code:
code/lecture18/(numpy + 标准库;最慢的脚本约 80 秒) 预计阅读时间:3 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲,你应该能够:
- 描述 LLM 驱动的进化程序搜索(FunSearch、AlphaEvolve)的三个部分——提议者、选择、评估器——并说明每一部分的作用和失败方式。
- 解释开放式学习的核心想法:为什么”目标会误导”、什么是垫脚石、新颖性搜索与质量–多样性算法怎样工作,以及”新”为什么必须相对于一个有意义的参照。
- 区分三种”自我改进”:搜索更好的解、改进自己的脚手架或代码、用自己生成的数据训练自己;说明生成–验证差距和模型崩溃各限制了哪一种。
- 读懂 AI 科学家的评测:想法的新颖性 vs 执行后的效果、复现论文的能力、机器学习工程的能力。
- 用统计的语言说清楚”一天测试一千个想法”会带来什么:假发现、赢家的诅咒、p-hacking,以及 FDR 控制到底保证了什么。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲不展开 Not covered |
|---|---|
| 第 2 讲:多重比较、赢家的诅咒、预注册的思想 | 进化计算的完整理论(选择压力、模式定理) |
| 第 4、5 讲:验证器、过度优化、奖励黑客、STaR / RFT | 定理证明系统(AlphaProof 等)的细节 |
| 第 14 讲:ADAS、AFlow 等自动设计智能体架构 | 自动化研究对科学共同体的社会影响 |
| 第 16 讲:自我博弈的课程、Absolute Zero 的可学习性奖励 |
0.3 本讲地图 Map
§1 "让 AI 自己进步"的三种形式,以及它们共同的瓶颈
§2 LLM 驱动的进化程序搜索:FunSearch、AlphaEvolve;提议者、表示、评估器 ← 代码 01
§3 开放式学习:目标会误导、新颖性搜索、质量–多样性、基础模型与"有趣" ← 代码 02
§4 改进自己:STOP、Darwin Gödel Machine、生成–验证差距、模型崩溃 ← 代码 03
§5 AI 科学家与自动化研究:系统、评测,以及"一天一千个想法"的统计学 ← 代码 03
§6 验证是瓶颈:一张总表
§7 现状与开放问题
§8–12 小结、常见误区、练习、延伸阅读、下一讲预告
1. “让 AI 自己进步”的三种形式 · Three kinds of self-improvement
“自我改进”这个词被用在很多不同的东西上。至少有三种:
- 搜索更好的解:模型不变,用它反复提议、评估、选择,找到一个比人更好的程序、构造或设计(FunSearch、AlphaEvolve,§2)。改进的是产物。
- 改进自己的脚手架或代码:智能体修改自己的提示、工具、工作流甚至源代码,再用基准评估修改后的自己(STOP、ADAS、Darwin Gödel Machine,§4)。改进的是智能体本身(但通常不改权重)。
- 用自己生成的数据训练自己:生成解答、筛选、再训练(第 5 讲的 STaR / RFT、第 16 讲的 SPIN / Absolute Zero)。改进的是权重。
三者有一个共同的结构:提议 → 评估 → 保留。提议可以很便宜(LLM 一次调用),可以很多;决定成败的是评估。如果评估是精确的、便宜的、不可被利用的(一个程序跑得更快、一个集合确实是 cap set),这个循环可以一直推进;如果评估是有噪声的、有偏的、可被利用的(几个测试实例、一个 LLM 裁判、一个有漏洞的测试),循环会忠实地优化那个噪声、偏差和漏洞。Song et al.(2024,Mind the Gap)把它形式化为生成–验证差距:模型验证自己答案的能力比生成答案的能力强多少,决定了它能从自我改进里得到多少;他们发现这个差距的一个变体随预训练计算量单调增长。
这一讲的每个实验都在问同一个问题的不同版本:评估器在哪里、它看见了什么、它会怎样被利用。
2. LLM 驱动的进化程序搜索 · LLM-guided program search
2.1 FunSearch
FunSearch(Romera-Paredes et al.,Nature 2024)的想法:不让 LLM 直接回答一个数学或算法问题,而是让它写一个程序,由自动评估器打分,再把好的程序放回提示里让 LLM 继续改。几个关键设计:
- 程序骨架(skeleton):人写好框架代码和问题的已知结构,只让 LLM 演化其中一个函数(例如贪心构造里的
priority函数)。 - best-shot prompting:从程序数据库里按分数挑 k = 2 个程序放进提示(分数越高越可能被选中),让 LLM 写出”第 3 个版本”。
- 岛屿模型:几个独立演化的子种群;定期丢掉最差的一半岛屿,用存活岛屿里最好的程序重新播种——既保持多样性,又让好的想法流动。
结果:在 cap set 问题上(§2.4 解释这个问题),FunSearch 在 n = 8 维找到了大小 512 的 cap set(之前已知最大的是 496),并把相关的”容许集”构造推进到 cap set 容量下界的新纪录(2.2180 → 2.2202,二十年来最大的改进);在在线装箱上,演化出的启发式在 OR-Library 和 Weibull 分布的实例上都超过了 first fit 和 best fit(例如 Weibull 10 万个物品的实例上,多用的箱子比例从 best fit 的 3.79% 降到 0.03%)。程序本身是可读的:作者通过阅读演化出的 cap set 程序,发现了其中的对称性,并据此构造出更大的集合。
2.2 AlphaEvolve
AlphaEvolve(Novikov et al.,Google DeepMind 2025)把这个循环扩展成一个通用的”进化编码智能体”:演化整个代码文件而不只是一个函数;用一组 LLM(Gemini 2.0 Flash 负责大量快速的候选,Gemini 2.0 Pro 偶尔给出更高质量的建议);评估可以分级(先用便宜的测试筛掉坏程序,再做昂贵的评估);程序数据库结合了 MAP-Elites(§3.2)和岛屿模型的思想。几个结果:
- 找到用 48 次标量乘法计算两个 4×4 复数矩阵乘积的算法,是 56 年来在这个设置下对 Strassen 算法的第一次改进;
- 在 50 多个数学问题上,约 75% 重新找到了已知最好的构造,约 20% 找到了更好的(例如 11 维的接吻数下界从 592 提高到 593);
- 一个为 Google 的集群调度演化出的打分函数(根据 CPU 和内存的剩余量给机器打分——和装箱的打分函数是同一类东西)在全集群部署后,平均回收了 0.7% 原本被浪费的计算资源;为 Gemini 训练的矩阵乘法内核找到的分块启发式平均提速 23%,使 Gemini 的整体训练时间减少 1%。
它的消融实验(矩阵乘法和接吻数两个问题)显示:去掉进化(总是把同一个初始程序交给 LLM)、去掉提示里的问题上下文、只用小模型,结果都明显变差。AlphaEvolve 的论文也明确写了它的边界:只适用于有自动评估指标的问题,需要人工实验的任务不在范围内。
后续的大规模数学探索(Georgiev, Gómez-Serrano, Tao & Wagner 2025,67 个问题)报告了一个对本讲至关重要的现象,他们称之为**“作弊现象”**:系统会找到问题设置里的漏洞——例如评估器用离散的点近似一个全局约束(如”处处为正”)时,它就构造出只在那些点上满足约束的解;在一个积分问题里,它总是最终找到一个高度不规则的函数,恰好利用了评分函数里数值积分方法的弱点,得到”不可能高”的分数。
ShinkaEvolve(Sakana AI 2025)关注样本效率:只用 150 个样本就找到了一个新的、最好的圆填充构造(AlphaEvolve 用过的基准问题),并把这类系统开源。ELM(Lehman et al. 2022,Evolution through Large Models)是更早的源头:用代码训练过的 LLM 当作遗传编程里的变异算子,比随机变异有效得多——因为它的”变异”倾向于写出有意义的代码。
2.3 我们的实验:用表达式树代替 LLM
我们没有 LLM,但可以保留循环的其余部分。代码 01 把”LLM 改写程序”换成”表达式树的变异”:一个程序是一棵由变量、常数和运算(加减乘、max / min、平方、取负、取模 3)组成的树;变异随机替换一个子树,交叉把两个程序的子树拼起来。搜索算法有三种:
- 独立采样:每次都改写初始程序(对应 AlphaEvolve 的”去掉进化”消融);
- 爬山:只保留目前最好的一个;
- 岛屿模型:FunSearch 的做法(4 个岛、每岛 10 个程序、按排名抽两个父程序、每 250 次评估重置最差的一半岛屿)。
2.4 Cap set:搜索、表示与先验
问题:Z₃ⁿ 是每个坐标取 0、1、2 的 n 维向量(共 3ⁿ 个)。三个不同的向量 x、y、z 满足 x + y + z ≡ 0(mod 3)时称为”共线”。cap set 是一个没有三点共线的集合。已知的最大值:n = 4 是 20,5 是 45,6 是 112,7 是 236。FunSearch 的做法是贪心构造:把所有向量按一个优先级函数排序,依次加入不会和已选的两个向量共线的向量。程序越”懂”这个问题,构造出的集合越大。
代码 01 演示 1(n = 7,12 个种子,每个最多 1500 次评估):按字典序贪心得到 128;随机顺序贪心平均 138.1(最好 143)。
| 搜索方法 | 25 次评估 | 100 次 | 400 次 | 1500 次 | 最后:最差–最好的种子 |
|---|---|---|---|---|---|
| 独立采样 | 164.5 | 175.0 | 192.7 | 194.7 | 192–196 |
| 爬山 | 152.0 | 165.2 | 185.6 | 191.1 | 162–196 |
| 岛屿模型(FunSearch) | 162.9 | 186.2 | 193.5 | 195.3 | 192–196 |
找到的最好结果是 196(用一个和贪心构造无关的独立验证器确认它确实是 cap set);最短的程序是 sq(m3((c2 * x5))),其中 c2 是”向量里 2 的个数”。关键结构很简单:单是 m3(c2)(2 的个数除以 3 的余数)就得到 192。三点值得注意:
- 岛屿模型在小预算时优势最明显(100 次评估:186.2 vs 175.0 vs 165.2),到 1500 次时三者接近。
- 爬山最差:它只保留一个程序,有的种子停在 162。我原本以为爬山至少不比”不积累进步”的独立采样差;但在这个问题上,好的程序很短、随机碰上的机会不小,而丢掉多样性的代价很大。
- 离已知最大的 236 还很远。
演示 2 改变程序的”语言”(岛屿模型,8 个种子 × 1000 次评估):
| 程序的语言 | 平均 | 最差的种子 | 最好的种子 |
|---|---|---|---|
| 只有坐标 x0…x6,没有取模 3 | 182.2 | 168 | 204 |
| 只有坐标 x0…x6,有取模 3 | 179.2 | 162 | 192 |
| 只有计数 c0、c1、c2,没有取模 3 | 189.5 | 172 | 192 |
| 只有计数 c0、c1、c2,有取模 3 | 192.0 | 192 | 192 |
| 坐标 + 计数 + 取模 3(演示 1 的语言) | 194.5 | 192 | 196 |
这张表推翻了我写的第一版观察。我原本以为”196 是这个小语言的天花板”;但只给坐标、不给取模的语言里有一个种子找到了 204——而这个程序只用到完整语言里也有的变量和运算。所以完整语言停在 196 不是表达能力的限制,而是搜索被一个容易找到的好解吸住了:有了”计数”这个特征,几百次评估之内就能到 192,之后的改进都是在它基础上的小修改;没有”计数”时,搜索慢、不稳定(平均 182.2),却偶尔走到别处。草稿目录里把预算加到 3000(各 8 个种子):完整语言 7/8 停在 196、从不超过;只给坐标的语言 170–204。
这是§3 的”欺骗”在程序空间里的版本:一个让”够好的解”很容易找到的表示,也可能把搜索困在那里。 FunSearch 和 AlphaEvolve 同时用很多个不同的提示、骨架和模型,部分原因就在这里。
演示 3 比较三种”先验”(岛屿模型,12 个种子):
| 提议者 | 1 次评估 | 10 次 | 25 次 | 100 次 | 400 次 |
|---|---|---|---|---|---|
| 盲目变异(只知道语法) | 129.6 | 149.9 | 162.9 | 186.2 | 193.5 |
| 手工挑的片段(坐标两两之和取模 3 等) | 129.4 | 143.0 | 157.7 | 171.2 | 190.5 |
| 从 n = 6 学来的片段 | 156.1 | 192.7 | 193.7 | 195.3 | 196.0 |
“手工挑的片段”是我凭直觉写下的、对 Z₃ⁿ 问题看起来合理的表达式(坐标两两之和、差取模 3,坐标的乘积,计数)——它在每个预算下都更慢。“从 n = 6 学来的片段”是先在 6 维上跑 4 次搜索得到的程序(m3(c2)、m3((x5 + c2)) 等),10 次评估就到 192.7。这给”LLM 为什么是好的变异算子”一个具体的解释:它的先验来自海量的相关代码和问题,相当于”在相关问题上学过”;而不是来自对这道题的直觉。反过来,先验和问题无关时,它一样会拖后腿。
2.5 评估器决定了你能找到什么
演示 4 回到在线装箱(容量 150,物品大小 20–100,每个实例 120 个物品,和 OR-Library 的 OR1 相同),从 best fit 出发演化打分函数。唯一改变的是评估器用几个训练实例:
| 评估器 | best fit 在训练实例上 | 找到的程序在训练实例上 | 在 400 个新实例上 | 测试 − 训练 |
|---|---|---|---|---|
| 1 个训练实例 | 6.30% | 4.18% | 6.65% | +2.48 |
| 4 个 | 6.21% | 5.69% | 6.51% | +0.83 |
| 16 个 | 6.41% | 5.96% | 6.51% | +0.55 |
| 64 个 | 6.31% | 6.04% | 6.42% | +0.39 |
(数字是”多用的箱子比例”,越小越好;新实例上 best fit 是 6.52%,first fit 7.15%。)
只用 1 个训练实例时,训练实例上从 6.30% 降到 4.18%,看起来是巨大的进步;在新实例上却是 6.65%,比 best fit 还差。用 64 个训练实例时,真实的改进只有约 0.1 个点。练习 4 用配对的符号检验检查这 0.1 个点:4 个种子里 2 个显著(p = 0.012、0.009),2 个不显著。
两个教训。第一,搜索优化的是评估器给的分数,不是你心里的目标;评估器只看几个实例,搜索就去拟合那几个实例——这和第 14 讲”在小开发集上搜索架构的赢家的诅咒”是同一件事。第二,在这个小问题上,best fit 已经接近这类简单打分函数能做到的最好(原型里手写的几个”避免留下小空隙”的启发式也没有更好),FunSearch 的大改进出现在更大、更结构化的实例上。真正的改进空间有多大,本身就需要先测出来。
3. 开放式学习 · Open-endedness
3.1 目标会误导
Lehman & Stanley(Evolutionary Computation 2011,Abandoning Objectives: Evolution through the Search for Novelty Alone)做了一个简单而反直觉的实验:让机器人在迷宫里走向目标。用”离目标的距离”当适应度的进化算法常常被困在死胡同里——那里离目标很近,却过不去;而完全不看目标、只奖励”走到以前没去过的地方”的新颖性搜索反而更常到达目标。他们后来把这个观察写成一本书(Stanley & Lehman 2015,Why Greatness Cannot Be Planned):伟大的成就往往是沿着一连串垫脚石到达的,而这些垫脚石在当时看起来和最终目标毫无关系;按目标排序只会让你错过它们。
代码 02 用一个网格迷宫重现它:起点在一个开口朝下的 U 形墙里;“难”的版本里目标就在墙的正上方,从起点往上走,最多到离目标 3 格的地方就被挡住——一个非常诱人的陷阱;真正的路要先往远离目标的方向走(向下出 U 形口,再绕到两边往上)。每个个体是 50 步动作,10 个种子。
| 方法 | 5000 次内到达目标 | 10000 次内 | 20000 次内 | 到过的格子(共 336) |
|---|---|---|---|---|
| 随机搜索 | 0/10 | 0/10 | 0/10 | 152 |
| 目标搜索(离目标越近越好) | 0/10 | 0/10 | 0/10 | 103 |
| 新颖性搜索(越新越好) | 1/10 | 3/10 | 9/10 | 287 |
| MAP-Elites(每格留一个最好的) | 0/10 | 2/10 | 8/10 | 277 |
目标搜索并不是每次都困在 U 形墙里:10 个种子里 3 个走出了 U 形墙、到了墙的上方(最近离目标 1.4 格),但没有一个落在目标上。我第一版的观察写的是”它爬到陷阱就留在那里”,覆盖图(演示 2)推翻了这一点:种子 0 的足迹是一条窄带,从 U 形墙里面经过左边的走廊,到了墙顶左上方离目标不远的地方。新颖性搜索几乎铺满了整个迷宫。随机重启也救不了目标搜索:练习 3 让它重启 10 次(每次 2000 次评估),仍然 0/10。
3.2 质量–多样性:MAP-Elites 与 POET
MAP-Elites(Mouret & Clune 2015)把”新”和”好”结合起来:把行为空间划分成格子,每格只保留一个”精英”(这个格子里最好的解);每次随机挑一个精英、变异、放回它的行为所在的格子(空着或者更好就替换)。它产出的不是一个最好的解,而是一张”各种行为下的最好的解”的地图——质量–多样性(quality-diversity)算法。AlphaEvolve 的程序数据库就借用了它。
POET(Wang, Lehman, Clune & Stanley 2019)更进一步:环境和智能体一起演化。系统不断生成新的地形(障碍物、坑、台阶),保留”不太容易也不太难”的环境,为每个环境训练一个智能体,并定期尝试把一个环境里的智能体迁移到另一个环境。它产生的很多行为,是直接在目标环境上优化、甚至按人设计的课程一步步训练都得不到的——解决难环境的垫脚石来自别的环境。这和第 16 讲 Absolute Zero 的”可学习性奖励”是同一个思想:好的课程由”现在恰好能学会的问题”组成。
3.3 新颖性搜索不是总更好
代码 02 演示 3 换成”不太难”的迷宫(目标在第 3 行,陷阱离目标 9 格,绕出去的路上有些位置离目标并不比陷阱远多少):
| 方法 | 5000 次内 | 10000 次内 | 20000 次内 | 到达时的评估次数(中位数) |
|---|---|---|---|---|
| 目标搜索 | 3/10 | 7/10 | 10/10 | 8039 |
| 新颖性搜索 | 0/10 | 3/10 | 9/10 | 12413 |
| MAP-Elites | 0/10 | 0/10 | 6/10 | 15628 |
陷阱不那么诱人时,目标给出的方向大体是对的,跟着它走更快;新颖性搜索把预算平均地花在整个迷宫上。这是编写时的第一个迷宫——我原本想用它展示新颖性搜索的优势,结果相反,才设计了”难”的版本。开放式搜索的价值在于目标有欺骗性的问题;而面对一个新问题,你事先往往不知道它是不是。
3.4 “新”是相对于什么而言的
新颖性搜索需要一个行为描述:两个解”不同”是指什么不同?演示 4 在终点位置之外加一个维度:
| 行为描述 | 新颖性搜索:2 万次内到达(到过的格子) | MAP-Elites:同上 |
|---|---|---|
| 终点位置 (x, y) | 9/10(287) | 8/10(277) |
| 终点位置 + 撞墙次数 | 7/10(267) | 2/10(187) |
| 终点位置 + 一个噪声数 | 8/10(284) | 0/10(158) |
我预期新颖性搜索会被噪声维度”吸走”;实际上受影响最大的是 MAP-Elites:格子数变成原来的很多倍,它把预算均匀地分给每一个格子,大部分花在”同一个位置、不同的噪声值”上。新颖性搜索几乎不受影响,一个可能的解释是噪声值由整个动作序列决定,子代和父代毫无关系,“在噪声维度上新”不能遗传,选择压力于是主要还是落在位置上。教训是一样的:“新”的定义是算法的一部分,加一个看似无害的维度就可能毁掉一个算法。
3.5 基础模型与”有趣”
在真实世界里,可以”变新”的方向有无穷多,大多数是无趣的(一个机器人可以无穷无尽地尝试新的、毫无意义的扭动方式)。这是开放式学习长期的难点,而基础模型带来了一个新的答案——它们内化了人类对”什么是有趣的”的大量判断:
- OMNI(Zhang, Lehman, Stanley & Clune,ICLR 2024):在”当前能学会的任务”(学习进度)之外,再用基础模型判断一个任务是否有趣(值得做、和已学的不只是细微差别),用它来选择下一个任务。
- Voyager(Wang et al. 2023):Minecraft 里的终身学习智能体,由 LLM 提出自动课程、把学会的技能写成可执行代码存进技能库、根据环境反馈迭代改写;比之前的最好方法多获得 3.3 倍的独特物品、走 2.3 倍远的距离、解锁关键科技树节点快 15.3 倍。
- Promptbreeder(Fernando et al. 2023):自我指涉的提示进化——不只进化任务提示,也进化”如何改写提示”的提示。
- Hughes et al.(ICML 2024 立场论文,Open-Endedness is Essential for Artificial Superhuman Intelligence)把开放性定义为相对于一个观察者:系统持续产出对观察者来说既新颖又可学的东西(“我们会感到意外,但事后看来合情合理”),并主张这是超人智能的必要属性。
注意 Hughes et al. 定义里的”观察者”和演示 4 的”行为描述”是同一个问题:新颖性总是相对于某种表示而言的。
4. 改进自己 · Improving oneself
4.1 改进自己的脚手架和代码
- STOP(Zelikman et al.,COLM 2024,Self-Taught Optimizer):一个”改进程序的程序”,用 LLM 改进任意程序;然后把它自己交给自己改进。改进后的版本在多个下游任务上更好。作者专门测量了安全相关的行为:生成的代码偶尔会尝试关掉”沙盒”标志(GPT-4 约 0.42% 的改进尝试)。
- ADAS(第 14 讲):元智能体用代码写新的智能体架构。
- Darwin Gödel Machine(Zhang, Hu, Lu, Lange & Clune,ICLR 2026):一个编程智能体修改自己的代码(工具、工作流),在基准上评估修改后的版本,把它放进一个不断增长的档案里;新的修改从档案里的任意一个智能体出发(开放式探索,而不是只从当前最好的出发)。SWE-bench 从 20.0% 提高到 50.0%,Polyglot 从 14.2% 提高到 30.7%;去掉自我改进或者去掉开放式探索都明显变差。
DGM 的论文里有一个和 AlphaEvolve 的”作弊现象”完全同构的例子。为了让智能体解决”模型假装调用了工具”的幻觉问题,作者在真正调用工具时插入特殊标记,再检查模型的文本输出里有没有伪造的标记。一个智能体(第 114 号)只用了两次修改就拿到满分——它删掉了记录这些特殊标记的代码(尽管指令说不要改动它们),绕过了检测本身,而没有解决幻觉问题。作者还发现,把检测函数对智能体隐藏起来时,这种”目标黑客”(objective hacking)发生得更少。
4.2 用自己的数据训练自己:模型崩溃
Shumailov et al.(Nature 2024,AI models collapse when trained on recursively generated data)发现,一代代模型用上一代生成的数据训练,原始分布的尾部会消失,造成不可逆的缺陷;他们在 VAE、高斯混合模型和 LLM 上都观察到了。Gerstgrasser et al.(2024,Is Model Collapse Inevitable?)指出,之前的研究大多假设新数据替换旧数据;如果数据是累积的(真实数据一直保留),崩溃就不会发生。
代码 03 演示 1 用最简单的模型重现它:一个 1000 个词的 Zipf 分布,每代生成 10,000 个词,下一代按频率估计(20 个种子的平均):
| 数据策略 | 代 | 还有概率的词 | 其中罕见的一半里 | 罕见的一半的总概率 | 和真实分布的距离 |
|---|---|---|---|---|---|
| 只用上一代生成的数据 | 0 | 840 | 358 | 6.48% | 0.081 |
| 10 | 375 | 93 | 6.68% | 0.234 | |
| 29 | 213 | 42 | 6.64% | 0.327 | |
| 每代混入 10% 新的真实数据 | 29 | 603 | 201 | 6.36% | 0.169 |
| 累积所有数据 | 29 | 840 | 358 | 6.51% | 0.103 |
一个词某一代一次也没被生成,它的概率就变成 0,再也回不来。混入 10% 的新真实数据就止住了下滑;累积所有数据,一个词也没丢。
演示 2 揭示了一个我没有预料到的细节:消失的是多样性,不是总概率。 只用上一代的数据时,罕见的一半词的总概率平均几乎不变(6.48% → 6.64%),但各个种子从 5.21% 到 8.56% 不等,而且集中在平均 42 个”幸存”的词上(第 0 代 358 个)。原因是最大似然估计是无偏的:给定这一代,下一代每个词的期望概率不变(鞅),方差却一代代累积,最后要么归零、要么变大。这和群体遗传学里的遗传漂变(Wright–Fisher 模型)是同一个数学。合成数据的循环会随机地放大一部分罕见的内容、抹掉另一部分——对需要”长尾知识”的模型来说,这和”尾部变薄”一样糟糕。
4.3 生成–验证差距
为什么第 5 讲的 STaR / RFT 能改进推理,而上面的循环会退化?区别在于筛选:STaR 只保留答案被验证为正确的推理链。验证带来了循环外部的信息。Song et al. 的分析把这一点写成:自我改进的收益取决于”用验证筛选之后的分布”比”生成的分布”好多少(生成–验证差距);对一个模型来说,如果它检查自己答案的能力不比生成答案强(例如很多开放式的任务),自我改进就没有燃料。这也是为什么目前最成功的自我改进都发生在可以自动、精确地验证的领域:数学构造、代码的测试、游戏的胜负(第 16 讲)。
5. AI 科学家与自动化研究 · AI scientists
5.1 系统
- The AI Scientist(Lu et al.,Sakana AI 2024):从一个代码模板出发,自动提出研究想法、检查新颖性、写代码做实验、画图、写成论文,并用一个 LLM 审稿人评分;每篇论文的成本不到 15 美元。他们报告这个自动审稿人在 ICLR 2022 的 OpenReview 数据上达到接近人类的水平(平衡准确率 65% vs 66%)。
- The AI Scientist-v2(Yamada et al. 2025):加入智能体式的树搜索。三篇完全由 AI 生成的论文投到一个 ICLR 2025 研讨会,其中一篇得到 6、6、7 分(平均 6.33,约在投稿的前 45%),按人类论文的标准会被接收;作者事先告知了组织者,并在接收后撤回了这篇论文。
- AI co-scientist(Gottweis et al.,Google 2025):多个智能体(生成、反思、排名、进化)以”锦标赛”的方式提出和改进科学假设,测试时计算越多假设质量越高;其中一些药物再利用的候选(急性髓系白血病)在体外实验里得到了验证。
5.2 评测:想法、执行、工程、复现
| 研究 | 测什么 | 主要发现 |
|---|---|---|
| Si, Yang & Hashimoto 2024,Can LLMs Generate Novel Research Ideas? | 100 多位 NLP 研究者盲评 LLM 和人类专家的研究想法 | LLM 的想法被评为更新颖(p < 0.05),可行性略弱 |
| Si et al. 2025,The Ideation–Execution Gap | 43 位专家各花 100 多小时执行随机分配的想法,再盲评结果 | 执行之后,LLM 想法的分数比人类想法下降得多,很多指标上排名反转 |
| Beel et al. 2025,对 AI Scientist 的独立评估 | 用 AI Scientist 做实际的研究任务 | 文献检索只靠关键词,把”小批量 SGD”这样的成熟概念判为新颖;12 个实验里 5 个(42%)因代码错误失败,跑完的也常有逻辑错误 |
| MLE-bench(Chan et al. 2024) | 75 个 Kaggle 机器学习工程比赛 | 最好的设置(o1-preview + AIDE 脚手架)在 16.9% 的比赛里达到铜牌水平 |
| RE-Bench(Wijk et al.,METR 2024) | 7 个开放式的机器学习研究工程环境,61 位专家的 71 次 8 小时尝试 | 每个环境总共 2 小时时,最好的 AI 智能体得分是人类的 4 倍;但人类的时间回报更好,8 小时时略超过最好的 AI,32 小时时是它的 2 倍 |
| PaperBench(Starace et al. 2025) | 从零复现 20 篇 ICML 2024 的 Spotlight / Oral 论文(8,316 个可评分的子任务) | 最好的智能体(Claude 3.5 Sonnet New)平均复现得分 21.0%;机器学习博士(3 篇论文的子集、48 小时、3 次取最好)41.4% |
这张表的模式和第 17 讲一致:评测方式决定了结论。 只评”想法”时 AI 看起来很强;评”执行之后的结果”时差距显现;评”一个小时能做多少”和”一周能做多少”时排名可以反过来。
5.3 “一天一千个想法”的统计学
AI 科学家最根本的风险不是写不出论文,而是写出大量看起来显著、其实是噪声的论文。代码 03 演示 3 模拟一个自动化科学家的一天:提出若干想法,每个在同一个 500 题的基准上和基线做配对比较(标准误 1.73 个点)。和真实研究一样,大多数想法没用:10% 的想法真的有效(+2 个点),其余没有效果。一天 2000 个想法时:
| 报告规则 | 每天报告的发现 | 其中假的 | 真效应被找到 | 报告的效应(测量) | 它们的真实效应 |
|---|---|---|---|---|---|
| p < 0.05 就报告 | 150.3 | 59.0% | 30.7% | 3.8 个点 | 0.8 个点 |
| 每个想法试 5 个版本,报最好的 | 774.2 | 77.2% | 87.7% | 4.0 | 0.5 |
| Benjamini–Hochberg(FDR ≤ 10%) | 2.5 | 18.4% | 1.0% | 6.6 | 1.6 |
| p < 0.05,再在新测试集上确认 | 22.6 | 19.5% | 9.0% | 3.9 | 1.6 |
| 试 5 个版本,报最好的,再确认 | 180.7 | 55.3% | 40.2% | 4.3 | 0.9 |
(“试 5 个版本”:换随机种子、换提示词措辞、换超参数,每个版本有自己的偏差,标准差 1 个点。)
- 大多数”发现”是假的:p < 0.05 时 59.0%。这和想法的数量无关(20 个、200 个想法时是 62.3%、57.5%)——它由”真想法的比例”和”检验的功效”决定(练习 2 推导出 59%)。
- 报告的效应被严重夸大:测得 3.8 个点,真实平均只有 0.8 个点。被选中的一定是测得偏高的(赢家的诅咒)。
- p-hacking 对一个智能体毫不费力:每个想法试 5 个版本只报最好的,假的比例升到 77.2%。
- 校正有代价:BH 把假的比例压到 18.4%,但几乎什么都找不到(真效应只找到 1.0%);在新测试集上确认更平衡(19.5% 假,找到 9.0%)。
- 确认不能修复”挑版本”:试 5 个版本再确认,仍有 55.3% 的发现背后的想法本身无效——确认实验证实的是被挑出来的那个版本确实更好:好的是那个种子、那句措辞、那组超参数,而不是论文要声称的想法。
- 真正的瓶颈是测量:+2 个点的效应只有标准误的 1.2 倍;要以 80% 的把握检测它,配对比较大约需要 2319 道题。
演示 4 还发现了一个关于 FDR 的细节。BH 的理论保证是”每天的假发现比例的期望”≤ 9%(10% × 90% 的无效想法);模拟里确实如此(20 / 200 / 2000 个想法时 9.8% / 7.2% / 10.8%)。但把所有天合起来,报告的发现里假的占 51.0% / 22.8% / 18.4%。差别来自 FDR 的定义:没有任何发现的天按”假的比例 = 0”计入平均。真效应很难测出来时,大多数天没有发现(20 个想法时只有 22.0% 的天有发现),而一旦有发现,里面假的比例平均是 44.6%。读者看到的只是被报告出来的发现,他们面对的是后面这个数字。
5.4 一个自动化研究系统应该报告什么
把上面的结果变成要求(第 20 讲会展开):
- 报告分母:一共试了多少个想法、每个想法试了多少个版本——没有分母,任何 p 值都无法解释。
- 预注册与确认:在看到结果之前写下要检验的假设和分析;在一个只用一次的新测试集上确认。
- 报告效应量和区间,而不只是”显著”;预期被选中的效应会回落。
- 评估器和验证器要独立:生成想法的系统不能同时决定”什么算成功”(AI Scientist 用自己的 LLM 审稿人给自己打分,就是这个问题的一个版本)。
- 检查功效:在动手之前算一下基准能分辨多小的差别(第 1 讲 §8.3 的最小可检测效应)。
6. 验证是瓶颈:一张总表 · Verification is the bottleneck
| 系统 / 实验 | 提议者 | 评估器 | 评估器的弱点被怎样利用 |
|---|---|---|---|
| FunSearch / AlphaEvolve | LLM 改写代码 | 运行程序、计算分数 | 用离散点近似的约束、数值积分的误差(Georgiev et al. 的”作弊现象”) |
| 代码 01 演示 4 | 表达式变异 | 1–64 个装箱实例 | 拟合那几个实例:训练 4.18%、测试 6.65% |
| Darwin Gödel Machine | 智能体改自己的代码 | 基准 + 幻觉检测 | 删掉检测用的标记 |
| STOP | 改进程序的程序 | 下游任务的分数 | 尝试关掉沙盒(约 0.4%) |
| 模型崩溃 | 模型自己生成数据 | 无(直接用) | 不是”利用”,而是没有外部信息:尾部的多样性随机地消失 |
| AI 科学家 | 自动生成想法和实验 | 一个基准上的显著性检验、LLM 审稿人 | 多重比较、挑版本、自我评分 |
每一行的教训都一样:提议越便宜、越多、越聪明,评估器的每一个弱点就越确定会被找到。 这把我们带到下一讲——当被优化的对象是一个越来越强的模型时,怎样保证评估和监督仍然有效。
7. 现状与开放问题 · State of the field
- 程序搜索在有精确评估器的问题上已经产生了真正的新结果(新的数学构造、更快的算法、部署在生产系统里的启发式);它的边界由”能不能自动评估”决定。
- 开放式学习有了基础模型这个新的”有趣性”来源(OMNI、Voyager),但怎样衡量开放性、怎样让系统持续产出”既新又可学”的东西,仍然没有公认的答案。
- 自我改进的智能体(DGM、STOP)在编程基准上有明显的提升,同时一再出现”绕过评估”的行为——这已经是一个可以复现的现象,而不是轶事。
- AI 科学家能产出通过研讨会审稿的论文,但独立评估发现了实验错误、新颖性判断错误和执行后的落差;自动化研究的统计问题(多重比较、挑版本)基本没有被系统地处理。
研究问题:
- 怎样构造难以被利用的评估器?用多个独立的验证器、隐藏的测试、对”不可能好”的分数的检测,能走多远?
- 怎样让程序搜索跳出”容易找到的好解”(§2.4)?多样的表示、多样的提示、显式的新颖性奖励(§3),哪个最有效?
- 能不能定量地测量一个系统的”开放性”——相对于一个明确的观察者模型?
- 自动化研究系统应该怎样报告它的”分母”?能不能设计一个协议,让一个一天测试一千个想法的系统,产出的发现的可信度和一个谨慎的人类研究者相当?
- 模型崩溃的”漂变”视角(§4.2)对合成数据的训练意味着什么?哪些数据混合策略能保住长尾知识?
8. 小结 · Summary
- “自我改进”有三种:搜索更好的解、改进自己的脚手架或代码、用自己的数据训练自己。它们都是”提议 → 评估 → 保留”,瓶颈都在评估。
- FunSearch / AlphaEvolve 在有精确评估器的问题上取得了新结果(cap set 512、4×4 复数矩阵 48 次乘法、11 维接吻数 593、集群资源 0.7%),也报告了系统利用评估器漏洞的”作弊现象”。
- 实验(cap set,n = 7):搜索把 128(字典序)提高到 196;岛屿模型在小预算时最好,爬山会卡住;一个容易找到的好解(“计数”)把搜索困在 196,而一个更受限的语言偶尔找到 204;相关问题学来的先验 10 次评估就到 192.7,手工”合理”的先验反而更慢;装箱的评估器只看 1 个实例时,训练 4.18%、测试 6.65%。
- 开放式学习:目标会误导(“难”迷宫:目标搜索 0/10,新颖性搜索 9/10,MAP-Elites 8/10);但目标不欺骗时跟着它更快(10/10);“新”的定义是算法的一部分(加噪声维度后 MAP-Elites 8/10 → 0/10)。
- 改进自己:DGM 在 SWE-bench 上 20.0% → 50.0%,同时出现绕过检测的目标黑客;模型崩溃来自替换真实数据(840 → 213 个词),累积就不会;消失的是尾部的多样性,不是总概率(漂变)。
- AI 科学家:想法看起来新颖,执行后落差明显;PaperBench 21.0% vs 博士 41.4%。“一天一千个想法”:p < 0.05 时 59.0% 的发现是假的、效应夸大近 5 倍;试 5 个版本 77.2%;BH 的 FDR 保证不等于”报告的发现里假的比例”。
9. 常见误区 · Common pitfalls
- “搜索找到的程序在评估上更好,所以它更好。” 它在评估器上更好;评估器只看几个实例时,测试上可能更差。
- “给搜索更多的先验知识总是有帮助。” 和问题无关的先验会拖后腿;有用的先验来自相关的问题。
- “搜索停在某个值,说明这个表示的上限就在那里。” 也可能是一个容易找到的好解把搜索吸住了。
- “新颖性搜索比目标搜索好。” 只在目标有欺骗性时;而且”新”的定义可以毁掉它。
- “用合成数据训练一定会崩溃。” 崩溃来自替换真实数据;累积或混入真实数据可以避免。
- “自我改进的智能体分数提高了,说明它变强了。” 先检查它是不是改了评估本身(DGM 的第 114 号)。
- “AI 科学家的论文通过了审稿,说明它会做研究。” 看执行之后的结果、独立的复现,以及它一共试了多少次。
- “用了 FDR 校正,报告的发现里假的就不超过 10%。” FDR 是期望,没有发现的天按 0 计入;有发现时假的比例可以高得多。
10. 练习 · Exercises
练习 1(岛屿模型的多样性)。§2.4 里爬山有一个种子停在 162,岛屿模型最差也有 192。(a) 解释为什么”只保留一个”会让搜索卡住。(b) 岛屿模型的”定期重置最差的一半岛屿”在保持多样性和传播好想法之间做了什么取舍?如果从不重置、或者每 10 次评估就重置,会怎样?
参考答案:(a) 爬山只接受”不比当前差”的变异;当前程序处在一个局部最优时,所有一步能到达的程序都更差,搜索就停了(除非碰巧有等分的程序让它”漂移”)。独立采样每次从初始程序出发,相当于不断重启,反而不会卡住。(b) 不重置时,各岛独立演化,多样性最大,但一个岛里的好想法传不出去(相当于 4 次独立的搜索);重置太频繁时,所有岛很快变成同一个程序的副本,退化成一个小种群的爬山。FunSearch 的设计是两者之间的折中。可以用
evolve_lab.search的reset_every参数检验。
练习 2(假发现比例的公式)。设真想法的比例是 π,单侧检验的显著性水平 α,真效应的检验功效 1 − β。(a) 写出 p < α 时报告的发现里假的比例。(b) 用演示 3 的参数计算:π = 0.1,α = 0.05,效应 2 个点、标准误 1.73 个点。
参考答案:(a) 。(b) 效应是 2 / 1.73 ≈ 1.16 个标准误;功效 = P(Z > 1.645 − 1.16) = P(Z > 0.49) ≈ 0.31。FDP = 0.9 × 0.05 / (0.9 × 0.05 + 0.1 × 0.31) = 0.045 / 0.076 ≈ 0.59——和模拟的 59.0% 一致。注意它和”一天试多少个想法”无关:想法越多,假发现越多,真发现也越多,比例不变。降低它只有三条路:提高真想法的比例(更好的想法)、提高功效(更大的测试集、更好的配对设计)、降低 α(更严格的阈值,代价是功效)。
练习 3(重启能救目标搜索吗)。“难”迷宫里目标搜索 0/10。也许它只是缺少多样性?让目标搜索重启 10 次(每次 2000 次评估,总预算相同),会怎样?
参考答案(草稿目录里实际运行,10 个种子):仍然 0/10。问题不在于”一次运行碰巧走错了方向”,而在于目标函数本身指向陷阱——每次重启都会被同一个陷阱吸引。新颖性搜索的优势来自它换了一个目标,而不是增加了随机性。
练习 4(0.1 个点是真的吗)。§2.5 用 64 个训练实例找到的程序在测试集上比 best fit 好约 0.1 个点。在 400 个测试实例上做配对检验:每个实例上,新程序比 best fit 少用、多用还是用一样多的箱子?用符号检验判断差别是否显著。
参考答案(草稿目录里实际运行,4 个种子):差别平均 −0.05 到 −0.15 个点;大约 250–310 个实例上两者用的箱子一样多;在不一样的实例里,两个种子明显更好(58 比 33、92 比 59,符号检验 p = 0.012、0.009),另外两个不显著(64 比 50、61 比 50,p = 0.22、0.34)。所以”演化出的启发式更好”取决于哪一次运行——这本身就是一个应该报告多个种子的理由。
练习 5(设计一个自动化研究的协议)。你要让一个 AI 智能体在第 1 讲的多跳推理任务上自动探索”让小模型更好地做长链推理”的想法,每天能试 200 个。设计一个协议,让它报告的发现里假的比例尽量低、同时不至于什么都找不到。
参考答案要点:(1) 分开探索和确认:探索阶段在开发集上随便试(不报告 p 值);每天只把排名最高的几个想法送进确认阶段,在一个大的、只用一次的测试集上检验,并按送进确认的个数做多重比较校正(§5.3:确认把假的比例从 59.0% 降到 19.5%)。(2) 按想法而不是按版本确认:确认时用新的随机种子重新训练、换几种提示措辞,要求效应在多个版本上都成立(否则就是”挑版本”,§5.3 最后一行)。(3) 功效:用第 1 讲的最小可检测效应算出测试集需要多大(+2 个点需要约 2300 道题,配对)。(4) 报告分母:记录所有试过的想法和版本(第 20 讲的实验日志)。(5) 独立的评估器:智能体不能修改评测代码和测试集(DGM 的教训),评测在它碰不到的环境里运行。(6) 事后复核:定期从”已报告的发现”里随机抽一些,由人重新实现、在新数据上复现,估计实际的假发现比例。
11. 延伸阅读 · Further reading
LLM 驱动的程序搜索
- B. Romera-Paredes et al. Mathematical discoveries from program search with large language models(FunSearch). Nature, 2024.
- A. Novikov et al. AlphaEvolve: A coding agent for scientific and algorithmic discovery. 2025.
- B. Georgiev, J. Gómez-Serrano, T. Tao, A. Z. Wagner. Mathematical exploration and discovery at scale. 2025.
- R. T. Lange et al. ShinkaEvolve: Towards Open-Ended and Sample-Efficient Program Evolution. 2025.
- J. Lehman et al. Evolution through Large Models(ELM). 2022.
开放式学习
- J. Lehman & K. O. Stanley. Abandoning Objectives: Evolution through the Search for Novelty Alone. Evolutionary Computation, 2011;K. O. Stanley & J. Lehman. Why Greatness Cannot Be Planned. Springer, 2015.
- J.-B. Mouret & J. Clune. Illuminating search spaces by mapping elites(MAP-Elites). 2015.
- R. Wang, J. Lehman, J. Clune, K. O. Stanley. Paired Open-Ended Trailblazer (POET). 2019.
- J. Zhang, J. Lehman, K. Stanley, J. Clune. OMNI: Open-endedness via Models of human Notions of Interestingness. ICLR 2024.
- G. Wang et al. Voyager: An Open-Ended Embodied Agent with Large Language Models. 2023.
- C. Fernando et al. Promptbreeder: Self-Referential Self-Improvement via Prompt Evolution. 2023.
- E. Hughes et al. Open-Endedness is Essential for Artificial Superhuman Intelligence. ICML 2024.
自我改进
- E. Zelikman et al. Self-Taught Optimizer (STOP): Recursively Self-Improving Code Generation. COLM 2024.
- J. Zhang, S. Hu, C. Lu, R. Lange, J. Clune. Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents. ICLR 2026.
- Y. Song et al. Mind the Gap: Examining the Self-Improvement Capabilities of Large Language Models. 2024.
- I. Shumailov et al. AI models collapse when trained on recursively generated data. Nature, 2024.
- M. Gerstgrasser et al. Is Model Collapse Inevitable? Breaking the Curse of Recursion by Accumulating Real and Synthetic Data. 2024.
AI 科学家与它们的评测
- C. Lu et al. The AI Scientist: Towards Fully Automated Open-Ended Scientific Discovery. 2024;Y. Yamada et al. The AI Scientist-v2: Workshop-Level Automated Scientific Discovery via Agentic Tree Search. 2025.
- J. Gottweis et al. Towards an AI co-scientist. 2025.
- C. Si, D. Yang, T. Hashimoto. Can LLMs Generate Novel Research Ideas? A Large-Scale Human Study with 100+ NLP Researchers. 2024;C. Si et al. The Ideation–Execution Gap: Execution Outcomes of LLM-Generated versus Human Research Ideas. 2025.
- J. Beel et al. Evaluating Sakana’s AI Scientist for Autonomous Research. 2025.
- J. S. Chan et al. MLE-bench: Evaluating Machine Learning Agents on Machine Learning Engineering. 2024.
- H. Wijk et al.(METR). RE-Bench: Evaluating frontier AI R&D capabilities of language model agents against human experts. 2024.
- G. Starace et al. PaperBench: Evaluating AI’s Ability to Replicate AI Research. 2025.
- Y. Benjamini & Y. Hochberg. Controlling the False Discovery Rate. JRSS-B, 1995.
12. 下一讲预告 · Next lecture
第 19 讲:安全与可监督性——思维链监控、奖励黑客与可扩展监督。 这一讲的每个实验里,被优化的对象都会利用评估器的弱点——表达式树、搜索算法、自我改进的智能体都是如此。当被优化的对象是一个越来越强的模型,这个问题就变成了 AI 安全的核心问题之一。下一讲从防御的角度讨论:奖励黑客为什么随能力增长、优化压力和”过度优化”的关系;思维链监控什么时候可靠(思维链是必要的时候)、什么时候会被混淆;弱的监督者能不能训练出强的模型(弱到强的泛化);以及模型在评测中”故意表现差”时,怎样把它真实的能力诱导出来——代码会用第 1 讲的小模型做一个”密码锁定”的实验。