物理信息神经网络(PINNs)是一种特殊的神经网络类型,它们通过将物理定律融入学习过程中,用于估算偏微分方程的解。其中一个典型的例子就是无粘性Burgers方程,这是一种守恒律的模型,能够形成冲击波。
towardsdatascience.com/can-neural-networks-formulate-shock-wave-147bb75d0715?source=collection_archive---------4-----------------------#2024-04-04
当前的文献在处理冲击波时遇到困难,因为冲击波并非连续解,而是在弱意义下满足方程。例如,依赖于训练样本的连续时间模型,如算法微分方法,无法准确捕捉到冲击波,这些方法更适合于函数正则性较强的情况。
为了解决这一问题,有人提出了一种离散时间模型,通过结合神经网络和时间离散化来帮助模型生成冲击波。不过,这种方法部分削弱了PINNs的优势,使其更接近传统数值方法,这可能对熟悉物理方程但不熟悉数值解法的人员构成挑战。
在这篇文章中,我将探讨现有的连续时间模型(即PINN方法)在解决Burgers方程时的局限性。此外,我还会介绍一些基于算法微分的方法,这些方法能够处理间断和弱解,使方程能够捕捉激波现象。希望这篇文章能够吸引那些对神经网络与物理建模交叉领域感兴趣的人,尤其是在涉及守恒律的应用中。
需要注意的是,上述方法仅在一维双曲方程中最简单的场景下展示了有希望的结果。对于是否可以推广到更高维度或更复杂的方程,作者表示尚未进行探索。因此,我鼓励读者分享自己的见解和资源,共同推进这一领域的研究。
根据原始论文:“物理信息神经网络(PINNs)被设计用来解决监督学习任务,同时遵循由一般非线性偏微分方程(PDEs)描述的物理法则。” 这些PDE通常呈现为:
ut + N[u] = 0, x ∈ ?, t ∈ [0, T]
其中,u(t, x) 表示解,N[·] 是一个非线性微分算子,而 ? 则表示d维空间的某个子集。设 L(u) = ut + N[u]。显然,如果 u 是方程的解,则 f=0。我们将构建一个神经网络作为解的形式:u = neural_net(t,x;weights),其中输入包括时间和空间变量。我们通过最小化 f 的均方误差来调整权重(即,如果 u 是方程的解,L(u) 应接近0),同时满足特定的初始和边界条件。具体细节请参考原始论文。
接下来,考虑一维无粘性的Burgers方程:

该方程的解在满足初始条件的前提下,可以通过特征法隐式构建,即 u=f(x-ut),特征曲线为 x(t)= x0+f(x0)t。根据此表达式,特征 x(t) 是斜率各异的直线,因此若存在两点 x1, x2,使得在有限时间内 x1+f(x1)t= x2+f(x2)t,则会出现两特征线相交的现象,波形将会破裂。
下面的代码灵感来源于 pinn-burgers 仓库。这里讨论的是粘性Burgers方程,其中 ν>0。研究表明,在初始条件为光滑函数且在无穷远处增长如 o(|x|) 的条件下,方程存在全局定义的光滑解。

文章引用来源:
Shuyang Xiang
发表于 Towards Data Science
阅读时间:6分钟
发布日期:2024年4月4日
将 u(t,x) 表示为 neural_net(t,x;weights),其目标是最小化 L(u)(在这个例子中为 ut + uux)以及初始条件和边界条件的均方误差。如果方程的解是平滑的,可以利用 TensorFlow 编写以下代码来计算所需的未知数:
with tf.GradientTape() as g:
g.watch(x)
u = neural_net(x)
du_dtx = g.batch_jacobian(u, x)
du_dt = du_dtx[..., 0]
du_dx = du_dtx[..., 1]
L(u)(在代码中,我们称之为 u_eqn)简单定义为:u_eqn = du_dt + u * du_dx。
然而,方程 ut + uux 仅在弱意义下成立。这意味着,当冲击波形成时,考虑 ut 和 ux 的值可能没有意义,因为这些值可能会变得非常大。该方程仅适用于积分形式。虽然像 TensorFlow 或 PyTorch 这样的常见 Python 包提供了神经网络和微分算法的 API,但它们并不支持弱意义下的解。因此,我们需要重新配置 L(u) 的公式,以促使神经网络能够形成冲击波。
冲击波引入
我们引入了 Rankine–Hugoniot 条件,也称为 Rankine–Hugoniot 跳跃条件或关系。这些条件描述了冲击波两侧状态之间的关系。对于 Burgers 方程,Rankine–Hugoniot 条件可以表示为:1/2[[u]] = s[[x]]。这里的方括号 [[ ]] 表示右侧和左侧值之间的差异,而 ‘s’ 是冲击波的传播速度。
对于特定的空间变量 ‘x’,我们的目标是仔细检查左侧或右侧的极限,即在不连续情况下的 u(x±)。以下是相关的代码:
delta = 1e-3
xl = x - delta
xr = x + delta
with tf.GradientTape() as g:
g.watch(x)
u = neural_net(x)
ul = neural_net(xl)
ur = neural_net(xr)
du_dtx = g.batch_jacobian(u, x)
du_dt = du_dtx[..., 0]
du_dx = du_dtx[..., 1]
我们定义了一个小的 delta,并计算了空间变量 x 左右两侧解的值,直到 delta。
接下来,我们重新定义函数 L(u) 为:
term1 = du_dt + u * du_dx
term2 = (ul + ur) / 2
condition = tf.less(du_dt, 1e3)
u_eqn = tf.where(condition, term1, term2)
当 du_dt 的值是有限的(具体来说,小于某个足够大的值)时,我们使用方程的常规形式;当 du_dt 的值无限大时,我们使用 Rankine–Hugoniot 条件。
实验
假设 Burgers 方程的初始条件为 sin(πx),定义区间为 [-1, 1]。解可以表示为 u = sin(π(x - ut)),并且在 t = 1 时形成冲击波。使用公式(1),我们得出以下解:
作者图像:使用公式(1)求解 Burgers 方程
模型在不了解冲击波的情况下,努力寻找正确的答案。然而,如果我们切换到公式(2),则可以得到以下解:
作者图像:使用公式(2)求解 Burgers 方程
可以看到,模型在 t = 1 时成功捕捉到了冲击波。
结论
物理信息神经网络(PINNs)通过将物理定律融入学习过程,可以估算偏微分方程的解。然而,它们通常在处理如激波等不连续解时遇到困难。本文提出了一种计算弱解的方法,使得 Burgers 方程能够捕捉激波。值得注意的是,尽管一维 Burgers 方程是一个简单的应用场景,但这种方法在没有进一步考虑的情况下,可能不适用于更复杂的方程。
参考文献
- M. Raissi, P. Perdikaris, G.E. Karniadakis,物理信息神经网络:一种用于求解涉及非线性偏微分方程的正向和反向问题的深度学习框架,《计算物理学杂志》,2019 年,第 378 卷,第 686–707 页。
- A. Salih, 无粘 Burgers 方程。讲义笔记。印度太空科学与技术研究所航空航天工程系。
[3] J. Unterberger, 全局存在性研究:粘性 Burgers 方程的强解。2015 年 3 月,《控制与控制论》第 46 卷第 2 期。


雷达卡


京公网安备 11010802022788号







