论文
算法发现
背景
LLM-SR: Scientific Equation Discovery via Programming with Large Language Models
LLM-SR:把方程写成程序,用 LLM 先验加进化搜索做科学方程发现
Parshin Shojaee, Kazem Meidani, Shashank Gupta, Amir Barati Farimani, Chandan K Reddy · Virginia Tech · ICLR 2025 (Oral) · 2024-04 · 被引 119
一句话把方程骨架表示为 Python 程序,让 LLM 基于科学先验反复提出假设、用 BFGS/Adam 拟合参数、进化式维护经验缓冲区,在 4 个自建科学基准上 NMSE 大幅优于 PySR/uDSR 等符号回归基线(尤其 OOD),ICLR 2025 Oral。
这是什么
符号回归(symbolic regression)传统上只从数据出发、在表达式树空间里搜索,既忽略了科学家实际依赖的领域先验,表示能力也受限。LLM-SR 的核心想法是:把候选方程写成带可调参数的 Python 函数(equation skeleton as program),让 LLM 用它的科学知识和代码生成能力来提出假设,再用数值优化器把参数拟到数据上。方法论与 DeepMind 的 FunSearch 同源(作者也明确致谢并基于其代码),等于把 FunSearch 的'LLM + 进化程序搜索'范式从组合数学搬到了方程发现。
作者特意没有用烂大街的 Feynman 方程做评测——他们用 perplexity 和发现曲线验证了 LLM 对 Feynman 方程大概率是背过的——而是自建了 4 个改造过的问题:两个非线性阻尼振子、E. coli 生长率(4 变量)、材料应力-应变,并同时在 in-domain 和 out-of-domain 测试集上报 NMSE。作者:Virginia Tech / CMU,2024-04 挂出,ICLR 2025 Oral,引用 119。
LLM-SR 整体框架:(a) LLM 根据问题规范 + 历史方程程序示例,生成带 params[i] 占位符的方程骨架程序(附物理注释);(b) 用 BFGS/Adam 在数据上优化参数并打分;(c) FunSearch 式 islands 经验缓冲区管理好的程序,回填 prompt 形成进化循环。机制与做法
三段循环:假设生成 → 数据评估 → 经验管理
(a) 假设生成:prompt 里给问题的自然语言描述、评估函数代码、以及从经验缓冲区取出的 k 个历史方程程序作为 in-context 示例,LLM(GPT-3.5 或 Mixtral-8x7B,均冻结)每轮采样 b 个新的方程骨架函数,函数体里用 params[i] 占位数值系数,并附带物理意义注释(如 'driving force'、'nonlinear damping')。
(b) 数据驱动评估:对每个骨架用 numpy+scipy BFGS(或 torch+Adam,作者观察 numpy+BFGS 略好)优化参数,按拟合误差打分。(c) 经验管理:沿用 FunSearch 的 islands 模型维护多个子种群的 experience buffer,按分数采样好的程序回填 prompt,形成进化循环。
主结果
对比 GPlearn、NeSymReS、E2E、DSR、uDSR、PySR 六个基线:LLM-SR (GPT-3.5) 在 Oscillation 2 上 ID NMSE 2.12e-7 / OOD 3.81e-5,而最好的基线 PySR 是 0.0002 / 0.0098;E. coli 生长问题上 LLM-SR (Mixtral) OOD NMSE 0.0037,所有传统基线 OOD NMSE 均 >1(严重过拟合观测区间)。差距在 OOD 设定下最明显,作者归因于 LLM 先验让方程结构更接近真实物理形式,而非纯拟合。
关键结果
- 四个基准(oscillator1/2、bactgrow、stressstrain)上 LLM-SR 两个 backbone 全部大幅优于 6 个 SR 基线;OOD 差距比 ID 更大,如 E. coli 问题 OOD NMSE 0.0037 vs 基线全部 >1。
- Feynman 方程不适合评测 LLM 方程发现:GPT-3.5 在 Feynman 问题上几轮迭代就到极低 NMSE,且 Mixtral 对 Feynman 方程的 perplexity 显著低于自建基准,说明是背出来的而不是搜出来的。
- 消融:去掉科学问题描述先验、去掉迭代 refinement、去掉参数优化器,性能都明显下降;LLM 先验使搜索效率显著高于纯进化基线(同等迭代数下发现曲线更陡)。
- numpy+BFGS 骨架优化略好于 torch+Adam,作者归因于当前 LLM 写 numpy 更熟练——一个很实际的工程观察。
实证核查
扎实代码、数据、specs 齐全且与论文声称一致,方法本身被后续大量工作(含作者自建的 LLM-SRBench)沿用为标准基线;但'防背诵'的自建基准只有 4 个问题,且论文表格的 NMSE 评估脚本没随仓库发布。
论文声称 'Code and data are available',方法在 4 个自建科学基准上评测。
GitHub deep-symbolic-mathematics/LLM-SR(MIT,272 stars)结构完整:llmsr/ 主流程、llm_engine/ 本地模型服务、specs/ 各问题 prompt 规范、data/ 下恰好是论文的 4 个问题(oscillator1、oscillator2、bactgrow、stressstrain),README 的运行方式(本地 Mixtral / OpenAI API 两条路)与论文实验设置对得上。
Table 1 用 Normalized MSE 报告主结果,LLM-SR 比基线低若干个数量级。
repo issue #7(open)指出:仓库里搜索阶段的打分用的是未归一化 MSE(specs/specification_*_numpy.txt 第 25 行),而论文评测用的 NMSE 归一化方式(除以 var 还是 mean(y²))在仓库里找不到对应代码,作者未答复。复现 Table 1 的具体数字需要自己猜评估细节;不影响方法有效性,但影响逐数字复现。
自建基准'carefully designed to prevent LLM recitation',以证明性能来自推理而非记忆。
作者自己在后续 LLM-SRBench(ICML 2025 Oral, arXiv:2504.10415)中承认需要更严格的防记忆评测:在 239 个问题的新基准上,包括 LLM-SR 在内的所有 LLM 方程发现方法最佳也只有 31.5% 的 symbolic accuracy(openreview.net/forum?id=SyQPiZJVWY)。本文 4 个问题上的亮眼数字应理解为'在小规模精心设计的问题上可行',离通用方程发现还很远。
与我们方向的关系
对课题组的价值不在符号回归本身,而在范式:LLM-SR 几乎是 FunSearch 配方的直接移植——假设写成程序、可执行评估器打分、islands 经验缓冲区做进化——证明了这套'LLM 先验 + 进化搜索假设空间'的框架可以换域复用(组合数学 → 科学方程),而且用 GPT-3.5/Mixtral 这种量级的模型就够。做 LLM 驱动的算法/结构发现时,它的 spec 文件设计(问题描述 + 评估代码 + 历史程序示例三段式 prompt)和'参数占位 params[i] + 外部数值优化器'的解耦是可以直接借鉴的工程模板。
另一个可借鉴的点是评测方法论:先用 perplexity / 发现曲线检验目标是否已被 LLM 记忆,再决定基准能不能用——这对任何'LLM 发现了 X'类工作都是必要的卫生检查。后续的 LLM-SRBench 也说明,这条线的瓶颈已从'能不能跑通'转向'如何证明不是背的'。
阅读笔记
搜索阶段打分和论文评测指标不是一套代码(issue #7);若要复现注意 spec 里是裸 MSE。基线对比中 SR 方法迭代数与 LLM-SR 的采样预算不同量纲,横向比较搜索效率时需小心。
材料清单
TeX 源码已存档:Raw/llm-sr/source/
同类条目