【论文泛读】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 数据驱动坐标发现与方程发现算法
想回答的问题很简单,“如何根据数据写方程”。

想想牛顿的处境,如何根据各种不同物体下落的数据,写出万有引力的数学公式的。这篇文章就是来做这件事的。当然,这篇论文并没有从牛顿视角,完全去思考牛顿所想。而是利用现有的深度学习技术动力学重构的方法 。提出了一种框架,基于现有的计算机技术,去发现物质运动背后的物理规律。

这里直接给出这篇方法的核心思路图,我们后面会逐个讲解。

在这里插入图片描述

正文

Data-driven discovery of coordinates and governing equations
作者包括华盛顿大学的 Kathleen Champion 和 Steven L. Brunton。Brunton的SINDy方法,我们在 基于RNN进行动力学重构 的文章中也提到过。

这篇文章的主要创新点在于

  1. 在数据降维这块,提出可以用神经网络的算法来进行数据编码,从而来实现降维。
    这在文中被称为自编码器,学习一个用于表示数据的坐标系,希望经过坐标系的变换,能够提取出更加明显和有效的动力学特征。
  2. 结合了非线性动力学识别(SINDy)的方法,来进行参数的拟合。这在下文中也会介绍。

核心方法

首先,我们考虑一个 n n n 维状态的动力学系统如公式(1)所示,其中 x ( t ) ∈ R n \mathbf{x}(t) \in \mathbb{R}^n x(t)Rn

d d t x ( t ) = f ( x ( t ) ) (1) \frac{d}{d t} \mathbf{x}(t)=\mathbf{f}(\mathbf{x}(t)) \tag{1} dtdx(t)=f(x(t))(1)

我们的目标是

  1. 寻求一组具有相关动态模型的约化坐标。即 z ( t ) = φ ( x ( t ) ) ∈ R d ( d ≪ n ) \mathbf{z}(t)=\varphi(\mathbf{x}(t)) \in \mathbb{R}^d(d \ll n) z(t)=φ(x(t))Rd(dn),这个新坐标下的一个动力学维数远远小于原始系统。
  2. 能够给出在这个简约坐标下对应的动力学方程
    d d t z ( t ) = g ( z ( t ) ) (2) \frac{d}{d t} \mathbf{z}(t)=\mathbf{g}(\mathbf{z}(t)) \tag{2} dtdz(t)=g(z(t))(2)
  3. 这个方法同时还提出对应的编码函数 z = φ ( x ) \mathbf{z}=\varphi(\mathbf{x}) z=φ(x) 和 解码函数 x ≈ ψ ( z ) \mathbf{x} \approx \psi(\mathbf{z}) xψ(z)。实现在简化坐标和还原原始坐标之间的转化。

我们希望在对原数据进行 z = φ ( x ) \mathbf{z}=\varphi(\mathbf{x}) z=φ(x) 的编码之后,能更方便我们使用公式(3)的形式来进行描述。其中,
基函数库 Θ ( z ) = [ θ 1 ( z ) , θ 2 ( z ) , … , θ p ( z ) ] \Theta(\mathbf{z})=\left[\boldsymbol{\theta}_1(\mathbf{z}), \boldsymbol{\theta}_2(\mathbf{z}), \ldots, \boldsymbol{\theta}_p(\mathbf{z})\right] Θ(z)=[θ1(z),θ2(z),,θp(z)] 是由多项式或初等函数所组成。
稀疏系数向量 Ξ = [ ξ 1 , … , ξ d ] \boldsymbol{\Xi}=\left[\boldsymbol{\xi}_1, \ldots, \boldsymbol{\xi}_d\right] Ξ=[ξ1,,ξd] 指的是其中的非零系数尽可能少,大部分 ξ i = 0 \boldsymbol{\xi}_i=0 ξi=0.

d d t z ( t ) = g ( z ( t ) ) = Θ ( z ( t ) ) Ξ (3) \frac{d}{d t} \mathbf{z}(t)=\mathbf{g}(\mathbf{z}(t))=\boldsymbol{\Theta}(\mathbf{z}(t)) \boldsymbol{\Xi} \tag{3} dtdz(t)=g(z(t))=Θ(z(t))Ξ(3)

(误差函数与编码器) 上式基函数库 Θ \Theta Θ 是在训练之前由人类专家指定好的,而稀疏系数向量是在训练的过程中随之确定的。由于我们要求公式(3)是尽量成立的,再令 z ˙ ( t ) = ∇ x φ ( x ( t ) ) x ˙ ( t ) \dot{\mathbf{z}}(t)=\nabla_{\mathbf{x}} \varphi(\mathbf{x}(t)) \dot{\mathbf{x}}(t) z˙(t)=xφ(x(t))x˙(t) ,可以得出我们误差函数 其实只是把公式(3)移项,让等式左右相减,尽量为0
L d z / d t = ∥ ∇ x φ ( x ) x ˙ − Θ ( φ ( x ) T ) Ξ ∥ 2 2 (4) \mathcal{L}_{d \mathbf{z} / d t}=\left\|\nabla_{\mathbf{x}} \varphi(\mathbf{x}) \dot{\mathbf{x}}-\boldsymbol{\Theta}\left(\varphi(\mathbf{x})^T\right) \boldsymbol{\Xi}\right\|_2^2 \tag{4} Ldz/dt= xφ(x)x˙Θ(φ(x)T)Ξ 22(4)

(误差函数与解码器) 但公式(4)只与编码器 φ \varphi φ 有关,我们还希望得到正确解码器 ψ \psi ψ,要求解码后能够还原 x ˙ \mathbf{\dot{x}} x˙ x \mathbf{x} x 的时间序列。于是可以写出下面两个误差函数
L d x / d t = ∥ x ˙ − ( ∇ z ψ ( φ ( x ) ) ) ( Θ ( φ ( x ) T ) Ξ ) ∥ 2 2 . L recon  = ∥ x − ψ ( φ ( x ) ) ∥ 2 2 , (5,6) \begin{aligned} \mathcal{L}_{d \mathbf{x} / d t}&=\left\|\dot{\mathbf{x}}-\left(\nabla_{\mathbf{z}} \psi(\varphi(\mathbf{x}))\right)\left(\boldsymbol{\Theta}\left(\varphi(\mathbf{x})^T\right) \boldsymbol{\Xi}\right)\right\|_2^2 . \\ \mathcal{L}_{\text {recon }}&=\|\mathbf{x}-\psi(\varphi(\mathbf{x}))\|_2^2, \end{aligned} \tag{5,6} Ldx/dtLrecon = x˙(zψ(φ(x)))(Θ(φ(x)T)Ξ) 22.=xψ(φ(x))22,(5,6)

(误差函数与稀疏系数) 此外,我们还希望用于描述编码后系统,所使用的函数越少越好。于是我们对使用L1范数来进行约束。即 L reg = ∣ ∣ Ξ ∣ ∣ 1 \mathcal{L}_{\text {reg}}= ||\boldsymbol{\Xi}||_1 Lreg=∣∣Ξ1

备注: ∥ x ∥ 0 \|x\|_0 x0 表示非零元素的个数,是NP难题,一般用L1范数代替。
L1范数, ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \|x\|_1=\sum_{i=1}^n\left|x_i\right| x1=i=1nxi,一般用来进行稀疏优化。

在这里插入图片描述
(最终的误差函数) 现在,我们把上面误差函数汇总,得到了本文最终所使用的误差函数-公式(7),其中 λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ1,λ2,λ3 是超参数。

L recon  + λ 1 L d x / d t + λ 2 L d z / d t + λ 3 L r e g (7) \mathcal{L}_{\text {recon }}+\lambda_1 \mathcal{L}_{d \mathbf{x} / d t}+\lambda_2 \mathcal{L}_{d \mathbf{z} / d t}+\lambda_3 \mathcal{L}_{\mathrm{reg}} \tag{7} Lrecon +λ1Ldx/dt+λ2Ldz/dt+λ3Lreg(7)

除了使用 L 1 L_1 L1 正则化之外,作者还提出可以使用SINDy的顺序阈值方法来纳入训练过程。就是在训练的期间,固定的时间间隔内,低于某个阈值的系数会被强行固定为0,然后使用模型中剩余的项继续训练。


结果 Result

以Lorenz系统为例,原始系统为
z ˙ 1 = σ ( z 2 − z 1 ) z ˙ 2 = z 1 ( ρ − z 3 ) − z 2 z ˙ 3 = z 1 z 2 − β z 3 \begin{aligned} & \dot{z}_1=\sigma\left(z_2-z_1\right) \\ & \dot{z}_2=z_1\left(\rho-z_3\right)-z_2 \\ & \dot{z}_3=z_1 z_2-\beta z_3 \end{aligned} z˙1=σ(z2z1)z˙2=z1(ρz3)z2z˙3=z1z2βz3

假设我们采集的数据是由这三个状态变量的非线性组合形成的时间序列数据
x ( t ) = u 1 z 1 ( t ) + u 2 z 2 ( t ) + u 3 z 3 ( t ) + u 4 z 1 ( t ) 3 + u 5 z 2 ( t ) 3 + u 6 z 3 ( t ) 3 . \mathbf{x}(t)=\mathbf{u}_1 z_1(t)+\mathbf{u}_2 z_2(t)+\mathbf{u}_3 z_3(t)+\mathbf{u}_4 z_1(t)^3+\mathbf{u}_5 z_2(t)^3+\mathbf{u}_6 z_3(t)^3 . x(t)=u1z1(t)+u2z2(t)+u3z3(t)+u4z1(t)3+u5z2(t)3+u6z3(t)3.

我们看着这个组合的数据,去重构动力学方程。得到结果如下
z ˙ 1 = − 10.0 z 1 + 10.0 z 2 z ˙ 2 = 27.7 z 1 − 0.9 z 2 − 5.5 z 1 z 3 z ˙ 3 = − 2.7 z 3 + 5.5 z 1 z 2 \begin{aligned} & \dot{z}_1=-10.0 z_1+10.0 z_2 \\ & \dot{z}_2=27.7 z_1-0.9 z_2-5.5 z_1 z_3 \\ & \dot{z}_3=-2.7 z_3+5.5 z_1 z_2 \end{aligned} z˙1=10.0z1+10.0z2z˙2=27.7z10.9z25.5z1z3z˙3=2.7z3+5.5z1z2
可以验证还原出的系统与真实系统是基本等价的。

在这里插入图片描述

总结

回顾这篇文章开头的流程图,是否有加深理解呢?

在这里插入图片描述

相关链接

  • SINDy源码
  • 本文的论文原文
  • Matlab - 非线性动力学/混沌系统/复杂性科学/系统科学常用工具
  • Matlab - RK4的Lorenz仿真
  • 论文泛读 - 基于RNN建模: Reconstructing computational system dynamics from neural data with recurrent neural

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/320685.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五分钟了解等级保护、风险评估和安全测评三者的区别和联系?

等级保护 基本概念:网络安全等级保护是指对国家秘密信息、法人和其他组织和公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的安全产品实行按等级管理,对信息系统中发生的信息安全事件…

vs配置cplex12.10

1.创建c空项目 2.修改运行环境 为release以及x64 3.创建cpp文件 4.鼠标右键点击项目中的属性 5.点击c/c,点击第一项常规,配置附加库目录 5.添加文件索引,主要用于把路径导进来 6.这一步要添加的目录与你安装的cplex的目录有关系 F:\program…

【Qt】按钮类控件

文章目录 1 :peach:Push Button:peach:2 :peach:Radio Buttion:peach:3 :peach:Check Box:peach:4 :peach:Tool Button:peach: 1 🍑Push Button🍑 使⽤ QPushButton 表⽰⼀个按钮,这也是当前我们最熟悉的⼀个控件了,QPushButton …

[Algorithm][BFS][最短路问题][迷宫中离入口最近的出口][最小基因变化][单词接龙][为高尔夫比赛砍树]详细讲解

0.原理讲解 最短路径是图里的常见问题本专题主要讲解边权为一的最短路问题 边权全都相同即可,并非只能为一 方法:从起点开始,来一次BFS即可如何找出最短路径是多长呢? 拓展的层数,就是最短路的长度 1.迷宫中离入口最…

在k8s中安装Grafana并对接Prometheus,实现k8s集群监控数据的展示

🐇明明跟你说过:个人主页 🏅个人专栏:《Grafana:让数据说话的魔术师》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …

01-基本概念

1. 到底什么是数据结构? 数据结构是指在计算机中组织和存储数据的方式,它涉及到数据元素之间的关系以及对这些关系进行操作的方法。数据结构可以看作是一种将数据组织起来以便有效使用的方式,它关注数据的组织、存储和操作,以及如…

解决github的remote rejected|git存储库的推送保护

前言 git存储库的推送保护。当你试图推送代码到GitHub仓库时,由于存在与主分支(master)相关的仓库规则违规行为,推送会被拒绝了。这种保护机制帮助确保只有经过授权和符合规定的代码才能被合并到主分支,从而保护了主分…

上海亚商投顾:沪指创年内新高 化工板块掀涨停潮

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开震荡,沪指涨超1%续创年内新高,深成指、创业板指均涨约2%。化工股集体…

SQL 基础 | AS 的用法介绍

SQL(Structured Query Language)是一种用于管理和操作数据库的标准编程语言。 在SQL中,AS关键字有几种不同的用法,主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法: 重命名列:在SELECT语句中&a…

maven冲突问题

在编写maven当中的依赖时&#xff0c;有时候会出现一些问题&#xff0c;这种问题为Maven的当中的依赖。 在导入依赖的时候&#xff1a;出现了两种依赖发生了版本冲突的问题&#xff1f; <?xml version"1.0" encoding"UTF-8"?> <project xmlns…

VBA 创建透视表,录制宏,自动化报表

目录 一. 数据准备二. 需求三. 准备好报表模板四. 执行统计操作&#xff0c;录制宏4.1 根据数据源创建透视表4.2 填充数据到报表4.3 结束宏录制 五. 执行录制好的宏&#xff0c;自动化报表 一. 数据准备 ⏹数据源1 姓名学科成绩丁志敏语文91李平平语文81王刚语文64张伊语文50…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-13-按键实验

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

自动化运维工具---Ansible

一 Puppet Puppet是历史悠久的运维工具之一。它是一种基础架构即代码(laC)工具&#xff0c;使用户可以定义其基础 架构所需的状态&#xff0c;并使系统自动化以实现相同状态。 Puppet可监视用户的所有系统&#xff0c;并防止任何偏离已定义状态的情况。从简单的工作流程自动…

Mysql数据在磁盘上的存储结构

一. 前言 一行数据的存储格式大致如下所示: 变长字段的长度列表&#xff0c;null值列表&#xff0c;数据头&#xff0c;column01的值&#xff0c;column02的值&#xff0c;column0n的值… 二. 变长字段 在MySQL里有一些字段的长度是变长的&#xff0c;是不固定的&#xff0c;…

设计模式Java实现-工厂模式

✨这里是第七人格的博客✨小七&#xff0c;欢迎您的到来~✨ &#x1f345;系列专栏&#xff1a;设计模式&#x1f345; ✈️本篇内容: 工厂模式✈️ &#x1f371;本篇收录完整代码地址&#xff1a;https://gitee.com/diqirenge/design-pattern &#x1f371; 楔子 记得刚…

Python量化炒股的统计数据图

Python量化炒股的统计数据图 单只股票的收益统计图 查看单只股票的收盘价信息 单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令&#xff0c;进入Jupyter Notebook的研究平台。然后单击“新建”按钮&#xff0c;创建Python3文件&#xff0c;输入如下代码如下&am…

ComfyUI搭建和注意事项for WIN[笔记]

下载ComfyUI(GitHub - comfyanonymous/ComfyUI: The most powerful and modular stable diffusion GUI, api and backend with a graph/nodes interface.) 从源码上搭建比较麻烦&#xff0c;一般不推荐&#xff0c;所以跑到release里面找一个下载。我的显卡是GeFore GTX 1050 …

STM32编译前置条件配置

本文基于stm32f104系列芯片&#xff0c;记录编程代码前需要的操作&#xff1a; 添加库文件 在ST官网下载标准库STM32F10x_StdPeriph_Lib_V3.5.0&#xff0c;解压后&#xff0c;得到以下界面 启动文件 进入Libraries&#xff0c;然后进入CMSIS&#xff0c;再进入CM3&#xff…

深度学习中的不确定性量化:技术、应用和挑战综述(一)

不确定性量化(UQ)在减少优化和决策过程中的不确定性方面起着关键作用&#xff0c;应用于解决各种现实世界的科学和工程应用。贝叶斯近似和集成学习技术是文献中使用最广泛的两种UQ方法。在这方面&#xff0c;研究人员提出了不同的UQ方法&#xff0c;并测试了它们在各种应用中的…

018、Python+fastapi,第一个Python项目走向第18步:ubuntu24.04 安装cuda和pytorch环境

一、说明 我们安装了pytorch环境之后&#xff0c;会用yolo v9 来测试一下&#xff0c;看8g 显存能不能跑下来&#xff0c;上次用无影云电脑&#xff0c;4cpu8g内存直接爆了&#xff0c;云电脑也死机了&#xff0c;提示一直占用内存不释放&#xff0c;我自己的云电脑不能占用内…