基于神经网络的偏微分方程求解器再度取得突破,北大字节的研究成果入选Nature子刊

目录

一.引言:神经网络与偏微分方程

二.如何基于神经网络求解偏微分方程

1.简要概述

2.基于神经网络求解偏微分方程的三大方向

2.1数据驱动

基于CNN

基于其他网络

2.2物理约束

PINN

基于 PINN 

可测量标签数据

2.3物理驱动(纯物理约束)

全连接神经网路(FC-NN)

CNN 求解偏微分方程

三.基于神经网络偏微分方程求解的新突破


一.引言:神经网络与偏微分方程

基于神经网络可以求解偏微分方程。通常情况下,神经网络将数据从一个有限维空间(例如,图像的像素值)映射或转换为另一个有限维空间(例如,将图像分类的数字,例如1代表猫,2代表狗)。求解偏微分方程的神经网络则是从无穷大的空间映射到无穷大的空间。
 
偏微分方程的用处和复杂性相伴而生,例如,想要观察空气在飞机机翼附近的流动二维透视图,建模人员想知道流体在空间中任何一点(也称为流场)以及在不同时间的速度和压力的话,就需要用到偏微分方程。考虑到能量、质量和动量守恒定律,特定的偏微分方程,即Navier-Stokes方程可以对这种流体流动进行建模。
 
在这些情况下,建模者会转向数值方法,将偏微分方程转换为一组易于处理的代数方程,假定这些方程可保持很小的空间和时间增量。在超级计算机上,用数值方式解决复杂的偏微分方程可能要花费数月的时间。如果初始条件或边界条件或所研究系统的几何形状(例如机翼设计)发生了变化,就必须重新开始求解。使用的增量越小(如研究人员所说,网格越细),模型的精度越高,数值求解所需的时间就越长。
 
神经网络更擅长拟合这样一个黑盒的未知函数,输入是一个向量,而输出是另一个向量。如果存在将一组输入向量映射到一组输出向量的函数,则可以训练网络以学习该映射,两个有限维空间之间的任何函数都可以通过神经网络近似。
 
2016年,研究人员研究了如何将通常用于图像识别的深度神经网络用于解决偏微分方程。首先,研究人员生成了用于训练网络的数据:一个数值求解器计算了流过xy且大小和方向不同的基本形状(三角形,四边形等)的简单对象上流动的流体的速度场。

二.如何基于神经网络求解偏微分方程

1.简要概述

使用神经网络来解决偏微分方程的基本思想是将偏微分方程转化为一个可学习的模型,然后使用神经网络来学习这个模型。
 
下面是一个简单的步骤概述:
 

  • 1. 定义问题:首先需要定义要解决的偏微分方程问题。这可能包括选择适当的坐标系、定义边界条件和初始条件等。
  • 2. 离散化:将连续的偏微分方程转化为离散的形式。这可以通过将空间和时间域划分为网格来实现。
  • 3. 构建神经网络:构建一个神经网络来逼近离散化后的偏微分方程。神经网络的输入可以是网格点上的初始条件和边界条件,输出可以是下一个时间步长的网格点上的解。
  • 4. 训练神经网络:使用训练数据来训练神经网络。训练数据可以是通过数值方法求解偏微分方程得到的结果。
  • 5. 预测:使用训练好的神经网络来预测新的初始条件和边界条件下的解。

 
需要注意的是,神经网络方法并不是一种精确的解析方法,而是一种数值方法。因此,其预测结果可能存在一定的误差。此外,神经网络的训练需要大量的数据和计算资源,因此在实际应用中需要考虑到这些因素。
 
总的来说,使用神经网络来解决偏微分方程是一种有前途的方法,但需要仔细选择模型和训练数据,以确保预测结果的准确性和可靠性。

2.基于神经网络求解偏微分方程的三大方向

2.1数据驱动

基于CNN

1.PDE-Net 2.0

是一种基于深度学习的偏微分方程(PDE)发现方法。它通过结合数值近似和符号神经网络,从观察到的动态数据中发现(时变的)PDE。这种方法具有很高的灵活性和表达能力,可以学习到微分算子和底层PDE模型的非线性响应函数。

2.基于卷积的三维非稳态偏微分方程模型求解方法

基于卷积的三维非稳态偏微分方程模型求解方法是由华侨大学计算机科学与技术学院的金镇上提出的。该方法以偏微分方程的差分格式为基础构造卷积迭代格式并提取卷积核,通过卷积核扫描数值解图像的方式逼近偏微分方程的解。该方法直接在数值解图像上进行卷积迭代,从而替代了传统数值方法求解离散线性方程组的过程。数值算例表明,卷积迭代方法在 GPU 上求解大规模问题的效率优于传统 ADI 算法等。

基于其他网络

1.神经网络作为一种函数逼近器及其在解决微分方程中的应用

神经网络作为一种函数逼近器在解决微分方程中有广泛的应用。下面是一些基本的概念和应用:
 

  • 1. 函数逼近:神经网络可以通过调整网络的权重来逼近任意函数。它们可以学习输入和输出之间的映射关系,从而实现对复杂函数的逼近。
  • 2. 微分方程求解:对于常微分方程(ODE)或偏微分方程(PDE),可以将其转化为函数逼近问题。通过使用神经网络来逼近微分方程的解函数,可以实现对微分方程的数值求解。
  • 3. 数值积分:对于积分问题,可以使用神经网络来逼近被积函数,然后通过数值积分方法计算积分结果。
  • 4. 边值问题:对于边值问题,例如求解ODE的初值问题或PDE的边界条件问题,可以使用神经网络来逼近解函数,并结合数值方法求解。
  • 5. 模型预测和控制:神经网络可以用于构建微分方程的模型,从而进行预测和控制。通过学习输入和输出之间的关系,可以预测系统的未来状态,并实现对系统的控制。

2.使用深度学习解决高维偏微分方程

使用深度学习解决高维偏微分方程是一个活跃的研究领域,它结合了深度学习的强大建模能力和偏微分方程的数学描述来解决复杂的物理问题。
 
以下是一些基本概念和方法:
 

  • 1. 深度神经网络:深度神经网络(DNN)是一种常见的深度学习模型,由多个神经元层组成,可以学习输入数据和输出之间的复杂映射关系。
  • 2. 物理模型:偏微分方程描述了物理系统中的动态行为,例如流体力学、电磁学、量子力学等。
  • 3. 数据驱动方法:通过使用大量的数值模拟或实验数据来训练深度学习模型,使其能够学习到物理系统的行为和特征。
  • 4. 模型预测:训练好的深度学习模型可以用于预测物理系统的未来状态或响应,例如流场的演化、物体的运动等。
  • 5. 结合数值方法:深度学习可以与传统的数值方法相结合,以提高求解的精度和效率。

3.基于深度学习的高维抛物型偏微分方程和向后随机微分方程的数值方法

基于深度学习的高维抛物型偏微分方程和向后随机微分方程的数值方法是一种利用深度学习技术来求解高维抛物型偏微分方程和向后随机微分方程的数值方法。这种方法的基本思想是将高维问题映射到低维空间,然后使用深度学习模型来学习低维空间中的映射关系。
 
以下是一些基本步骤:
 

  • 1. 空间降维:通过使用特征提取或其他降维技术,将高维问题映射到低维空间。
  • 2. 深度学习模型:构建深度学习模型,例如神经网络或循环神经网络,以学习低维空间中的映射关系。
  • 3. 数值求解:使用训练好的深度学习模型来近似求解高维抛物型偏微分方程或向后随机微分方程。
  • 4. 模型评估和优化:通过与传统数值方法或真实解进行比较,评估深度学习模型的准确性,并进行必要的优化。

这种方法的优点是可以利用深度学习的强大建模能力来处理高维问题,并且可以自动学习问题的特征和模式。然而,需要注意的是,深度学习模型的准确性和泛化能力可能受到数据和模型选择的影响,因此需要进行适当的评估和验证。
 

2.2物理约束

PINN

1.物理学启发的深度学习

物理学启发的深度学习是一种将物理学原理和概念应用于深度学习的方法。它旨在利用物理学中的对称、守恒定律和优化原理等来设计更强大、更高效的深度学习模型。
 
以下是一些物理学启发的深度学习的例子:
 

  • 1. 物理系統建模:利用物理学中的牛顿力学、热力学等原理来构建深度学习模型,以模拟物理系統的行为和特征。
  • 2. 对称约束:利用物理学中的对称原理,如旋转对称、平移对称等,来约束深度学习模型的结构,提高模型的泛化能力和效率。
  • 3. 守恒定律:利用物理学中的能量守恒、动量守恒等定律来设计深度学习模型,以确保模型在学习过程中保持某些物理量的守恒。
  • 4. 优化方法:借鉴物理学中的优化方法,如牛顿法、梯度下降法等,来优化深度学习模型的参数。
  • 5. 物理信息神经网络:结合物理学中的先验知识和约束,设计具有物理意义的神经网络结构和损失函数,以提高模型的准确性和可解释性。

物理学启发的深度学习旨在将物理学的原理和方法与深度学习相结合,以解决复杂的科学和工程问题,并推动深度学习在物理学领域的应用。

基于 PINN 

1.Richardson-Richards方程的单调约束物理神经网络

Richardson-Richards方程的物理信息神经网络(PINN)是一种基于深度学习的方法,用于求解Richardson-Richards方程。PINN是一种利用物理信息来约束神经网络的方法,它通过将物理规律转化为神经网络的约束条件,使得神经网络能够更好地模拟物理系统的行为。
 
Richardson-Richards方程是一种描述油藏驱替过程的偏微分方程,它在石油工程中有着广泛的应用。通过使用PINN来求解Richardson-Richards方程,可以提高计算效率和精度,并且可以更好地处理复杂的油藏模型。
 

可测量标签数据

1.基于理论指导的神经网络对地下流的深度学习

2.3物理驱动(纯物理约束)

全连接神经网路(FC-NN)

1.通过重要性采样对物理知识神经网络进行高效训练

通过重要性采样对物理知识神经网络进行高效训练是一种基于概率推理的训练方法。重要性采样是一种在概率分布中进行采样的技术,它可以根据样本的重要性来调整采样概率,从而更有效地利用有限的样本。
 
在物理知识神经网络的训练中,重要性采样可以用于优化训练过程,提高模型的泛化能力和准确性。具体来说,可以通过以下步骤实现高效训练:
 

  • 1. 定义目标概率分布:根据物理问题的特点,定义目标概率分布,即物理量的真实分布。
  • 2. 设计重要性采样策略:根据目标概率分布,设计合适的重要性采样策略,以更有针对性地获取具有代表性的样本。
  • 3. 训练神经网络:使用重要性采样策略采集到的样本训练物理知识神经网络,以学习物理量之间的关系和规律。
  • 4. 模型评估和优化:通过与真实数据或其他基准方法进行比较,评估训练得到的物理知识神经网络的性能,并进行必要的优化。

 
通过重要性采样对物理知识神经网络进行高效训练可以提高训练效率和模型的泛化能力,但需要根据具体问题进行合理的设计和调整。
 

CNN 求解偏微分方程

用于求解不规则域上的参数化稳定状态PDE的物理信息几何自适应卷积神经网络

提出了一种基于卷积神经网络(CNN)的物理知识神经网络(PINN),用于高效求解不规则域上的参数化偏微分方程(PDEs),无需任何标记数据。通过引入椭圆坐标映射,实现了不规则物理域和规则参考域之间的坐标转换,从而利用了强大的经典CNN主干网络。数值实验表明,该方法在效率和准确性上优于目前最先进的基于全连接神经网络的PINN,可用于解决具有参数化边界条件、可变几何形状和空间变化源场的稳态PDE。

三.基于神经网络偏微分方程求解的新突破

https://new.qq.com/rain/a/20240229A02ZMH00

近年来,基于神经网络的偏微分方程求解器在各领域均得到了广泛关注。其中,量子变分蒙特卡洛方法(NNVMC)在量子化学领域异军突起,对于一系列问题的解决展现出超越传统方法的精确度 [1, 2, 3, 4]。北京大学与字节跳动研究部门 ByteDance Research 联合开发的计算框架 Forward Laplacian 创新地利用 Laplace 算子前向传播计算,为 NNVMC 领域提供了十倍的加速,从而大幅降低计算成本,达成该领域多项 State of the Art,同时也助力该领域向更多的科学难题发起冲击。该工作以《A computational framework for neural network-based variational Monte Carlo with Forward Laplacian》为题的论文已发表于国际顶级期刊《Nature Machine Intelligence》,相关代码已开源。

图片

  • 代码地址:

  • https://github.com/bytedance/LapNet

  • https://github.com/YWolfeee/lapjax

该项工作一提出即受到相关研究人员的密切关注,围绕该工作已有多个开源项目实现,编程框架 JAX 也计划将该项工作吸收其中。

该项工作由北京大学智能学院王立威课题组、物理学院陈基课题组联合字节跳动研究部门 ByteDance Research 一同开发完成,作者中有多位北京大学博士生在 ByteDance Research 实习。

背景简介

基于神经网络的量子变分蒙特卡洛方法(NNVMC)已成为量子化学 - 从头计算领域中一项前沿技术。它具备精度高、适用范围广等优点。但它的阿克琉斯之踵在于过高的计算成本,这也限制了该方法在实际化学问题中的应用。

作者提出了一套全新的计算框架 "Forward Laplacian",利用 Laplace 算子的前向传播,显著提升了 NNVMC 方法的计算效率,为人工智能在微观量子问题中的应用打开了新的大门。

方法介绍

Forward Laplacian 框架

在 NNVMC 方法中,神经网络的目标函数是微观体系的能量,包括动能与势能两项。其中动能项涉及对神经网络的拉普拉斯算子的计算,这也是 NNVMC 中耗时最长的计算瓶颈。现有的自动微分框架在计算拉普拉斯算子时,需要先计算黑塞矩阵,再求得拉普拉斯项(即黑塞矩阵的迹)。而作者所提出的计算框架 "Forward Laplacian" 则通过一次前向传播直接求得拉普拉斯项,避免了黑塞矩阵的计算,从而削减了整体计算的规模,实现了显著加速。

图片

LapNet 网络

除了有效削减计算图规模之外,Forward Laplacian 框架的另一大特点是能有效利用神经网络梯度计算中的稀疏性,提出神经网络结构 LapNet。LapNet 通过增加神经网络中的稀疏性,在精度无损的同时,显著提升了网络计算的效率。

图片

计算结果

绝对能量

作者首先就方法的效率及精度同当前 NNVMC 领域有代表性的几项工作进行了比较。从绝对能量的计算结果而言,作者提出的 LapNet 在 Forward Laplacian 框架下的效率高于参考工作数倍,精度上也与 SOTA 保持一致。此外,如果在相同计算资源(即相同 GPU hour)的情况下比较,LapNet 的计算结果可以显著优于之前的 SOTA。

图片

加速标度

为了更明确地研究作者所提出方法相比于之前 SOTA 的加速标度,作者在不同大小的链式聚乙烯体系上进行了测试,结果可以很明显地看到 Forward Laplacian 工作带来的 O (n) 加速。此处 n 为目标分子中的电子数目。

图片

相对能量

在物理、化学研究中,相对能量相较于绝对能量具有更明确的物理意义。作者也在一系列的体系上进行了测试,均取得了理想结果。

图片

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

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

相关文章

保姆级讲解字符串函数(下篇)

目录 strtok的使用 strerror的使用 strstr的使用和函数模拟实现 strstr的使用 strstr函数模拟实现 接上篇:保姆级讲解字符串函数(上篇),我们接着把剩下三个函数讲解完,继续跟着我的步伐一起学习呀. strtok的使用 …

从 Language Model 到 Chat Application:对话接口的设计与实现

作者:网隐 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎,作为一个高性能的大模型推理解决方案,它已被广泛应用于阿里内部。本文从对话接口的设计出发,介绍了业界常见方案,并分享了 RTP-LLM 团队在此场景…

ARM中多寄存内存访问概念和栈的种类和应用

多寄存器内存访问指令 多寄存器内存访问指令 MOV R1,#1 MOV R2,#2 MOV R3,#3 MOV R4,#4 MOV R11,#0x40000020 STM R11,{R1-R4} 将R1-R4寄存器中的数据存储到内存以R11为起始地址的内存中 LDM R11,{R6-R9} 将内存中以R11为起始地址的数据读取到R6-R9寄存器中 当寄存器…

Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows+Linux

Tensorflow2.0部署(tensorflow/serving)过程备忘记录 部署思路:采用Tensorflow自带的serving进模型部署,采用容器docker 1.首先安装docker 下载地址(下载windows版本):https://desktop.docke…

基于springboot+vue实现早餐店点餐系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现早餐店点餐系统演示 摘要 多姿多彩的世界带来了美好的生活,行业的发展也是形形色色的离不开技术的发展。作为时代进步的发展方面,信息技术至始至终都是成就行业发展的重要秘密。不论何种行业,大到国家、企业&#xff0…

文件操作上(c语言)

目录 1. 文件的作用2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开与关闭4.3.1 文件的打开模式4.3.2 实例代码 1. 文件的作用 使用文件可以将数据进行持久化的保…

openssl调试记录

openssl不能直接解密16进制密文,需要把密文转化成base64格式才能解密 调试记录如下:

Qt 中Json文件的操作

Json文件的读取 QFile file("data.json"); //准备好的文件file.open(QIODevice::ReadOnly|QIODevice::Text);QByteArray arr file.readAll();QJsonDocument jsonDoc QJsonDocument::fromJson(arr);QJsonObject jsonObj jsonDoc.object();qint32 id jsonObj["…

Dubbo-记录

1.概念 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理…

Qt QListwidget与QStackedWidget或QTableWidget实现多界面切换的效果

文章目录 效果图使用QStackedWidget实现使用QTableWidget实现总结 效果图 使用QStackedWidget实现 QStackedWidget提供了一种堆栈式的界面布局方式。功能:QStackedWidget允许开发者在一个固定区域内显示多个子窗口或页面,但同时只显示其中一个子窗口&am…

windows下安装python3.8

一、从官网下载安装包 官网地址:https://www.python.org/downloads/ 华为云地址:https://mirrors.huaweicloud.com/python/ 第三方镜像:https://registry.npmmirror.com/binary.html?pathpython/ 注意:从python3.8.10版本开始…

PostgreSQL索引篇 | Hash索引

Hash索引 PostgreSQL版本为8.4.1 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) 在实际的数据库系统中,除了B-Tree外,还有多种数据结构可做索引,Hash表就是其中的一种。通过…

HTML_CSS_盒子模型

盒子模型组成 内容区域&#xff08;comtent&#xff09;内边距区域&#xff08;padding&#xff09;边框区域&#xff08;border&#xff09;外边距区域&#xff08;margin&#xff09; 布局标签 标签&#xff1a;<div> </div> 和 <span> …

Leetcode笔记——二叉树的迭代遍历

中序遍历&#xff1a; 定义一个 保存中间量的栈 和一个 结果数组 1. 模板写法 注释版&#xff1a; 背诵版&#xff1a; 前序遍历 1. 中 右 左 的顺序遍历 2. 模板写法&#xff0c;按中 左 右 的顺序遍历 后序遍历 1. 模板写法&#xff0c;按左 右 中 的顺序遍历 注释版&am…

FreeRTOS操作系统学习——同步互斥与通信

同步&#xff08;Synchronization&#xff09; 同步是一种机制&#xff0c;用于确保多个任务能够按照特定的顺序协调执行或共享数据。当一个任务需要等待其他任务完成某个操作或满足某个条件时&#xff0c;同步机制可以帮助任务进行协调和等待。 在FreeRTOS中&#xff0c;常见…

Spring官网中查看MongoDB的API文档的详细步骤

目录 Spring官网中查看MongoDB的API文档的详细步骤1、进入 Spring 官网2、选择 Mongodb的文档介绍3、点击API文档4、进入文档查询页面 Spring官网中查看MongoDB的API文档的详细步骤 1、进入 Spring 官网 首先进入Spring的官网&#xff0c;然后点击【Spring Data】 2、选择 Mon…

Java二叉树 (2)

&#x1f435;本篇文章将对二叉树的一些基础操作进行梳理和讲解 一、操作简述 int size(Node root); // 获取树中节点的个数int getLeafNodeCount(Node root); // 获取叶子节点的个数int getKLevelNodeCount(Node root,int k); // 获取第K层节点的个数int getHeight(Node r…

P1958 上学路线

难度&#xff1a;普及- 题目描述 你所在城市的街道好像一个棋盘&#xff0c;有 a 条南北方向的街道和 b 条东西方向的街道。南北方向的 a 条街道从西到东依次编号为 1 到 a&#xff0c;而东西方向的 b 条街道从南到北依次编号为 1 到 b&#xff0c;南北方向的街道 i 和东西方…

单数码管(arduino)

1.连接方法 挨个点亮每个灯 #include <Arduino.h>int pin_list[] {4, 5, 19, 21, 22, 2, 15, 18}; int num_pins sizeof(pin_list) / sizeof(pin_list[0]); // 计算数组中的元素数量void setup() {// 设置每个引脚为输出for(int i 0; i < num_pins; i) {pinMode(p…

C语言:ctype和string库中的部分常用函数的应用和实现

在编程过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;C语言标准库中就提供了一系列的库函数&#xff0c;便于我们操作库函数。 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xff0c;也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含…