基本模型 PINNs : Physics Informed Neural Networks
系列最开始当然要提到很经典的文章 —— Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 。 这篇文章是布朗大学的助理教授Maziar Rais.
系列最开始当然要提到很经典的文章 —— Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 。 这篇文章是布朗大学的助理教授 Maziar Raissi 和学术大牛GE Karniadakis 一起写的, 文章分为两部分, 第一部分写的是 Data-driven solutions of nonlinear partial differential equations, 就是在讲怎么解 PDEs(Partial Differential Equations), 第二部分写的是 Data-driven discovery of nonlinear partial differential equations, 就是在讲怎样解PDE的反问题 (带参数的PDE,参数需要在解的过程中求解出来)。 由于其基本想法很接近, 我们只谈第一部分, 简略的讲第二部分。
附(作者的程序代码Github地址:https://github.com/maziarraissi/PINNs)
下面便进入正题。 监督学习是机器学习中的一个大类, 很多分类问题,回归问题都可以用它来解决。 那么, 从求解PDE的角度来看, 监督学习能发挥什么样的作用呢?
如何逼近一个函数(算子)一直以来便是数学中的难题。 数学家们发展了很多工具来逼近函数, 如插值理论,框架, 谱方法 , 有限元等。 从逼近论的角度来看, 神经网络(Neural Networks)便可以看做一个非线性函数逼近器。 我们期望输出一个数据, 通过神经网络输出的值可以反应出输入数据的好坏, 有效性等, 从而有助于我们理解问题。 假设我们限制神经网络输出的值是一维的, 那么对于 binary classfication 来说, 我们可以把大于 0 的分为一类, 小于 0 的分为另一类。但是对于一个PDE来说, 我们如何来判断输入数据的好坏呢?
给定一个非线性PDE
其中 是要求的解, 是非线性偏微分算子, 是需要待定的参数。 为简单起见, 我们假设。 用一个具体的例子(Burgers方程)来说明主要的想法和步骤
定义 为 利用 Neural Networks 来逼近 。 定义损失函数为
其中
这里 定义了 的初边值训练数据, 定义了 的配置点的训练数据(内部)。
我们来分析一下损失函数。 如果神经网络能很好地求解出PDE的解, 那么对于来自初边值的任一个点, 其值对于内部的配置点, 因为很好地拟合了微分方程, 也就是说, 损失函数的值为 0 时, 我们便可以说在训练集上每个点都有 。这样便问题便转化为如何优化损失函数。
利用神经网络的反向传播机制和L-BFGS便可以求解。 作者使用了tensorflow1.13 版本来求解。 值得注意的是, 我们处理 时不能用 tensorflow 的反向传播机制来计算, 因为反向传播计算的对参数 的导数, 处理的代码是
最后解的结果L2 误差为1.6e-03, 解的图像为
对于求解带参数的PDE, 只需将 转变为 即可。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)