返回
查看原链接原链接
Bilibili27分17秒 · —

SINDy 算法中的候选函数库(Theta 矩阵)构建:原理、扩展与挑战

SINDy 算法中的候选函数库(Theta 矩阵)构建:原理、扩展与挑战

本讲聚焦 SINDy(Sparse Identification of Nonlinear Dynamics,稀疏非线性动力学识别)算法中候选函数库(Theta 矩阵)的构建策略,解释如何通过设计合适的函数库提高获得稀疏、可泛化、可解释动力学模型的可能性,并延伸至含控制项、有理函数动力学、高维灾难度与对称性约束等议题。

核心要点

  • SINDy 的核心目标:从复杂系统的时间序列数据中提取可解释、可泛化的动力学系统模型,且模型应尽可能简洁(含尽可能少的项),其形式可以是常微分方程(ODE)或偏微分方程(PDE)。
  • SINDy 本质上是一个广义线性回归问题:在候选函数库 Theta 中寻找稀疏的列组合来描述测量数据的导数(x_dot)。
  • 函数库 Theta 的设计具有极大的创造自由度,是实现 SINDy 建模成功与否的关键环节。用户可以将系统的物理先验知识(如对称性、周期边界、多项式非线性等)编码到库的设计中。
  • 构建函数库的基本建议:从简单的线性项开始逐级增加复杂度(线性 → 线性+二次 → 再逐步加入高次项),而非一开始就使用高阶多项式基。
  • 函数库可以扩展纳入控制变量、外力、时间依赖项和系统参数,并处理离散时间动力学。
  • 对于有理函数等无法用稀疏原子组合表达的动力学,可通过隐式 SINDy 的扩展方法处理,但存在零空间病态问题;近年已发展出更稳健的算法。
  • 函数库面临维度灾难:状态维度和最高项阶数的增大会使得 Theta 矩阵规模爆炸,从而变得病态而难以计算;因此需要维数约减或张量火车等策略。
  • 可以通过将物理对称性编码进函数库,排除不合法项来缩减库的大小、改善条件数。

详细解析

一、SINDy 问题回顾与 Theta 矩阵的角色

在 SINDy 的整体流程中,研究者收集测量数据并近似估计其时间导数。随后构建一个候选函数库(Theta 矩阵),该矩阵的列包含描述动力学可能的候选项,如线性项、二次项、正弦和余弦项等。然后通过稀疏回归从这些候选列中选择最少数量的项来描述 x_dot。选中的项由系数矩阵 C 的稀疏非零条目反映,C 的每一列对应状态变量中一个分量的动力学方程。本讲专注于如何构建 Theta 矩阵,使系统能够在该矩阵上稀疏表示。用数学语言描述,SINDy 是寻找 Theta 的若干列的最稀疏线性组合来拟合导数数据。

二、构建 Theta 函数库的基本策略与原则

从简单到复杂的逐级尝试

对于一个新系统,推荐的建模策略是从最小模型开始逐级增加复杂度:

  1. 仅线性项:先尝试仅用线性项构建模型,这等同于动态模态分解(DMD)模型。通过预测效果判断是否满足需求。如果效果良好,则任务完成。
  2. 增加二次项:若线性模型不佳,加入二次项(线性+二次)。
  3. 逐级增加高次项:如果仍不满足,加入三次项,以此类推,直到模型能合理描述数据。

不推荐在开始时就尝试五阶多项式基,因为过度复杂可能适得其反,损害模型泛化能力。库的规模须与数据量、噪声水平匹配。

选择基础函数类
  • 多项式基:在流体力学等领域(如 Navier-Stokes 方程存在二次对流非线性),低维模型通常采用线性加二次形式。有时需加入更高次项(三次、四次等)以解释被截断的或未建模的低能物理现象。因此多项式是处理此类系统的常用选择。
  • 三角函数基:对于具有周期性构型空间(如摆)或 2π 周期变量的系统,应考虑采用正余弦等三角函数。
  • 特殊函数基:可以是贝塞尔函数、艾里函数等。加入什么函数取决于对系统的了解。
  • 建议先尝试隔离的不同类型基,而非一开始混合。要非常警惕库的“条件数”:如果 Theta 矩阵变得病态,即使有噪声,也很难准确求解稀疏系数。库中各列不能过于线性相关。例如,在展开区间内 sin(x) 可能近似等于 x、x³、x⁵ 的线性组合,因此将正弦和这些多项式同时放入一个库可能引起病态问题。

三、扩展 Theta 函数库以纳入外部影响

动力学系统常常并非纯粹取决于状态变量,可能受到外部激励、控制变量或时间依赖的影响。这可以整齐地表达为在 Theta 库中添加额外的列以应对外部输入。

将控制变量纳入库中

原理:可以在函数库中除了状态 x 的函数外,还纳入控制输入 u 的非线性函数以及状态与控制的交叉项(SINDy with control)。这样可以同时识别内部动力学和外部激励对系统的影响。这种方法源自 Erica Kaiser 等人的工作,与 Josh Proctor 的动态模态分解含控制(DMDc)方法密切相关。

实际应用:在捕食者-被捕食者模型中(如历史上的设陷阱捕猎海狸行为),人类控制(捕猎率)会改变系统的动力学。如果建模者忽略了主动控制的影响,当控制策略修改后模型将失效;而若在库中加入外部控制的已知信息列,模型便能很好预测未来动态。

提出的核心原因是:在很多领域(如疾病系统建模),人们不能简单停止治疗、停止接种或停药来单纯观测内部动力学。因此必须开发一种允许将内部动力学和外部控制效果在无法关停控制的情况下同时区分的建模方法。SINDy with control 可以做到这一点,且可应用于非线性模型预测控制。与神经网络等黑箱方法相比,SINDy 模型学到的是系统的真实稀疏动力学,因此更可泛化(即使面对多种噪声干扰),预测时域也明显更长。

纳入时间依赖与外部变量

若系统存在显式时间变化,可以在库中添加时间列和时间交叉项。类似地,若模型因气候系统中各种外力如 CO₂ 排放量、太阳周期等而改变,这些外部力变量也应作为参数放入库中。

纳入参数依赖与参数化模型

在 SINDy 原始论文中,不仅控制变量,还可以包含分歧参数或调谐参数。这也适用于离散时间映射:通过对 k+1 步数据建模为 k 步的稀疏非线性函数来获得映射方程。

案例:混沌逻辑斯蒂映射的参数学习 在测量混沌逻辑斯蒂映射(含分歧参数 μ)时,选取了 μ 的十个不同值进行测量,并把 μ 这一列添加到库中。候选基包括了诸如 μ、μx、μ²x、μx² 等项,系统得以学习逻辑斯蒂映射的准确形式,仅凭少许噪声测量即可。因为确实是重新发现了真实的内在动力学,接着能够以这些数据填充完整的参数分歧图(任意精度)。这体现了库设计的意义——在综合考虑现有数据的基础上决定加入哪些形式的基。

四、超越标准 SINDy:隐式 SINDy 与有理函数动力学

问题场景与难点

很多系统(如化学动力学中的 Michaelis–Menten 动力学等)表示为有理函数形式,分子分母均为多项式。这类动力学很难或无法表示为 Theta 库中基元列的稀疏组合,对标准 SINDy 程式构成了挑战。本工作源于 Neil Mangan 在 Nathan 和 Josh 团队中的博士后研究。

方法思路
  • 若我们写出的动力学含未知分母,可将等号两边乘以假设的分母,把系统转化为一个新的线性方程组:一个较大的函数库乘以稀疏向量等于零。
  • 这个扩大后的库不仅应包含普通候选函数 Theta,还应有各候选项乘以 x_dot 的那部分。从字面上看,库的维度扩大到原来的两倍。
  • 接下来的目标是从库的零空间(null space)中找到最稀疏的组合向量。
  • 寻找最稀疏的零空间线性组合本身就是一个非常困难的病态优化问题(若在普通回归上做,找到的最稀疏矢量是零向量,毫无价值)。文献表明,该优化问题存在高度病态性,极小的噪声就能使零空间秩爆增。然而对于无噪声数据,能够学习非常复杂的化学动力学模型。
后续改进(Kadierdan Kaheman 的稳健隐式 SINDy 方法)
  • 与之前要求整个隐式方程等于零并将稀疏向量置于零空间不同,如果已知动力学中必然存在至少一项(被锁定/已知),可以将其移到等号右侧,从而使回归目标不恒为零,避免零空间问题。
  • Carde 的方法大意是:逐个扫查 Theta 库中可能存在于模型中的每一项,将它当作“已知项”移项。若失败,则采用下一项尝试,直到寻得一个模型既准确又稀疏。
  • 这一改进使问题变得与普通 SINDy 同等稳健,能处理中等程度的噪声,同时所有扫描可以在并行机制中执行,并获得一致性检查结果。
  • 该方法已能有效识别此前框架完全无法处理的系统。例如能给出 Bez 化学反应的 PDE 系统(四个耦合的非线性偏微分方程、包含有理项)。这类问题此前难以想象可用 SINDy 解决,因为其所需数据过于理想且数据量极大。Carde 的算法能在大量科学发现工作中产生巨大助益,并可能已经在进行各种推广。

五、函数库的维度灾难及其应对策略

维度灾难的本质与坏处

SINDy 的一大优点在于它代表了许多潜在的可能模型构造。例如,一个具有五到六项组合的库能表达数以百万计种模型。高概率上优化算法能在这些海量模型中找出稀疏的正确模型,是该方法的优点之一。然而现实中也存在一种“维度灾难”:随着状态变量(x)数增大,库内列数(如每个状态都作为多项式变量)可能爆炸式增长。举例而言,3 个变量、5 阶多项式基时,基的数量大概是几十到几百个,可接受;但 10 个变量和 10 阶多项式基时,库的列数可能会达到几十万甚至数百万个。此时矩阵会变得严重病态,伪逆或稀疏优化都不可能进行。因而高维状态变量会导致库的扩展不良。

我们期望的基本目标是库的维度尽量较少但能表示很大的模型空间。这构成一对相互竞争的目标。这也正是要对状态 x 进行约减的原因之一——若减少描述系统的自由度(如取 SVD/PCA),就能显著降低库的尺寸。

解决方案与代表案例
  • 基于 SVD/PCA 的低维特征:将高维时序数据压缩到较小的特征子空间中,再将约减后的变量作为 SINDy 的输入。
  • 深度自编码器:作为 PCA 方法的泛化,能够对复杂非线性数据进行高水平的维数约减,但其性能往往需精细调节。
  • 张量火车(Tensor Train)分解:近期由德国合作组提出的方法,把 SINDy 从线性模型推广为张量列表示(tensor train formulations),可有效编码超高阶多项式基地回归模型的动力学,消除病态和高维诅咒。实验表明,它能完整识别出真实动力学系统,而简单的广义线性模型只能错误地识别部分动力学。这类方法(如 Gelß 等人的论文)被认为是着力于应对维度灾难的核心方案。

六、通过对称性先验缩小库的规模与约束设计

在流体动力学和多种工程任务中,经常具有确定的连续或离散对称性。可通过数据可视化来识别(如对流体瞬态数据做 PCA 分析后观察数据分布)。当 SINDy 的模型结构包含这种对称性信息时,它可以被编码进目标不等式库中,缩减可行的参数空间,提升条件数和算法稳定性。若已知某种对称性,则许多库项不能出现,因为它们破坏了对称。于是对称性约束可以事先“滤除”掉一系列项,显著减小 Theta 库的规模(例如在许多情况下可以减少近半的基元素)。同时因为变量数减少,库矩阵的条件数有所提高,可以用更少的数据完成模型识别,因为算法要拟合的参数空间变小了。

案例(来自 I. Guan 的成果)

在电热对流高效模拟问题中,对数据进行降阶处理,通过 PCA/SVD 分解得到低维振幅系数时间序列后对振幅演化过程建模。对这些振幅数据进行可视化后发现系统具有的多重旋转/翻转对称性。利用这些对称性构建了精简的库(“约束 SINDy”),可以大幅削减拟合参数并找到更准确、泛化性更好的模型。该方法被证明可在该物理体系中准确找出含二次非线性的低维系统。

七、其他重要技巧与警示

条件数与柯西条件

SINDy 优化结果对函数库列间线性独立性非常敏感。若库内有的列与其他模型相关,或者有多个列接近互相线性相关,可能导致模型的识别和泛化失败。Joel Tropp 在 2009 年左右的论文中提出了 ERC(Exact Recovery Condition)条件,它是关于在某个库上采用 Lasso 回归时是否能保证精确恢复稀疏模型的判据条件。ERC 的作用类似于将传统的矩阵“条件数”推广到所有可能的稀疏子空间里。理论上,它给出了基于库的广义条件数来推断精确恢复的充分条件。然而这种广义条件数通常难以(或直接来说,在数学上是 NP-hard)准确计算,因此实操时只能通过反复模拟和观测来检验识别的好坏。这提示我们应该尽可能改善 Theta 属性:增加更丰富的瞬态数据,增加起测初值等,以保证库各列之间的独立性。

案例与数据

经典测试问题:逻辑斯蒂映射分歧图的参数估计

  • 系统:x_{k+1} = μ x_k (1 − x_k)
  • 方法:在 10 个不同的 μ 值下测量含噪时间序列数据(每个值都对应不同 μ 列)
  • 库构造:加入 μ 及其与 x 多项式函数的交叉项
  • 结果:可从弱噪声有限样本中精确识别映射表达式(包括所有多项式项),并能够重建该简单混沌系统中的完整分歧图
  • 意义:说明参数可以直接当作输入变量引入回归

高维 PDE 体系识别:Bez 化学系统

  • 系统构成:4 个相互耦合的非线性偏微分方程,且带有有理项
  • 传统 SINDy:无法处理此类问题(需极洁净的数据、海量数据支持、有理项会造成难题)
  • 新算法(根据 Carde):通过逐一移动候选的单个已知项到右侧做回归,以及使用并行策略,能够有效地发现极为复杂的四阶 PDE 系统
  • 意义:拓展了 SINDy 能处理的问题域范围

显式说明:为什么线性+二次可描述流体系统

以流体系统为例,众所周知 N-S 方程具有二次非线性,因此在简化(降维)时,若只做低维模态的动力学标定,选择线性加二次的多项式基往往能够较好地表征系统主要能量流动,而更高次项能描述被截断模态或未被建模模态的耗散影响。因此以多项式作为库的基础类是一种合理和具体的选择。

限制与待确认问题

  • 函数库规模和病态权衡:无法既把库造得尽可能大以便容纳更多选项,又要保证库的条件数适当,这内在是冲突的。目前更多的只是凭经验和独立库分别尝试。
  • ERC 条件的 NP-hard 特性:虽然可作为一个理论思维基线,但因为其理论推广条件极难计算,实际应用中只能近似通过构建合适数据的瞬态情况和稀疏项来优化。
  • 隐式 SINDy 的原始形态:如果试图通过构造一个全零的回归问题来寻找零空间中最稀疏向量,则问题会变成灾难性不健全的病态优化,其解一般只是零,毫无预测能力。纯原始方法对噪声极敏感,不能可靠处理噪音级的问题。
  • 张量火车方法的细节:文本中未展开该方法的全部数学细节与性能极限,待确认其可行性对于现实中等噪声问题的适用性。
  • 对称性寻找流程:文中提到的对称发现流程上主要以主观观感与个人科学经验驱动的,从残缺数据里发现对称性仍是一个较为开放性的问题。

行动清单

  • 在新系统建模过程中从最简单的线性项基础尝试,逐阶递增复杂度(线性 → 二次 → 三次…)而非启动就使用高阶基函数。
  • 若有必要,对具有已知基本对称性规律的系统,解析查找(如旋转对称、时间平移等)并将这种信息在模型中明确编码。
  • 若不探讨系统的内部状态随时间的演化之外的控制效果,应明确地在库中加入控制随时间的变化项及(可选)交叉项。
  • 如果动力学显含外生变量(周期项或时间项),进行外加项加入库中测试。
  • 当考虑有理函数模型(例如生物化学动力学反应)时,优先选择受噪声稳健的新式 SINDy 的自动锁定扫描方法以解决问题。
  • 对高维问题,积极使用降维方案(PCA/SVD),并在需要完整复杂性时考虑用张量火车形式库。
  • 对相似模型共存的库,务必检验相关列的线性独立程度(如判断好进行快速实验考察模型是否倾向于产生重叠或错误项)。

总结

SINDy 成功的关键要素在于构造适当的基函数库(Theta 矩阵)。这不仅是需要函数库足够广(它应覆盖潜在的动力学特征),还需要它足够精(不能有过多数值上线性相关的列,否则条件数极差且优化不稳定)。标准流程可从线性项逐步扩张至高次多项式;也可以根据确切的物理性质纳入三角函数等。当面对控制、外力、时间变化和参数时,可以通过扩展库来有效描述;而面对有理动力学等复杂系统,可采用改进型“隐式 SINDy”方式逐项锁定建模。最后,避免维度灾难的主要途径包括采用传感器压缩(主成分分析),或张量火车分解等更复杂的表达。而在库中注入数学形式的物理先验(如对称性)则可大幅提升数据利用率与稳健程度。这一系列方法共同增强了 SINDy 作为一种科学发现工具的通用能力。后续讲座将优化问题(如本质回归与压缩感知实现)的可能变化展开更详细讨论,敬请期待。