使用图网络和视频嵌入预测物理场

news/2024/5/20 6:55:25

文章目录

  • 一、说明
  • 二、为什么要预测?
  • 三、流体动力学模拟的可视化
  • 四、DeepMind神经网络建模
  • 五、图形编码
  • 六、图形处理器
  • 七、图形解码器
  • 八、具有不同弹簧常数的轨迹可视化
  • 九、预测的物理编码和推出轨迹

一、说明

这是一篇国外流体力学专家在可视化流体物理属性的设计实现。我们知道物理模型多半是微分方程,而将微分粒子看成是训练数据,能否得出解的近似形式?本篇给出这样的启发。对于重事科研工作的人无疑是个启发。

二、为什么要预测?

为什么我们需要预测实体行为?假设你想建造一艘船。事实证明,在实际建造船只之前验证您的船只设计要比事后验证要便宜得多。为此,您应该在实际制造之前检查您的发明在指定环境中的行为。您可以使用计算机模拟来做到这一点,这些模拟近似于水和船之间的物理相互作用。
在这里插入图片描述

三、流体动力学模拟的可视化

举一个更微不足道的例子,我们可以看看视频游戏。下面的游戏《盗贼之海》是整个游戏行业中最逼真的水表现之一。在这种情况下,模拟的准确性可能会降低,但会牺牲性能,因为您希望游戏尽可能快速流畅地运行。

我们希望这篇文章能简要介绍基于图网络的模拟器,并展示我如何扩展这种方法,以便它可以根据短视频推断任何系统的轨迹。

那么,你是怎么做到的呢?这些是纳维-斯托克斯方程。它们描述了粘性流体物质的运动,可用于描述管道中的水流或飞机机翼周围的气流。如果你碰巧不小心在三维空间中找到了它们的解决方案,请打我,因为如果你这样做了,就会有一百万美元的奖金。简而言之,数学很难。幸运的是,有一些方法可以在不计算这个怪物的情况下近似流体运动。
在这里插入图片描述
纳维-斯托克斯方程

这些模拟速度很快。你在这里看到的是一种称为平滑粒子流体动力学的模拟方法。粒子会影响附近的其他粒子。描述这些局部行为并将它们部署在数千个粒子上可以产生非常准确的结果。让我们试着弄清楚如何构建一个预测这种行为的神经网络。
在这里插入图片描述

四、DeepMind神经网络建模

为此,我们需要更明确地构建问题。输入是一组粒子。然后,这个状态应该通过一些有趣的函数来提出这些粒子的新位置。重复这个过程一百万次,我们就有了一个完整的模拟。很简单。
在这里插入图片描述
DeepMind的人会完全同意这一点。他们提出了一种可以预测复杂物理系统行为的方法。您看到的其中一个视频是预测的轨迹,而另一个视频是使用传统方法模拟的。你能猜到什么是什么吗?

正如你所看到的,DeepMind的人知道他们在做什么。
在这里插入图片描述
好的,但是如果你想预测沙子的运动呢?然后,您需要在新数据集上从头开始重新训练新模型。

如果你想有一个专门研究粘液的模型怎么办?然后,新的数据集,新的训练,新的模型。

介于两者之间呢?预测粘沙行为的模型呢?同样,它需要从头开始训练。即使你已经有一个沙子模型和一个粘液模型!

这就引出了我们的研究问题:物理系统的视频是否包含足够的信息来推广图网络?

我们想建立一个基于单个视频的系统,可以预测视频中可见的系统的行为。理想情况下,整个系统只需要一个单一的训练程序,并且能够在不同的系统中很好地推广。

所以这是我的建议。我们将建立一个模型。该模型将观看物理系统的视频,并预测其在某个潜在空间中的属性。这将允许对任何系统的物理属性进行编码,同时保留它们之间的任何差异。正如你所看到的,goop-o-sand 位于沙子和粘液之间的某个地方,表明它的行为应该是这两者的“平均值”。
在这里插入图片描述
不同系统的物理编码的可视化。从顶部:沙子、水、粘液、沙子

因此,让我们使用这种物理编码来预测系统的运动。首先,视频编码器观看视频并计算系统的物理特性。此编码将根据它观看的视频而有所不同。

然后,将这种编码与来自原始粒子的信息相结合。

首先,我们从原始粒子中创建一个图形。每个粒子都变成一个图顶点。边缘是在相邻粒子之间创建的。每条边都包含有关其连接的粒子之间位移的信息。每个粒子存储其最后三个速度以及视频编码器提供的物理属性。

现在,边和顶点都存储向量。我们可以将这些向量通过它们各自的编码器来获得潜在图。编码图的结构与原始图完全相同,但边和顶点的编码已使用这些小型神经网络进行了更新。

在这里插入图片描述

五、图形编码

完善!现在,每条边都有一些编码,每个顶点都有一些其他编码。我们将执行一个称为消息传递的过程。在此示例中,我们将重点关注紫色节点。

首先,我们找到连接到紫色节点的三条边。让我们关注具有 E-Zero 编码的边缘。我们将按以下方式构造一个向量。由于每条边总是只连接两个节点,因此我们将采用这两个节点的编码。在本例中为 V-0 和 V-1。此外,我们还将包括边缘本身的编码。我们对连接到紫色节点的每个边重复此过程。

然后,这些向量通过另一个神经网络,然后相加在一起。

此输出最终通过另一个小模块,以获得新的节点编码。此过程的输出将反馈到原始节点。然后一遍又一遍地重复整个过程。在我的实验中,我执行了其中三个消息传递步骤。

在这里插入图片描述

六、图形处理器

完善!现在是最后一步。每个粒子都有一个与其编码相关的向量。

我们最终可以解码图形,最终获得每个粒子的加速度。既然我们有加速度,我们就可以计算出新的速度。有了新的速度,我们可以计算出每个粒子的新位置。现在,我们可以重复整个过程,在下一个时间步获取系统的状态。
在这里插入图片描述

七、图形解码器

让我们来测试一下。在进入流体之前,我在一个更简单的系统上测试了我刚才描述的方法。该系统由 10 个颗粒组成,与弹簧连接。这种设置自然地转换为图形,其中弹簧被简单地替换为边缘。此外,由于系统仅在一个值 k 上有所不同,即弹簧常数,因此从视频计算的物理编码仅包含一个数字。

为了训练模型,我为具有不同弹簧常数的系统生成了轨迹。在右侧,您可以看到 5 种不同类别的系统。在我的实验中,我改变了系统类的数量。有些模型仅使用弹簧常数非常低或非常高的轨迹进行训练,而有些模型甚至使用 10 个不同的系统类别进行训练。

总的来说,每个数据集始终包含 320 条轨迹。每条轨迹长 3 秒,共计 300 个时间步长。此外,每个带有图形的样本都具有轨迹的关联视频。

在训练过程中,以非标准方式选择样本以增加数据集中的方差。首先,选择单个时间步长。这包含输入图以及目标加速度。假设此时间步长来自弹簧常数 k 等于 4000 的类。然后,从具有该特定弹簧常数的系统的所有视频中,随机选择一个。然后,该视频与图形一起传递到网络,以计算加速度。

重要的是,视频编码器与图网络同时进行训练。这意味着视频编码器仅根据预测的加速度来学习物理特性。
在这里插入图片描述

八、具有不同弹簧常数的轨迹可视化

这是结果!根据视频,物理编码是不同的。在顶部,您可以看到一个具有低弹簧常数和低物理编码的系统的视频。底部是具有更硬弹簧的系统的视频,导致高物理编码。

右边是预测的轨迹。有趣的是,他们俩都是从完全相同的初始条件开始的。但是,根据物理编码,我的模型设法生成了类似于视频中可见的系统的卷展。右上角的弹簧比右下角的弹簧灵活得多。在称其为成功之前,让我们再看一些数据
在这里插入图片描述

九、预测的物理编码和推出轨迹

首先,仅使用两个系统的轨迹训练的模型,要么具有非常低的弹簧常数,要么具有非常高的弹簧常数。虽然这两个类的一步误差非常低,但对于介于两者之间的系统来说,误差要大得多。这可能是因为模型只看到了这些极端情况,因此它不能在它们之间轻松插值。

如果模型使用 5 个不同的类进行训练,则会出现类似的现象,训练期间存在的系统的误差较低,而模型从未见过的系统的误差较高。

最后,如果模型看到了 10 个具有 10 个不同弹簧常数的不同系统,则误差最小。这些结果与神经网络的直觉一致,因为它们在处理原始分布中存在的数据时做得很好,但很难脱离分布。
在这里插入图片描述
具有不同弹簧常数的系统的真实加速度和预测加速度之间的平均欧几里得距离

我想向你展示的另一件有趣的事情是物理编码。在第一个模型中,各种系统的平均编码似乎明显对应于真正的弹簧常数。

其他模型也可以说类似的事情。真实弹簧常数与预测的视频编码之间也存在明显的对应关系。

现在有趣的是这些编码的差异。突出显示的区域表示结果的标准差。如您所见,对于原始分布中存在的系统,方差很小,而对于训练数据集中不存在的系统来说,方差相当大。

对于使用 5 个类训练的模型,方差明显较小,表明模型对其预测更加“自信”。

对于在 10 个系统类上训练的最终模型,这种影响甚至更大。

在这里插入图片描述

由在不同数量的物理系统类别上训练的模型预测的视频编码

根据我们所知道的,让我们回答最初的问题。我们能否使用短视频对系统的物理特性进行可靠的编码?是的,我们能。
我们能否在一个程序中训练整个系统?是的,我们能。最后,我们能否可靠地在不同的材料之间进行插值?

正如我们所看到的,模型在分布之外难以泛化。然而,随着训练分布变得更加精细,并且在系统类中包含更多的变化,整个频谱的误差就会变小。


http://www.mrgr.cn/p/62007313

相关文章

聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?

前言 本质上,中间件类也是一个普通的 .NET 类,它不需要继承任何父类或者实现任何接口。 但是有几个约定: 需要有一个构造方法构造方法至少要有一个 RequestDelegate 类型的参数,用来指向下一个中间件。需要定义一个名字为 Invo…

Linux 认识与学习Bash——3

在Linux bash中&#xff0c;数据流重定向是指将命令的输出从默认的标准输出&#xff08;通常是终端&#xff09;重定向到其他位置&#xff0c;如文件或另一个命令的输入。这是通过使用特定的符号来实现的。例如&#xff0c;>用于将输出重定向到文件&#xff0c;而<用于将…

使用excel合理整理数据

使用excel合理整理数据 Excel函数LOOKUP把两个sheet数据关联起来LOOKUP函数 Excel函数LOOKUP把两个sheet数据关联起来 LOOKUP函数 需求场景 1、sheet1是视频的数据比如 aid、作者、视频信息 2、sheet2是视频的播放数据比如 aid vv uv等 做的就是根据1、2 的aid 将 sheet2中的所…

翻译《The Old New Thing》 - What is the deal with the ES_OEMCONVERT flag?

What is the deal with the ES_OEMCONVERT flag? - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20050719-12/?p34893 Raymond Chen 在 2005年07月19日 ES_OEMCONVERT 标志是怎么回事&#xff1f; 简要 文章讨论了 ES_OEMCONVERT 编辑控件风格的起源和用途…

深入剖析Tomcat(七) 日志记录器

在看原书第六章之前&#xff0c;一直觉得Tomcat记日志的架构可能是个“有点东西”的东西。在看了第六章之后呢&#xff0c;额… 就这&#xff1f;不甘心的我又翻了翻logback与新版tomcat的源码&#xff0c;额…&#xff0c;日志架构原来也没那么神秘。本篇文章先过一遍原书内容…

使用FastGPT+OneAPI在本地使用Llama3

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01;他的重要特点就是工作流编排。 工作流编排&#xff1a;基于 Flow 模块的工作…

《Fundamentals of Power Electronics》——示例:Buck-Boost转换器模型变为正则形式

为了说明正则电路模型推导的步骤&#xff0c;让我们将buck-boost转换器的等效电路操作成规范形式。buck-boost转换器的一个小信号交流等效电路如下图所示。 为了将上图所示网络转换成正则形式&#xff0c;需要将所有独立源d(t)转换到左侧&#xff0c;而将所有电感转换到右侧与变…

Docker的数据管理、网络通信和dockerfile

目录 一、Docker的数据管理 1. 数据卷 1.1 数据卷定义 1.2 数据卷配置 2. 数据卷容器 2.1 创建数据卷容器 2.2 使用--volume-from来挂载test1 二、端口映射 三、容器互联 1. 创建容器互联 2. 进入test2测试&#xff08;ping 容器名/别名&#xff09; 四、Docker镜…

C#语言入门

一、基础知识 1. 程序语言是什么 用于人和计算机进行交流&#xff0c;通过程序语言让计算机能够响应我们发出的指令 2. 开发环境 IDE&#xff0c;集成开发环境。它就是一类用于程序开发的软件&#xff0c;这一类软件一般包括了代码编辑、编译器、调试器、图形用户界面等等工…

Pycharm远程同步的mapping与sync

用Pycharm进行项目远程部署的时候会遇到两个同步文件&#xff0c;一个是点击 tools—>deployment—>configration——>mapping 一个是链接虚拟环境的时候会有一个sync&#xff0c;那么这两种同步有什么区别呢&#xff1f; 区别就是&#xff0c;2包括1&#xff0c;要用…

python abs函数怎么用

abs()函数是Python的数字函数&#xff0c;用以返回数字的绝对值。 语法 以下是 abs() 方法的语法&#xff1a; abs( x ) 参数 x -- 数值表达式&#xff0c;可以是整数&#xff0c;浮点数&#xff0c;复数。 返回值 函数返回 x&#xff08;数字&#xff09;的绝对值&#x…

Python基础详解二

一&#xff0c;函数 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现某个功能的代码段 def myMethod(data):print("数据长度为",len(data))myMethod("dsdsdsds") 函数的定义&#xff1a; def 函数名(传入参数):函数体return 返回值 def m…

在线听歌播放器 梨花带雨网页音乐播放器 网页音乐在线听 源码

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 下 载 地 址 &#xff1a; runruncode.com/php/19749.html 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容&#xff1a;修复播放器接口问题&am…

有了这么多套件,为什么还需要APaaS

文/明道云创始人任向晖 在明道云的业务活动中&#xff0c;比较常见的一个问题是和套件应用的关系。一个有具体应用需求的客户为什么不从市场上购买现成的套件应用&#xff0c;而要选择APaaS来构建呢&#xff1f;反过来说似乎也成立&#xff0c;既然一个平台什么应用都能搭建&a…

【Java基础】Maven继承

1. 前言 Maven 在设计时&#xff0c;借鉴了 Java 面向对象中的继承思想&#xff0c;提出了 POM 继承思想。 2. Maven继承 当一个项目包含多个模块时&#xff0c;可以在该项目中再创建一个父模块&#xff0c;并在其 POM 中声明依赖&#xff0c;其他模块的 POM 可通过继承父模…

【免费】虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型【simulink】

目录 主要内容 仿真模型要点 2.1 整体仿真模型 2.2 电压电流双闭环模块 2.3 SVPWM调制策略 2.4 无功电压模块 2.5 自适应控制策略及算法 部分结果 下载链接 主要内容 该模型为simulink仿真模型&#xff0c;主要实现的内容如下&#xff1a; 随着风力发电、光…

VISO流程图之子流程的使用

子流程的作用 整个流程图的框图多而且大&#xff0c;进行分块&#xff1b;让流程图简洁对于重复使用的流程&#xff0c;可以归结为一个子流程图&#xff0c;方便使用&#xff0c;避免大量的重复性工作&#xff1b; 新建子流程 方法1&#xff1a; 随便布局 框选3 和4 &#…

使用IIS部署Vue项目

前提 使用IIS部署Vue项目&#xff0c;后端必须跨域&#xff0c;不要在Vue中用proxy跨域&#xff0c;那个只在dev环境中有用&#xff01; IIS安装&#xff0c;不用全部打勾&#xff0c;有些他默认就是方块 ■ 选择性安装的&#xff0c;就维持原样就可以。 添加网站配置 右键…

mac/windows下安装docker,minikube

1、安装docker Get Started | Docker 下载安装docker 就行 启动后&#xff0c;就可以正常操作docker了 使用docker -v 验证是否成功就行 2、安装minikube&#xff0c;是基于docker-desktop的 2.1、点击设置 2.2、选中安装&#xff0c;这个可能需要一点时间 这样安装后&…

LeetCode 11—— 盛最多水的容器

阅读目录 1. 题目2. 解题思路一3. 代码实现一4. 解题思路二5. 代码实现二 1. 题目 2. 解题思路一 暴力法&#xff0c;遍历所有可能的垂线对 ( i , j ) (i, j) (i,j)&#xff0c;求取最大面积&#xff1a; a r e a m i n ( h [ i ] , h [ j ] ) ∗ ( j − i ) area min(h[i]…