返回
查看原链接原链接
Bilibili18分28秒 · —

SINDy 优化核心:从稀疏回归到模型发现的数学引擎

SINDy 优化核心:从稀疏回归到模型发现的数学引擎

SINDy 的稀疏优化求解阶段,核心是用最简单的模型在拟合数据的同时识别真正的物理机制,这一平衡通过从最小二乘到硬阈值迭代的序贯阈值最小二乘(STLS,Sequential Thresholded Least Squares)方法或更一般的 SR3 稀疏松弛正则化回归(Sparse Relaxed Regularized Regression)算法实现。

背景:稀疏优化在 SINDy 流程中的位置

SINDy 是一种基于机器学习的模型发现流程,其目标是"从时间序列数据中发现可解释、可泛化的动力系统模型"。完整流程包含以下关键步骤和挑战:

  1. 测量正确数据并在正确坐标系下呈现——数据质量和坐标选择是前提。
  2. 构造候选函数库 Θ——要求动力学在该库中可以由稀疏项表示。
  3. 求解稀疏模型——这是本节的核心议题,即在给定数据和函数库之后,如何通过优化算法找到稀疏系数向量。

整个流程的数学表达是:采集数据 X、Y、Z 及其导数 X_dot(或其他时间导数),构建包含候选函数项的库 Θ(X),通过某种稀疏回归过程找到系数向量 c。稀疏向量 c 可以识别哪些库函数项出现在 x_dot、y_dot、z_dot 对应的动力学方程中,这些非零项揭示了系统中实际激活的机制。

SINDy 作为广义线性回归问题

SINDy 在数学本质上是一个广义线性回归问题:给定库 Θ 和导数数据,目标函数可写为:

  • 求解未知系数 c(按库中列对应),要求 c 尽量稀疏(非零项尽可能少)且能拟合导数数据。
  • 稀疏 c 解出来之后,可以直接读出动力学方程中真正激活的项。

对于"稀疏建模",作者提到一个长达两千年的建模原则——简约性(Parsimony)原则:获得能描述数据的最小模型,但不追求过度简化。作者强调"关于建模的原则在过去两千年中一直有效,今天依然有效"。

其他研究者也有类似哲学的不同实现路径:

研究者方法论路径
Bongard、Schmidt、Lipson遗传编程方法
Miles Cranmer神经网络系统加遗传编程实现简约建模
本课程(Brunton 团队)稀疏回归(本节详解)

最小二乘的局限:为什么需要稀疏回归

最直接的方法是普通最小二乘回归——通过伪逆 Θ† 直接计算 c 矩阵。最小二乘的结果会使得几乎所有库中的项都被赋予微小非零系数。这样做的问题在于:

  • 模型对训练数据的拟合通常在数值上很好,有时甚至比稀疏模型拟合更好。
  • 但这种做法本质上是在过拟合训练数据。最小二乘把误差散布到所有系数上,这样的模型在验证数据上通常表现显著更差。
  • 从物理学角度看,一个包含 81 个同时激活项(库中所有候选)的动力学模型是不合理的。

核心判断:良好的物理定律通常对应非常少的几个重要项,物理学家凭经验推断模型不应该同时激活 81 个项。

因此需要引入稀疏惩罚回归:目标是仍然保持好的拟合 精度,同时 c 向量中非零项尽可能少。

朴素想法:Lasso 及其适用性

Lasso(Least Absolute Shrinkage and Selection Operator)由 Tibshirani 在 1996 年提出,是最经典的稀疏回归方法之一。原版 SINDy 论文在摘要中把算法描述为"类似于 lasso",但作者承认这样的说法是一个不准确的简化("某种程度上这是一种误导或过度简化")。

实际原因:

  • 作者团队在实践中发现 Lasso 通常不是解决稀疏向量问题的最好算法
  • Lasso 在精神层面(道德层面)接近目标,但在工程实践中存在收敛性和性能问题。
  • 因此他们开发了自己的算法——序贯阈值最小二乘。

核心方法一:序贯阈值最小二乘(STLS)

算法步骤详解

STLS 的原理如其名称一样简单直接,迭代执行如下操作:

第一步:对全部库项做一次完整最小二乘回归,获得一个包含所有项的系数向量 c(大部分系数很小,但全部非零)。

第二步:观察系数值发现大量项系数极小,对这些项(通过硬阈值 λ)置零。

第三步:针对剩余(保留下来的非零)系数,重新做一次最小二乘回归,只允许非零系数变化。

第四步:回归后,某些本来保留的系数可能因重新拟合而变得很小(不再重要),对这些新的小系数再次执行硬阈值置零。

第五步:继续对保留下来的系数做最小二乘 → 硬阈值 → 再最小二乘,循环往复直到模型收敛。

STLS 的优势

  • 收敛特性远好于 Lasso 等同类算法。
  • 在效率和精度上表现突出:计算速度快、结果准确。
  • 实用性强,能够获得高质量的稀疏模型。

STLS 的限制与备注

  • 该方法属于"自制算法",虽然在实践中效果好,但最初缺少理论支撑。团队尝试了大量不同方法后做了朴素的经验选择——"它有效,所以我们使用它"。
  • 算法存在一些"注意事项",即实现细节上需要小心处理,但常规使用已足够稳定。

稀疏度与模型误差的权衡:λ 参数的调控机制

在回归求解过程中需要持续权衡两个目标:

  • 模型误差(Model Error):预测与实际数据的偏差。
  • 稀疏度(Sparsity):由模型中非零项的个数衡量。

该权衡由 λ 参数控制(λ 实质上翻译为系数硬阈值的设定值)。

λ 的极端行为

λ 值效果
λ 极大(接近无穷大)\(1/\lambda\) 趋近零,误差项几乎被忽略,优化只关注稀疏性→收到最稀疏可能的模型(零个项),但误差极大
λ = 0完全不关心稀疏度→退化为纯最小二乘解,复杂度高但训练误差较低

帕累托前沿(Pareto Frontier)

通过调节 λ,可以找到一族模型——从"欠拟合模型"(极简但误差大)到"过拟合模型"(误差小但复杂度高)。理想情况下整个可行域呈现如图所示的帕累托最优"肘部"(elbow)结构:

  • 横轴为模型复杂度,纵轴为误差。
  • 最小二乘模型在训练数据上表现很好,但在留出验证数据( withheld data)上因为过拟合通常表现很差。
  • 拐点区域(肘部)是最理想折衷:复杂度足够低,同时泛化能力强,反映了系统背后的物理机制。
  • 交叉验证的 SINDy 模型应落在帕累托曲线的肘部附近。

实践中选择多个模型进行比较

当物理规律未知或者没有先验答案时,有效的做法是:

  • 选取帕累托曲线上的两、三或四个模型(不同 λ 取值)。
  • 比较这些模型之间的差异,观察哪些项被"打开"或"关闭"。
  • 作为物理学家/科学家/工程师,可以通过这种切换依赖模型复杂度的变化学习大量关于系统结构的信息。

模型选择还存在多种成熟方法,如 Neil Mengan 论文中的模型选择技术,以及遗传编程方法中使用交叉验证指标的简约性评估。

理论提升:SR3 稀疏松弛正则化回归

STLS 最初是经验方法("自酿算法")。通过与真正优化专家 Punsang(音译)、Sasha Arravkin 以及 Travis Askham 合作,团队证明了 STLS 实际上是 L0 稀疏优化问题的形式化松弛

L0 松弛的背景

L0 稀疏优化问题是一个非凸、NP-hard 的困难问题。有多种方法可对其进行松弛:

  • Lasso 是松弛形式之一。
  • 序贯阈值最小二乘(STLS)是另一种松弛形式。

SR3 的引入机制

受此理论基础启发,团队构建了更一般的稀疏优化算法——SR3(Sparse Relaxed Regularized Regression,稀疏松弛正则化回归),包含核心创新点:

  • 正则化(Regularized):在目标中附加稀疏促进项。
  • 松弛(Relaxed):引入一个辅助变量 W,将压力从系数向量 c 上分散开来。

其机制是:

  • c 负责尽可能保持稀疏。
  • W 与 c 保持接近(近似相等),同时 W 单独负责保证拟合精度(误差最小化)。

这种系数分裂/变量分离(splitting)的松弛机制显著改善了算法的收敛性质。

SR3 的实际应用价值

在后来工作中,团队通常使用 SR3 作为更"增强版"的回归求解器(像"改良版本的 STLS")。SR3 框架下还可以:

  • 添加额外的正则化项。
  • 加入额外的约束条件。
  • 如果对系数 c 有事先已知的约束,可以直接"烧进"(bake into)这个框架中求解。

所有代码开源;相关论文已经完全开放获取(open access),可自由下载。

将先验物理嵌入优化:等式约束

在许多实际物理场景中,我们对系统有先验知识,不是在做完全无结构化的搜索。典型例子是不可压缩流体中已知能量守恒

背景故事(因果链条):

  • 文章作者(Steve Brunton)的第一篇 SINDy 论文发布大约五年前(约 2016 年前后),同事 Jean-Christophe Loiseau(JC Loiseau) 很快联系他。
  • Loiseau 指出,流体流动方程中存在丰富的对称性,这些对称性完全可以内嵌到 SINDy 的建模流程中。
  • 该物理知识进入流程的位置正好是优化求解阶段

能量守恒的等式约束

以不可压缩 Navier-Stokes 方程在降阶坐标(傅里叶或 POD 模态等)下的动力学为例:

  • 能量守恒由二次非线性项中的斜对称结构(skew-symmetry)保证。
  • 对应于 SINDy 系数上的一种约束:某些二次项的系数必须彼此相等,某些必须互为相反数,或者互为倍数,等等(呈现为强结构化的线性等式关系)。
  • 这些条件可以被形式化地归结为极少数几条等式约束。若全部满足这些条件(例中具体为 8 条约束),则系统动力学会在构造层面上保证能量守恒

约束最小二乘的实现途径

STLS 算法(每次迭代做最小二乘然后阈值化)特别容易嵌入这种等式约束:

  • 每一次最小二乘步骤都可以改为满足等式约束的约束最小二乘
  • 从优化理论角度看这是"KKT 版本的约束最小二乘"——在约束条件下求解的标准形式。

这使得 Loiseau 的改进成为重要的算法突破,大幅提升了模型性能。

案例数据:带能量约束的 SINDy 在流体降阶模型中的应用

论文展示了两个流体绕流问题中升力/阻力系数的预测结果对比:

  • 灰色曲线:高保真仿真(真值,ground truth)。
  • 黄色和蓝色曲线:以往工业界最好的降阶模型(含 37 个模态)。这类模型只能定性上大致符合真实行为,定量上偏差较大。
  • 当引入能量约束并(可选用立方模型或施加约束的 SINDy),模型与真值吻合程度显著改善——因为约束从构造上保证了动力学结构。

作者特别强调: 稀疏非线性模型只有少量项,因此能写出极其简单且可解释的显式表达式。Loiseau 为圆柱绕流(cylinder flow)动力学写出的模型方程,是目前文献中已知的最简单且最准确的模型

稳定性约束 SINDy

博士研究生 Kaptanoglu(全名拼写对应"Alan Kaptanoglu"级别信息缺失,文中未给首字母)最近的另一个工作——稳定性约束 SINDy

  • 采用 Schlegel 和 Noack 在 2015 年 *Journal of Fluid Mechanics* 论文中所推导的全局有界条件
  • 该条件表明任意二次多项式型动力系统要保证全局稳定必须满足某些数学条件。
  • Alan 将该条件内嵌到 SINDy 优化过程中,获得在线性+二次模型且构造上保证永远稳定的系统。
  • 相关视频和论文链接置于视频描述中。

快速自适应 SINDy:应对急剧动态变化

现实中的动力系统常常会出现突然的状态跳变

场景举例

  • 飞行器飞行中遭遇部件断裂(机翼断裂、旋翼积垢)。
  • 系统参数发生变化,或者某些项被新增/删除。

这类情况下,系统的大部分模型仍然有效,可能只有少数参数改变,个别项被增加或删除。

目标与方法

存在一个面向陡变场景的 SINDy 变体

  • 能快速学习模型中的小规模变化(增量学习)。
  • 比从零开始学习全新模型快得多
  • 这本质上也是优化流程的一部分,用于实现极速模型恢复。
  • 面向实时控制系统中的应用需求(这是飞行中实时适应的期望应用)。

优化视角的整体总结

在 SINDy 全部挑战中,稀疏优化是一类已经相当成熟的算法选择领域:

  • 目前已有很多可供选用的优化算法,文中只是列举了少数几种。
  • 若咨询 JC Loiseau,他会推荐其他更新颖的优化算法。
  • 稀疏优化在当代已被视为一个"商品化"(commodity)的算法工具集。

在优化步骤中能实现的关键能力总结:

  1. 稳健求解模型——前提是有了正确的坐标、正确的数据、合适的库。
  2. 嵌入部分已知物理——在模型中加入先验知识。
  3. 保证保守量——如能量守恒。
  4. 保证稳定性——如构造全局有界模型。
  5. 快速学习参数突变——在时间敏感任务中快速恢复模型。

关键结论与行动要点

  1. SINDy 的优化问题本质是广义线性回归上的稀疏求解问题,不建议直接用普通最小二乘,因为最小二乘会得到所有项系数非零的过拟合模型。
  2. 默认求解器是STLS(Sequential Thresholded Least Squares):交替执行最小二乘和硬阈值化直到收敛,收敛性和效率均优于 Lasso。
  3. λ 参数控制误差与稀疏度的取舍,实践中应在帕累托曲线上取 2~4 个候选模型进行对比分析。
  4. 理论上 STLS 被证明是 L0 问题的松弛形式,更通用的 SR3 框架引入分裂变量 W 与 c,使全局收敛性大幅改善。
  5. SR3 框架支持额外的先验约束:能量守恒斜对称约束(通过约束最小二乘实现)和 Schlegel-Noack 全局稳定条件都可整合,分别产生能量守恒 SINDy 和稳定性约束 SINDy。
  6. 针对突变动力学有快速自适应 SINDy 变体,从已有模型出发只学习变化部分,比重新拟合速度快得多。
  7. 对流体降阶模型,传统 37 模态方法只能定性正确,而约束 SINDy 模型可以在定量上与高保真模拟相符,提供了文献中最简单且最准的解析模型。
  8. 所有 SINDy 代码开源、论文开放获取,可直接下载使用。

金句摘录

  • "最小模型描述数据,但不追求更简单。"——简约建模原则
  • "最小二乘把误差散布在 81 个项上,但物理系统通常只由几个项描述。"——对过拟合模型的批判
  • "你可以让模型从欠拟合到过拟合完整变化,但最好的模型通常在帕累托曲线的肘部。"
  • "这些约束使我们能构造性地保证能量守恒或稳定性,而不仅仅是尝试去逼近它。"