摘要
Physics-informed neural networks (PINN)可以看作是通用的PDE求解器,但是,PINN存在两点缺陷:1.在特定问题上训练效率慢;2.真实样本少的情况下,即使迭代多次,仍得不到好的结果。为了克服PINN的两个缺陷,在这篇报告中,拓展了PINN,将元学习的Reptile算法应用于PINN中,针对两类先验信息,提出了两种算法。在我们的方法中,通过利用先验信息,经过预训练后,能够实现在少量真实样本甚至没有真实样本的新的问题上更快收敛。最后,在一维和二维的泊松方程的算例上演示和验证了提出的两种算法,并将提出的算法应用于二维热布局问题上。
1 Introduction
在过去的几年里,深度学习以深度神经网络(NNs)的形式,已经有效地广泛应用于各个领域12,如计算机视觉,自然语言处理以及基因组学。虽然在这些及相关领域取得了显著成绩,但是深度学习还广泛未广泛应用于科学计算中。然而,在最近一系列的工作中已经成功的将神经网络应用于求解微分方程(PDE)34,其中,PINN是用于解决PDE正向、逆向问题的通用框架12。
2 Background
1.1 PINN
如今,神经网络被广泛用于解决各种科学计算问题,在最近一系列的工作中已经成功的将神经网络应用于求解微分方程(PDE)34,其中,PINN是用于解决PDE正向、逆向问题的通用框架12。PINN的主要思想如图1,先构建一个输出结果为
u
^
\hat{u}
u^的神经网络,将其作为PDE解的代理模型,将PDE信息作为约束,编码到神经网络损失函数中进行训练。损失函数主要包括4部分:偏微分结构损失(PDE loss),边值条件损失(BC loss)、初值条件损失(IC loss)以及真实数据条件损失(Data loss)56。特别的,考虑下面这个的PDE问题,其中PDE的解
u
(
x
)
u(x)
u(x)在
Ω
⊂
R
d
\Omega \subset \mathbb{R}^{d}
Ω⊂Rd定义,其中
x
=
(
x
1
,
…
,
x
d
)
x=\left(x_{1}, \ldots, x_{d}\right)
x=(x1,…,xd):
f
(
x
;
∂
u
∂
x
1
,
…
,
∂
u
∂
x
d
;
∂
2
u
∂
x
1
∂
x
1
,
…
,
∂
2
u
∂
x
1
∂
x
d
)
=
0
,
x
∈
Ω
f\left(\mathbf{x} ; \frac{\partial u}{\partial x_{1}}, \ldots, \frac{\partial u}{\partial x_{d}} ; \frac{\partial^{2} u}{\partial x_{1} \partial x_{1}}, \ldots, \frac{\partial^{2} u}{\partial x_{1} \partial x_{d}} \right)=0, \quad \mathbf{x} \in \Omega
f(x;∂x1∂u,…,∂xd∂u;∂x1∂x1∂2u,…,∂x1∂xd∂2u)=0,x∈Ω
同时,满足下面的边界
B
(
u
,
x
)
=
0
on
∂
Ω
\mathcal{B}(u, \mathbf{x})=0 \quad \text { on } \quad \partial \Omega
B(u,x)=0 on ∂Ω为了衡量神经网络
u
^
\hat{u}
u^和约束之间的差异,考虑损失函数定义:
L
(
θ
)
=
w
f
L
P
D
E
(
θ
;
T
f
)
+
w
i
L
I
C
(
θ
;
T
i
)
+
w
b
L
B
C
(
θ
,
;
T
b
)
+
w
d
L
D
a
t
a
(
θ
,
;
T
d
a
t
a
)
\mathcal{L}\left(\boldsymbol{\theta}\right)=w_{f} \mathcal{L}_{PDE}\left(\boldsymbol{\theta}; \mathcal{T}_{f}\right)+w_{i} \mathcal{L}_{IC}\left(\boldsymbol{\theta} ; \mathcal{T}_{i}\right)+w_{b} \mathcal{L}_{BC}\left(\boldsymbol{\theta},; \mathcal{T}_{b}\right)+w_{d} \mathcal{L}_{Data}\left(\boldsymbol{\theta},; \mathcal{T}_{data}\right)
L(θ)=wfLPDE(θ;Tf)+wiLIC(θ;Ti)+wbLBC(θ,;Tb)+wdLData(θ,;Tdata)其中:
L P D E ( θ ; T f ) = 1 ∣ T f ∣ ∑ x ∈ T f ∥ f ( x ; ∂ u ^ ∂ x 1 , … , ∂ u ^ ∂ x d ; ∂ 2 u ^ ∂ x 1 ∂ x 1 , … , ∂ 2 u ^ ∂ x 1 ∂ x d ) ∥ 2 2 L I C ( θ ; T i ) = 1 ∣ T i ∣ ∑ x ∈ T i ∥ u ^ ( x ) − u ( x ) ∥ 2 2 L B C ( θ ; T b ) = 1 ∣ T b ∣ ∑ x ∈ T b ∥ B ( u ^ , x ) ∥ 2 2 L D a t a ( θ ; T d a t a ) = 1 ∣ T d a t a ∣ ∑ x ∈ T d a t a ∥ u ^ ( x ) − u ( x ) ∥ 2 2 \begin{aligned} \mathcal{L}_{PDE}\left(\boldsymbol{\theta} ; \mathcal{T}_{f}\right) &=\frac{1}{\left|\mathcal{T}_{f}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{f}}\left\|f\left(\mathbf{x} ; \frac{\partial \hat{u}}{\partial x_{1}}, \ldots, \frac{\partial \hat{u}}{\partial x_{d}} ; \frac{\partial^{2} \hat{u}}{\partial x_{1} \partial x_{1}}, \ldots, \frac{\partial^{2} \hat{u}}{\partial x_{1} \partial x_{d}} \right)\right\|_{2}^{2} \\ \mathcal{L}_{IC}\left(\boldsymbol{\theta}; \mathcal{T}_{i}\right) &=\frac{1}{\left|\mathcal{T}_{i}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{i}}\|\hat{u}(\mathbf{x})-u(\mathbf{x})\|_{2}^{2} \\ \mathcal{L}_{BC}\left(\boldsymbol{\theta}; \mathcal{T}_{b}\right) &=\frac{1}{\left|\mathcal{T}_{b}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{b}}\|\mathcal{B}(\hat{u}, \mathbf{x})\|_{2}^{2}\\ \mathcal{L}_{Data}\left(\boldsymbol{\theta}; \mathcal{T}_{data}\right) &=\frac{1}{\left|\mathcal{T}_{data}\right|} \sum_{\mathbf{x} \in \mathcal{T}_{data}}\|\hat{u}(\mathbf{x})-u(\mathbf{x})\|_{2}^{2} \end{aligned} LPDE(θ;Tf)LIC(θ;Ti)LBC(θ;Tb)LData(θ;Tdata)=∣Tf∣1x∈Tf∑∥∥∥∥f(x;∂x1∂u^,…,∂xd∂u^;∂x1∂x1∂2u^,…,∂x1∂xd∂2u^)∥∥∥∥22=∣Ti∣1x∈Ti∑∥u^(x)−u(x)∥22=∣Tb∣1x∈Tb∑∥B(u^,x)∥22=∣Tdata∣1x∈Tdata∑∥u^(x)−u(x)∥22
w f w_{f} wf, w i w_{i} wi、 w b w_{b} wb和 w d w_{d} wd是权重。 T f \mathcal{T}_{f} Tf, T i \mathcal{T}_{i} Ti、 T b \mathcal{T}_{b} Tb和 T d a t a \mathcal{T}_{data} Tdata表示来自PDE,初值、边值以及真值的residual points。这里的 T f ⊂ Ω \mathcal{T}_{f} \subset \Omega Tf⊂Ω是一组预定义的点来衡量神经网络输出 u ^ \hat{u} u^与PDE的匹配程度。
虽然,PINN广泛应用于各种领域求解PDE,但是,PINN存在两个缺陷:1.计算效率慢;2.在真实样本少的情况下,即使PINN迭代多次,效果仍然不好。为了克服以上两个缺陷,可以采用先进行预训练,然后进行PINN求解的方法。
1.2 Reptile
为了实现在不同任务上训练模型,使得模型可以仅仅利用少量数据,就可以解决新的任务,使用了二阶信息的Model-Agnostic Meta-Learning(MAML)7 被提出。在MAML基础上,提出了使用一阶信息的Reptile8,Reptile只需要简单地每个任务上执行SGD而不需要像MAML一样计算两次微分,这使得Reptile消耗的计算量和内存更少,但达到MAML相似的效果。如今,Reptile已经成为预训练的重要方法。
Reptile优化算法:
其中, ϕ \phi ϕ是模型参数, U τ k U_{\tau}^{k} Uτk更新 φ φ φ的算子,表示在task τ \tau τ中更新 k k k次, ϵ \epsilon ϵ表示更新步长。
2 核心算法:
为了克服PINN的两个缺陷:1.计算效率慢;2.在真实样本少的情况下,即使PINN迭代多次,效果仍然不好,这篇报告提出了两种算法。利用不同先验信息进行Reptile预训练NN,在将得到的NN参数加载,然后再采用PINN求解PDE的方法。在实际工程中,当只知道零阶先验信息时,即知道原函数服从某个分布,可以采用算法2进行预训练后求解PDE,特别注意的是,算法2仅仅是在预训练的时候用到原函数的零阶先验信息。然而,在某些特别情况下,零阶先验信息不可得,但是高阶先验信息可以获取,即知道原函数的高阶导数服从某个分布,同样可以采取预训练的方法,在预训练的时候构造PDE loss(以及BC loss) ,经过Reptile预训练,NN加载参数后, 再采用PINN求解PDE。
2.1 PINN with Reptile under zero order information
针对零阶先验信息的PDE,即求解PDE前已知PDE的解服从某个分布。首先,对这个先验分布随机采样得到不同的task,在每个task下随机采样,建立真实值与网络预测值的loss函数,采取SGD或者Adam的方法更新网络参数,然后,再将不同task得到的网络参数以 θ ~ − θ \widetilde{\theta}-\theta θ −θ方向更新 θ \theta θ,更新步长采用线性策略。最后,将预训练得到的网络采用PINN的方法对需要求解PDE进行构造PDE loss,BC loss 、 IC loss以及Data loss,采取Adam优化方法优化loss,求得PDE解的代理模型,具体步骤见算法2。特别注意的时,对于零阶先验信息仅仅在在预训练过程中才被使用。
2.2 PINN with Reptile under higher order information
针对高阶先验信息的PDE,求解PDE前已知PDE的高阶导数服从某个分布。首先,对这个先验分布随机采样得到不同的task,在每个task下确定PDE和BC的residual points,通过训练点建立关于PDE和BC的loss函数 L 1 \mathcal{L}_{1} L1,训练NN找到每个task下使 L 1 \mathcal{L}_{1} L1最小的参数 θ ∗ \theta_{*} θ∗,采取SGD或者Adam的方法更新网络参数,然后,再将不同task得到的网络参数以 θ ~ − θ \widetilde{\theta}-\theta θ −θ方向更新 θ \theta θ,更新步长采用线性策略。最后,将预训练得到的网络加载,再采用PINN的方法求解,构造PDE loss,BC loss 、 IC loss以及Data loss,采取Adam优化方法优化loss,求得PDE解的代理模型,具体步骤见算法3。
3 实验部分
以一维、二维泊松方程为例,对提出的两种算法进行演示与验证,并再二维热布局问题上得到了应用。实验1主要对一维松方程进行求解,实验2主要对二维泊松方程进行求解,实验3主要将算法3应用于热布局问题上。
3.1 实验1(一维泊松方程)
在这一章的两个算例被设计求解下面这个问题,对提出的两种算法进行演示与验证。算例1对零阶先验信息进行预处理,再用PINN求解PDE;算例2对二阶先验信息进行预处理,再采用PINN的方法求解PDE。
问题1描述:考虑一个两端具有狄利克雷边界条件的一维泊松方程,需要求解如下方程:
d
2
u
d
x
2
=
−
0.49
⋅
sin
(
0.7
x
)
−
2.25
⋅
cos
(
1.5
x
)
u
(
−
10
)
=
u
^
(
−
10
)
u
(
10
)
=
u
^
(
10
)
\begin{aligned} \frac{d^{2} u}{d x^{2}} &=-0.49 \cdot \sin (0.7 x)-2.25 \cdot \cos (1.5 x) \\ u(-10) &=\hat{u}(-10) \\ u(10) &=\hat{u}(10) \end{aligned}
dx2d2uu(−10)u(10)=−0.49⋅sin(0.7x)−2.25⋅cos(1.5x)=u^(−10)=u^(10)真实的解为:
u
^
:
=
sin
(
0.7
x
)
+
cos
(
1.5
x
)
−
0.1
x
,
∀
x
∈
[
−
10
,
10
]
\hat{u}:=\sin (0.7 x)+\cos (1.5 x)-0.1 x, \quad \forall x \in[-10,10]
u^:=sin(0.7x)+cos(1.5x)−0.1x,∀x∈[−10,10]
3.1.1 算例1(算法2)
问题求解:
- 在已知原函数 u u u的零阶信息,服从如下的分布: u ^ : = ζ 1 sin ( η 1 x ) + ζ 2 cos ( η 2 x ) − ζ 3 x + η 3 , ζ i ∼ uniform [ 0 , 2 ] ∀ i = 1 , 2 ζ 3 ∼ uniform [ 0 , 1 ] η 1 ∼ uniform [ 0 , 1 ] η 2 ∼ uniform [ 1 , 2 ] η 3 ∼ uniform [ 0 , 1 ] \begin{array}{c} \hat{u}:=\zeta_{1}\sin (\eta_{1} x)+\zeta_{2}\cos (\eta_{2} x)-\zeta_{3} x +\eta_{3} , \quad \\ \zeta_{i} \sim \text { uniform}[0,2] \forall i=1,2\\ \zeta_{3} \sim \text { uniform}[0,1]\\ \eta_{1} \sim \text { uniform}[0,1]\\ \eta_{2} \sim \text { uniform}[1,2]\\ \eta_{3} \sim \text { uniform}[0,1] \end{array} u^:=ζ1sin(η1x)+ζ2cos(η2x)−ζ3x+η3,ζi∼ uniform[0,2]∀i=1,2ζ3∼ uniform[0,1]η1∼ uniform[0,1]η2∼ uniform[1,2]η3∼ uniform[0,1]
- 首先,选取了一个网络4层,每层含50个神经元的MLP网络,通过对零阶先验信息采用Reptile的方法进行训练,从原函数的分布中随机选取4000个任务,随机采样2000个样本点,采用Adam算法在每个任务更新参数20次,学习率设置0.001。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取了不同的样本点,进行了四个实验,训练样本点设置见下表1,其中 N f N_f Nf, N b N_b Nb, N d a t a N_{data} Ndata分别表示PDE,边值以及真值的residual points的数量。值得注意的是 N d a t a N_{data} Ndata表示每个epoch所用到的初始真实样本点数目,在每个epoch会使用不同的真实样本。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 500 | 2 | 500 |
2 | 50 | 2 | 50 |
3 | 10 | 2 | 10 |
图2-6中红线表示真实原函数,蓝色曲线表示神经网络得到PDE的解。第1行表示未经过预训练的PINN方法,第2行表示采用算法2的方法,前4列表示不同Iteration下神经网络结果,最后1列表示900Iteration下对应loss变化。在图2中,可以看出采用算法2能很快在300 Iteration时就能很快收敛,未经预训练的PINN即使训练达到600 Iteration仍不能很快收敛。通过减少训练样本点,得到不同Iteration训练结果如图3和图4,从图中可以看到即使大幅度减少训练样本,采用算法2的方法仍然能在300 Iteration取得很好的结果。相比之下,随着训练样本减少未经预训练的PINN方法,即使训练更多的Iteration仍得不到好的结果。综上可以看出,即使使用较小的训练样本,算法2依然能得到较好的结果。
为了进一步分析采用预训练的PINN方法对真实训练样本数目( N d a t a N_{data} Ndata)的敏感性,在整个训练中两种方法 N d a t a N_{data} Ndata仅使用100个进行训练,即真值的residual point总共100个,和第1-3组数据测试不同在于,第4组在每个Iteration中采用相同的真值的residual point。图5展示了不同Iteration采用算法2的方法与未经过预训练的PINN方法的结果,从图中可以看出,即使仅采用100个真实样本值,经过预训练的PINN方法在300 Iteration就能收敛到很好的效果,相比之下,未经预训练的PINN即使到了900 Iteration仍不能收敛。在图6中,算法2在没有使用真值进行训练,仅使用PDE residual point,下同样能在900 Iteration达到收敛趋势,而相比之下未经过预训练的PINN方法即使在900 Iteration根本没有收敛趋势。这两组实验说明了算法2对真值的训练样本依赖性不强,即使不使用真实样本也能在较小Iteration下达到收敛,而未经过预训练的PINN方法即使在较多Iteration下页不能收敛。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
4 | 10 | 2 | 100 |
5 | 500 | 2 | 0 |
3.1.2 算例2(算法3)
问题求解:
- 在已知原函数二阶先验信息,服从如下分布: d 2 u d x 2 = − α 2 ⋅ sin ( α x ) − β 2 ⋅ cos ( β x ) α ∼ uniform [ 0 , 1 ] β ∼ uniform [ 0 , 2 ] \begin{aligned} \frac{d^{2} u}{d x^{2}} &=-\alpha^{2} \cdot \sin (\alpha x)-\beta^{2} \cdot \cos (\beta x) \\ \alpha &\sim \text { uniform}[0,1] \\ \beta&\sim \text { uniform}[0,2] \end{aligned} dx2d2uαβ=−α2⋅sin(αx)−β2⋅cos(βx)∼ uniform[0,1]∼ uniform[0,2]
- 首先,选取了一个网络4层,每层含50个神经元的MLP网络,通过对二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取40个任务,随机采样10000个PDE residual point,在每个任务下更新参数1000次,构建只包含PDE损失的loss采用Adam算法更新参数,学习率设置0.001。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表2参数的训练样本进行训练,值得注意的是 N d a t a N_{data} Ndata表示每个epoch所用到的初始真实样本点数目,在每个epoch会使用不同的真实样本。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 500 | 2 | 500 |
2 | 50 | 2 | 50 |
3 | 10 | 2 | 10 |
图8-12中红线表示真实原函,蓝色曲线表示神经网络预测的原函数。第1行表示未经过预训练的PINN方法,第2行表示采用算法3的方法,前4列表示不同Iteration下神经网络结果,最后1列表示900Iteration下对应loss变化。在图9和图10中,大幅减少训练样本数目后,算法3的方法能很快在300 Iteration时就能很快收敛,未经预训练的PINN即使训练达到900 Iteration仍不能很快收敛。进一步说明了采用二阶先验信息的预训练的网络能很快收敛。综上可以看出,即使使用较小的训练样本,算法2依然能得到较好的结果。
为了进一步分析采用预训练的PINN方法对初始真实训练样本数目的敏感性,训练参数如下表,值得注意的是,这里的 N i N_{i} Ni表示每个Iteration采用相同真值真实样本数目( N d a t a N_{data} Ndata)。图11使用100个真实样本进行训练,即真值的residual point总共100个,图11展示了不使用初始真实样本进行训练。从图11,可以看出,即使只知道真实原函数100个点的值,采用算法3的方法仍能很快收敛,相比之下,使用了更少样本点的不经过预训练的PINN结果非常差,在较大Iteration下仍不能收敛。从图12,在不使用真值进行训练时,不经过预训练的PINN方法,经过多次Ieration后并没有收敛趋势,而算法3在相同条件下,在900 Iteration下结果已经很好。这两组实验说明了算法3对真值的训练样本依赖性不强,即使不使用真实样本也能在较小Iteration下达到收敛,而未经过预训练的PINN方法即使在较多Iteration下页不能收敛。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
4 | 10 | 2 | 100 |
5 | 500 | 2 | 0 |
3.2 实验2(二维泊松方程)
在这一章两个算例被设计求解问题2,对提出的两种算法进行演示与验证。算例1零阶先验信息进行Reptile预处理,再进行PINN求解;算例2对二阶先验信息进行Reptile预处理,再进行PINN求解。
问题2描述:考虑一个两端具有狄利克雷边界条件的二维泊松方程,需要求解如下方程:
−
Δ
u
=
f
Ω
=
[
0
,
1
]
×
[
0
,
1
]
u
∣
∂
Ω
=
0
\begin{aligned} -\Delta u &=f \\ \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned}
−ΔuΩu∣∂Ω=f=[0,1]×[0,1]=0
其中
f
=
∑
0
≤
i
≤
3
,
0
≤
j
≤
3
η
i
j
⋅
sin
(
i
x
π
)
⋅
sin
(
j
y
π
)
f=\sum_{0 \leq i \leq 3,0 \leq j \leq 3} \eta_{i j} \cdot \sin (i x \pi) \cdot \sin (j y \pi)
f=0≤i≤3,0≤j≤3∑ηij⋅sin(ixπ)⋅sin(jyπ)
系数取值:
η
i
j
=
π
2
(
i
2
+
j
2
)
μ
i
j
{\eta_{i j}=\pi^{2}(i^{2}+j^{2})}\mu_{i j}
ηij=π2(i2+j2)μij,
1
≤
i
≤
3
,
1
≤
j
≤
3
1 \leq i \leq 3,1 \leq j \leq 3
1≤i≤3,1≤j≤3
μ 11 \mu_{11} μ11 | μ 12 \mu_{12} μ12 | μ 13 \mu_{13} μ13 |
---|---|---|
0.7 | 0.45 | - 0.23 |
μ 21 \mu_{21} μ21 | μ 22 \mu_{22} μ22 | μ 23 \mu_{23} μ23 |
- 0.1 | 0.95 | -0.95 |
μ 31 \mu_{31} μ31 | μ 32 \mu_{32} μ32 | μ 33 \mu_{33} μ33 |
0.95 | - 0.95 | 0.95 |
3.2.1 算例1(算法2)
问题求解:
- 已知原函数的零阶先验信息,服从如下分布:
u = ∑ 0 ≤ i ≤ 3 , 0 ≤ j ≤ 3 ζ i j ⋅ sin ( i x π ) ⋅ sin ( j y π ) u=\sum_{0 \leq i \leq 3,0 \leq j \leq 3} \zeta_{i j} \cdot \sin (i x \pi) \cdot \sin (j y \pi) u=0≤i≤3,0≤j≤3∑ζij⋅sin(ixπ)⋅sin(jyπ)
ζ i j ∼ [ − 1 , 1 ] \zeta_{ij}\sim[-1,1] ζij∼[−1,1] - 首先,选取了一个网络5层,每层含50个神经元的MLP网络,通过对二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取4000个任务,随机采样20000个PDE residual point,在每个任务下更新参数1000次,构建只包含PDE损失的loss采用Adam算法更新参数,学习率设置0.001。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表5参数的训练样本进行训练,,其中 N f N_f Nf, N b N_b Nb, N d a t a N_{data} Ndata分别表示PDE,边值以及初值的residual points的数量。值得注意的是 N i N_{i} Ni表示每个epoch所用到的初始真实样本点数目,在每个epoch会使用不同的真实样本。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 1000 | 1600 | 1000 |
2 | 1000 | 400 | 100 |
3 | 500 | 400 | 0 |
4 | 100 | 400 | 0 |
待求PDE解的真值如图12。4组不同数据训练结果如图14-17,其中第1行表示未经过预训练的PINN方法结果,第二行表示用算法3的结果,前4列表示不同Iteration下神经网络结果,最后1列表示4000Iteration下对应loss变化。如图14,采用算法2,在200 Iteration已经能够得到效果比较好,但是不经过预训练的PINN方法在1000 Iteration时也只是学到了真值的大致分布,局部结果并不好,在4000 Iteration时loss值也比算法2大。如图15,在大幅减小了真值训练样本数目,甚至不使用真值训练样本后,算法2也同样能在200 Iteration下马上学得整体分布,而且在200 Iteration下loss已经收敛到较小值,而不经过预训练的PINN方法在4000 Iteration时才能达到算法2 在200 Iteration时相当的loss。在图16和图17中,在不使用真值训练样本,不经过预训练的PNN方法在4000 Iteration仍不能学到真值的分布,而算法2仍在200 Iteration已经学得真值整体分布,在500 Iteration下已经收敛,说明算法2的训练样本数目依赖性不强,较小训练样本便能收敛。综上所述,相比于未经过预训练的PINN方法,算法2能在更少真实训练样本甚至没有真实训练样本时在更快收敛。
3.2.2 算例2(算法3)
问题求解:
- 知道原函数的二阶先验信息,服从如下分布:
− Δ u = ∑ 0 ≤ i ≤ 3 , 0 ≤ j ≤ 3 δ i j ⋅ sin ( i x π ) ⋅ sin ( j y π ) \begin{aligned} -\Delta u &=\sum_{0 \leq i \leq 3,0 \leq j \leq 3} \delta_{i j} \cdot \sin (i x \pi) \cdot \sin (j y \pi) \\ \end{aligned} −Δu=0≤i≤3,0≤j≤3∑δij⋅sin(ixπ)⋅sin(jyπ) δ i j = π 2 ( i 2 + j 2 ) λ i j , 1 ≤ i ≤ 3 , 1 ≤ j ≤ 3 {\delta_{i j}=\pi^{2}(i^{2}+j^{2})}\lambda_{i j},1 \leq i \leq 3,1 \leq j \leq 3 δij=π2(i2+j2)λij,1≤i≤3,1≤j≤3 λ i j ∼ [ − 1 , 1 ] \lambda_{ij}\sim[-1,1] λij∼[−1,1] - 首先,选取了一个网络5层,每层含100个神经元的MLP网络,通过对二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取4000个任务,随机采样1000个PDE residual point,在每个任务下更新参数1000次,构建只包含PDE损失的loss采用Adam算法更新参数,学习率设置0.001。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表参数的训练样本进行训练,,其中 N f N_f Nf, N b N_b Nb, N d a t a N_{data} Ndata分别表示PDE,边值以及初值的residual points的数量。值得注意的是 N d a t a N_{data} Ndata表示每个Iteration所用到的初始真实样本点数目,在每个epoch会使用不同的真实样本。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 1000 | 1600 | 1000 |
2 | 1000 | 400 | 100 |
3 | 500 | 400 | 0 |
4 | 100 | 400 | 0 |
待求PDE解的真值如图12。4组不同数据训练结果如图18-21,其中第1行表示未经过预训练的PINN方法,第2行表示采用算法3的方法,前4列表示不同Iteration下神经网络结果,最后1列表示4000Iteration下对应loss变化。。如图18,采用算法3的方法loss能很快下降收敛,在200 Iteration下,采用算法3的方法已经把整个真值轮廓学得很好了,而没有经过预训练的PINN方法在1000 Iteration只学到真值部分轮廓。从图19中,在大幅减小了真值训练样本数目,甚至不使用真值训练样本后,算法2也同样能在200 Iteration下马上学得整体分布,而且在200 Iteration下loss已经收敛到较小值,而不经过预训练的PINN方法在4000 Iteration时才能达到算法2 在200 Iteration时的相当的loss。在图20和图21中,在不使用真值训练样本,不经过预训练的PNN方法在4000 Iteration仍不能学到真值的分布,而算法2仍在200 Iteration已经学得真值整体分布,在500 Iteration下已经收敛,说明算法2的训练样本数目依赖性不强,较小训练样本便能收敛。综上所述,相比于未经过预训练的PINN方法,算法3能在更少真实训练样本甚至没有真实训练样本时在更快收敛。
3.3 实验3(二维热布局)
这一章主要针对二维布局问题设计了问题3的三种情况,对提出的算法3进行了演示与验证。算例1利用算法3对5个热源的二阶信息进行预训练,再求解5个热源布局的PDE;算例2利用算法3对10个热源的二阶信息进行预训练,再求解10个热源布局的PDE;算例3对1,5,10热源的二阶信息进行混合预训练,再求解8个热源布局的PDE。
问题3:
考虑二维布局问题,可以由如下方程描述:
−
Δ
u
(
x
,
y
)
=
s
(
x
,
y
)
x
,
y
∈
Ω
=
[
0
,
1
]
×
[
0
,
1
]
u
∣
∂
Ω
=
0
\begin{aligned} -\Delta u(x, y) &=s(x, y) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0 \end{aligned}
−Δu(x,y)x,y∈Ωu∣∂Ω=s(x,y)=[0,1]×[0,1]=0
其中,热源有
n
n
n个n
s
(
x
,
y
)
=
∑
i
=
1
n
f
(
x
,
y
;
a
i
,
b
i
,
c
i
)
s(x, y)=\sum_{i=1}^{n} f\left(x, y ; a_{i}, b_{i}, c_{i}\right)
s(x,y)=i=1∑nf(x,y;ai,bi,ci)
热源由如下方案生成
f
(
x
,
y
;
a
i
,
b
i
,
c
i
)
=
c
⋅
exp
(
−
(
x
−
a
i
)
2
+
(
y
−
b
i
)
2
0.01
)
a
i
∼
[
0.1
,
0.9
]
b
i
∼
[
0.1
,
0.9
]
c
i
∼
[
0.8
,
1.2
]
\begin{aligned} f(x, y ; a_{i}, b_{i}, c_{i}) &=c \cdot \exp \left(-\frac{(x-a_{i})^{2}+(y-b_{i})^{2}}{0.01}\right) \\ a_{i} & \sim[0.1,0.9] \\ b_{i} & \sim[0.1,0.9] \\ c_{i} & \sim[0.8,1.2] \end{aligned}
f(x,y;ai,bi,ci)aibici=c⋅exp(−0.01(x−ai)2+(y−bi)2)∼[0.1,0.9]∼[0.1,0.9]∼[0.8,1.2]
算例1描述:待求PDE由5个热源组成,具体描述如下,通过fenics求得5个热源及该方程对应的真实热场如图。
− Δ u ( x , y ) = ∑ i = 1 5 c i ⋅ exp ( − ( x − a i ) 2 + ( y − b i ) 2 0.01 ) x , y ∈ Ω = [ 0 , 1 ] × [ 0 , 1 ] u ∣ ∂ Ω = 0 \begin{aligned} -\Delta u(x, y) &=\sum_{i=1}^{5}c_{i} \cdot \exp \left(-\frac{(x-a_{i})^{2}+(y-b_{i})^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned} −Δu(x,y)x,y∈Ωu∣∂Ω=i=1∑5ci⋅exp(−0.01(x−ai)2+(y−bi)2)=[0,1]×[0,1]=0
a 1 a_{1} a1 | a 2 a_{2} a2 | a 3 a_{3} a3 | a 4 a_{4} a4 | a 5 a_{5} a5 |
---|---|---|---|---|
0.15 | 0.516 | 0.86 | 0.84 | 0.40 |
b 1 b_{1} b1 | b 2 b_{2} b2 | b 3 b_{3} b3 | b 4 b_{4} b4 | b 5 b_{5} b5 |
0.55 | 0.54 | 0.31 | 0.18 | 0.74 |
c 1 c_{1} c1 | c 2 c_{2} c2 | c 3 c_{3} c3 | c 4 c_{4} c4 | c 5 c_{5} c5 |
0.88 | 0.86 | 0.99 | 1.07 | 1.13 |
算例2描述:待求PDE由10个热源组成,具体描述如下:
− Δ u ( x , y ) = ∑ i = 1 10 c i ⋅ exp ( − ( x − a i ) 2 + ( y − b i ) 2 0.01 ) x , y ∈ Ω = [ 0 , 1 ] × [ 0 , 1 ] u ∣ ∂ Ω = 0 \begin{aligned} -\Delta u(x, y) &=\sum_{i=1}^{10}c_{i} \cdot \exp \left(-\frac{(x-a_{i})^{2}+(y-b_{i})^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned} −Δu(x,y)x,y∈Ωu∣∂Ω=i=1∑10ci⋅exp(−0.01(x−ai)2+(y−bi)2)=[0,1]×[0,1]=0
a 1 a_{1} a1 | a 2 a_{2} a2 | a 3 a_{3} a3 | a 4 a_{4} a4 | a 5 a_{5} a5 | a 6 a_{6} a6 | a 7 a_{7} a7 | a 8 a_{8} a8 | a 9 a_{9} a9 | a 10 a_{10} a10 |
---|---|---|---|---|---|---|---|---|---|
0.10 | 0.20 | 0.24, | 0.29 | 0.63 | 0.65 | 0.70 | 0.77 | 0.88 | 0.89 |
b 1 b_{1} b1 | b 2 b_{2} b2 | b 3 b_{3} b3 | b 4 b_{4} b4 | b 5 b_{5} b5 | b 6 b_{6} b6 | b 7 b_{7} b7 | b 3 b_{3} b3 | b 9 b_{9} b9 | b 10 b_{10} b10 |
0.52 | 0.26 | 0.70 | 0.56 | 0.83 | 0.67 | 0.83 | 0.27 | 0.90 | 0.67 |
c 1 c_{1} c1 | c 2 c_{2} c2 | c 3 c_{3} c3 | c 4 c_{4} c4 | c 5 c_{5} c5 | c 6 c_{6} c6 | c 7 c_{7} c7 | c 8 c_{8} c8 | c 9 c_{9} c9 | c 10 c_{10} c10 |
1.03 | 0.92 | 0.82 | 1.07 | 1.11, | 1.17 | 0.81 | 0.85 | 0.88 | 0.95 |
算例3描述:待求PDE由10个热源组成,具体描述如下,通过fenics求得5个热源及该方程对应的真实热场如图。
− Δ u ( x , y ) = ∑ i = 1 8 c i ⋅ exp ( − ( x − a i ) 2 + ( y − b i ) 2 0.01 ) x , y ∈ Ω = [ 0 , 1 ] × [ 0 , 1 ] u ∣ ∂ Ω = 0 \begin{aligned} -\Delta u(x, y) &=\sum_{i=1}^{8}c_{i} \cdot \exp \left(-\frac{(x-a_{i})^{2}+(y-b_{i})^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned} −Δu(x,y)x,y∈Ωu∣∂Ω=i=1∑8ci⋅exp(−0.01(x−ai)2+(y−bi)2)=[0,1]×[0,1]=0
a 1 a_{1} a1 | a 2 a_{2} a2 | a 3 a_{3} a3 | a 4 a_{4} a4 | a 5 a_{5} a5 | a 6 a_{6} a6 | a 7 a_{7} a7 | a 8 a_{8} a8 |
---|---|---|---|---|---|---|---|
0.15 | 0.18 | 0.20 | 0.31 | 0.43 | 0.56 | 0.7 | 0.8 |
b 1 b_{1} b1 | b 2 b_{2} b2 | b 3 b_{3} b3 | b 4 b_{4} b4 | b 5 b_{5} b5 | b 6 b_{6} b6 | b 7 b_{7} b7 | b 8 b_{8} b8 |
0.34 | 0.31 | 0.65 | 0.86 | 0.65 | 0.38 | 0.64 | 0.12 |
c 1 c_{1} c1 | c 2 c_{2} c2 | c 3 c_{3} c3 | c 4 c_{4} c4 | c 5 c_{5} c5 | c 6 c_{6} c6 | c 7 c_{7} c7 | c 8 c_{8} c8 |
0.84 | 1.07 | 1.12 | 0.83 | 1.12 | 1.11 | 0.99 | 0.91 |
3.3.1 算例1(5个热源)
问题求解:
- 已知二阶先验信息,由5个热源组成的二阶先验分布构成。
−
Δ
u
(
x
,
y
)
=
∑
i
=
1
5
c
i
⋅
exp
(
−
(
x
−
a
)
2
+
(
y
−
b
)
2
0.01
)
x
,
y
∈
Ω
=
[
0
,
1
]
×
[
0
,
1
]
u
∣
∂
Ω
=
0
\begin{aligned} -\Delta u(x, y)&=\sum_{i=1}^{5} c_{i} \cdot \exp \left(-\frac{(x-a)^{2}+(y-b)^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned}
−Δu(x,y)x,y∈Ωu∣∂Ω=i=1∑5ci⋅exp(−0.01(x−a)2+(y−b)2)=[0,1]×[0,1]=0
其中
a
i
∼
[
0.1
,
0.9
]
b
i
∼
[
0.1
,
0.9
]
c
i
∼
[
0.8
,
1.2
]
\begin{aligned} a_{i} & \sim[0.1,0.9] \\ b_{i} & \sim[0.1,0.9] \\ c_{i} & \sim[0.8,1.2] \end{aligned}
aibici∼[0.1,0.9]∼[0.1,0.9]∼[0.8,1.2]
- 首先,选取了一个网络5层,每层含100个神经元的MLP网络,通过对包含5个二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取1000个任务,随机采样1000个PDE residual point以及1000 BC residual point,在每个任务下更新参数1000次,构建包含PDE损失和BC损失的loss,采用Adam算法更新参数,学习率设置0.001,采样学习率下降策略,每500 Iteration变为原来学习率的0.8倍。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表11参数的训练样本进行训练。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 4000 | 4000 | 0 |
2 | 400 | 400 | 0 |
3 | 100 | 400 | 0 |
通过fenic求解,得到待求10个热源真实热场分布如图22。3组不同数据训练结果如图23-25,其中第1行表示未经过预训练的PINN方法,第2行表示采用算法3的方法。前4列表示不同Iteration下神经网络结果,最后1列表示2000Iteration下对应loss变化。如图23,采用算法3的方法loss能快速下降收敛,在1000 Iteration下Pred loss已经降到 1 0 − 6 10^{-6} 10−6,而没有经过预训练的PINN方法在2000 Iteration下loss也只能降到 1 0 − 5 10^{-5} 10−5。从图24和25中,在大幅减小训练样本数目后,算法3的Pred loss也同样能在1000 Iteration下迅速降到$10^{-6},甚至在每个Iteration只使用500个residual points下,算法3也能很快收敛,相比之下,不采用预训练的PINN方法在大幅减少训练样本后都不能收敛。综上所述,相比于未经过预训练的PINN方法,算法3能在更少训练样本时更快收敛,同时也能收敛到更小的loss。
3.3.2 算例2(10个热源)
问题求解:
- 已知二阶先验信息,由10个热源组成的二阶先验分布组成。
−
Δ
u
(
x
,
y
)
=
∑
i
=
1
10
c
i
⋅
exp
(
−
(
x
−
a
)
2
+
(
y
−
b
)
2
0.01
)
x
,
y
∈
Ω
=
[
0
,
1
]
×
[
0
,
1
]
u
∣
∂
Ω
=
0
\begin{aligned} -\Delta u(x, y)&=\sum_{i=1}^{10} c_{i} \cdot \exp \left(-\frac{(x-a)^{2}+(y-b)^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned}
−Δu(x,y)x,y∈Ωu∣∂Ω=i=1∑10ci⋅exp(−0.01(x−a)2+(y−b)2)=[0,1]×[0,1]=0
其中
a
i
∼
[
0.1
,
0.9
]
b
i
∼
[
0.1
,
0.9
]
c
i
∼
[
0.8
,
1.2
]
\begin{aligned} a_{i} & \sim[0.1,0.9] \\ b_{i} & \sim[0.1,0.9] \\ c_{i} & \sim[0.8,1.2] \end{aligned}
aibici∼[0.1,0.9]∼[0.1,0.9]∼[0.8,1.2]
- 首先,选取了一个网络5层,每层含100个神经元的MLP网络,通过对10个热源的二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取1000个任务,随机采样1000个PDE residual point以及1000 BC residual point,在每个任务下更新参数1000次,构建包含PDE损失和BC损失的loss,采用Adam算法更新参数,学习率设置0.001,采样学习率下降策略,每500 Iteration变为原来学习率的0.8倍。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表12参数的训练样本进行训练。
- 通过fenic求解,得到该10个热源与对应热场如图26。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 4000 | 4000 | 0 |
2 | 400 | 400 | 0 |
3 | 100 | 400 | 0 |
通过fenic求解,得到待求10个热源真实热场分布如图26。3组不同数据训练结果如图27-29,其中第1行表示未经过预训练的PINN方法,第2行表示采用算法3的方法。前4列表示不同Iteration下神经网络结果,最后1列表示2000Iteration下对应loss变化。如图27,在热源数目问题变多后采用算法3的方法loss仍能快速下降收敛,在500 Iteration下Pred loss已经降到 1 0 − 6 10^{-6} 10−6,而没有经过预训练的PINN方法在2000 Iteration下loss也只能降到 1 0 − 5 10^{-5} 10−5。从图28和29中,在大幅减小训练样本数目后,算法3的Pred loss也同样能在500 Iteration下迅速降到$10^{-6},甚至在每个Iteration只使用500个residual points下,算法3也能很快收敛,相比之下,不采用预训练的PINN方法在大幅减少训练样本后都不能收敛。综上所述,相比于未经过预训练的PINN方法,算法3能在更少训练样本时更快收敛,同时也能收敛到更小的loss。
3.3.3 算例3(混合热源)
问题求解:
- 已知二阶先验信息,由1个,5个和10个热源组成的二阶先验分布组成。
− Δ u ( x , y ) = ∑ m = 1 , 5 , 10 ∑ i = 1 m c i ⋅ exp ( − ( x − a ) 2 + ( y − b ) 2 0.01 ) x , y ∈ Ω = [ 0 , 1 ] × [ 0 , 1 ] u ∣ ∂ Ω = 0 \begin{aligned} -\Delta u(x, y)&=\sum_{m=1,5,10}\sum_{i=1}^{m} c_{i} \cdot \exp \left(-\frac{(x-a)^{2}+(y-b)^{2}}{0.01}\right) \\ x, y \in \Omega &=[0,1] \times[0,1] \\ \left.u\right|_{\partial \Omega} &=0\\ \end{aligned} −Δu(x,y)x,y∈Ωu∣∂Ω=m=1,5,10∑i=1∑mci⋅exp(−0.01(x−a)2+(y−b)2)=[0,1]×[0,1]=0
其中
a i ∼ [ 0.1 , 0.9 ] b i ∼ [ 0.1 , 0.9 ] c i ∼ [ 0.8 , 1.2 ] \begin{aligned} a_{i} & \sim[0.1,0.9] \\ b_{i} & \sim[0.1,0.9] \\ c_{i} & \sim[0.8,1.2] \end{aligned} aibici∼[0.1,0.9]∼[0.1,0.9]∼[0.8,1.2] - 首先,选取了一个网络5层,每层含100个神经元的MLP网络,通过对1,5,10个热源的二阶先验信息采用Reptile的方法进行训练,分布从1,5,10热源的二阶的分布中随机选取333个任务,每个任务下随机采样1000个PDE residual point以及1000 BC residual point,在每个任务下更新参数1000次,构建包含PDE损失和BC损失的loss,采用Adam算法更新参数,学习率设置0.001,采样学习率下降策略,每500 Iteration变为原来学习率的0.8倍。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表13参数的训练样本进行训练。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 4000 | 4000 | 0 |
2 | 400 | 400 | 0 |
3 | 100 | 400 | 0 |
通过fenic求解,得到待求8个热源真实热场分布如图30。3组不同数据训练结果如图31-33,其中第1行表示未经过预训练的PINN方法,第2行表示采用算法3的方法。前4列表示不同Iteration下神经网络结果,最后1列表示2000Iteration下对应loss变化。通过热源为1,5,8的二阶先验分布信息进行预训练再求解热源8的PDE的算法3,相比于没有预训练的PINN方法,同样能很快收敛,并在较小的Iteration下收敛到更小的loss。如图31,采用算法3的方法loss仍能快速下降收敛,在500 Iteration内Pred loss已经降到 1 0 − 6 10^{-6} 10−6,而没有经过预训练的PINN方法在2000 Iteration下loss也只能降到 1 0 − 5 10^{-5} 10−5。从图32和33中,在大幅减小训练样本数目后,算法3的Pred loss也同样能在500 Iteration下迅速降到$10^{-6},甚至在每个Iteration只使用500个residual points下,算法3也能很快收敛,相比之下,不采用预训练的PINN方法在大幅减少训练样本后都不能收敛。综上所述,相比于未经过预训练的PINN方法,算法3能通过不同热源的先验信息预训练,在新热源问题上更快在更少训练样本时更快收敛,同时也能收敛到更小的loss。
3.4 实验4(二维Schrodinger方程)
在这一章例被设计求解问题4,对提出的算法3进行演示与验证。算例1对二阶先验信息进行Reptile预处理,再进行PINN求解。
问题4:考虑用来研究量子力学系统的经典场方程Schrodinger方程,具体描述如下:
i
h
t
+
0.5
h
x
x
+
∣
h
∣
2
h
=
0
,
x
∈
[
−
5
,
5
]
,
t
∈
[
0
,
π
/
2
]
h
(
0
,
x
)
=
2
sech
(
x
)
h
(
t
,
−
5
)
=
h
(
t
,
5
)
h
x
(
t
,
−
5
)
=
h
x
(
t
,
5
)
\begin{array}{l} i h_{t}+0.5 h_{x x}+|h|^{2} h=0, \quad x \in[-5,5], \quad t \in[0, \pi / 2] \\ h(0, x)=2 \operatorname{sech}(x) \\ h(t,-5)=h(t, 5) \\ h_{x}(t,-5)=h_{x}(t, 5) \end{array}
iht+0.5hxx+∣h∣2h=0,x∈[−5,5],t∈[0,π/2]h(0,x)=2sech(x)h(t,−5)=h(t,5)hx(t,−5)=hx(t,5)
3.4.1 算例1
问题求解:
i
h
t
+
λ
h
x
x
+
∣
h
∣
2
h
=
0
,
x
∈
[
−
5
,
5
]
,
t
∈
[
0
,
π
/
2
]
h
(
t
,
−
5
)
=
h
(
t
,
5
)
h
x
(
t
,
−
5
)
=
h
x
(
t
,
5
)
\begin{array}{l} i h_{t}+\lambda h_{x x}+|h|^{2} h=0, \quad x \in[-5,5], \quad t \in[0, \pi / 2] \\ h(t,-5)=h(t, 5) \\ h_{x}(t,-5)=h_{x}(t, 5) \end{array}
iht+λhxx+∣h∣2h=0,x∈[−5,5],t∈[0,π/2]h(t,−5)=h(t,5)hx(t,−5)=hx(t,5)
其中
λ
∼
[
0
,
1
]
\begin{aligned} \lambda & \sim[0,1] \\ \end{aligned}
λ∼[0,1]
- 首先,选取了一个网络5层,每层含100个神经元的MLP网络,通过对二阶先验信息采用Reptile的方法进行训练,从二阶的分布中随机选取100个任务,随机采样1000个PDE residual point以及1000个BC residual point,在每个任务下更新参数10000次,构建只包含PDE损失的loss采用Adam算法更新参数,学习率设置0.001。然后,将得到的预训练得到的网络参数加载,进行PINN求解。选取下表5参数的训练样本进行训练,,其中 N f N_f Nf, N b N_b Nb, N d a t a N_{data} Ndata分别表示PDE,边值以及初值的residual points的数量。值得注意的是 N i N_{i} Ni表示每个epoch所用到的初始真实样本点数目,在每个epoch会使用不同的真实样本。
实验编号 | N f N_f Nf | N b N_b Nb | N d a t a N_{data} Ndata |
---|---|---|---|
1 | 4000 | 1000 | 0 |
2 | 2000 | 100 | 0 |
3 | 1000 | 100 | 0 |
参考文献
Chen Y , Lu L , Karniadakis G E , et al. Physics-informed neural networks for inverse problems in nano-optics and metamaterials[J]. Optics Express, 2020, 28(8). ↩︎ ↩︎ ↩︎
Peng W , Zhou W , Zhang J , et al. Accelerating Physics-Informed Neural Network Training with Prior Dictionaries[J]. 2020. ↩︎ ↩︎ ↩︎
M. Raissi, P. Perdikaris, and G. E. Karniadakis, “Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations,” J. of Comp. Phys. 378, 686–707 (2019). ↩︎ ↩︎
Lu Lu, Xuhui Meng, Zhiping Mao, and George E Karniadakis, “Deepxde: A deep learning library for solving differential equations,” arXiv preprint arXiv:1907.04502 (2019). ↩︎ ↩︎
Xing Lin, Yair Rivenson, Nezih T Yardimci, Muhammed Veli, Yi Luo, Mona Jarrahi, and Aydogan Ozcan. All-optical machine learning using diffractive deep neural networks. Science, 361(6406):1004–1008, 2018. ↩︎
Ameya D Jagtap, Kenji Kawaguchi, and George Em Karniadakis. Locally adaptive acti- vation functions with slope recovery term for deep and physics-informed neural networks. arXiv preprint arXiv:1909.12228, 2019. ↩︎
Chelsea Finn, Pieter Abbeel, and Sergey Levine. Model-agnostic meta-learning for fast adaptation of deep networks. arXiv preprint arXiv:1703.03400, 2017. ↩︎
Nichol A , Achiam J , Schulman J . On First-Order Meta-Learning Algorithms[J]. 2018. ↩︎