Multilevel domain decomposition-based architectures for physics-informed neural networks
本文相比FBPINN更进一步,模仿传统DDM方法,通过多级域分解来实现更复杂的网络结构。感觉做法还是很好理解的,但可能是由于我对经典DDM不太熟悉,所以不太能理解作者的动机。而且这代码怎么这么抽象,看得我头疼,大概是我不熟悉jax的原因?
论文阅读:Multilevel domain decomposition-based architectures for physics-informed neural networks
Multilevel domain decomposition-based architectures for physics-informed neural networks
FBPINN
Finite Basis Physics-Informed Neural Networks (FBPINNs)提出了有限基物理信息神经网络(FBPINN),其目的是通过使用重叠域分解(DD)方法来提高 PINN 的性能。FBPINN 中不使用单个神经网络来近似微分方程的解,而是将许多较小的神经网络放置在重叠的子域中并加在一起以表示解。一方面,FBPINN 可以被视为 PINN 的基于域分解的网络架构。另一方面,通过采用这种“分而治之”的方法,全局 PINN 优化问题转化为许多较小的局部优化问题,这些问题由于子域及其全局定义的损失函数的重叠而隐式耦合。其结果表明,在求解具有高频和多尺度解的微分方程时,这显着提高了PINN的精度并降低了训练成本。
本文将通过将多级建模纳入其设计中来显着扩展 FBPINN。特别是,作者在解决方案中没有使用单域分解,而是添加了多个级别的重叠域分解。这个想法受到经典 DDM 的启发,在使用大量子域时,需要粗略的级别来实现数值可扩展性。此外,为了评估多级 FBPINN 的性能,作者定义了强和弱缩放测试,用于测量 PINN 和 FBPINN 的准确性如何随计算量和解决方案复杂性进行缩放,类似于经典 DDM 中常用的强和弱缩放测试。
FBPINN数学表示
首先,将全局解域 Ω \Omega Ω 分解为 J J J 个重叠子域 { Ω j } j = 1 J \{\Omega_{j}\}_{j=1}^{J} {Ωj}j=1J 如下图
然后,对于每个子域
Ω
j
\Omega_{j}
Ωj ,定义一个网络函数空间
V
j
=
{
v
j
(
x
,
θ
j
)
∣
x
∈
Ω
j
,
θ
j
∈
Θ
j
}
\mathcal{V}_j=\{v_j(\mathbf{x},\boldsymbol{\theta}_j)\mid\mathbf{x}\in\Omega_j,\boldsymbol{\theta}_j\in\Theta_j\}
Vj={vj(x,θj)∣x∈Ωj,θj∈Θj}
其中
v
j
(
x
,
θ
j
)
\mathfrak{v}_j(\mathbf{x},\boldsymbol{\theta}_j)
vj(x,θj) 是放置在每个子域中的神经网络,
Θ
j
=
R
K
j
\Theta_j=\mathbb{R}^{K_j}
Θj=RKj 是所有可能的网络参数的线性空间。这里,
K
j
K_j
Kj是本地网络参数的数量,由网络架构决定。
接下来,通过将每个网络与窗口函数
ω
j
(
x
)
\omega_j(x)
ωj(x) 相乘,将每个子域网络限制在其子域内,其中
s
u
p
p
(
ω
j
)
⊂
Ω
j
\mathrm{supp}(\omega_j)\subset\Omega_j
supp(ωj)⊂Ωj 。
∑
j
=
1
J
ω
j
≡
1
o
n
Ω
\sum_{j=1}^{J}\omega_j\equiv1\quad\mathrm{on~}\Omega
j=1∑Jωj≡1on Ω
给定网络函数和窗口函数的空间,预售可将
V
\mathcal{V}
V 给出的全局空间分解定义为
V
=
∑
j
=
1
J
ω
j
V
j
\mathcal{V}=\sum_{j=1}^J\omega_j\mathcal{V}_j
V=j=1∑JωjVj
这种空间分解允许将任何给定函数
u
∈
V
u\in\mathcal{V}
u∈V 分解如下
u
=
∑
j
=
1
J
ω
j
v
j
o
r
u
(
x
,
θ
)
=
∑
j
=
1
J
ω
j
v
j
(
x
,
θ
j
)
u=\sum_{j=1}^J\omega_jv_j\quad\mathrm{or}\quad u(\mathbf{x},\boldsymbol{\theta})=\sum_{j=1}^J\omega_jv_j(\mathbf{x},\boldsymbol{\theta}_j)
u=j=1∑Jωjvjoru(x,θ)=j=1∑Jωjvj(x,θj)
于是,FBPINN的损失函数如下:
L
(
θ
)
=
1
N
∑
i
=
1
N
(
N
[
C
∑
j
=
1
J
ω
j
v
j
]
(
x
i
,
θ
j
)
−
f
(
x
i
)
)
2
\mathcal{L}(\boldsymbol{\theta})=\frac1N\sum_{i=1}^N(\mathcal{N}[\mathcal{C}\sum_{j=1}^J\omega_j\mathcal{v}_j](\mathbf{x}_i,\boldsymbol{\theta}_j)-f(\mathbf{x}_i))^2
L(θ)=N1i=1∑N(N[Cj=1∑Jωjvj](xi,θj)−f(xi))2
其中,
C
\mathcal{C}
C 为强制施加的边界条件。
Multilevel FBPINNs
多级 FBPINN 定义如下。首先,定义
L
L
L 级域分解,其中每个级
l
l
l 定义
Ω
\Omega
Ω 与
J
(
l
)
J(l)
J(l) 个子域的重叠域分解,即
D
(
l
)
=
{
Ω
j
(
l
)
}
j
=
1
J
(
l
)
D^{(l)}=\left\{\Omega_j^{(l)}\right\}_{j=1}^{J^{(l)}}
D(l)={Ωj(l)}j=1J(l)
对于
j
=
1
,
…
,
J
(
l
)
j=1,\ldots,J^{(l)}
j=1,…,J(l) 。不失一般性,令
J
(
1
)
=
1
J^{(1)}=1
J(1)=1,即在第一层只有一个子域
Ω
j
(
1
)
=
Ω
\Omega_j^{(1)}=\Omega
Ωj(1)=Ω。此外,可以令
J
(
1
)
<
J
(
2
)
<
…
<
J
(
l
)
J^{(1)}<J^{(2)}<\ldots<J^{(l)}
J(1)<J(2)<…<J(l),表示子域的数量从一级增加到下一级。
接下来,可以定义每个级别的网络空间
V
j
(
l
)
=
{
v
j
(
l
)
(
x
,
θ
j
(
l
)
)
∣
x
∈
Ω
j
(
l
)
,
θ
j
(
l
)
∈
Θ
j
(
l
)
}
,
j
=
1
,
…
,
J
(
l
)
,
l
=
1
,
…
,
L
V_j^{(l)}=\left\{v_j^{(l)}(\mathbf{x},\boldsymbol{\theta}_j^{(l)})\mid\mathbf{x}\in\Omega_j^{(l)},\boldsymbol{\theta}_j^{(l)}\in\Theta_j^{(l)}\right\},\quad j=1,\ldots,J^{(l)},l=1,\ldots,L
Vj(l)={vj(l)(x,θj(l))∣x∈Ωj(l),θj(l)∈Θj(l)},j=1,…,J(l),l=1,…,L
与此同时,每一级的窗口函数可以定义如下:
s
u
p
p
(
ω
j
(
l
)
)
⊂
Ω
j
(
l
)
a
n
d
∑
j
=
1
J
(
l
)
ω
j
(
l
)
≡
1
o
n
Ω
∀
l
\mathrm{supp}(\omega_j^{(l)})\subset\Omega_j^{(l)}\quad\mathrm{and}\quad\sum_{j=1}^{J^{(l)}}\omega_j^{(l)}\equiv1\quad\mathrm{~on~}\Omega\quad\forall l
supp(ωj(l))⊂Ωj(l)andj=1∑J(l)ωj(l)≡1 on Ω∀l
于是,全局域分解可表示如下:
ν
=
1
L
∑
l
=
1
L
∑
j
=
1
J
(
l
)
ω
j
(
l
)
ν
j
(
l
)
\begin{aligned}\nu=\frac{1}{L}\sum_{l=1}^{L}\sum_{j=1}^{J^{(l)}}\omega_j^{(l)}\nu_j^{(l)}\end{aligned}
ν=L1l=1∑Lj=1∑J(l)ωj(l)νj(l)
并使用此空间分解来分解任何给定函数
u
∈
V
u\in\mathcal{V}
u∈V 如下,
u
=
1
L
∑
l
=
1
L
∑
j
=
1
J
(
l
)
ω
j
(
l
)
v
j
(
l
)
o
r
u
(
x
,
θ
)
=
1
L
∑
l
=
1
L
∑
j
=
1
J
(
l
)
ω
j
(
l
)
v
j
(
l
)
(
x
,
θ
j
(
l
)
)
u=\frac{1}{L}\sum_{l=1}^{L}\sum_{j=1}^{J^{(l)}}\omega_j^{(l)}v_j^{(l)}\quad\mathrm{or}\quad u(\mathbf{x},\boldsymbol{\theta})=\frac{1}{L}\sum_{l=1}^{L}\sum_{j=1}^{J^{(l)}}\omega_j^{(l)}v_j^{(l)}(\mathbf{x},\boldsymbol{\theta}_j^{(l)})
u=L1l=1∑Lj=1∑J(l)ωj(l)vj(l)oru(x,θ)=L1l=1∑Lj=1∑J(l)ωj(l)vj(l)(x,θj(l))
同样,其损失函数可以定义如下:
L
(
θ
)
=
1
N
∑
i
=
1
N
(
N
[
C
1
L
∑
l
=
1
L
∑
j
=
1
J
(
l
)
ω
j
(
l
)
v
j
(
l
)
]
(
x
i
,
θ
j
(
l
)
)
−
f
(
x
i
)
)
2
\mathcal{L}(\boldsymbol{\theta})=\frac1N\sum_{i=1}^N(\mathcal{N}[\mathcal{C}\frac1L\sum_{l=1}^L\sum_{j=1}^{\boldsymbol{J}^{(l)}}\omega_j^{(l)}v_j^{(l)}](\mathbf{x}_i,\boldsymbol{\theta}_j^{(l)})-f(\mathbf{x}_i))^2
L(θ)=N1i=1∑N(N[CL1l=1∑Lj=1∑J(l)ωj(l)vj(l)](xi,θj(l))−f(xi))2
示例
考虑如下拉普拉斯边值问题:
−
Δ
u
=
f
i
n
Ω
=
[
0
,
1
]
d
,
u
=
0
o
n
∂
Ω
.
\begin{array} {rl}-\Delta u=f&\mathrm{in~}\Omega=[0,1]^d,\\ u=0&\mathrm{on~}\partial\Omega. \end{array}
−Δu=fu=0in Ω=[0,1]d,on ∂Ω.
当
d
=
1
,
f
=
8
d=1,f=8
d=1,f=8 时,其精确解为
u
(
x
)
=
4
x
(
1
−
x
)
u(x)=4x(1-x)
u(x)=4x(1−x)
考虑3层FBPINN,其中
J
(
1
)
=
1
,
J
(
2
)
=
2
,
J
(
3
)
=
4
J^{(1)}=1,J^{(2)}=2,J^{(3)}=4
J(1)=1,J(2)=2,J(3)=4 其均匀域分解如下:
Ω
j
(
l
)
=
{
[
0.5
−
δ
/
2
,
0.5
+
δ
/
2
]
l
=
1
,
[
(
j
−
1
)
−
δ
/
2
J
(
l
)
−
1
,
(
j
−
1
)
+
δ
/
2
J
(
l
)
−
1
]
l
>
1
,
\Omega_j^{(l)}=\begin{cases}[0.5-\delta/2,0.5+\delta/2]&l=1,\\\left[\frac{(j-1)-\delta/2}{J^{(l)}-1},\frac{(j-1)+\delta/2}{J^{(l)}-1}\right]&l>1,\end{cases}
Ωj(l)={[0.5−δ/2,0.5+δ/2][J(l)−1(j−1)−δ/2,J(l)−1(j−1)+δ/2]l=1,l>1,
其中
δ
\delta
δ 为重叠率。子域窗函数形成每个级别的统一分区,并由下式给出
ω
j
(
l
)
=
ω
^
j
(
l
)
∑
j
=
1
J
(
l
)
ω
^
j
(
l
)
\omega_j^{(l)}=\frac{\hat{\omega}_j^{(l)}}{\sum_{j=1}^{J(l)}\hat{\omega}_j^{(l)}}
ωj(l)=∑j=1J(l)ω^j(l)ω^j(l)
其中
ω
^
j
(
l
)
(
x
)
=
{
1
l
=
1
[
1
+
cos
(
π
(
x
−
μ
j
(
l
)
)
/
σ
j
(
l
)
)
]
2
l
>
1
\hat{\omega}_j^{(l)}(x)=\begin{cases}1&l=1 \\ [1+\cos(\pi(x-\mu_j^{(l)})/\sigma_j^{(l)})]^2&l>1\end{cases}
ω^j(l)(x)={1[1+cos(π(x−μj(l))/σj(l))]2l=1l>1
μ
j
(
l
)
=
(
j
−
1
)
/
(
J
(
l
)
−
1
)
\mu_j^{(l)}=(j-1)/(J^{(l)}-1)
μj(l)=(j−1)/(J(l)−1) 与
σ
j
(
l
)
=
(
δ
/
2
)
/
(
J
(
l
)
−
1
)
\sigma_j^{(l)}=(\delta/2)/(J^{(l)}-1)
σj(l)=(δ/2)/(J(l)−1) 分别表示每个子域的中心和半宽。
结果如下:
同样考虑二维情况 f ( x 1 , x 2 ) = 32 ( x 1 ( 1 − x 1 ) + x 2 ( 1 − x 2 ) ) f(x_1,x_2)=32(x_1(1-x_1)+x_2(1-x_2)) f(x1,x2)=32(x1(1−x1)+x2(1−x2)) ,其精确解为 u ( x 1 , x 2 ) = 16 ( x 1 ( 1 − x 1 ) x 2 ( 1 − x 2 ) ) u(x_1,x_2)=16(x_1(1-x_1)x_2(1-x_2)) u(x1,x2)=16(x1(1−x1)x2(1−x2))
其域分解
J
(
1
)
=
1
×
1
=
1
,
J
(
2
)
=
2
×
2
=
4
,
J
(
3
)
=
4
×
4
=
16
J^{(1)}=1\times1=1,J^{(2)}=2\times2=4,J^{(3)}=4\times4=16
J(1)=1×1=1,J(2)=2×2=4,J(3)=4×4=16 表示如下:
ω
j
(
l
)
=
ω
^
j
(
l
)
∑
j
=
1
J
(
l
)
ω
^
j
(
l
)
,
w
h
e
r
e
ω
^
j
(
l
)
(
x
)
=
{
1
l
=
1
∏
i
d
[
1
+
cos
(
π
(
x
i
−
μ
i
j
(
l
)
)
/
σ
i
j
(
l
)
)
]
2
l
>
1
,
\omega_j^{(l)}=\frac{\hat{\omega}_j^{(l)}}{\sum_{j=1}^{J(l)}\hat{\omega}_j^{(l)}},\quad\mathrm{where}\quad\hat{\omega}_j^{(l)}(\mathbf{x})=\begin{cases}1&l=1\\\prod_i^d[1+\cos(\pi(x_i-\mu_{ij}^{(l)})/\sigma_{ij}^{(l)})]^2&l>1,\end{cases}
ωj(l)=∑j=1J(l)ω^j(l)ω^j(l),whereω^j(l)(x)={1∏id[1+cos(π(xi−μij(l))/σij(l))]2l=1l>1,
结果如下:
实验结果
作者于多尺度拉普拉斯问题和亥姆霍兹问题都进行了强尺度和弱尺度测试。通过这些实验评估了多级 FBPINN 的准确性如何随计算量和解的复杂性进行扩展,并受到经典 DD 中常用的强和弱扩展测试的启发。它们的定义如下:
强尺度:固定问题的复杂性并增加了模型容量。
弱尺度:以相同的速度增加问题的复杂性和模型容量。
其中,增加模型容量意味着增加级别数量、子域数量、子域网络的大小和使用的配置点数量。
总结
本文相比FBPINN更进一步,模仿传统DDM方法,通过多级域分解来实现更复杂的网络结构。
感觉做法还是很好理解的,但可能是由于我对经典DDM不太熟悉,所以不太能理解作者的动机。而且这代码怎么这么抽象,看得我头疼,大概是我不熟悉jax的原因?
相关链接:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)