【论文泛读|附源码】如何进行动力学重构? 神经网络自动编码器结合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.mzph.cn/web/9422.shtml

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

相关文章

数据结构--图。

在前面,我们学习了线性表和树,而接下来我们要学习的图相较于他们就更加复杂。 目录 一.图的有关概念 一.图的有关概念 1.定义 图(graph)G由两个集合V和E组成,记为G(VE)。V是顶点的有穷非空集合;E是边的集合,边是V中顶点的无序对…

【Linux】传输文件,补充:VMware中Linux系统无法连接网络的解决方法

Linux系统可以和其他系统之间进行传输文件,只要通过ssh连接成功以后,就能进行文件传输。 Linux系统也可以通过URL规则和网页之间进行传输文件(即上传/下载)。 1、Linux系统之间传输文件:scp centos7自带ssh服务&…

FPGA+炬力ARM实现VR视频播放器方案

FPGA炬力ARM方案,单个视频源信号,同时驱动两个LCD屏显示,实现3D 沉浸式播放 客户应用:VR视频播放器 主要功能: 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文件播放 4.支持定制化配置…

36.Docker-Dockerfile自定义镜像

镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层机构,每一层都是一个layer BaseImage层:包含基本的系统函数库、环境变量、文件系统 EntryPoint:入口,是镜像中应用启动的命令 其他:在…

QT-小项目:连接MY SQL数据库实现登录(下一章实现登录注册账号和忘记密码功能)

一、环境准备 1、下载MYSQL 64位,安装完成,制作简易数据库教程如下: MY SQL安装 2、QT 编译器使用 二、实现工程目录(基于上一章基础上) 三、源程序增加内容如下: login.cpp 增加头文件: #in…

《TAM》论文笔记(上)

原文链接 [2005.06803] TAM: Temporal Adaptive Module for Video Recognition (arxiv.org) 原文代码 GitHub - liu-zhy/temporal-adaptive-module: TAM: Temporal Adaptive Module for Video Recognition 原文笔记 What: TAM: Temporal Adaptive Module for …

内网安全综合管理系统是什么 | 好用的内网安全管理系统有哪些

内网安全综合管理系统是指一种集成终端管理、网络管理、内容管理、资产管理等功能的综合性安全管理系统。它主要对内网上的主机进行统一安全管理,包括对网络主机用户操作实施监督控制,并对主机中的安全软件(如主机入侵监测系统、主机防火墙和…

5 Spring 事务管理

目录 1.概述 2.事务特性:ACID 3.Spring 框架的事务管理支持两种方式 编程式事务 申明式事务 4.Spring 事务管理 API 事务管理器接口 Spring 的回滚方式 事务定义接口 事务的四种隔离级别 事务的七种传播行为 5.事务注解例子: Transactianal…

springboot+vue+mybatis警情高发智能灯箱+PPT+论文+讲解+售后

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,警情高发智能灯箱当然不能排除在外。警情高发智能灯箱是在实际应用和软件工程的开发原理之上,运用微信开发者、java语言以及SpringBo…

python:做柱状图

import matplotlib.pyplot as plt # 数据 categories [A, B, C, D] values [23, 45, 56, 78] # 创建柱状图 plt.bar(categories, values) # 添加标题和标签 plt.title(柱状图示例) plt.xlabel(类别) plt.ylabel(数值) # 显示图形 plt.show() D:\software\新建文件夹\python\L…

力扣每日一题- 给植物浇水 II -2024.5.9

力扣题目:给植物浇水 II 题目链接: 2105.给植物浇水 II 题目描述 代码思路 根据题目内容,使用双指针从左右两边同时向中间移动,模拟浇水过程即可。 代码纯享版 class Solution {public int minimumRefill(int[] plants, int capacityA, …

java 文件表创建及前后端使用

表结构task_file 前端具体到业务表单 <el-form-item label"任务附件" prop"taskAttachment"><el-upload ref"upload" accept".jpg, .png, .txt, .xlsx, .doc, .docx, .xls, .pdf, .zip, .rar":action"upload.url" …

Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率(四)

前言 上一篇文章带你实现了Go-Zero和goctl&#xff1a;解锁微服务开发的神器&#xff0c;快速上手指南&#xff0c;本文将继续深入探讨Go-Zero的强大之处&#xff0c;并介绍如何使用goctl工具实现模板定制化&#xff0c;并根据实际项目业务需求进行模板定制化实现。 通过本文…

videosapi开发微信管理系统

获取登录二维码&#xff1a; export interface Request {/*** 设备ID&#xff0c;首次登录传空&#xff0c;之后传接口返回的appId*/appId?: string;/*** 代理IP 格式&#xff1a;socks5://username:password123.2.2.2*/proxyIp?: string;/*** 地区*/regionId: string;[prop…

宋仕强论道之新质生产力

宋仕强论道之新质生产力&#xff0c;宋仕强说当前5G通信、人工智能、万物互联、工业互联网、数字经济、新能源技术和产业等领域正蓬勃发展&#xff0c;成为未来经济增长的重要推动力&#xff0c;也是目前提倡的新质生产力的重要组成部分。而这些领域的发展都离不开数据的采集、…

React使用Outlet实现路由跳转时局部刷新页面

Outlet是react-router-dom插件的一个组件&#xff0c;首先需要安装react-router-dom插件&#xff1a; cnpm i react-router-dom --save 官方文档 应该在父路由元素中用来渲染其子路由元素。这允许在渲染子路由时显示嵌套的 UI。如果父路由完全匹配&#xff0c;则将渲染子索引…

Flutter 引入webview_windows插件,在已经使用$PATH 中的 nuget.exe情况下,windows端构建失败

报错 PS F:\xx\xxxx> flutter run -d windows Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Launching lib\main.dart on Windows in debug mode... E:\Some software\Visual Studio\VS 2022\MSBuild\M…

基于R语言绘图 | 转录代谢趋势图绘制教程

原文链接&#xff1a;基于R语言绘图 | 转录代谢趋势图绘制教程 本期教程 小杜的生信笔记&#xff0c;自2021年11月开始做的知识分享&#xff0c;主要内容是R语言绘图教程、转录组上游分析、转录组下游分析等内容。凡事在社群同学&#xff0c;可免费获得自2021年11月份至今全部…

【深度学习】【Lora训练0】StabelDiffusion,Lora训练,kohya_ss训练

文章目录 环境数据自动标注kohya_ss BLIP2kohya_ss WD14 后续 资源&#xff1a; &#xff08;1&#xff09;训练ui kohya_ss&#xff1a; https://github.com/bmaltais/kohya_ss &#xff08;2&#xff09;kohya_ss 的docker 其他docker https://github.com/ashleykleynhans…

04-19 周五 GitHub actions-runner 程序解释

04-19 周五 GitHub actions-runner 程序解释 时间版本修改人描述2024年4月19日17:26:17V0.1宋全恒新建文档 简介 本文主要描述了actions-runner-linux-x64-2.315.0.tar.gz这个github actions CI所需要的客户端安装包的重要文件和内容信息。有关GitHub actions 的配置&#xff…