方程自己解(1)——物理信息神经网络(PINN)

方程自己解(1)——物理信息神经网络(PINN)文章目录前言(一)物理神经网络(PINN)解读1.1PINN基本背景1.2PINN算法描述前言  最近正在看利用“深度学习”(大概吧,其实只是利用了neuralnetwork的自动微分特性(AD)),在看一些文章的同时,将文章中提到的开源代码用起来和复现一些基本方程求解能够加快我学习的进度,这里将持续贴出一些方程和代码的求解过程。当然非常希望同学和朋友们可以给我指出错误,最后如果能够坚持下去,这个系列的工作会分享到github,同时如果对各个开源程序有所帮助那就更好了!  由于会参考到很多文章

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

(一)前言

  最近正在看利用“深度学习”解方程(大概吧,其实只是利用了neural network的自动微分特性(AD)),在看一些文章的同时,将文章中提到的开源代码用起来和复现一些基本方程求解能够加快我学习的进度,这里将持续贴出一些方程和代码的求解过程。当然非常希望同学和朋友们可以给我指出错误,最后如果能够坚持下去,这个系列的工作会分享到github,同时如果对各个开源程序有所帮助那就更好了!
  由于会参考到很多文章,所以将这个系列当作一个读文章的过程也很不错。

(二)物理神经网络(PINN)解读

1. PINN基本背景

  2019年,布朗大学应用数学系研究团队提出了PINN,并发表在《计算物理学期刊》(Journal of Computational Physics)。自从发表,PINN成为了AI物理领域最常见的一个关键词。从下图可见,当前的引用量已经达到了1674。

在这里插入图片描述

figure cite:Google scholar

2. 算法描述

  PINN,即物理信息神经网络,也就是将物理方程作为限制加入到神经网络之中使得拟合得到的结果更加满足物理规律。这个限制如何实现呢?也就是将物理方程迭代前后的差值就爱到Neural Network中的损失函数之中,让这个物理方程每次都能够得到训练。那么神经网络在训练迭代的过程之中优化的就不仅仅是网络自己的损失函数,还包括了物理方程每次迭代的差值,使得最后训练出来的模型满足某种设定的物理规律。

3. PINN文章解读

考虑下面的问题:
u t + N ( u ; λ ) = 0 (1) u_t + N(u;\lambda) = 0 \tag{1} ut+N(u;λ)=0(1)
其中, u ( x , t ) u(x,t) u(x,t)是要求的解, N ( u ; λ ) N(u;\lambda) N(u;λ)是关于这个解的非线性操作算子(比如偏导数), λ \lambda λ是待定参数。
那么问题就来了:

  1. Data-driven solutions of partial differential equations:参数 λ \lambda λ已知的时候,如何求的未知的解 u ( x , t ) u(x,t) u(x,t)
  2. Data-driven discovery of partial differential equations:参数 λ \lambda λ未知的时候,如何求解 u ( x , t ) u(x,t) u(x,t)的同时确定参数 λ \lambda λ

3.1 连续时间模型

在这里插入图片描述

figure cite:https://bbs.huaweicloud.com/blogs/detail/263776
f ( t , x ) = u t + N [ u ] (2) f(t,x) = u_t + N[u] \tag{2} f(t,x)=ut+N[u](2)
使用神经网络来逼近 u ( x ) u(x) u(x) f ( x ) f(x) f(x),且这两个网络共享参数,(基于神经网络自动微分的功能,链式法则)(这个点我在后面会用一个简单的例子来说明)

具体操作:首先定义一个网络来拟合u(x),然后 f ( t , x ) f(t,x) f(t,x)可以接在 u ( x , t ) u(x,t) u(x,t)的后面再加上一些操作算子。为了优化网络我们定义一个均方损失函数:
M S E = M S E u + M S E f (3) MSE = MSE_u + MSE_f \tag{3} MSE=MSEu+MSEf(3)

其中
M S E u = 1 N u ∑ i = 1 N u ∣ u ( t u i , x u i ) − u i ∣ 2 (4) MSE_u = \frac{1}{N_u}\sum_{i=1}^{N_u}\vert u(t_u^i,x_u^i) – u^i \vert ^2 \tag{4} MSEu=Nu1i=1Nuu(tui,xui)ui2(4)

M S E f = 1 N f ∑ i = 1 N f ∣ u ( t f i , x f i ) ∣ 2 (5) MSE_f = \frac{1}{N_f}\sum_{i=1}^{N_f}\vert u(t_f^i,x_f^i) \vert ^2 \tag{5} MSEf=Nf1i=1Nfu(tfi,xfi)2(5)

式子4表示在初始和边界条件处神经网络的拟合值 u ( t u i , x u i ) u(t_u^i,x_u^i) u(tui,xui)与真实值的均方误差;
式子5表示的是神经网络与真实物理规律的均方误差。

3.2 离散时间模型

=这个数学有些强硬,待到做到后面有机会回来补充!!!=
假设有一个q阶的龙格-库塔方程(百度百科-龙格库塔法):
u n + c i = u n − Δ ∑ j = 1 q a i j N [ u n + c j ] ,    i = 1 , . . . . , q u^{n+c_i} = u^n – \Delta \sum_{j=1}^{q}a_{ij}N[u^{n+c_j}] , \; i=1,….,q un+ci=unΔj=1qaijN[un+cj],i=1,....,q u n + 1 = u n − Δ ∑ j = 1 q b j N [ u n + c j ] (6) u^{n+1} = u^n – \Delta \sum_{j=1}^{q}b_{j}N[u^{n+c_j}] \tag{6} un+1=unΔj=1qbjN[un+cj](6)
这里 u n + c j ( x ) = u ( t n + c j Δ t , x ) ,    j = 1 , 2. , . . . , q u^{n+c_j}(x) = u(t^n +c_j\Delta t,x) , \; j = 1,2.,…,q un+cj(x)=u(tn+cjΔt,x),j=12.,...,q.这个通用形式通过参数 { a i j , b j , c j } \{a_{ij} , b_j,c_j\} {
aij,bj,cj}
融合了显式和隐式的解,那么式7可以表示为下面简单的形式
u n = u i n ,    i = 1 , . . . , q u^n = u_i^n , \; i = 1,…,q un=uin,i=1...,q u n = u q + 1 n (7) u^n = u^{n}_{q+1} \tag{7} un=uq+1n(7)

我们首先设计一个多输出的神经网络拟合
[ u n + c 1 ( x ) , . . . , u n + c q ( x ) , u n + 1 ( x ) ] [u^{n+c_1}(x),…,u^{n+c_q}(x),u^{n+1}(x)] [un+c1(x)...,un+cq(x),un+1(x)]

然后这个先验假设结果和方程7就构成了一个物理信息神经网络:
[ u 1 n ( x ) , . . . , u q n ( x ) , u q + 1 n ( x ) ] [u^{n}_1(x),…,u^{n}_q(x),u^{n}_{q+1}(x)] [u1n(x)...,uqn(x),uq+1n(x)]

3.3 论文结果展示

(1) Schrodinger equation:薛定谔方程
在这里插入图片描述
figure cite: (M.Raissi.etc,Journal of Computational Physics,2019)

顶部是 ∣ h ( t , x ) ∣ |h(t,x)| h(t,x)沿着初始和边界条件的训练数据份分布,以及随机生成的20000个采样点序列;下面是精确数值解和我们神经网络预测的结果的对比图,红色表示预测结果,蓝色是精确解。此处对应的L2误差(最小二乘误差)是 1.97.1 0 − 3 1.97 . 10^{-3} 1.97.103

(2) Allen-Cahn方程:
在这里插入图片描述

figure cite: (M.Raissi.etc,Journal of Computational Physics,2019)

(3) Navier-Stokes方程(什么是纳维-斯托克斯方程?):
在这里插入图片描述
在这里插入图片描述

figure cite: (M.Raissi.etc,Journal of Computational Physics,2019)

(4) KdV 方程:
在这里插入图片描述

4. 总结

详细内容参考原文,因为我认为读这篇文章的关键是:

  1. Why?
    PINN:物理信息神经网络是在神经网络通用近似理论的基础上,通过加入偏导数等算子给数值模拟加上了物理约束,从而使得整个网络具有模拟物理规则的作用。关键点在于:通用近似理论 + 物理信息的传递(导数算子+残差构建)+NN的自动微分(AD)

  2. How?
    怎么构建网络去优化?简单的全连接神经网络甚至已经能很好地进行通用近似了!!!

  3. What?
    用PINN可以做什么?解偏微分方程,在各种不同的领域中都有涉及。对于我个人而言,我在读地球物理,其中的波动方程、程函方程、格林函数等等都是有待攻克的领域,当然也已经有很多人有了很多的发现,但是基于前人研究也会有更多的见解

参考:
【1】博客分析:物理神经网络(PINN)解读
【2】PINN论文:Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations
【3】当神经网络遇上物理: PINNs原理解析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203460.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c#语言简介_简单介绍自己

    c#语言简介_简单介绍自己taskScheduler根据定义ThetaskSchedulerbythedefinitionblurb.“Istheclasswheretheusagecontextiswithinthetasklibraries.“它的作用像是WPF/Winform时代的SynchronizationContext.ItisliketheSync…

    2022年9月25日
    0
  • 给定一个n个正整数组成的数组_算法基础课acwing下载

    给定一个n个正整数组成的数组_算法基础课acwing下载给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,|A[i]|≤1

    2022年8月9日
    4
  • android脚本工具,安卓脚本编程软件[通俗易懂]

    android脚本工具,安卓脚本编程软件[通俗易懂]脚本编程助手是一款实用的脚本编程软件,对脚本程序感兴趣的朋友可以试试,内置多种辅助和工具,支持基础操作类、多功能操作类,基础辅助类和http类等等,为你写好更经典的脚本程序提供强大支持,有需要的朋友欢迎体验。软件相关脚本(Script)是一种批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。简介脚本简单…

    2022年5月23日
    34
  • MPP架构详解_大数据中心架构详解

    MPP架构详解_大数据中心架构详解数据库构架设计中主要有SharedEverthting、SharedNothing、和SharedDisk:SharedEverthting:一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表SQLServerSharedDisk:各个处理单元使用自己的私有CPU和Memory,共享磁盘系统。典型的代表OracleRac,它是数据共…

    2025年5月30日
    2
  • idea中servlet访问不到_javaweb创建servlet

    idea中servlet访问不到_javaweb创建servlet今天遇到一个比较新奇的问题,但是也应该是使用springMVC框架时由于疏忽经常会遇到的一个,解决后写出来和大家分享分享。问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源。浏览器控制台报错信息:idea后台报错信息:二月07,201711:27:35上午org.springframework.web.ser…

    2022年8月23日
    12
  • SpringBoot事务配置管理[通俗易懂]

    SpringBoot事务配置管理[通俗易懂]1.事务使用功能场景:由于数据操作在顺序执行的过程中,线上可能有各种无法预知的问题,任何一步操作都有可能发生异常,异常则会导致后续的操作无法完成,此时由于业务逻辑并未正确的完成,所以在之前操作数据库的动作并不可靠,需要在这种情况下进行数据的回滚。事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务未进行操作的状态。事务管理是SpringBoot框架中最为常用的功能之一,我们在实际应用开发时,基本上在service层处理业务逻辑的时候都要加上事

    2022年6月7日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号