PySR 与符号回归:用于科学发现的可解释机器学习
符号回归是一种通过进化算法搜索人类可读的符号表达式(而非黑箱神经网络)来拟合数据的方法,而 Miles Cranmer 开发的 PySR 软件包是当前最强大、设计最完善的现代化实现之一。
核心要点
为什么需要可解释的机器学习模型
- 物理与机器学习结合的一大目标是从数据中学习物理量(如哈密顿量、拉格朗日量)。
- 深度神经网络虽然拟合能力强,但属于“不透明的黑箱”,难以理解其内部运作机制——即缺乏可解释性。
- 我们希望获得的模型是:人类可读、表达式简单、能直接解释物理意义的符号公式。
- 符号回归正是为了实现这一目标而存在:它输出的不是权重矩阵,而是一个真正可以写下来的数学表达式。
主要内容概览
- 演讲者介绍了一个名为 PySR 的 Python 符号回归软件包。
- PySR 由 Miles Cranmer 开发,他是英国剑桥大学的教授。
- PySR 被誉为“科学发现领域维护最好、最强大的可解释机器学习软件包”。
- 全球研究社区正用其发现人类此前无法写出方程的、可解释的符号方程——这在一定程度上正在改变科学发现的方式。
详细解析
符号回归的定义与原理
“符号回归”= 我们进行回归(机器学习过程),但输出的是一个符号化(symbolic)、人类可读的公式,由正弦、余弦、指数等基本函数构成。
- 核心思想:搜索输入输出函数来描述数据,但要求该函数是一个可读表达式。
- 函数以组合树(compositional tree / function tree) 的形式表示与搜索。
- 搜索算法在大量函数树之间搜索,动态添加节点、优化常数项,逐步逼近能更好预测观测数据的函数。
奥卡姆剃刀 / 简约原则
- 引用爱因斯坦式原则:“模型应该尽可能简单来描述数据,但不过于简单。”(the simplest model to describe the data, but no simpler)
- 符号回归天然适合将简约原则(principle of parsimony) 内嵌进学习算法。
- 模型中存在“准确度 vs 复杂度”的权衡;可以选择在给定复杂度下准确度最优的模型。
历史背景:遗传编程与遗传算法
这不是一个新方法,而是有数十年历史的技术套路的现代升级版。
| 术语 | 年代 | 说明 |
|---|---|---|
| 遗传算法(Genetic algorithms) | 1960s–1970s | 符号回归的祖先 |
| 遗传编程(Genetic programming) | 1980s(本质上现代形式) | 使用函数树的早期符号回归形态 |
- 遗传编程可追溯到 20 世纪 80 年代,是遗传算法的“后代”。
- 原理类比生物进化/繁殖:两条亲本的“DNA”(函数树)片段互换(交叉),后代可能因获得更优组合而呈现出更强的预测能力。
关键遗传操作
- 变异(Mutation)
- 随机选择一个节点并替换(例如把“+”号换成“−”号),或改变一个常数。
- 类比:紫外线照射细胞引起 DNA 的变化,后代可能因此获得某种(理论上有益的)修改。
- 交叉/重组(Crossover)
- 取两个(都表现不错但不完美的)函数树,交换各自的子树/分支,生成后代。
- 注意:统计上有“均值回归”效应——多数情况下性能不会提高,但偶尔会产生更优后代。
- 简化(Simplification)
- 对表达式做因式分解、归约,消除冗余。
- 类似于 Mathematica 中旧式的
FullSimplify功能:将表达式化简到最简形态。
- 常数优化(Optimizing constants)
- 优化表达式前的系数等常数项,对整个符号回归过程的性能影响巨大。
- 整个过程通常从一个函数的群体(population) 出发,通过以上遗传操作逐代演化,使后代逐代逼近数据。
函数树的可视化示例
- 函数树示例:表达式
1.15y + 0.86 - 根节点为“加法”操作,取一个常数子节点(0.86)和一个子树分支
1.15 × y。 - 图中展示的两个函数树分别代表两个候选函数。
- 交叉操作:从两棵树中各自取下某子分支,互相交换,生成“子代”函数。
- 反复迭代足够次数后,部分后代确实表现更优;这些优胜者被允许进入下一轮代的优化。
演化过程的高层抽象视图
- 演讲者引用了一张来自 Cranmer 论文的非常喜欢的图(原图中使用),它展示了进化式符号回归过程的抽象视角:
- 群体在进化中分化出不同的“功能岛屿”(函数类别岛屿)。
- 有时岛屿间有“迁徙”(个体交换),有时岛屿隔离,产生不同类别的行为。
- 这代表了符号回归试图探索的抽象函数空间。
里程碑式突破:从数据中学习微分方程与物理不变量
历史进展(非 PySR 首创,但非常重要)
- 关键性突破首先由 Bongard 和 Lipson 做出,随后由 Schmidt 和 Lipson 深化:
- 将遗传编程的三大核心(函数树表示、进化算法)从学习任意输入输出数据,扩展到学习微分方程。
- 物理系统中,可以用符号回归来:
- 发现支配数据的微分方程
- 学习拉格朗日量
- 学习哈密顿量(以符号形式)
- 经典案例(出自上述论文):从双摆(double pendulum)的测量数据中,纯粹通过数据驱动发现不变量——如哈密顿量(守恒能量)的符号形式。
- 这一成果在当时属于颠覆性的巨大进步——类别上不同于以往任何已有方法。
- 演讲者建议读者下载这篇论文:它现在已是经典文献。
与 SINDy 的直接关联
- Schmidt 和 Lipson 的工作被产品化为软件包 Eureka(该软件包允许上传动力学系统数据并输出微分方程)。
- 这一工作路线也是 SINDy(Sparse Identification of Nonlinear Dynamics,非线性动力学稀疏识别) 方法的直接前身——演讲者将他们的方法称为“我们的 SINDy 方法”,因为演讲者是 SINDy 文献的合作者。
- 结论:符号模型发现不新,已发展数十年;但 PySR 是极为强大的现代实现,让全世界所有人都能访问这些工具。
符号回归在控制领域的应用
- Bart Noack 及其同事将符号回归应用到控制律(control laws) 的符号函数表示学习中。
- 如果已知某种控制律产生的驱动信号,可通过交叉、变异、复制等操作的定制比例组合,逐步“培育(breed)”出能够有效控制复杂系统(如湍流流体)的控制律。
- 演讲者参编的教科书(由三人合作撰写)中,展示了同样用符号回归“培育/进化”出对流体动力学等很有效的控制器的方法。
PySR 与现代实现
为什么 PySR 具有重要意义
- 长期历史沉淀加上现代化改造成为了当今最为强大的符号回归实现。
- 演讲者反复强调:“这是我在科学发现领域见过的最强大工具”——它使这一方法使用上远为灵活和强大。
- 关键贡献:民主化——将此前的学术前沿技术做成一个设计周全、维护良好的开源软件包,人人都能使用。
PySR 的功能优势(对比表形式概述演讲中提到的对比表)
- 演讲中展示了一张对比了 PySR 与多种其他经典实现(包括 PISINDy、Eureka 等)的功能对照表:
- 每个方法各拥有不同的功能集。
- PySR 由 Miles Cranmer 精心设计,其功能覆盖了应用该方法于高难度实际问题所需的几乎所有操作。
实证基准集(Empirical Bench)
- 该论文的另一项重要贡献是提出了一个实证基准测试平台(empirical bench)。
- 该基准包含了各种测试案例:
- 如果你想测试自己的符号回归算法,可以新增一列,对比它与其他所有算法在此基准上的表现。
- 论文对大量系统进行了广泛基准测试。
- 表中有“五分之五”评分——演讲者注:“我不 100% 确定该评分的确切含义,需要重读论文核实。”(不确定信息,保留原意)——他谨慎地不把未核实的内容当作结论。
代码结构质量
- Cranmer 不仅是杰出的机器学习专家,还是优秀的软件工程师。
- PySR 的软件架构经过深思熟虑的设计:
- 方便使用者直接使用
- 也便于使用者按自己的想法进行扩展
- 演讲者强烈推荐下载代码和论文亲自尝试。
应用案例:重新发现行星运动定律
- Cranmer 及其同事已将其应用到多项精彩科学发现中:
- 例如,仅从行星数据中重新学习行星运动定律。
- 这证明了 PySR 能用于真实的科学发现过程。
方法与步骤
如何使用 PySR 的工作流程(综合演讲内容的实操逻辑)
- 准备数据:将观测的输入输出数据(如测量数据、动力学状态量)提供给符号回归算法。
- 启动群体进化:初始化一组随机(或启发式生成的)函数树群体。
- 迭代遗传操作:
- 变异:随机改换节点或常数。
- 交叉:交换两个函数树的子树。
- 简化:化简表达式,去冗余。
- 常数优化:数值优化表达式中的常系数。
- 筛选并推进:保留预测性能更优的后代进入下一代;接受大多数子代性能不比亲本更好(均值回归效应)。
- 生成 Pareto 前沿:在演化过程中,可绘制不同候选函数在准确度 vs 复杂度轴上的分布。
- 选择最终模型:根据简约原则,在 Pareto 前沿上挑选“在给定复杂度水平下最准确”的模型——即“尽可能简单但不过于简单”的甜点位置。
- 输出并解读:最终输出人类可读的符号公式。
选择模型的 Pareto 前沿思想
- 这一思想最早出现在 Bongard-Lipson 与 Schmidt-Lipson 的论文中,在 PySR 中也被纳入了可操作功能。
- 可以选择在给定复杂度下准确度最优的模型。
- 更简单的模型:
- 更具可解释性
- 更有机会在未见数据上泛化(相比深度神经网络而言)
限制与待确认问题
- 演讲中明确指出一处符号不确定:“
5/5评分意味着什么——我不 100% 确定,必须重新读论文核实。” - 符号回归可能产出大量候选表达式,需要有效的简化与筛选策略来应对搜索空间的复杂度和候选函数的质量差异。
- 遗传算法的搜索结果有一定随机性:多数交叉产生的后代在统计上并不优于亲本(均值回归效应);实际发现需要足够的迭代次数和群体规模。
- 演讲主要提供高层概念概述,并未完整展开 PySR 内部实现的功能细节与用法——具体操作请参考原始论文和代码文档(演讲者反复推荐阅读原文与使用代码)。
总结
- 机器学习的可解释性与物理建模有着天然的共鸣;物理科学期望模型不仅仅做预测(深度学习也能做到)而且能向人类揭示其“为什么”。
- 符号回归用组合函数树、遗传算法的交叉与变异操作、常数优化与化简,来搜索可由人类直接阅读的数学表达式。
- 符号回归不是新概念:其演化路径为遗传算法(1960s–1970s)→ 遗传编程(1980s)→ 微分方程/哈密顿量发现(Bongard-Lipson / Schmidt-Lipson,Eureka 产品化,以及 SINDy 方法)→ 现代 PySR。
- PySR 是这一长期思路的当代最强综合实现:设计精良、社区开源、功能完备、自带基准评估(empirical bench),已在行星运动定律重新发现等真实科学任务中获得验证。
- 核心可取点:符号回归将简约原则(最简模型描述数据)编码进学习过程——以“准确度 vs 复杂度”的 Pareto 前沿为选择标准——得到既可解释又更可能泛化的模型。