【论文泛读】如何进行动力学重构? 神经网络自动编码器结合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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

流畅的python-学习笔记_对象引用、可变性、垃圾回收

变量不是盒子 即变量是引用,而不是实际内存,多个标识赋值相同变量时,多余标识是引用 标识、相等性、别名 比较对象的值,is比较对象的id。实际调用对象的__eq__方法。is速度比快,因为is不能重载,省去了寻…

TypeScript学习日志-第十九天(namespace命名空间)

namespace命名空间 一、基本用法 namespace 所有的变量以及方法必须要导出才能访问,如图: 二、 嵌套 namespace 可以进行嵌套使用,如图: 它也必须需要导出才能访问 三、合并 当我们出现两个同名的 namespace 它就会合并这两…

4+1视图,注意区分类图与对象图

注意区分类图和对象图。对象图标记的是对象名,命名形式 对象名:类名,或者:类名。这里没有出现冒号,表示的是类图。 对象图(object diagram)。 对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一…

创造未来知识管理新篇章:Ollama与AnythingLLM联手打造个人与企业的安全知识库!

一 Ollama 1.1 简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快速地在本地运行大…

软件测试,软件评测师

如果你想考软件评测师证书,那这篇文章可以帮你少走很多弯路,估计你用别人一半的时间备考就可以通过考试,以下为本人亲身经验哈,你可以先收藏后看哦,提前祝你考试过过过。 如果以后想从事一份软件测试工程师的工作&…

浅析扩散模型与图像生成【应用篇】(二十一)——DALLE·2

21. Hierarchical Text-Conditional Image Generation with CLIP Latents 该文提出一种基于层级式扩散模型的由文本生成图像的方法,也就是大名鼎鼎的DALLE2。在DALLE2之前呢,OpenAI团队已经推出了DALLE和GLIDE两个文生图模型了,其中DALLE是基…

fabric部署调用合约示例

一 打包智能合约 ①进入fabric-samples文件夹下的chaincode/fabcar/go目录下执行 GO111MODULEon go mod vendor下载依赖(文件夹下已经有go.mod,不需要使用go mod init生成该module文件)②进入到test-network文件下使用以下命令将二进制文件…

2002-2021年各地区平均受教育年限数据(分性别)(含原始数据+计算过程+计算结果)

2002-2021年各地区平均受教育年限数据(分性别)(含原始数据计算过程计算结果) 1、时间:2002-2021年 2、来源:国家统计局、统计年鉴、各省年鉴 3、指标:行政区划代码、地区、年份、人均受教育年…

Footprint Analytics 与 Core Chain 达成战略合作

​ 领先的区块链数据解决方案提供商 Footprint Analytics 与比特币驱动、EVM 兼容的 Layer 1 区块链 Core Chain 宣布达成战略合作。此次合作旨在将 Footprint Analytics 的前沿数据解决方案与 Core Chain 的区块链基础设施相结合,共同引领区块链领域的创新发展。 …

苹果挖走大量谷歌人才,建立神秘人工智能实验室;李飞飞创业成立「空间智能」公司丨 RTE 开发者日报 Vol.197

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Apache.commons.lang3 的 isNumber 将会在 lang 4 的时候丢弃

在判断输入的字符串是不是一个数字的时候,我们通常用的最多的方法就是 : NumberUtils.isNumber("12"); 但是这个方法将会在 Lang 4.0 版本中被丢弃。 可以使用的替代方法为:isCreatable(String) 通过查看源代码,我们…

【数据结构】有关环形链表题目的总结

文章目录 引入 - 快慢指针思考 - 快慢指针行走步数进阶 - 寻找环形链表的头 引入 - 快慢指针 141-环形链表 - Leetcode 关于这道题,大家可以利用快慢指针,一个每次走两步,一个每次走一步,只要他们有一次相撞了就代表说这是一个链…

Leetcode编程练习

面试题-消失的数字 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& …

python爬虫(一)之 抓取极氪网站汽车文章

极氪汽车文章爬虫 闲来没事&#xff0c;将极氪网站的汽车文章吃干抹尽&#xff0c;全部抓取到本地&#xff0c;还是有点小小的难度。不能抓取太快&#xff0c;太快容易被封禁IP&#xff0c;不过就算被封了问题也不大&#xff0c;大不了重启路由器&#xff0c;然后你的IP里面又…

谷歌明年6月关闭 Google Fit 运动记录API,要求开发者迁移至Android Health平台 | 最新快讯

5 月 6 日消息&#xff0c;谷歌近日发布官方新闻稿&#xff0c;宣布将在明年 6 月使用 Android Health 平台取代 Google Fit 运动记录 API&#xff0c;开发人员应当尽早启动迁移计划。 谷歌自 2022 年起逐渐扩大对 Android Health 平台的投资&#xff0c;旨在减少平台碎片化&am…

在uni-app开发的小程序中引入阿里的多色图标

uniapp不支持阿里多色图标&#xff0c;需要使用工具iconfont-tools进行处理 1.首先 在阿里图标库将 需要的图标添加到项目中 并下载压缩包&#xff0c;取出iconfont.js文件 2.安装iconfont-tools,安装完成会显示出安装到了电脑的那个目录 3&#xff0c;进入目录就会看到下面的…

Maria DB 安装(含客户端),看这一篇就够了

文章目录 一 安装前准备1 版本与Win平台对应2 推荐安装 二 安装步骤1 安装主体程序2 添加系统路径Path 三 客户端 一 安装前准备 1 版本与Win平台对应 版本对应关系可参考&#xff1a; https://www.codebye.com/mariadb-deprecated-package-platforms.html。 2 推荐安装 经…

STM32F4xx开发学习—GPIO

GPIO 学习使用STM32F407VET6GPIO外设 寄存器和标准外设库 1. 寄存器 存储器映射 存储器本身是不具有地址的&#xff0c;是一块具有特定功能的内存单元&#xff0c;它的地址是由芯片厂商或用户分配&#xff0c;给存储器分配地址的过程就叫做存储区映射。给内存单元分配地址之后…

spring高级篇(十)

1、内嵌tomcat boot框架是默认内嵌tomcat的&#xff0c;不需要手动安装和配置外部的 Servlet 容器。 简单的介绍一下tomcat服务器的构成&#xff1a; Catalina&#xff1a; Catalina 是 Tomcat 的核心组件&#xff0c;负责处理 HTTP 请求、响应以及管理 Servlet 生命周期。它包…

excel中数据筛选技巧

1、筛选excel中破折号前后都为空的数据 在Excel中查找破折号前后为空的数据&#xff0c;你可以结合使用Excel的查找和筛选功能&#xff0c;或者利用一些公式来判断。以下是两种常用的方法&#xff1a; 方法一&#xff1a;使用筛选功能选中数据范围&#xff1a;首先&#xff0c…