大模型应用
用LLM引导的进化搜索从数据中发现可解释科学方程
当需要从实验数据中自动发现可解释的数学/物理方程(符号回归)时,用LLM-SR多岛进化算法进行方程搜索。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用LLM引导的进化搜索从数据中发现可解释通用
解决思路
- 定义问题规格:明确输入变量(含类型,如 x: np.ndarray、v: np.ndarray)、输出变量、评估函数(通常为带参数优化的负MSE)以及引导方程发现的物理领域知识。
- 编写方程模板:用 @equation.evolve 装饰器定义方程函数,函数签名包含输入变量和 params: np.ndarray,返回预测值,并在 docstring 中描述物理含义。
- 初始化多岛缓冲区:创建 N 个岛(默认 10 个)以保持种群多样性,每个岛维护独立的方程聚类,聚类按性能特征对公式分组。
- 运行进化搜索循环:重复以下步骤直到收敛或达到最大采样数——随机选择一个岛;从聚类中按分数做 softmax 加权采样出顶部方程构建提示;让 LLM 生成改进版方程;在测试数据上执行并计算适应度;若有效则注册到该岛的聚类中。
- 构建提示时把历史方程作为版本化序列呈现:依次列出 equation_v0、equation_v1 等,每个新版本 docstring 注明是上一版的改进,让 LLM 补全下一个版本。
- 定期执行岛重置以维持多样性(默认每 4 小时):按最佳分数排序各岛,重置排名后 50% 的岛,用存活岛中的最佳方程作为种子,并重启聚类采样温度。
- 搜索结束后提取最佳方程:收集每个岛的最佳方程,按适应度排序,尽可能做代数化简,并给出物理解释后报告。
- 聚类采样使用温度调度的 softmax:temperature = T_init * (1 - (num_programs % period) / period),probabilities = softmax(cluster_scores / temperature);高温偏向探索,低温偏向利用最佳聚类;聚类内部优先选择更短的程序(奥卡姆剃刀)。
- 遵守约束:方程只能使用标准数学运算;参数优化用 scipy BFGS 或 Adam;适应度为负 MSE(越高越好);方程评估需设超时保护;禁止递归方程;优先物理可解释性而非纯拟合。
- 参考 LLM-SR 模式文档(prompts、evolution、sampling):~/.claude/skills/symbolic-equation/references/llmsr-patterns.md。
适用边界 · 注意事项
- 数据量极小或变量关系已被已知公式完全确定时,无需进化搜索。
- 无法定义合理的物理上下文或评估函数时,LLM 难以生成有意义的方程。
- 需要严格实时或极低算力预算的场景,因为多岛进化与 LLM 调用开销较大。