wjysite.com / discoveryrsi-lab

DiscoveryRSI++ 三臂实验

让 AI 像研究员一样,围绕一道固定的机器学习/科学题目反复“提出假设 → 做对照实验 → 读结果 → 再提假设”,每个任务迭代 20 轮。我们比较三种决策方式:AI 自己选方向、“人”从 AI 的候选里点选、“人”先写批评再由 AI 选。想知道的是:人在这个循环里插手,到底有没有用,用在哪里。

请先读这条:本次运行中,B、C 两臂的“人类”决策全部由 Claude(Anthropic 的 Opus 模型)代人类完成(经作者授权),不是真人实验。Claude 在同一任务里同时为 B、C 两臂做决定,能看到各臂进展,存在跨臂信息污染;Claude 给出的不少建议也被实验证明是错的。详见披露与局限。这是一项工程试跑(pilot),每个 MLE 任务只有 1 个重复,结论只能当作线索。

一段话版本

同一个基座语言模型、同一份冻结的起始代码、同一批第 1 轮候选假设:A 臂 AI 全程自主;B 臂每轮由 Claude 代人类从 3 个候选里点一个;C 臂每轮由 Claude 代人类写一段批评,AI 读后自己选。每轮被选中的假设都会被 AI 写成代码,在隔离沙箱里与“当前最好代码”做一次对照实验,只看冻结验证集分数;20 轮结束后,才用官方测试集给验证集最好的那份代码评一次分,并对照 Kaggle 奖牌线。下面先从 0 到 1 讲清楚做法,再给出全部任务的结果和每一轮的原始轨迹。

结果:19 组研究全部完成。在测试分有效的 15 个 MLE 任务上,C 臂 10 次第一,A 臂 3 次,B 臂 2 次。这说明 Claude 的介入在这批任务上多数时候有帮助,但不能说明真人介入有帮助:每个任务只有 1 个重复,B、C 由同一决策者操作并存在跨臂信息污染,Claude 还带着对这些题的先验知识。详见宏观总结。

从 0 到 1:这个项目在做什么

1. 动机:自主迭代的 AI 研究员会不会“越走越偏”?

DiscoveryRSI 这类 AI 科研系统把研究表示成一个循环:提出若干竞争假设,挑一个去做实验,根据真实结果修正,再提下一批。循环跑得越久,早期的误判越可能累积:反复选择表述漂亮但证据薄弱的方向、偏爱熟悉的方法、或者一味追逐看得见的验证分数。

一个自然的想法是在关键节点让人插手。专家也许只需一句话(“这两列可能来自同一测量,先排除泄漏”)就能把搜索拉回正轨;但人也可能锚定在自己熟悉的方向上,压制 AI 本来有效的探索。所以我们要回答的问题是:

在题目、模型、可见信息和每轮实验预算都固定的前提下,人在检查点上的轻量介入(点选一个候选,或写一段批评),能否让“假设驱动”的迭代更有效?如果有效,是因为选对了分支,还是因为带来了新知识、纠正了错误?

研究边界:原题目标、允许的数据、数据划分和官方评分器全部固定;三种方式只改变“提出什么假设、选哪一个去做”。模型权重全程不更新,人的意见只作为上下文进入后续推理。

2. 三臂设计:只有“谁来选”不同

A · AI 自主

AI 每轮生成 3 个候选假设,自己选 1 个,写代码、跑实验、读结果,进入下一轮。没有任何中途意见。

B · 人类点选 (本次由 Claude 代人类)

流程同 A,但每轮由“人”在 3 个候选里点一个。接口只接受候选编号,不接受任何文字建议。

C · 人类批评 → AI 选择 (本次由 Claude 代人类)

“人”不能点选,只能写一段批评/建议;AI 必须逐条回应后自己选,批评同时进入下一轮的候选生成。所以 C 是“影响选择 + 影响生成”的组合干预。

三臂保持一致的东西:同一任务、同一份冻结的起始代码(基线)、同一个基座模型和提示词、第 1 轮共享同一批 3 个候选(每臂展示顺序随机打乱)、每轮恰好一次对照 + 一次干预执行、都跑 20 轮。

3. 一轮里发生了什么

  1. 起点当前最好代码(incumbent)+ 本臂此前所有轮的实验证据
  2. ① 生成AI 提出 3 个互相竞争、可检验的假设:每个都写明预测、只改一处的对照实验、成功判据、证伪条件和其他解释
  3. ② 批评修订AI 换成“审稿人”角色,按原题目标、已测证据和资源限制修订这 3 个候选(不打主观分)
  4. ③ 选择:三臂唯一不同之处 A:AI 自己选 B:Claude 代人类点选一个 C:Claude 写批评 → AI 回应后选
  5. ④ 实现AI 只在当前最好代码上实施被选中的那一处改动,输出完整 Python 程序
  6. ⑤ 对照实验隔离沙箱里分别运行“对照”(当前最好代码原样)和“干预”(改动后),8 CPU / 16 GiB / 600 秒,无网络,单种子
  7. ⑥ 打分官方评分器在冻结验证集上给两边打分(Nature 任务为在线 mean_g),算出 Δ = 干预 − 对照
  8. ⑦ 反思AI 读真实回执和两份源码,先查实现是否忠于假设,再给出证据判定和下一步建议
  9. ↻ 下一轮验证分更好的代码成为新的 incumbent;失败的尝试作为证据保留,但不会成为起点

证据判定共四种:初步支持 不支持 不确定 实现与假设不符。“初步”是因为每轮只有一次单种子对照,不能当作因果证明。20 轮结束后:MLE 任务从全部已执行的代码里挑验证分最好的一份,用官方私有测试集只评一次分,再对照该比赛 Kaggle 排行榜的奖牌线;Nature 任务没有独立测试集,最终分就是 20 轮中见过的最好在线分数。

4. 具体实现

研究引擎

一个固定版本的基座语言模型,用 5 种提示词角色串起一轮:生成、批评修订、选择(A、C 臂)、实现、反思。所有角色都只能看到公开的任务说明、当前最好代码和本臂的执行历史。这是 DiscoveryRSI 研究流程的精简实现,还不是完整的多智能体运行时(没有文献检索和文件工具)。

沙箱执行器

代码交给独立的控制器在无网络的容器中运行,每次 8 CPU、16 GiB 内存,MLE 每次限时 600 秒(Nature 300 秒),只能用 numpy、scipy、pandas、scikit-learn、LightGBM、XGBoost 等库,没有 GPU。模型拿不到服务器 shell;控制器检查代码大小和输出文件格式,并给源码与回执记哈希。

验证集与测试集分离

MLE 任务:把官方公开训练集按固定随机种子一次性切出冻结验证集(呼吸、分子、句子这类成组数据整组切分,防止相邻样本泄漏)。每轮反馈只有验证分;官方私有测试答案只在控制器内部,运行期间 AI 和 Claude 都看不到,20 轮后只对验证集选出的那份代码读一次。

当前最好代码(incumbent)

控制器在本臂全部已完成的执行(对照与干预)中,取验证分最好的那份源码作为下一轮的对照。被选中的假设即使失败,也会作为证据留在上下文里,但不会成为下一轮的起点。

重试与归档

模型输出不合规(JSON 解析失败、候选格式错误、代码无法解析)时,同一阶段最多重新请求 3 次,每次尝试单独存档。对照执行失败视为基础设施问题,本轮停止,不算作假设被否定;这类轮次先把失败记录隔离归档,再从同一检查点重跑。干预代码自己崩溃或超时,则如实记为“实现与假设不符”。

Claude 如何代人类决策

通过运营者的待办收件箱:每个待决检查点显示该臂此前每轮的选择、对照/干预分数、AI 反思,以及本轮 3 个候选的标题、主张、实验和证伪条件。B 臂只提交一个候选编号;C 臂只提交一段批评文字。每条决策带时间戳记入日志。Claude 的原则是只用同一重复内的信息、力求提升原题分数、做可证伪的选择;但它同时为同一任务的 B、C 两臂做决定,也用了自己对这些 Kaggle 题的先验知识。

本页只公开摘要级信息:候选假设的标题、主张与实验概要,选择理由与批评,对照/干预分数,证据判定,截断后的反思。完整提示词、模型原始输出、源代码和运行配置不公开。

5. 主要局限(完整版见披露)

结果总览

每一行是一个任务(Nature 任务按重复分行)。横轴是差距关闭比例:把“冻结基线”到“满分”之间的距离记为 100%,看各臂 20 轮里在验证集上走完了多少。对 AUC、准确率、QWK 这类满分为 1 的指标,它等于(最优 − 基线)/(1 − 基线);对 log loss、RMSE、MAE 这类越低越好、满分为 0 的指标,它就是误差降低的百分比;CHAMPS 的 log MAE 可为负数,换算成几何平均 MAE 的降低比例;Nature 的 mean_g 用论文参照 ARI 推出“全部聚对”时的满分。基线取同一份基线代码所有运行的平均。这样不同指标的任务可以放在一把尺子上,但它仍是验证集上的最好值,偏乐观;测试集结果见下表。点击任一行查看该任务的逐轮轨迹。

全部任务 × 三臂

测试集分数只对每臂“验证集最优”的那份代码评一次;奖牌按该比赛 Kaggle 排行榜阈值判定(CPU 沙箱、非官方协议,仅作参照)。模型调用与 token 为本臂实际记录;第 1 轮共享候选的生成成本只记在一个臂上。标 * 的 CHAMPS 测试分无效(测试分子缺坐标),不计入比较。点击任一行打开该任务。

任务与轨迹

先选一个任务。每个任务给出白话说明、冻结基线、最终结果,以及三臂 20 轮的验证分轨迹;点轨迹上的点或下方表格里的任一格,可以看那一轮的 3 个候选假设、谁选了哪个、Claude 的批评、对照与干预分数和 AI 的解读。

宏观总结与建议

加载中…

披露与局限

加载中…

系统导出自带的局限声明(英文原文)

    数据导出时间:—。