科学发现AI系统工程实现详解¶
最后更新: 2026-04-17 | 9个系统的模型架构/训练/评估
1. AI Feynman (Science Advances 2020)¶
算法4步流程¶
Step 1 MLP拟合: 6层FC [128,128,128,64,64,64], Softplus激活, Adam lr=0.005, weight_decay=1e-2, 100 epochs, batch=2048
Step 2 对称性检测:
-
可分性: f_rms⁻¹·|f(x₁,x₂)-f(x₁,c₂)·f(c₁,x₂)/f(c₁,c₂)| < 10×验证误差
-
平移对称: f(x₁+a,...) ≈ f(x₁,...)
-
维度分析: 5基本量纲(M,L,T,θ,Q), 矩阵 Mp=b 零空间
-
阈值: ε_sym = 7×NN验证误差
Step 3 递归分解: 检测到对称性→拆成低维子问题
Step 4 暴力符号搜索: 逆波兰表达式编码, 三级字母表逐步扩展, RMSE<1e-5终止
评估¶
-
100/100 Feynman方程 (vs Eureqa 71)
-
正确标准: 代数化简后 f'-f=0
-
计算: 7秒~7032秒/方程, 最大2小时
-
开源: github.com/SJ001/AI-Feynman
2. LLM-SR (ICLR 2025 Oral)¶
LLM-SR 架构总览 (Shojaee et al., ICLR 2025):

算法¶
10岛屿并行进化, ~2500次迭代:
-
随机选岛屿
-
Boltzmann采样k=2个方程(偏好高分+短)
-
LLM生成b=4个方程骨架(τ=0.8)
-
scipy.BFGS优化参数(30秒超时)
-
适应度=-MSE, 改善则入库
Prompt模板¶
-
问题描述+变量名/单位+约束
-
历史成功方程作为few-shot
-
LLM: GPT-3.5-turbo (主) / Mixtral-8x7B (开源)
关键参数¶
-
岛屿m=10, 采样k=2, 生成b=4
-
优化器: scipy BFGS, 超时30秒
-
总迭代~2500次 (vs 传统SR 200万+)
性能 (自定义OOD基准)¶
-
Oscillator OOD NMSE: 0.0005 vs PySR 0.0016
-
E.coli OOD: 0.0264 vs PySR 1.0141
-
开源: github.com/deep-symbolic-mathematics/LLM-SR
注: 论文回避Nguyen-12基准(LLM可能记忆答案)
3. FunSearch (Nature 2024)¶
架构¶
程序数据库(m个岛屿) → 采样k=2个高分程序 → LLM(Codey/PaLM家族)生成新函数 → 沙箱执行 → 评估器验证 → 高分入库
-
每4小时替换最差m/2岛屿(克隆最优)
-
总~10⁶次LLM采样
-
评估器: 纯数学验证(多项式时间, 100%可靠)
帽集发现¶
-
搜索的是"构造优先级函数"(打分策略), 非集合元素
-
n=8: 发现大小512 (历史记录496)
-
可形式化验证: 输出是数学对象, 独立验证器检查
开源¶
- github.com/google-deepmind/funsearch (不含LLM和分布式)
4. Plan2Explore (NeurIPS 2020)¶
架构: RSSM + K个并行预测头¶
标准Dreamer RSSM + K个MLP预测头(参数独立, 结构相同)
内在奖励 = K个预测头的方差:
r_intrinsic = Var_{k=1..K}[ẑ^k_{t+1}]
= (1/K) Σ_k ||ẑ^k - mean(ẑ)||²
大方差→高不确定性→高内在奖励→优先探索
实验协议¶
-
零奖励探索: 1×10⁶步 (仅内在奖励)
-
零样本适应: 直接测试外在奖励
-
少样本适应: 5-7.5×10⁵步微调
DMControl性能¶
-
Cheetah Run: 784.45 (vs Dreamer~750, ICM 495, 随机0.78)
-
Hopper Hop: 432.58 (vs Dreamer 336.57)
-
样本效率比Dreamer提升~2.5×
开源¶
- github.com/ramanans1/plan2explore
5. SciNet (PRL 2020)¶
架构: β-VAE¶
Encoder: 2层MLP [100,100], ELU激活 → μ,σ → z~N(μ,σ²)
Decoder: 镜像对称 [100,100]
训练: L = -E[log p(x|z)] + β·KL(q||p), β=0.001~0.1分阶段
潜在维度选择¶
-
不手动设置, 扫描实验确定
-
RMSE vs 维度曲线, 在"最小充分维度"出现折角(elbow)
-
行星: 2维折角 (地球+火星各1自由度)
"发现日心说"验证¶
-
2个潜在激活值是日心角度的线性组合
-
网络输入地心角度, 输出的潜在表示与日心角度对齐
-
排除偶然: 网络主动发现了更简洁的坐标系
-
RMSE <0.4%
各系统潜在维度¶
-
阻尼单摆: 理论2→发现2, RMSE<2%
-
粒子碰撞: 理论1→发现1, RMSE<4%
-
太阳系: 理论2→发现2, RMSE<0.4%
-
双量子比特: 理论6→发现6
开源¶
- github.com/eth-nn-physics/nn_physical_concepts
6. DreamCoder (PLDI 2021)¶
Wake-Sleep库学习¶
初始库 L₀ = 基础原语 (car, cdr, cons, Y-combinator, +, -, *, /)
WAKE: 束搜索(k=5)枚举程序, 按P[ρ|x,L]排序
SLEEP抽象: 从解出程序中提取可复用子组件加入库L (版本空间代数+e-graph, ~10¹⁴潜在重构→多项式时间)
SLEEP做梦: 训练识别网络, 50%重放+50%幻想数据
8次循环后: 学会93%的60条物理定律
库发现示例¶
-
向量内积: λv₁ λv₂. fold(zip(v₁,v₂), 0, λa λp. a + fst(p)*snd(p))
-
逆平方律: λr. 1/(r*r) (覆盖牛顿引力+库仑电场)
开源¶
- github.com/ellisk42/ec
7. Coscientist (Nature 2023)¶
架构: GPT-4 + 机器人¶
GPT-4 Planner → WebSearch + 文档搜索 + 代码执行 + 硬件控制
硬件: Opentrons OT-2液体处理机器人 + Emerald Cloud Lab远程实验室
合成任务¶
-
阿司匹林: 正确规划路线(水杨酸+乙酸酐酯化), 路线规划级
-
铃木/园头宫浦偶联(Pd催化): 实际机器人执行成功
安全问题!¶
-
GPT-4曾推断出神经毒剂(沙林)合成路线
-
安全约束仅prompt级别(软约束, 可绕过)
-
代码因安全原因仅部分公开
8. ARC-AGI 解决方案¶
TTT-LoRA 方法总览 (Akyürek et al., 2024):

TTT 详细架构 — 测试时对预训练模型做 LoRA 微调:

MindsAI TTT (55.5%, 获$500K)¶
-
基础模型: T5系列(encoder-decoder)
-
在每道题的demonstration pairs上微调
开源TTT复现 (Akyürek 2024)¶
-
模型: Llama-3 8B
-
LoRA: rank=128, alpha=16, 应用于Q/V/MLP/输出
-
TTT: lr=5e-5~1e-4, 2 epochs, batch=1-2
-
数据增强: 旋转(0°/90°/180°/270°)+翻转+颜色置换(30%概率)
-
推理: 多变换投票+层次集成
o3 (87.5% → ARC-AGI-2 仅4%)¶
-
自然语言程序搜索(非传统DSL)
-
类AlphaZero的MCTS推测
-
高算力172×: 每题数千万token/数千美元
为什么ARC-AGI-2重置到<5%?¶
-
抗暴力搜索: AGI-1约49%可穷举, AGI-2消除
-
多规则交互: 需同时应用互相依赖的规则
-
上下文符号: 每题定义新语义, 无法预训练记忆
-
多步依赖: 步骤N输出决定步骤N+1
综合对比表¶
-
AI Feynman: 物理启发+枚举, 符号方程, 开源✓, 可复现✓
-
LLM-SR: LLM+进化, 科学方程骨架, 开源✓, 可复现✓(需API)
-
FunSearch: LLM+进化, 数学构造函数, 部分开源, 部分可复现
-
Plan2Explore: 世界模型+集成, 内在激励, 开源✓, 可复现✓
-
SciNet: VAE+信息瓶颈, 物理潜变量, 开源✓, 可复现✓
-
DreamCoder: 程序合成+库学习, λ抽象, 开源✓, 可复现✓
-
Coscientist: LLM+机器人API, 化学合成, 部分(安全限制), 否
-
ARC TTT: 测试时微调, 抽象推理, 部分, 是(Akyürek复现)
参考¶
核心数学公式¶
AI Feynman: 符号回归算法¶
核心思路:通过数据驱动发现物理公式的解析表达式。
多项式拟合(Step 1)¶
目标:\(\min_{\mathbf{c}} \sum_{i} \left( y_i - \sum_{\alpha} c_\alpha \prod_j x_{ij}^{\alpha_j} \right)^2\)
其中 α 遍历所有次数 ≤ d 的单项式指标。多项式度 d=4,变量数 n 时复杂度 O(n⁴)。
对称性检测(Step 2)¶
平移对称:\(f(x_1+\delta, x_2+\delta) \approx f(x_1, x_2) \; \Rightarrow \; f = g(x_1 - x_2)\)
缩放对称:\(f(\lambda x_1, \lambda x_2) \approx \lambda^k f(x_1, x_2) \; \Rightarrow \; f = x_1^k \cdot h(x_2/x_1)\)
通过数值检验 ε-近似对称性,将 n 变量问题降为 (n-1) 变量。
神经网络分解(Step 3, AI Feynman 2)¶
可加性:\(f(x) \approx g(x_{S_1}) + h(x_{S_2}), \quad S_1 \cap S_2 = \emptyset\)
可乘性:\(f(x) \approx g(x_{S_1}) \times h(x_{S_2})\)
组合性:\(f(x) \approx g(h_1(x_{S_1}), h_2(x_{S_2}))\)
训练 MLP 拟合 f,检查 Jacobian 矩阵 ∂f/∂x 的秩是否 < n(可分解性的充要条件)。
Jacobian 秩检验:\(\text{rank}\left(\frac{\partial f}{\partial \mathbf{x}}\right) < n \; \Rightarrow \; \text{可分解}\)
LLM-SR: LLM 引导的符号回归¶
BFGS 常数优化¶
LLM 生成骨架表达式 f(x; c₁, c₂, ...),BFGS 优化常数:
\(\min_{c_1, c_2, \ldots} \sum_{i=1}^{N} \left( y_i - f(x_i; c_1, c_2, \ldots) \right)^2\)
评估指标:\(R^2 = 1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}\)
岛屿进化模型¶
适应度:\(\text{fitness}(f) = R^2(f) - \lambda \cdot \text{complexity}(f)\)
λ 控制简洁性偏好。每 T=20 轮岛间迁移最优个体,保持多样性。
提示构建:\(\text{prompt} = \text{task\_desc} + \text{top-}k\text{ from island} + \text{new hypothesis request}\)
FunSearch: 进化式程序搜索¶
评估函数(帽集问题)¶
在 F₃ⁿ 上找最大帽集(无三点共线子集):
\(\max_{S \subseteq \mathbb{F}_3^n} |S| \quad \text{s.t.} \quad \forall a,b,c \in S: a+b+c \neq \mathbf{0}\)
已知下界:\(|S| \geq 2 \cdot 3^{n/3} \quad (\text{Edel, 2004})\)
FunSearch发现:\(|S| = 512 \text{ for } n=8 \quad (\text{超越 Edel 下界})\)
程序数据库更新¶
岛 i 采样概率:\(P(\text{island}_i) \propto \text{softmax}\left(\frac{\text{score}_i}{T}\right)\)
T = 温度参数。每个岛维护最优 k=2 程序,Codey LLM 采样 temperature=1.0。
Plan2Explore: 好奇心驱动探索¶
RSSM 世界模型¶
确定性路径:\(h_t = f_\theta(h_{t-1}, s_{t-1}, a_{t-1})\)
随机状态后验:\(s_t \sim q_\theta(s_t | h_t, o_t)\)
随机状态先验:\(\hat{s}_t \sim p_\theta(s_t | h_t)\)
集成分歧奖励¶
K=5 个独立预测头,分歧 = 预测方差:
\(r_{\text{explore}}(s_t, a_t) = \text{Var}_{k=1}^{K}\left[\hat{s}_{t+1}^{(k)}\right] = \frac{1}{K}\sum_{k=1}^{K} \|\hat{s}_{t+1}^{(k)} - \bar{s}_{t+1}\|^2\)
高分歧 → 世界模型不确定 → 值得探索。Zero-shot 迁移时替换为任务奖励。
MPPI 规划¶
\(a_{1:H}^* = \arg\max_{a_{1:H}} \mathbb{E}_{s_{1:H} \sim p_\theta}\left[\sum_{t=1}^{H} r(s_t, a_t)\right]\)
规划 horizon H=12,采样 1000 候选序列,选奖励加权平均。
SciNet: β-VAE 物理坐标发现¶
β-VAE 目标¶
\(\mathcal{L} = -\mathbb{E}_{q(z|x)}\left[\log p(x|z)\right] + \beta \cdot D_{\text{KL}}\left(q(z|x) \| p(z)\right)\)
编码器:\(q(z|x) = \mathcal{N}(\mu_\phi(x), \sigma_\phi^2(x))\)
解码器:\(p(x|z) = \mathcal{N}(f_\psi(z), \sigma^2 I)\)
β 退火策略¶
β 从 0.001 渐增到 0.1,分阶段训练:
\(\beta(t) = \min\left(\beta_{\max}, \; \beta_0 + \frac{\beta_{\max} - \beta_0}{T_{\text{anneal}}} \cdot t\right)\)
低 β → 先学好重构;高 β → 压缩潜空间到最少维度。太阳系:z_dim=4 → 2 个活跃维度(日心经纬度)。
日心坐标涌现验证¶
互信息:\(I(z_i; \theta_{\text{helio}}) \gg I(z_i; \theta_{\text{geo}})\)
潜变量 z₁, z₂ 与日心经纬度的相关系数 > 0.98,与地心坐标低相关。
DreamCoder: 贝叶斯程序库学习¶
联合后验¶
\(P(L, \{\rho_j\} | \{x_j\}) \propto P(L) \prod_j P(\rho_j | L) \cdot P(x_j | \rho_j)\)
库先验:\(P(L) \propto 2^{-|L|_{\text{description\_length}}}\)
程序先验:\(P(\rho | L) \propto 2^{-|\rho|_L}\)
|ρ|_L = 在库 L 下的描述长度。好的库让程序更短 → P(ρ|L) 更高。
Wake-Sleep 迭代¶
Wake:\(\rho_j^* = \arg\max_{\rho} P(x_j | \rho) \cdot P(\rho | L)\)
Abstraction:\(L^{\prime} = \arg\max_L \sum_j \log P(\rho_j^* | L) + \log P(L)\)
Sleep (梦):\(\text{sample } \rho \sim P(\rho|L^{\prime}), \; x = \text{exec}(\rho) \; \Rightarrow \; \text{train recognition model}\)
Abstraction 阶段用 anti-unification 从已解程序中提取共享子结构加入库。
Coscientist: LLM+机器人实验¶
Coscientist 是系统集成,核心不在数学公式,而在工具链编排。关键量化指标:
合成成功率:\(\text{Yield} = \frac{m_{\text{product}}}{m_{\text{theoretical}}} \times 100\%\)
Suzuki 反应:\(\text{Yield}_{\text{best}} = 80\% \;(\text{GPT-4优化后, vs 初始} \sim 30\%)\)
搜索空间:\(|\mathcal{A}| = (\text{温度}) \times (\text{浓度}) \times (\text{催化剂}) \times (\text{时间}) \approx 10^4\)
ARC-AGI: 测试时训练 (TTT)¶
TTT-LoRA 目标¶
在推理时对预训练模型做 LoRA 微调:
\(\mathcal{L}_{\text{TTT}} = -\sum_{(x_i, y_i) \in \text{demos}} \log P_{\theta + \Delta\theta}(y_i | x_i)\)
LoRA 更新:\(\Delta\theta = B \cdot A, \quad B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times d}, \; r \ll d\)
数据增强:\(\{(x, y)\}_{\text{aug}} = \text{AffineTransforms}(\text{demos}) \quad (\text{旋转+翻转+颜色置换})\)
MindsAI 方法¶
集成投票:\(y^* = \text{majority\_vote}\left(\{f_{\theta_k}(x_{\text{test}})\}_{k=1}^{K}\right)\)
K=32 个不同数据增强下微调的模型投票。像素级多数投票确保鲁棒性。
ARC-AGI-2 难度升级¶
AGI-1 → AGI-2:\(\text{score}_{\text{o3}} : 87.5\% \rightarrow 4\%\)
关键变化:任务需要多步组合推理,单步模式匹配失效。