PPINN Parareal physics-informed neural network for time-dependent PDEs

论文阅读:PPINN Parareal physics-informed neural network for time-dependent PDEs

  • PPINN Parareal physics-informed neural network for time-dependent PDEs
    • 简介
    • 方法
      • PPINN
      • 加速分析
    • 实验
      • 确定性常微分方程
      • 随机常微分方程
      • Burgers 方程
      • 扩散反应方程
  • 总结

PPINN Parareal physics-informed neural network for time-dependent PDEs

简介

在涉及偏微分方程长时间积分的建模问题中,大量的时空自由度导致训练 PINN 所需的数据量很大。这将要求 PINN 解决长期的物理问题,而这在计算上可能是令人望而却步的。为此,本文提出了一种准现实物理信息神经网络(PPINN),将一个长期问题分解为许多独立的短期问题,并由廉价/快速的粗粒度(CG)求解器监督,该求解器受到原始并行算法和监督并行算法的启发。由于训练 DNN 的计算成本随着数据集的大小而快速增加,因此该 PPINN 框架能够最大限度地利用小数据集训练神经网络的高计算效率的优势。更具体地说,使用小数据集训练 PINN 比直接处理大数据集有双重好处,即,使用小数据训练单个 PINN 的速度要快得多,而训练精细 PINN 的速度可以更快。很容易在多个 GPU-CPU 核心上并行化。因此,与原始的 PINN 方法相比,所提出的 PPINN 方法可以在解决长时间物理问题方面实现显着的加速;这将通过一维和二维非线性问题的基准测试来验证。这种有利的加速将取决于一个好的监督者,该监督者将由预计提供合理精度的粗粒度(CG)求解器代表。

方法

PPINN

对于涉及 t ∈ [ 0 , T ] t \in [0, T] t[0,T] 的偏微分方程长时间积分的瞬态问题,PPINN 不是直接在一个时域中求解该问题,而是将 [ 0 , T ] [0, T] [0,T] 拆分为 N N N 个长度相等的子域 Δ T = T / N \Delta T = T/N ΔT=T/N。然后,PPINN 使用两个传播器,即下述算法中由 G ( u i k ) \mathcal G(u^k_i ) G(uik) 表示的串行 CG 求解器,以及下述算法中由 F ( u i k ) \mathcal F(u^k_i ) F(uik) 表示的 N N N 个精细 PINN 并行计算。这里, u i k u^k_i uik 表示近似第 k k k 次迭代中 t i t_i ti 时刻的精确解。由于 CG 求解器在时间上是串行的,而精细 PINN 并行运行,为了获得最佳计算效率,本文将简化的 PDE (sPDE) 编码到 CG 求解器中作为预测传播器,而真实的 PDE 则编码在精细 PINN 中作为校正传播者。使用这种预测校正策略,期望 PPINN 解在几次迭代后收敛到真实解。

在这里插入图片描述

在这里插入图片描述

上图展示了 PPINN 方法的细节,下面将逐步解释:

首先,简化由 CG 求解器求解的 PDE。例如,可以替换后面实验中展示的扩散方程中的非线性系数。用常数去除变量/多尺度系数。例如,可以使用 CG PINN 作为快速 CG 求解器,但也可以探索标准的快速有限差分求解器。

其次,采用CG PINN对整个时域的sPDE进行串行求解,得到初始解。由于我们可以使用更少的残差点以及更小的神经网络来求解 sPDE 而不是原始 PDE,因此可以显着降低 CG PINN 中的计算成本。

第三,将时域分解为 N N N 个子域。假设 u i k u^k_i uik 已知为 t k ≤ t i ≤ t N t_k \le t_i \le t_N tktitN(包括 k = 0 k = 0 k=0,即初始迭代),将其用作并行运行 N N N 个精细 PINN 的初始条件。一旦获得所有 t i t_i ti 处的精细解,就可以计算 t i t_i ti 处粗解和精细解之间的差异,如算法 1 中的步骤 3(b) 所示。然后连续运行 CG PINN 以更新两个相邻子域之间每个接口的解 u u u ,即 u i + 1 k + 1 u^{k+1}_{i+1} ui+1k+1(算法 1 中的预测和细化)。迭代执行算法1中的步骤3,直到满足以下条件:
E = ∑ i = 0 N − 1 ∥ u i k + 1 − u i k ∥ 2 ∑ i = 0 N − 1 ∥ u i k + 1 ∥ 2 < E t o l , E=\frac{\sqrt{\sum_{i=0}^{N-1}\|\mathbf{u}_i^{k+1}-\mathbf{u}_i^k\|^2}}{\sqrt{\sum_{i=0}^{N-1}\|\mathbf{u}_i^{k+1}\|^2}}<E_{tol}, E=i=0N1uik+12 i=0N1uik+1uik2 <Etol,
其中 E tol E_\text{tol} Etol是用户定义的容差,在本研究中设置为 1 1% 1

加速分析

PPINN 的时间开销可以表示为 T P P I N N = T c 0 + ∑ k = 1 K ( T c k + T f k ) T_{PPINN} = T^0_c + \sum ^K_{k=1}(T^k_c + T^k_f ) TPPINN=Tc0+k=1K(Tck+Tfk),其中 K K K 是迭代总数, T c 0 T^0_c Tc0 表示 CG 求解器初始化所花费的时间开销, T c k T^k_c Tck T f k T^k_f Tfk 分别表示粗略传播器和精细传播器在第 k k k 次迭代时所用的时间开销。令 τ c k \tau_{c}^k τck τ f k \tau^k_f τfk 为 CG 求解器和精细 PINN 在第 k 次迭代时针对一个子域使用的时间开销, T c k T^k_c Tck T f k T^k_f Tfk 可以表示为:
T c k = N ⋅ τ c k , T f k = τ f k T_{c}^{k}=N\cdot\tau_{c}^{k},\quad T_{f}^{k}=\tau_{f}^{k} Tck=Nτck,Tfk=τfk
其中 N N N 是子域的数量。因此,PPINN 的时间开销为:
T P P I N N = T c 0 + ∑ k = 1 K ( N ⋅ τ c k + τ f k ) = N ⋅ τ c 0 + ∑ k = 1 K ( N ⋅ τ c k + τ f k ) . T_{PPINN}=T_{c}^{0}+\sum_{k=1}^{K}\left(N\cdot\tau_{c}^{k}+\tau_{f}^{k}\right)=N\cdot\tau_{c}^{0}+\sum_{k=1}^{K}\left(N\cdot\tau_{c}^{k}+\tau_{f}^{k}\right). TPPINN=Tc0+k=1K(Nτck+τfk)=Nτc0+k=1K(Nτck+τfk).
此外,精细 PINN 连续求解同一偏微分方程的时间表示为 T P I N N = N ⋅ T f 1 T_{PINN} = N·T^1_f TPINN=NTf1 。于是,可以得到PPINN的加速比为:
S = T P I N N T P P I N N = N ⋅ T f 1 N ⋅ τ c 0 + ∑ k = 1 K ( N ⋅ τ c k + τ f k ) S=\frac{T_{PINN}}{T_{PPINN}}=\frac{N\cdot T_f^1}{N\cdot\tau_c^0+\sum_{k=1}^K\left(N\cdot\tau_c^k+\tau_f^k\right)} S=TPPINNTPINN=Nτc0+k=1K(Nτck+τfk)NTf1
上式可以重写为:
S = N ⋅ τ f 1 N ⋅ τ c 0 + τ f 1 + N ⋅ K ⋅ τ c k + ( K − 1 ) ⋅ τ f k S=\frac{N\cdot\tau_f^1}{N\cdot\tau_c^0+\tau_f^1+N\cdot K\cdot\tau_c^k+(K-1)\cdot\tau_f^k} S=Nτc0+τf1+NKτck+(K1)τfkNτf1
此外,考虑到两次相邻迭代( k ≥ 2 k \ge 2 k2)的每个子域中的解不会发生显着变化,在每个精细 PINN 中, k ≥ 2 k \ge 2 k2 的训练过程比 k = 1 k = 1 k=1 的训练过程收敛得快得多,即 τ f k ≪ τ f 1 \tau_{f}^{k}\ll\tau_{f}^{1} τfkτf1 。因此, S S S 的下界可以表示为:
S m i n = N ⋅ τ f 1 N ⋅ τ c 0 + N ⋅ K ⋅ τ c k + K ⋅ τ f 1 S_{min}=\frac{N\cdot\tau_f^1}{N\cdot\tau_c^0+N\cdot K\cdot\tau_c^k+K\cdot\tau_f^1} Smin=Nτc0+NKτck+Kτf1Nτf1
这表明,如果 τ c 0 ≪ τ f 1 \tau_{c}^{0}\ll\tau_{f}^{1} τc0τf1 S S S N N N 增加,这表明使用的子域越多,PPINN 的加速比就越大。

实验

下文首先展示确定性和随机常微分方程 (ODE) 的两个简单示例来详细解释该方法。然后给出伯格斯方程和二维扩散反应方程的结果。

确定性常微分方程

考虑如下确定性常微分方程:
d u d t = a + ω cos ⁡ ( ω t ) \frac{du}{dt}=a+\omega\cos(\omega t) dtdu=a+ωcos(ωt)
其中两个参数是 a = 1 a = 1 a=1 ω = π / 2 \omega = \pi/2 ω=π/2。给定初始条件 u ( 0 ) = 0 u(0) = 0 u(0)=0,该 ODE 的精确解为 u ( t ) = t + sin ⁡ ( π t / 2 ) u(t) = t + \sin(\pi t/2) u(t)=t+sin(πt/2)。感兴趣的时域长度为 T = 10 T = 10 T=10

在 PPINN 方法中,将时域 t ∈ [ 0 , 10 ] t \in [0, 10] t[0,10] 分解为 10 个子域,每个子域的长度 Δ t = 1 \Delta t = 1 Δt=1。对于 CG 求解器,使用简化的 ODE (sODE) d u / d t = a du/dt = a du/dt=a ,初始条件为 u ( 0 ) = 0 u(0) = 0 u(0)=0,并使用精确的 ODE d u / d t = a + ω cos ⁡ ( ω t ) du/dt = a + \omega \cos(\omega t) du/dt=a+ωcos(ωt) ,初始条件为 u ( 0 ) = 0 u(0) = 0 u(0)=0,训练十个优秀的 PINN。特别是,首先使用 CG PINN 作为快速求解器。

[ N I ] + [ N H ] × D + [ D O ] [N_I] + [N_H] × D + [D_O] [NI]+[NH]×D+[DO] 表示 DNN 的架构,其中 N I N_I NI 是输入层的宽度, N H N_H NH 是隐藏层的宽度,D 是隐藏层的深度, N O N_O NO 是输出层的宽度。 CG PINN 被构造为使用大小为 $[1] + [4] × 2 + [1] $ 的DNN,同时使用 d u / d t = a du/dt = a du/dt=a ,初始条件为 u ( 0 ) = 0 u(0) = 0 u(0)=0 进行编码,而每个精细 PINN 被构造为 [ 1 ] + [ 16 ] × 3 + [ 1 ] [1] + [16] × 3 + [1] [1]+[16]×3+[1] 的 DNN ,并使用精确的 ODE d u / d t = a + ω cos ⁡ ( ω t ) du/dt = a + \omega \cos(\omega t) du/dt=a+ωcos(ωt) ,初始条件为 u ( 0 ) = 0 u(0) = 0 u(0)=0 进行编码。

在第一次迭代中,使用 Adam 算法,以 α = 0.001 \alpha = 0.001 α=0.001 的学习率训练 CG PINN 5, 000 个 epoch,并获得解 G ( u ( t ) ) ∣ k = 0 \mathcal G(u(t))|_{k=0} G(u(t))k=0 的粗略预测。

t i = i ( i = 0 , 1 , . . . , 9 ) t_i = i(i = 0, 1, ..., 9) ti=i(i=0,1,...,9) 为块 i + 1 i+1 i+1 中每个精细 PINN 的开始时间。为了计算 CG PINN 的损失函数,使用均匀分布在每个子域 [ t i , t i + 1 ] [t_i, t_{i+1}] [ti,ti+1] 中的 20 个残差点来计算残差 MSE R \text{MSE}_R MSER。随后,利用 CG PINN 解,除了第一个子域之外,每个精细 PINN 的初始条件由 t = t i t = t_i t=ti 时的预测值 G ( u ( t ) ) ∣ k = 0 \mathcal G(u(t))|_{k=0} G(u(t))k=0 给出。与训练 CG PINN 类似,使用 Adam 算法并行训练 10 个单独的精细 PINN,学习率为 α = 0.001 \alpha = 0.001 α=0.001 。如果每个精细 PINN 损失 l o s s = MSE R + MSE IC < 1 0 − 6 loss = \text{MSE}_R + \text{MSE}_\text{IC} < 10^{−6} loss=MSER+MSEIC<106,则接受 PINN 解,其中使用均匀分布在 [ t i , t i + 1 ] [t_i, t_{i+1}] [ti,ti+1] 中的 101 个残差点来计算残差 MSE R \text{MSE}_R MSER。可以在下图中观察到,精细 PINN 解正确地捕获了精确解的形状,但由于 G ( u ( t ) ) ∣ k = 0 \mathcal G(u(t))|_{k=0} G(u(t))k=0 给出的初始条件质量较差,它们的大小明显偏离精确解。

PPINN 解与精确解的偏差通过 l 2 l_2 l2 相对误差范数来量化:
l 2 = ∑ p ( u p k − u ^ p ) 2 ∑ p u ^ p 2 l_2=\frac{\sum_p(u_p^k-\hat{u}_p)^2}{\sum_p\hat{u}_p^2} l2=pu^p2p(upku^p)2
其中 p p p 表示残差点的索引。第一次迭代后的PPINN解出现了明显的偏差。

在第二次迭代中,给定 G ( u i ) ∣ k = 0 \mathcal G(u_i)|_{k=0} G(ui)k=0 F ( u i ) ∣ k = 0 \mathcal F(u_i)|_{k=0} F(ui)k=0 的解,将 CG PINN 的初始条件设置为 G \mathcal G G。然后再次训练 CG PINN 5, 000 个 epoch ,学习率为 α = 0.001 \alpha = 0.001 α=0.001,得到块 2 到 10 的解 G ( u ( t ) ) ∣ k = 1 \mathcal G(u(t))|_{k=1} G(u(t))k=1。第二个块的精细 PINN 的初始条件由下式给出 u ~ ( t = t 1 ) = F ( u 1 ) k = 1 \tilde{u}(t=t_{1})=F(u_{1})_{k=1} u~(t=t1)=F(u1)k=1,块 3 到 10 的精细 PINN 的初始条件由 G ( u ( t ) ) ∣ k = 0 , F ( u ( t ) ) ∣ k = 0 G(u(t))|_{k=0},\mathcal{F}(u(t))|_{k=0} G(u(t))k=0,F(u(t))k=0 以及 G ( u ( t ) ) ∣ k = 1 G(u(t))|_{k=1} G(u(t))k=1 的组合给出,且在 t = t i = 2 , 3... , 9 t = t_i=2,3...,9 t=ti=2,3...,9 时,即 u ~ ( t = t i ) = G ( u i ) ∣ k = 1 − [ F ~ ( u i ) ∣ k = 0 − G ( u i ) ∣ k = 0 ] \tilde{u}(t=t_i)=G(u_i)|_{k=1}-[\tilde{\mathcal{F}}(u_i)|_{k=0}-G(u_i)|_{k=0}] u~(t=ti)=G(ui)k=1[F~(ui)k=0G(ui)k=0]。使用这些初始条件,使用 Adam 算法并行训练 9 个单独的精细 PINN(块 2 到 10),学习率为 α = 0.001 \alpha = 0.001 α=0.001,直到每个精细 PINN 的损失函数降至 1 0 − 6 10^{−6} 106 以下。可以发现第二次迭代中的精细 PINN 收敛速度比第一次迭代快得多,平均 epoch 为 4836,而第一次迭代为 11524。加速的训练过程受益于上一次迭代中执行的训练结果。第二次迭代后每个块的 PPINN 解具有显着改进,相对误差 l 2 = 9.97 % l_2 = 9.97\% l2=9.97%。使用相同的方法,进行第三次迭代,PPINN 解收敛到精确解,相对误差 l 2 = 0.08 % l_2 = 0.08\% l2=0.08%

继续研究 PPINN 的计算效率。正如先前所提到的。 如果粗略求解器足够高效,就可以获得一个加速比,该加速比随着子域的数量线性增长。首先使用 PINN 作为粗略求解器来测试 PPINN 的加速效果。这里测试四种不同的子域分解,即 10、20、40 和 80。对于粗略求解器,为每个子域分配一个 PINN (CG PINN, [ 1 ] + [ 4 ] × 2 + [ 1 ] [1] + [4] × 2 + [1] [1]+[4]×2+[1]),并且每个子域中使用 10 个随机采样的残差点。此外,使用一个 CPU(Intel Xeon E5-2670)串行运行所有 CG PINN。对于精细求解器,再次为每个子域使用一个 PINN(精细 PINN)来求解方程。每个子域分配给一个CPU(Intel Xeon E5-2670)。残差点总数为40万个,全域随机采样并将均匀分布在每个子域中。同时,对于前两种情况(即 10 和 20 个子域),每个子域中精细 PINN 的架构为 [ 1 ] + [ 20 ] × 2 + [ 1 ] [1] + [20] × 2 + [1] [1]+[20]×2+[1],对于最后两种情况(即 40 和 80 子域)将其设置为 [ 1 ] + [ 10 ] × 2 + [ 1 ] [1]+[10 ]×2+[1] [1]+[10]×2+[1]。加速比如下图(b)(洋红色虚线)所示,可以观察到,当 N ≤ 20 N \le 20 N20 时,加速比首先随着 N N N 的增加而增加,然后随着 N N N 的增加而减少。进一步研究这种情况下的计算时间。

在这里插入图片描述

如下表所示,可以发现 CG PINN 所花费的计算时间随着子域数量的增加而增加。特别是,当 N ≥ 40 N \ge 40 N40 时,超过 90% 的计算时间被粗略求解器占用,这表明 CG PINN 的效率低下。为了使用 PPINN 获得满意的加速,应使用更高效的粗略求解器。

在这里插入图片描述

考虑到简化的 ODE 可以解析求解,因此可以直接使用粗求解器的解析解,没有成本。此外,精细 PINN 中的所有参数都与之前使用的参数保持相同。为了验证,再次使用 PPINN 中的 10 个子域来求解方程。经过两次迭代后,预测解和解析解之间的 l 2 l_2 l2 相对误差为 1.252 × 1 0 − 5 1.252×10^{−5} 1.252×105,这证实了 PPINN 的准确性。此外,四种情况的加速如上图(b) 所示(带三角形的红色虚线)。有趣的是,PPINN 可以在这里实现超线性加速。

在这里插入图片描述

上表中进一步列出了每次迭代的计算时间。可以看到,与总计算时间相比,粗略求解器所花费的计算时间现在可以忽略不计。由于精细 PINN 在第一次迭代后收敛得更快,因此可以获得 PPINN 的超线性加速。

除了解析解之外,还可以使用其他有效的数值方法作为粗略求解器。出于演示目的,随后使用有限差分法 (FDM) 作为粗略求解器来呈现结果。整个域被离散成 1,000 个均匀元素,然后均匀分布到每个子域。同样,也使用 10 个子域进行验证。同样需要2次迭代才能收敛, l 2 l_2 l2 相对误差为 1.257 × 1 0 − 5 1.257×10^{−5} 1.257×105。此外,由于FDM的效率,还可以获得与使用解析解的情况非常相似的超线性加速比。

随机常微分方程

除了确定性 ODE 之外,我们还可以应用这个思想来求解随机 ODE。在这里,考虑以下随机 ODE:
d u d t = β [ − u + β sin ⁡ ( π 2 t ) + π 2 cos ⁡ ( π 2 t ) ] , t ∈ [ 0 , T ] \frac{du}{dt}=\beta\left[-u+\beta\sin(\frac\pi2t)+\frac\pi2\cos(\frac\pi2t)\right],t\in[0,T] dtdu=β[u+βsin(2πt)+2πcos(2πt)],t[0,T]
其中 T = 10 、 β = β 0 + ϵ 、 β 0 = 0.1 , ϵ T = 10、\beta = \beta_0 + \epsilon、\beta_0 = 0.1, \epsilon T=10β=β0+ϵβ0=0.1,ϵ是从均值为零、标准差为 0.05 的正态分布得出的。此外,方程的初始条件是 u ( 0 ) = 1 u(0) = 1 u(0)=1。在当前的 PPINN 中,对粗略求解器采用确定性 ODE,如下所示:
d u d t = − β 0 u , t ∈ [ t 0 , T ] \frac{du}{dt}=-\beta_0u,t\in[t_0,T] dtdu=β0u,t[t0,T]
给定初始条件 u ( t 0 ) = u 0 u(t_0) = u_0 u(t0)=u0,可以获得方程的解析解为 u = u 0 exp ⁡ ( − β 0 ( t − t 0 ) ) u = u_0 \exp(−\beta_0(t − t_0)) u=u0exp(β0(tt0))。对于精细求解器,使用准蒙特卡罗方法为 β \beta β 绘制 100 个样本,然后通过精细 PINN 进行求解。类似地,对粗略求解器使用三种不同的方法,即 PINN、FDM 和解析解。

出于验证目的,首先将时域分解为 10 个统一的子域。对于 FDM,将整个域离散为 1,000 个均匀元素。对于精细 PINN,在整个时域使用 400,000 个随机采样的残差点,这些点均匀分布到所有子域。为每个子域采用一个精细的 PINN 来求解 ODE,其架构为 [ 1 ] + [ 20 ] × 2 + [ 1 ] [1] + [20] × 2 + [1] [1]+[20]×2+[1]。最后,粗略求解器的每个子域中的简化 ODE 被串行求解,而精细求解器的每个子域中的精确 ODE 被并行求解。

在这里插入图片描述

在上图(a) 中展示了两个代表性 β \beta β(即 β \beta β = 0.108 和 0.090)下的预测解和精确解之间的比较。可以看到预测解在两次迭代后收敛到精确解,这证实了 PPINN 求解随机 ODE 的有效性。 PPINN 与其他两个不同粗略求解器(即 PINN 和解析解)的解也与参考解非常吻合,但此处未列出。此外,还展示了使用四种不同数量的子域(即上图(b)中的 10、20、40 和 80)的 PPINN 的计算效率。很明显,如果使用 FDM 或解析解等高效的粗略求解器,PPINN 仍然可以实现超线性加速。使用 PINN 作为粗略求解器的 PPINN 的加速与先前的结果类似,即加速比首先随着子域数量 N ≤ 20 N \le 20 N20 略有增加,然后随着 N N N 的增加而减小。最后,使用 FDM 粗求解器的 PPINN 的加速比几乎与具有解析解粗求解器的 PPINN,与先前的结果类似此处不再详细讨论。

总之,PPINN 既适用于确定性 ODE,也适用于随机 ODE。另外,使用PINN作为粗略求解器可以保证求解ODE的精度,但加速比由于 PINN 的低效率,可能会随着子域数量的增加而减少。如果选择更高效的粗略求解器,例如解析解、有限差分法等,就可以获得高精度和良好的加速比

Burgers 方程

现在考虑如下粘性伯格斯方程:
∂ u ∂ t + u ∂ u ∂ x = ν ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t}+u\frac{\partial u}{\partial x}=\nu\frac{\partial^2u}{\partial x^2} tu+uxu=νx22u
这是粘性流、气体动力学和交通流的数学模型,其中 u u u 表示流体的速度, ν \nu ν 表示运动粘度, x x x 表示空间坐标, t t t 表示时间。给定域 x ∈ [ − 1 , 1 ] x \in [−1, 1] x[1,1] 中的初始条件 u ( x , 0 ) = − sin ⁡ ( π x ) u(x, 0) = − \sin(\pi x) u(x,0)=sin(πx),并且 t ∈ [ 0 , 1 ] t \in [0, 1] t[0,1] 的边界条件 u ( ± 1 , t ) = 0 u(\pm 1, t) = 0 u(±1,t)=0,想要求解的偏微分方程为方程粘度为 ν = 0.03 / π \nu = 0.03/\pi ν=0.03/π

在 PPINN 中,时域 t ∈ [ 0 , 1 ] t \in [0, 1] t[0,1] 被分解为 10 个均匀的子域。每个子域的时间长度 Δ t = 0.1 \Delta t = 0.1 Δt=0.1。 CG PINN 的简化 PDE 也是 Burgers 方程,它使用相同的初始条件和边界条件,但具有更大的粘度 ν c = 0.05 / π \nu_c = 0.05/\pi νc=0.05/π。众所周知,随着时间的推移,粘度较小的 Burgers 方程的解会出现陡峭的梯度。增加的粘度将导致更平滑的解决方案,可以使用更少的计算成本来捕获该解决方案。在这里,对 CG 和每个子域内的精细 PINN 使用相同的 NN ,即 3 个隐藏层,每层 20 个神经元。学习率也设置为相同,即 1 0 − 3 10^{−3} 103。在最后一种情况下,没有使用单一优化器,而是使用两种不同的优化,即,首先使用 Adam 优化器(一阶收敛率)训练 PINN,直到损失小于 1 0 − 3 10^{−3} 103,然后继续使用 L-BFGS-B 方法进一步训练神经网络。 L-BFGS是一种准牛顿方法,具有二阶收敛速度,可以增强训练的收敛性。

对于每个子域中的 CG PINN,使用 300 个随机采样的残差点来计算 MSE R \text{MSE}_R MSER,而每个子域的精细 PINN 中使用 1, 500 个随机残差点。此外,采用 100 个均匀分布的点来计算每个子域的 MSE IC \text{MSE}_\text{IC} MSEIC,并使用 10 个随机采样点来计算 CG 和精细 PINN 中的 MSE BC \text{MSE}_\text{BC} MSEBC。对于这种特殊情况,只需 2 次迭代即可满足收敛标准,即 E t o l = 1 % E_{tol} = 1\% Etol=1%。每次迭代中 u u u 的分布如下图所示。

在这里插入图片描述

如上图(a) 所示,精细 PINN ( F ( u ∣ k = 0 ) \mathcal F (u|_{k=0}) F(uk=0)) 的解与精确解不同,但观察到差异很小。还观察到,CG PINN 的解比精细 PINN 的解更平滑,特别是对于大时间的解,例如 t = 0.9 t = 0.9 t=0.9。此外,由于第一次迭代时每个子域的初始条件不准确,两个相邻子域之间界面处的速度不连续。在第二次迭代中(上图(b)),精炼步骤的解(即 u ∣ k = 2 u|_{k=2} uk=2)与精确解几乎没有什么区别,这证实了 PPINN 的有效性。此外,两个相邻子域之间的不连续性显着减少。最后,有趣的是,第一次迭代时每个子域的训练步骤数从十到数十万,但在第二次迭代时减少到几百。类似的结果也在前文中报告和分析过,这里不再赘述。

为了测试 PPINN 的灵活性,进一步在粗略求解器中使用两个更大的粘度,即 ν c = 0.09 / π \nu_c = 0.09/\pi νc=0.09/π 0.12 / π 0.12/\pi 0.12/π,它们分别是精确粘度的 3× 和 4×。这两种情况下的所有参数(例如,PINN 的架构、残差点的数量等)与 ν c = 0.05 / π \nu_c = 0.05/\pi νc=0.05/π 的情况保持相同。

在这里插入图片描述

如上表所示,有趣的是,这三种情况的计算误差是相当的,但迭代次数随着粗略求解器中使用的粘度而增加。因此,为了获得选择 CG 求解器的最佳策略,必须考虑 CG 求解器可以获得的精度与 PPINN 收敛所需的迭代次数之间的权衡。

扩散反应方程

接下来考虑以下二维扩散反应方程:
∂ l C = ∇ ⋅ ( D ∇ C ) + 2 A sin ⁡ ( π x l ) sin ⁡ ( π y l ) , x , y ∈ [ 0 , l ] , t ∈ [ 0 , T ] , C ( x , y , t = 0 ) = 0 , C ( x = 0 , y = 0 , t ) = C ( x = 0 , y = l , t ) = C ( x = l , y = 0 , t ) = C ( x = l , y = l , t ) = 0 , \begin{aligned} \partial_lC&=\nabla\cdot(D\nabla C)+2A\sin(\frac{\pi x}l)\sin(\frac{\pi y}l),x,y\in[0,l],t\in[0,T],\\C(x,y,t&=0)=0,\\C(x=0,y=0,t)&=C(x=0,y=l,t)=C(x=l,y=0,t)=C(x=l,y=l,t)=0, \end{aligned} lCC(x,y,tC(x=0,y=0,t)=(DC)+2Asin(lπx)sin(lπy),x,y[0,l],t[0,T],=0)=0,=C(x=0,y=l,t)=C(x=l,y=0,t)=C(x=l,y=l,t)=0,
其中 l = 1 l = 1 l=1 是计算域的长度, C C C是溶质浓度, D D D是扩散系数, A A A是常数。这里 D D D 取决于 C C C,如下所示:
D = D 0 exp ⁡ ( R C ) D=D_0\exp(R C) D=D0exp(RC)
其中 D 0 = 1 × 1 0 − 2 D_0 = 1 × 10^{−2} D0=1×102

首先设置 T = 1 、 A = 0.5511 T = 1、A = 0.5511 T=1A=0.5511 R = 1 R = 1 R=1,以验证二维情况下提出的算法。在 PPINN 中,将 PINN 用于粗略求解器和精细求解器。时域被分为 10 个统一的子域,每个子域的 Δ t = 0.1 \Delta t = 0.1 Δt=0.1。对于粗略求解器,使用相同初始条件和边界条件求解以下简化 PDE: ∂ t C = D 0 ∇ 2 C + 2 A sin ⁡ ( π x / l ) sin ⁡ ( π y / l ) \partial_{t}C=D_{0}\nabla^{2}C+2A\sin(\pi x/l)\sin(\pi y/l) tC=D02C+2Asin(πx/l)sin(πy/l)。 粗略求解器的扩散系数大约比精细求解器中的最大 D D D 小 1.7 倍。每个子域的粗略求解器和精细求解器中采用的 NN 架构保持相同,即 2 个隐藏层,每层 20 个神经元。所采用的学习率以及优化方法与前文中应用的相同。

使用 2,000 个随机残差点来计算粗略求解器每个子域中的 MSE R \text{MSE}_R MSER。还使用 1,000 个随机点来计算每个边界的 MSE BC \text{MSE}_\text{BC} MSEBC,并使用 2,000 个随机点来计算 MSE IC \text{MSE}_\text{IC} MSEIC。对于每个精细 PINN,使用 5,000 个随机残差点进行 MSE R \text{MSE}_R MSER,而边界和初始条件的训练点数保持与粗略求解器中使用的相同。需要两次迭代才能满足收敛标准,即 E t o l = 1 % E_{tol} = 1\% Etol=1%。 PPINN 解以及每次迭代在三个代表性时间(即 t = 0.4 、 0.8 t = 0.4、0.8 t=0.40.8 1 1 1)的扩散系数分布如下图所示。

在这里插入图片描述

在这里插入图片描述

可以看到,第一次迭代后, t = 0.4 t = 0.4 t=0.4 时的解与参考解非常吻合,而 PPINN 和参考解之间的差异随着时间的推移而增加,这可以在上图的第一行 t = 0.8 t = 0.8 t=0.8 1 1 1 时观察到。 这是合理的,因为每个子域的初始条件的误差会随着时间的推移而增加。此外,解决方案位于三个代表性时间与第二次迭代后的参考解非常吻合。所有上述结果再次证实了本方法的准确性。

使用 PINN 作为粗略求解器进一步研究 PPINN 的加速。这里 T = 10 , A = 0.1146 , R = 0.5 T = 10,A = 0.1146,R = 0.5 T=10A=0.1146R=0.5,使用五个不同的子域,即 1 、 10 、 20 、 40 1、10、20、40 1102040 50 50 50。并行代码在多个CPU(Intel Xeon E5-2670)上运行。粗解器中残差点总数为20000个,均匀划分为 N N N 个子域。每个边界上的边界条件训练点数为10000个,也是统一分配给每个子域的。此外,初始条件采用2000个随机采样点。每个子域中CG PINN的架构和其他参数(例如学习率、优化器等)与精细PINN相同,如下表所示。

在这里插入图片描述

代表性案例的加速比如下表所示. 可以注意到加速并不随着子域的数量单调增加。相反,加速比随着子域数量的增加而降低。这一结果表明,CG PINN 的成本不仅与训练数据的数量有关,而且还受到超参数数量的影响。 CG PINN 中的总超参数随着子域数量的增加而增加,导致 PPINN 的时间开销随着子域数量的增加而增加。

在这里插入图片描述

为了验证上述假设,将粗略求解器的 PINN 替换为有限差分法(FDM,网格大小: x × y = 20 × 20 x × y = 20 × 20 x×y=20×20,时间步 δ t = 0.05 \delta t = 0.05 δt=0.05),其效率比PINN高得多 。与精细的 PINN 相比,每个子域中 FDM 的运行时间可以忽略不计。如上表所示,加速比现在与预期的子域数量成正比。

总结

本文提出了一种并行计算时间依赖PINN的方法。通过粗求解器求解简化PDE来为不同时间片上的独立PINN提供初始解,同时根据训练的进行不断调整初始解,以获得最终的精确解。同时,由于简化的PDE可以使用有限元求解或直接获得解析解,因此可以获得超线性的加速比。

文章中简化的PDE在形态上都与真实PDE较为相似,在这一点上类似于课程学习。但在现实中由于解的形态未知,因此如何简化PDE似乎是个难以确定的问题。

相关链接:

  • 原文:PPINN: Parareal physics-informed neural network for time-dependent PDEs - ScienceDirect
  • 原文代码:XuhuiM/PPINN: Demo code for PPINN paper: https://www.sciencedirect.com/science/article/pii/S0045782520304357 (github.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Npm安装vue3报错(node:25436) MaxListenersExceededWarning:

运行命令安装vue3时 npm create vuelatest 报了错误(node:25436) MaxListenersExceededWarning: (忘记截报错的图了&#xff0c;后面还有一大串英文) 搞了很久发现是网络的原因&#xff0c;我没有修改镜像地址&#xff0c;导致访问很慢&#xff0c;于是去npmmirror 镜像站 …

字符雨canvas

整体思路&#xff1a; 确定好字符雨的具体字符是什么&#xff0c;需要多少行多少列这里是写死的其实也可以用循环加随机的方式生成不一样的字符雨&#xff0c;行列也可以读一下宽度然后做一下出发算一下也行首先得有一张画布搞起&#xff0c;然后循环列数去绘画字符定时器循环…

泰森多边形半平面求交 - 洛谷 - P3297 [SDOI2013] 逃考

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 往期相关背景半平面求交 点击前往 voronoi 图求解点击前往 题目大意 题目链接 https://www.luogu.com.cn/problem/P3297 小杨家是一个矩阵&#xff0c;所有亲戚都在…

Monkey工具之fastbot-iOS实践

背景 目前移动端App上线后 crash 率比较高&#xff0c; 尤其在iOS端。我们需要一款Monkey工具测试App的稳定性&#xff0c;更早的发现crash问题并修复。 去年移动开发者大会上有参加 fastbot 的分享&#xff0c;所以很自然的就想到Fastbot工具。 Fastbot-iOS安装配置 准备工…

变电站蓄电池在线监测系统(论文+源码)

1. 系统设计 本次课题为变电站蓄电池在线监测系统的设计&#xff0c;其系统架构如图3.1所示&#xff0c;包括了主控制器STC89C52单片机&#xff0c;液晶显示器LCD1602,模数转换器ADC0832&#xff0c;电流传感器ACS712&#xff0c;分压电阻&#xff0c;蜂鸣器以及温度传感器。在…

实用篇 | 3D建模中Blender软件的下载及使用[图文详情]

本文基于数字人系列的3D建模工具Blender软件的安装及使用&#xff0c;还介绍了图片生成3D模型的AI工具~ 目录 1.Blender的下载 2.Blender的使用 3.安装插件(通过压缩包安装) 4.实例 4.1.Blender使用MB-Lab插件快速人体模型建构 4.1.1.点击官网&#xff0c;进行下载 4.1.…

消息可靠性保证

回顾RabbitMQ的消息传递过程 如图所示&#xff0c;发生消息丢失的可能阶段也就是生产者发送消息&#xff0c;时rabbitmq存储消息时&#xff0c;消费者消费消息时。项目源码&#xff1a;gitee 生产者发送消息阶段 生产者发送消息时把交换机名写错生产者发送消息时把routingK…

推荐一款好用的包含表格识别的OCR网站

在当今数字化的时代&#xff0c;文字和表格识别已经成为了许多行业的关键技术。无论是处理大量的纸质文档&#xff0c;还是从网络上收集数据&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术都扮演着重要的角色。然而&#xff0c;对于许多用户来说&#xff0c;OCR软件…

Infobright列存数据库原理介绍

简介 Infobright 是一个面向 OLAP 场景的开源列存数据库。比较容易找到代码的版本是 Infobright Community Edition 4.0.7&#xff0c;大概是 2006 年前后的代码。2016 年6 月&#xff0c;Infobright 决定停止开源1。由于它同时提供企业版和社区版&#xff0c;开源版本的功能相…

斑马zebra目标检测数据集VOC+YOLO格式2300张

斑马是由四百万年前的原马进化出来的&#xff0c;最早出现的斑马可能是细纹斑马。有关史前马科动物的化石现存于美国爱达荷州克文的克文化石床国家博物馆。斑马的史前马为“克文马”&#xff08;美洲斑马或者克文斑马&#xff09;&#xff0c;学名为“Equussimplicidens”&…

WordPress VIP收费下载插件Erphpdown v17.0.1 开心版

会员推广下载专业版 WordPress插件&#xff08;erphpdown&#xff09;是模板兔开发的一款针对虚拟资源收费下载/付费下载/付费视频/收费查看/付费阅读/付费查看/VIP下载查看的插件&#xff0c;经过完美测试运行于wordpress 3.x-5.x版本。后续模板兔会增加更多实用的功能。 模板…

docker部署go gin框架 Linux环境

目录 文章目的是什么 环境介绍 Linux 环境下 docker 部署 go gin 详细步骤 部署 gin 文章目的是什么 假设我们学习了 go 语言&#xff0c;在 Linux 上安装了 go 相关的程序&#xff0c;也能直接运行&#xff0c;使用以下命令&#xff1a; go run main.go 假如代码是这样的…

跟着我学Python基础篇:08.集合和字典

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 跟着我学Python基础篇&#…

java设计模式学习之【代理模式】

文章目录 引言代理模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用图片加载示例代码地址 引言 在现实生活中&#xff0c;我们经常使用代理来处理我们不想直接参与或无法直接参与的事务&#xff0c;例如&#xff0c;使用律师来代表法庭上的案件。在软件开发…

计算机网络——网络层——OSPF协议的介绍

什么是 OSPF &#xff1f; OSPF 是一个基于链路状态的自治系统内部路由协议&#xff0c;在 TCP/IP 的网络层中进行路由选择&#xff0c;常用于构建大型企业网络或者服务上的骨干网络。在互联网核心路由器之间也可以使用。 OSPF 概述 OSPF 使用的是 Dijkstra&#xff08;最短…

Vue 实现一个弹出框,允许用户输入信息,并在确认时将输入的信息进行输出到控制台

父组件用来点击按钮弹出弹出框 <!--ParentComponent.vue--> <template><div><button click"showPopupV">点我会有个弹出框&#xff01;&#xff01;&#xff01;</button><PopupComponent v-if"showPopup" :data"p…

【退订】阿里云产品

之前因为学习需要使用了阿里云上的产品服务&#xff0c;项目结束后给忘记了&#xff0c;直到最近阿里云发短信我才知道&#xff1a; 我使用的是datawork的服务&#xff0c;现在先登录阿里云官网&#xff1a; 阿里云-计算&#xff0c;为了无法计算的价值 (aliyun.com) 之后点…

【毕业设计】基于STM32的智能衣柜设计

1、功能说明 功能如下: 1、用stm32控制ds18b20采集温度 2、然后按键可以设置上下限温度&#xff0c; 3、采集的温度低于下限温度时候 打开加热片开始加热&#xff0c; 4、加热到上限温度关闭加热片停止加热&#xff0c; 5、采集的温度可以在oled显示&#xff0c; 6、然后弄个按…

MySQL增量备份与恢复

实验环境 某学校近期在进行期中考试&#xff0c;要求数据库管理员负责一班&#xff0c;二班学生的考试成绩录入&#xff0c;为保证数据的可靠性&#xff0c;数据库管理员在录入学生成绩后均要做数据库备份&#xff0c;并且为了测试备份数据是否可 用&#xff0c;模拟数据丢失故…

MySQL数据库,视图、存储过程与存储函数

数据库对象&#xff1a; 常见的数据库对象&#xff1a; 视图&#xff1a; 视图是一种虚拟表&#xff0c;本身是不具有数据的占用很少的内存空间。 视图建立在已有表的基础上&#xff0c;视图赖以建立的这些表称为基表。 视图的创建和删除只影响视图本身&#xff0c;不影响对…