当 Agent 学会回头看:DiscoPER 用"元反思"把自主科学发现拉到了新水位

你有没有一种感觉:现在做 AI for Science 的论文里,"自主发现系统"已经不是一个新词了。AI Scientist 写 ML 论文,AI Co-Scientist 做生物医学假设,Robin 跑实验做药物发现,ExperiGen 把假设和验证打通——一个比一个能讲故事。

但我自己看下来有个挺别扭的事:这些系统里,"提出下一个假设"这一步,几乎都是独立的一锤子买卖。模型拿到一个数据集或者一个研究问题,提一个假设,验证完就清空记忆,进入下一轮。它从来不回头看自己之前提过什么、测过什么、哪些变量被反复错过、哪些混杂因素被反复忽略。

这种"金鱼式"循环有个明显的问题:搜索很容易困在已经看过的角落。如果不在生成新假设时回顾已有发现,搜索空间里的盲区会越积越多,最后系统要么在已经验证过的事实上反复横跳,要么沿着某条 early winner 的路径一直走下去,掉进 local optimum。

DiscoPER(arXiv:2607.01131)这篇论文瞄的就是这个痛点。它干的事其实不复杂——在 Propose–Evaluate 之外加一个 Reflect 模块,每隔几轮把"已被接受的 claim"和"已被拒绝的 claim"打包喂给一个 LLM,让它生成一份结构化的下一步指导。这个指导不是具体假设,而是"哪些变量是缺口"、"哪些变量在多条已接受 claim 里都扮演了混淆因子"、"哪两个已有 claim 暗示了一个更高阶的联合假设没被测过"。

听起来挺轻量的对吧?但它在 iNatDisco 生态学基准上把 9 个同行评议过的真模式恢复了 8 个,假设支持率 72.7%,同时在反事实数据上证明这些发现不是 LLM 背书常识,而是真的在跟数据较劲。

更让我眼前一亮的是作者把整个领域塞进了一个统一框架:Propose × Evaluate × Reflect × Prior Information,并证明现存所有系统都是这个框架的受限实例。这种"先建坐标系再放点"的写法在 AI4Science 圈子里不多见,值得细读。


核心摘要

痛点:现有 LLM 驱动的自主科学发现系统普遍缺一个关键能力——回头看。每轮假设生成是独立的,模型既不知道过去发现了什么,也不知道哪里还藏着没探过的区域。结果就是搜索低效、容易被早期偶然结果带偏、且对"是否真的在做发现"这件事没有自检机制。

方案:DiscoPER 把发现循环拆成三个显式模块——Propose(生成假设)、Evaluate(代码 + 统计测试 + 留出集验证)、Reflect(元级 LLM,对 claim 集合做结构化分析,输出下一轮指导)。关键点有三个: 1. 假设是可执行 Python 代码,表达力是图灵可计算级别,远超传统因果发现的"边"假设空间; 2. 留出集验证避免 p-hacking,代码可在训练集上调,但在验证集上只跑一次; 3. Reflect 不是事后总结,而是下一次 Propose 的输入条件,相当于"二阶推理"。

效果:在 iNatDisco-800(800 个观察,9 个真模式)上恢复 8/9,支持率 72.7%;在 iNatDisco-50K(5 万观察、9776 个物种、12 个真模式)上 8/12,支持率 74.2%。在 SACHS/ASIA 经典因果基准上 F1 拿到 0.83/0.86,超过所有传统结构学习方法。

我的判断:这篇论文最值钱的地方不是那 8/9 的恢复率,而是把"反思"从可选项变成了显式的一阶对象——这是给整个 AI Scientist 系列立了一块新坐标。局限性也很清楚:多模态发现受限于视觉验证的统计功效(合成视觉基准上跨模态模式 0/8),且它不会自己生成数据,所有发现都受限于观测数据的偏差。


论文信息

  • 标题:Autonomous Scientific Discovery via Iterative Meta-Reflection
  • 作者:Bingchen Zhao, Sara Beery, Oisin Mac Aodha
  • 机构:Caltech (Beery) / University of Edinburgh (Mac Aodha) 等
  • 链接:https://arxiv.org/abs/2607.01131
  • 发表时间:2026 年 7 月 1 日

问题动机:为什么"金鱼"模式撑不住开放发现

我先把作者对现有工作的归类摆出来,省得后面方法部分再反复解释。

作者把所有自主发现系统塞进了一个 2×2 的坐标系: - 假设空间 ℋ:是只能测"边"(\(\mathcal{H}_{edge}\)),还是能写可执行代码(\(\mathcal{H}_{code}^{guided}\) / \(\mathcal{H}_{code}^{open}\)) - 先验信息 𝒫:是空(\(\emptyset\))、是部分(任务描述/种子假设),还是完整(明确的研究问题)

按照这个坐标系:

系统 𝒫 Reflect
PC / GES / NOTEARS \(\mathcal{H}_{edge}\) \(\emptyset\)
GPT-4 BFS \(\mathcal{H}_{edge}\) Full
AI Scientist \(\mathcal{H}_{code}^{guided}\) Full
AI Co-Scientist \(\mathcal{H}_{code}^{guided}\) Full 无(多智能体辩论)
HeurekaBench \(\mathcal{H}_{code}^{guided}\) Full
ExperiGen \(\mathcal{H}_{code}^{guided}\) Partial 短期记忆
DiscoPER \(\mathcal{H}_{code}^{open}\) \(\emptyset\) 显式

作者的核心论断是:真正"开放"的发现需要三件事同时满足——(i)从原始数据开始,没有预设问题;(ii)假设可以表达为可执行代码,不限于边;(iii)搜索方向要根据已有发现动态调整。现有系统至少缺一项

这个判断对不对?我自己重读一遍觉得是站得住的。说几个具体的不爽点:

边空间的表达能力天花板。PC、NOTEARS 这些经典因果发现方法输出的本质是一个 DAG 的边集合。但真实科学发现里的 pattern 经常不是边——可能是"温度 × 物种 × 季节的三阶交互"(mediation chain),可能是"某物种在某个纬度的密度分布是双峰的"(cluster structure),可能需要从图像里读出"该物种生活在密闭林冠下"才能跟数据 join。\(\mathcal{H}_{edge}\) 装不下这些 pattern。

预设问题 vs 数据驱动。AI Co-Scientist、Robin 这类系统强是真的强——后者真在湿实验里发现了一个新治疗方案——但它们都是带着研究问题出发的。这意味着它们的"发现"在某种程度上是"确认"而不是"发现"。DiscoPER 想要做的是后者:没有预设问题,从数据里自己冒出来

金鱼式循环。这一条是 DiscoPER 的主要发力点。ExperiGen 算最先进的同期工作,它的 memory 是"短期"的——只 conditioning 在上一对 (hypothesis, result) 上,但不对历史做结构化分析。DiscoPER 干的事其实就一件:把"短期记忆"升级成"显式反思"

坦白讲,从工程角度这个升级看起来小,但实测收益相当能打。后面会看到 Reflect 关闭时,8/9 直接掉到 7/9,6/12 直接掉到 8/12——这是 0.5 到 0.7 个真模式的差距。


方法核心:把"发现"拆成三件可独立调的事

整体框架

先看一眼作者画的 teaser,思路一眼就清楚。

图1:DiscoPER 整体框架 teaser。左侧输入是图像+表格数据,进入中间的 Propose–Evaluate–Reflect 循环,右侧输出是经过验证的发现(图 1 来自论文)

图 1:DiscoPER 整体框架。输入是图像+表格(iNaturalist 观察记录),中间跑 Propose–Evaluate–Reflect 循环 100 轮,右侧输出的"Validated Discoveries"是 claim store 里的最终结果。比如"Mammals 在开阔栖息地有更强的季节迁移"——这条 claim 的关键变量'栖息地类型'是从 VLM 读图像读出来的,不在元数据里。

最让我意外的是右侧那个"Validated Discoveries"卡片的精细度。绿色框里不只列了发现文本,还把 VLM 读出的视觉关键变量单独标出来("Key: habitat type from VLM, not metadata"),训练集和验证集上的 effect size/p-value 都摆出来。这不是糊弄的演示,是真的在演示"代码 + 留出验证"是怎么把幻觉挡在门外的。

具体到内部结构,论文 Figure 2 拆得更细。

图 2:Propose–Evaluate–Reflect 三模块的内部结构。Propose 接收 X、P、claim set、guidance,生成 K 条 hypothesis;Evaluate 把每条 hypothesis 跑代码做 train/val 双 split 的统计测试,通过的进 Validated Claims,失败的进 Rejected Claims;Reflect 对两个 claim set 做结构化分析,输出 Guidance g_t 给下一轮 Propose(图 2 来自论文)

图 2:三模块的内部数据流。注意 Propose 不只接收当前数据 X,还显式接收"上轮的 guidance"和"累计的 claim set"——这就是二阶推理的物化形态。Evaluate 强制 train/val 双 split,验证集上每条 hypothesis 只跑一次。Reflect 同时看被接受和被拒绝的 claim——被拒绝的 claim 同样是信息。

形式化

设数据集 \(\mathcal{X}\),先验 \(\mathcal{P}\)(默认 \(\emptyset\)),假设 \(h\) 是一个程序,输入 \(\mathcal{X}\) 输出判断 \(b \in \{\text{supported, rejected}\}\) 和证据 \(e\)。假设空间 \(\mathcal{H}\) 是所有这样的程序的集合,\(h \in \mathcal{H}\)。一个被 Eval 接受并加入 store 的假设叫 claim

整个循环是:

\[ h_t^{(1)}, \ldots, h_t^{(K)} \sim \text{Propose}(\mathcal{X}, \mathcal{C}_{t-1}, \mathcal{G}_{t-1}, \mathcal{P}) \]
\[ \Delta \mathcal{C}_t, \Delta \hat{\mathcal{C}}_t = \text{Evaluate}(\{h_t^{(k)}\}, \mathcal{X}, \mathcal{C}_{t-1}, \hat{\mathcal{C}}_{t-1}) \]
\[ \mathcal{C}_t = \mathcal{C}_{t-1} \cup \Delta \mathcal{C}_t, \quad \hat{\mathcal{C}}_t = \hat{\mathcal{C}}_{t-1} \cup \Delta \hat{\mathcal{C}}_t \]
\[ \mathcal{G}_t = \text{Reflect}(\mathcal{C}_t, \hat{\mathcal{C}}_t) \]

公式本身不复杂,关键是看清楚谁依赖谁。Propose 依赖 guidance \(\mathcal{G}_{t-1}\)——这就是"反思影响下一步搜索"的物化形态。Reflect 依赖整个 claim 集合——它不是看上一条,是看全部。

Propose:代码即假设

Propose 模块拿到的是(i)数据的 schema + 列统计 + 样本行;(ii)当前的 claim 集合;(iii)当前的 guidance;(iv)可选的图像。输出 K 个结构化 hypothesis,每条包含自然语言描述 + 涉及的变量 + Python 代码

注意一个工程细节:guidance 是"建议往哪走",不是"必须测什么"——它不强制 hypothesis 的具体形态。这避免了 guidance 把搜索锁死到某条路径上。

默认情况下 \(\mathcal{P} = \emptyset\)——系统不被告知任何研究目标。这是 DiscoPER 跟其他系统的根本差别。

Evaluate:双 split 验证 + 统计阈值

每条 hypothesis 的 Python 代码在训练 split 上跑一次得到 effect size δ_train 和 p_train;如果 δ ≥ 0.2 且 p ≤ 0.05,则再在验证 split 上跑一次得到 δ_val 和 p_val;最终接受条件是验证集也满足阈值,并且 \(|\delta_{val}| \geq 0.6 \cdot |\delta_{train}|\)(防过拟合检查)。

可用的统计工具 7 个:Spearman/Pearson 相关、Cliff's delta/Mann–Whitney 群组差异、随机森林预测 AUC、k-means + χ² 聚类富集、分层重测、视觉属性 VLM 分类、视觉群组差异比较。Effect size 阈值 0.2、p 阈值 0.05 都是经验值。

训练集上调代码、验证集上只跑一次——这是经典的p-hacking 防御。如果允许验证集上反复调,迟早能找到一个偶然显著的发现,搜出来就是幻觉。

Reflect:核心创新在这一段

这是论文的"灵魂"模块。每 5 轮跑一次(这是个超参,作者没在正文里做消融,但附录里可以看到)。Reflect 拿到 \(\mathcal{C}_t\)(已接受 claim)和 \(\hat{\mathcal{C}}_t\)(已拒绝 claim),让一个 LLM 生成结构化 guidance \(\mathcal{G}_t\)

guidance 不是随便吐的——按论文描述,它至少包含三类东西:

  1. Gap detection:哪些变量/关系在 claim store 里覆盖率为 0。例:iter 5 反思发现"positional accuracy"在 3 次尝试中支持率都是 0%,于是建议放弃这个变量,转向 kingdom 级别的地理比较。
  2. Compound hypothesis generation:把多个已接受 claim 拼起来,生成高阶联合假设。例:iter 34 反思发现 Fungi 和 Plantae 已经被分开测过 latitude 和 longitude,于是建议测二者的 joint latitude × longitude 空间 niche 分离。
  3. Confound detection:发现某变量在多条已接受 claim 里都扮演 moderator 角色。例:iter 49 反思发现"hemisphere"在所有季节性 claim 里都是 moderator,于是建议在做任何季节性测试前先按 hemisphere 分层。

第一类是在找未探过的区域,第二类是在做归纳跳跃,第三类是在做混杂控制。这三件事其实对应了科学方法里"观察–归纳–控制变量"的三个基本动作——DiscoPER 算是把科学方法论显式地塞进了一个 LLM 循环里

假设空间层级

作者画了一个包含关系:

\[ \mathcal{H}_{edge} \subset \mathcal{H}_{code}^{guided} \subseteq \mathcal{H}_{code}^{open} \]

\(\mathcal{H}_{edge}\) 的 size 是 \(O(d^2)\)\(d\) 是变量数;\(\mathcal{H}_{code}^{open}\) 的大小是图灵可计算统计测试的全集——后者对前者的包含是严格包含,因为前者能表达的边测试只是后者的一个小子集。

这条性质决定了 DiscoPER 在多变量交互、mediation chain、跨模态模式上原则上就比传统因果发现更强。后面会看到实验数据确实撑住了这一点。


iNatDisco:第一个真"开放发现"的生态学基准

这部分我得稍微多花点篇幅,因为基准的构造思路对理解整篇论文很关键。

现有基准的不足

作者列了一串现有基准:BioDSA、HeurekaBench、BLADE、DiscoveryBench。共同的毛病是——它们都给定了研究问题。Edge-recovery 类指标(SHD、edge F1)只能衡量"边对不对",不能衡量"是否发现了复杂的生态 pattern";QA 类基准告诉 agent 要找什么,跟"开放发现"的初衷就矛盾。

iNatDisco 的设计

数据源是 iNaturalist 的研究级公民科学观察记录。每条记录包含:图像、经纬度、定位精度、观察日期、物种名 + 分类层级。

两个子集: - iNatDisco-800:800 条观察,8 个物种,9 个真模式(来自同行评议文献) - iNatDisco-50K:5 万条观察,9776 个物种,12 个真模式

"真模式"是有明确文献出处的生态关系。比如: - 真菌秋季结果(Amanita muscaria 在 9–11 月集中观测,Boddy et al., 2014) - 帝王蝶北迁(Danaus plexippus 纬度 3–8 月北移,Brower, 1996) - 植物 vs 动物的物候偏移(植物 4–6 月峰,动物 5–8 月峰,Menzel et al., 2006) - 物种丰富度向赤道递增(Hillebrand, 2004)

这套 ground truth 设计的精妙之处在于:它们是定性的生态学关系,不是简单的统计 pattern;恢复它们需要 LLM 知道"秋季是几月到几月"(常识)+ 能在数据里做时空统计(代码能力)+ 知道这些 pattern 之间还会相互影响(元反思)。

反事实变体 iNatDisco-800-CF

这个设计我觉得是整篇论文最精巧的一笔。作者把 5 个真实生态关系人为反转——比如把"鸟类春季北迁"改成"鸟类无季节性纬度变化",把"真菌秋季结果"改成"真菌春季结果"——再让系统去发现。

这个变体解决的是"LLM 在背书常识"还是"LLM 真的在从数据里发现"的判别问题。如果一个系统跑反事实数据仍然报"鸟类春季北迁"——那就只是在复读训练数据里的常识。DiscoPER 在反事实上的表现如何?后面揭晓。


实验结果

主结果:8/9 模式恢复

直接看 Table 2。

数据集 方法 类型 Reflect Recall Support Rate
iNatDisco-800 LLM+PC 因果 \(\mathcal{H}_{edge}\) 0/9
iNatDisco-800 LLM+NOTEARS 因果 \(\mathcal{H}_{edge}\) 0/9
iNatDisco-800 GPT-4 BFS 因果 \(\mathcal{H}_{edge}\) 1/9
iNatDisco-800 HeurekaBench LLM \(\mathcal{H}_{code}^{guided}\) 3/9 62.2%±6%
iNatDisco-800 ExperiGen LLM \(\mathcal{H}_{code}^{guided}\) 3/9 56.6%±5%
iNatDisco-800 DiscoPER w/o Reflect LLM \(\mathcal{H}_{code}^{open}\) 7/9 70.0%±2%
iNatDisco-800 DiscoPER LLM \(\mathcal{H}_{code}^{open}\) 8/9 72.7%±3%
iNatDisco-50K LLM+PC 因果 \(\mathcal{H}_{edge}\) 0/12
iNatDisco-50K LLM+NOTEARS 因果 \(\mathcal{H}_{edge}\) 1/12
iNatDisco-50K GPT-4 BFS 因果 \(\mathcal{H}_{edge}\) 1/12
iNatDisco-50K HeurekaBench LLM \(\mathcal{H}_{code}^{guided}\) 2/12 64.7%±4%
iNatDisco-50K ExperiGen LLM \(\mathcal{H}_{code}^{guided}\) 3/12 67.8%±5%
iNatDisco-50K DiscoPER w/o Reflect LLM \(\mathcal{H}_{code}^{open}\) 6/12 66.6%±3%
iNatDisco-50K DiscoPER LLM \(\mathcal{H}_{code}^{open}\) 8/12 74.2%±3%

读这张表我看到三件事

第一,\(\mathcal{H}_{edge}\) 真的装不下。把 LLM 塞进 PC/NOTEARS 这种传统因果发现方法,结果是 0/9 或 1/9。哪怕有了 LLM 帮忙提变量,搜索空间的天花板就是"边"——你测不了"X 在 Y 季节的 Z 纬度密度分布"这种 pattern。

第二,\(\mathcal{H}_{code}^{open}\)\(\mathcal{H}_{code}^{guided}\)。在 800 数据集上,DiscoPER w/o Reflect(开放空间 + 不反思)就拿到 7/9,已经比 HeurekaBench/ExperiGen(指导空间 + 反思/不反思)的 3/9 高出一倍多。空间大小是基础。

第三,Reflect 是真的有用。在 800 上从 7/9 涨到 8/9,在 50K 上从 6/12 涨到 8/12。50K 上少 1 个模式被找回,但 DiscoPER 找到了 6 个 w/o Reflect 错过的另外 2 个。Support rate 也都涨了 2–8 个点。

坦率讲,0.7 个模式的提升看起来不算大。但要想到这是新发现——意味着 DiscoPER 真的在 Reflect 的指导下走到了搜索空间里 w/o Reflect 没走到的地方。

缩放行为

图 3:(a) 数据规模缩放。横轴是数据集大小 800→50K,纵轴是 Recall 和 Support Rate。Recall 从 17% 涨到 75%,Support Rate 从 20% 涨到 72%。(b) 迭代轮数缩放。横轴是迭代轮数 10→100,纵轴同上。Recall 从 33% 涨到 75%,Support Rate 从 98% 跌到 70%(图 3 来自论文)

图 3:缩放行为。(a) 数据越多,Recall 涨得越明显——这是"数据驱动的发现"的预期表现。Support Rate 也跟着涨,说明大数据集上假设的统计功效也更强。(b) 迭代越多,Recall 涨但 Support Rate 跌——典型长尾现象:早期假设容易成功,后期假设越来越 speculative,pass 率自然下降。

(a) 的曲线是单调上升的——800→2K 基本平,从 5K 开始 Recall 跳起来,到 50K 时 Recall 75%、Support Rate 72%。这说明 DiscoPER 是真的吃数据的,不是 LLM 背书——数据越多越能 ground 住。

(b) 的曲线是典型长尾:10 轮时 Support Rate 98%(基本稳赢),100 轮时跌到 70%(越来越难)。但 Recall 反过来涨:33% → 75%。这意味着 Reflect 在"难假设"上发挥了价值——把搜索从 easy region 拉到了 hard region。

反事实:发现是真的从数据里来的

这是我个人最喜欢的一组实验,因为它直接打到了"AI Scientist = 复读训练数据"这个最容易被质疑的点。

图 4:(a) 总假设数 vs 数据驱动假设数随迭代的变化。Total(实线红线)随迭代涨到 27 条,Data-based(实线蓝线)涨到 7 条就停。没有 reflect 时数据驱动假设数(虚线蓝线)只到 3 条。(b) 在反事实数据集 iNatDisco-800-CF 上:72 条假设被提出,65 条被验证拒绝,7 条是关于反事实 topic 的,5 条是数据驱动的支持发现(图 4 来自论文)

图 4:反事实评估。(a) 显示 DiscoPER 大部分假设是"基于 LLM 内部知识"的(红线远高于蓝线),但 Reflect 开启后数据驱动假设数翻倍多(3 → 7)。(b) 跑反事实数据集时,65/72 的"先验知识假设"被留出验证打回,5 条数据驱动的假设被验证为支持——而这 5 条全是反事实里的反转关系。

(a) 那张图很说明问题:随着迭代进行,"基于 LLM 内部知识"的假设占比越来越高(红线 27 条 vs 蓝线 7 条)。这其实是符合直觉的——LLM 在反复提出 hypothesis 的过程中会越来越倾向于从自己的 prior 知识里"想到"一些东西。但 Reflect 让数据驱动假设从 3 涨到 7,接近翻倍——这跟我前面说的"Reflect 把搜索从 easy region 拉回 hard region"是同一个故事。

(b) 是论文最硬核的一组数字:在反事实数据上,72 条假设被提出,其中 65 条"基于常识"的被留出验证打回(它们会去说"真菌秋季结果",但数据里真菌是春季结果),最终 5 条被支持——这 5 条全是反事实里的反转关系。这等于证明了 DiscoPER 不会瞎报常识,它会跟着数据走。

我自己做 AI for Science 相关项目的经验里,这种"系统能不能跟着数据走"的检验是最容易被忽略的——很多论文里报的漂亮数字,扣掉 LLM prior 之后其实没多少是真正从数据里"发现"的。DiscoPER 这套反事实设计是个非常好的范式,应该被后面所有 AI4Science 论文参考。

Reflect 的具体作用

图 5:左图是 hypothesis 类型分布(有 Reflect vs 无 Reflect),右图是 Reflect 在 100 轮 run 中输出的具体 guidance 例子(图 5 来自论文)

图 5:Reflect 的具体作用。左图:无 Reflect 时 92% 的假设是"X 高于 Y"这种简单成对比较;有 Reflect 后降到 69%,且出现了 interaction(2%)、correlation(2%)、peak(14%)、visual/habitat(2%)这些更结构化的假设。右图是 Reflect 在 iter 5/14/34/49 输出的四类 guidance 例子——分别对应 gap detection、compound generation、confound detection。

左图是 DiscoPER 的"二阶推理"具体落到 hypothesis 形态上的物化形态。Reflect 不只是"提了更多假设"——它让假设类型从单调的"X vs Y"扩展到了"X×Z 联合分布""X 在 Y 时点峰""X 的视觉属性"。这个分布变化我觉得比 Recall 的 1 个模式差距更说明问题——它说明 Reflect 在改变系统的搜索结构,而不只是"搜得更勤奋"。

右图的几个具体例子是这种"二阶推理"的人味体现:

  • iter 5 反思发现 "positional accuracy 测了 3 次都是 0%,建议放弃"——这是科学里的"放弃无效变量"决策
  • iter 14 反思发现 "Class-level taxonomic groups 在季节 timing 上还没测过"——这是缺口识别
  • iter 34 反思发现 "Fungi 和 Plantae 都被分开测过 lat/lon,建议测二者 joint 空间 niche"——这是归纳跳跃
  • iter 49 反思发现 "Hemisphere 在所有季节性 claim 里都当 moderator,建议先分层"——这是混杂控制

这四件事其实就是科学方法论的四个基本动作。DiscoPER 把它们显式化了。

视觉能力:真的能从图像里读信息

图 6:两个多模态发现的例子。左侧:VLM 描述哺乳动物在 "开阔栖息地",植物 "固定在原地"——引导出"哺乳动物纬度范围比植物宽"的 hypothesis,用 longitude 标准差验证(哺乳动物 22.1° vs 植物 8.3°),Cohen's d = 0.64。右侧:VLM 描述真菌在 "mossy forest floors with dense canopy",蒲公英在 "open ground with sparse vegetation"——引导出"真菌 vs 开花植物的生物地理学 niche 分离",用 latitude 均值验证(真菌 52.5°N vs 植物 44.2°N),Cohen's d = 0.57(图 6 来自论文)

图 6:多模态发现。两条 claim 的关键变量(habitat type、vegetation density)都不在元数据里,纯粹是 VLM 读图像读出来的。统计工具用的是 group_diff_test + longitude/latitude 元数据,effect size 0.57–0.64 都过阈值,文献也有对应支持。

这两个 case 是我看完整篇论文最让我信服的"它真的在做发现"的证据。Habitat type 和 vegetation density 这两个变量在 iNaturalist 的原始元数据里根本不存在——它们是 VLM 读图像读出来的标签。DiscoPER 用这些 VLM 标签 + longitude/latitude 元数据,跑出统计上显著的 pattern,且跟生态学文献(Cooper and Purvis 2010 / Tedersoo et al. 2014)一致。

这就是 \(\mathcal{H}_{code}^{open}\) 真正发挥威力的地方——它能"看到"传统方法看不到的变量。

基础 LLM 消融

基础 LLM Support Rate Recall
Claude Sonnet 4.5 72.7% 8/9
Claude Opus 4.6 76.5% 4/9
GPT-5.4 70.1% 3/9
DeepSeek V4 Pro† 65.2% 2/9

† 无 vision,文本 only。

一个反直觉的发现:Opus 4.6 的 Support Rate(76.5%)比 Sonnet 4.5(72.7%)还高,但 Recall 只有 4/9 vs 8/9。作者的解释是 Opus 更保守——它只敢提有把握的假设,所以 pass 率高,但搜索覆盖度低。这是个典型的"explore vs exploit"权衡在模型选择上的体现

GPT-5.4 和 DeepSeek V4 Pro(文本 only)明显掉队——3/9 和 2/9。这个差距提示了视觉通道对发现能力的不可替代性

可控性消融

Setting Default Prior Know. Guided
Support Rate 72.7% 45.5% 36.7%
Recall 8/9 7/9 6/9
Topic adherence N/A 54% 68%

让用户给"已知事实"或"研究方向"作为 prior,Topic adherence 从 N/A 涨到 54% / 68%——DiscoPER 真的能被引导。但 Support Rate 和 Recall 同时下降——给它先验反而让它的假设变得更窄、更浅。这个 trade-off 我觉得是开放发现系统都该警惕的:prior 帮你聚焦,但也会绑架你的搜索方向

经典因果基准的意外胜利

论文把 DiscoPER 拿到 SACHS 和 ASIA 这两个经典因果基准上跑,结果:

方法 SACHS F1 ASIA F1
DiscoPER 0.83 0.86
DiscoPER (no Reflect) 0.72 0.80
PC 0.48 0.77
GES 0.42 0.73
NOTEARS 0.36 0.68
DAG-GNN 0.33 0.65
GOLEM 0.38 0.69
GPT-4 BFS 0.74 0.93

SACHS 上的 0.83 把传统方法的 0.33–0.48 拉开了 0.35–0.5 个点,这是个很大的提升。更意外的是,去掉 Reflect 后从 0.83 掉到 0.72——说明 Reflect 在经典因果基准上也有用。

但我得稍微质疑一下这个比较的公平性:传统方法只输出一个 DAG,DiscoPER 输出的是经过 LLM 翻译的边集合。在"边 F1"这个 metric 上拿 LLM 跟传统方法比,有点像用大语言模型去刷问答榜——它表达力强,但它同时也被 LLM 自身的错误污染了。0.83 这个数字的"真"含金量需要更多 ablation 才能验证(比如加一个"只用 LLM 提变量、传统 NOTEARS 来发现边"的对照组)。但这个细节不影响主结论。

合成视觉基准:暴露了多模态发现的瓶颈

合成数据集(5000 张程序生成的图像,8 个真模式,3 类:metadata-only / vision-only / cross-modal)的结果:

迭代 方法 类型 Support Rate Recall
HeurekaBench All 34.5% 0/8
ExperiGen All 41.1% 1/8
100 Ours All 54.2% 3/8
100 Ours Metadata 2/2
100 Ours Vision 1/3
100 Ours Cross-Modal 0/3

跨模态模式 0/3——这个数字是论文里最让我皱眉的一项。作者也承认了原因:"the agent often proposes correct visual hypotheses ... but the current vision tool pipeline lacks the statistical power to validate them on held-out data, as individual image classification followed by a chi-squared test introduces substantial noise."

翻译成大白话:问题不在假设生成,在验证。VLM 把图像分成"红色"和"非红色",然后跟季节做 χ² 检验——但 VLM 分类本身有噪声,5000 张图分下来信号被稀释了。

这其实指出了多模态自主发现的下一个关键瓶颈:如何把 VLM 输出的视觉特征稳定地工程化成可以反复测试的数值特征。一种思路是让 VLM 输出的同时给出 uncertainty;另一种是用 VLM embeddings 替代离散分类。这个问题没解决,DiscoPER 在更野生的多模态数据上就会掉链子。


计算开销

附录里作者也算了一笔账:

  • 总共跑 ~86 个 run
  • ~8250 次 LLM API call
  • 输入 token 33M,输出 token 8M
  • 总成本(按 Sonnet 定价)~220 美元
  • 端到端 wall-clock ~72 小时

每轮 3 次 LLM call(Propose + experiment planning + Reflect 每 5 轮)。50 轮 30–60 分钟,100 轮 1–2 小时。

这个成本对学术研究完全可以接受,对工业部署还有压力。如果要做成"持续在线运行"的发现系统,220 美元一次的实验成本还偏高。但作为论文研究的标准,已经是合理范围了。


我的判断

亮点

  1. 二阶推理的形式化是真的漂亮。Reflect 不是花拳绣腿,guidance 的三类输出(gap / compound / confound)正好对应科学方法论的三个基本动作。作者不是硬塞一个 reflection prompt,而是把它做成了一个有明确输入输出语义的模块。这给后面所有想做"长期记忆+反思"的 Agent 系统立了一个范式。

  2. 统一坐标系(ℋ × 𝒫 × Reflect) 是这篇论文另一个真正有持久价值的贡献。它把 AI Scientist、AI Co-Scientist、Robin、HeurekaBench、ExperiGen、NOTEARS、PC 这些看起来八竿子打不着的系统塞进了同一个框架,并说清楚每个系统的能力边界在哪。这种工作对领域的发展比单纯刷一个 SOTA 更有意义。

  3. 反事实评估是范式级别的方法论创新。iNatDisco-800-CF 这一招应该被所有 AI4Science 论文效仿。能在反常识数据上仍然报告"数据告诉我的事实"——这才是"发现"和"回忆"的根本区别。

  4. 图像 VLM + 元数据联合推理 的 case study 让我相信 \(\mathcal{H}_{code}^{open}\) 确实能撑住"从图像里读出新变量再去做统计"这件事。DiscoPER 在 iNatDisco 上找 habitat type 的那个 case 是真的漂亮。

我觉得有疑问的地方

  1. 多模态验证瓶颈没解决。合成视觉基准 0/3 的跨模态 Recall 暴露了"假设生成 OK、验证失败"的问题。在真实、更杂乱的数据上,DiscoPER 的视觉能力是不是真的稳——目前看不出来。

  2. LLM 选型对结果影响巨大。Sonnet 4.5 跟 GPT-5.4 差了 5 个真模式(8/9 vs 3/9),这不是小波动。这意味着 DiscoPER 的"发现能力"高度依赖底座模型。如果底座模型换了,结果可能完全不可复现。这对"开放发现系统"这个愿景是个挑战——它到底是个系统,还是个用某个特定 LLM 才能 work 的实验?

  3. 8/9 跟 7/9 之间的差距只来自 Reflect——这个 ablate 不够有说服力。要更强的证据是看 Reflect 输出的 guidance 跟实际 trajectory 之间的因果链——比如某个 Reflect 输出的 gap detection 是否真的把假设空间拉到了对应区域。论文只给了 4 个具体 example(iter 5/14/34/49),缺全 run 的 guidance-trail 分析。

  4. 支持率 72.7% 这个数字容易被误读。这个数字是"被提出的假设中过留出验证的比例",但 DiscoPER 提了 100 条假设里只有 ~25 条进 claim store,其他 75 条都失败了。支持率高≠发现能力强——它可能只是"模型提的少+提的准"。论文应该报"每条真模式平均需要提多少条假设"这种更细的效率 metric。

  5. 没有真的"开放"。iNatDisco 用的是 iNaturalist 这种已经被研究透了的数据集,且 ground truth 全是同行评议过的成熟生态 pattern。LLM 的训练集大概率见过这些 paper。说"开放发现"是有点夸的——更准确的说法是"在没有显式研究问题的前提下,在已知数据集上恢复已知 pattern"。真正的开放发现应该用 LLM 训练截止后产生的新数据。但这个批评可能过苛——目前所有 AI4Science 系统都在用这种半开放数据。

工程启发

如果你也在做类似系统,DiscoPER 给我最直接的启发有三条:

  • 不要让你的 LLM 循环做金鱼。把"已发现的 claim"和"已失败的 claim"都结构化地存起来,周期性让一个独立的 LLM 做反思——成本极低(每 5 轮一次),收益明确(+1 个真模式)。
  • 限制 hypothesis 的表达力是天花板。让假设是 Python 代码而不是结构化模板,是从"边"到"模式"的关键升级。
  • 一定要做反事实评估。在 AI4Science 领域,"系统能不能跟着数据走"是核心 credibility,iNatDisco-800-CF 的范式值得抄。

收尾

DiscoPER 让我重新审视了一个老问题:Agent 的"反思"应该是什么形态

我之前看到的"反思"大多是 ReAct 那种——在某一步失败后,回溯一步重试。这是个微观尺度的反思。DiscoPER 把反思拉到了整个发现历史的尺度——它不反思"我刚刚这一步做得对不对",它反思"我到现在为止做了什么、还没做什么、哪些事之间有被我忽略的连接"。

这个升维看起来轻巧,但意义是结构性的。当 Agent 真的开始对自己的认知地图做元级推理,它就从"执行者"变成了"研究者"。

当然,这篇论文离真正的"AI scientist 能独立做科研"还差得很远。视觉验证的瓶颈、底座模型的依赖、真"开放"数据集的缺乏——这些都不是 DiscoPER 一篇论文能解决的。但它给整个领域立了一块新坐标——以后谈"自主发现系统",大概率绕不开 Propose–Evaluate–Reflect 这条主线。

最后留一个我没想明白的问题:DiscoPER 的 Reflect 是显式调用的,每 5 轮一次。如果让 Agent 自己判断什么时候需要反思——这算不算下一阶的"元元反思"?做到极致会不会变成"我意识到我可能正在 LLM prior 上反复横跳,所以主动要求一个 reflection"?这个方向我觉得值得一篇文章。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我。