论文阅读:Competitive Physics Informed Networks
Competitive Physics Informed Networks
问题分析
一个PDE问题可以表示为如下形式:
A
[
u
]
=
f
,
i
n
Ω
u
=
g
,
o
n
∂
Ω
,
\begin{aligned} \mathcal{A}[u]&=f,\mathrm{~in~}\Omega\\ u&=g,\mathrm{~on~}\partial\Omega, \end{aligned}
A[u]u=f, in Ω=g, on ∂Ω,
在有限元方法中,通常会考虑基函数集
{
ψ
i
}
1
≤
i
≤
dim
(
π
)
\left\{\psi_i\right\}_{1\leq i\leq\dim(\boldsymbol{\pi})}
{ψi}1≤i≤dim(π) ,通过定义
A
∈
R
N
Ω
×
dim
(
π
)
A\in\mathbb{R}^{N_{\Omega}\times\dim(\boldsymbol{\pi})}
A∈RNΩ×dim(π) 以及
f
∈
R
N
Ω
f\in\mathbb{R}^{N_{\Omega}}
f∈RNΩ 可以将上述PDE问题进行如下离散:
A
i
j
:
=
A
[
ψ
j
]
(
x
i
)
,
f
i
:
=
f
(
x
i
)
A_{ij}:=\mathcal{A}[\psi_j](x_i),\quad f_i:=f(x_i)
Aij:=A[ψj](xi),fi:=f(xi)
得到离散PDE如下:
A
π
=
f
.
\boldsymbol{A}\boldsymbol{\pi}= \boldsymbol{f}.
Aπ=f.
考虑一个同样由这组基函数构成的神经网络,表示如下:
P
(
x
)
=
∑
i
=
1
d
i
m
(
π
)
π
i
ψ
i
(
x
)
\mathcal{P}(x)=\sum_{i=1}^{\mathrm{dim}(\boldsymbol{\pi})}\pi_i\psi_i(x)
P(x)=i=1∑dim(π)πiψi(x)
PINN就是通过将上述等式转换为最小二乘问题,来对PDE的解进行近似:
min
π
∥
A
π
−
f
∥
2
,
\min_{\boldsymbol{\pi}}\|\boldsymbol{A\pi-f}\|^2,
πmin∥Aπ−f∥2,
其解为
π
=
(
A
⊤
A
)
−
1
A
⊤
f
\boldsymbol{\pi=(A^\top A)^{-1}A^\top f}
π=(A⊤A)−1A⊤f。 由于矩阵
(
A
⊤
A
)
(\boldsymbol{A}^\top\boldsymbol{A})
(A⊤A) 为对称正定矩阵,因此可以使用共轭梯度法等专用的算法来解决;但当矩阵
A
\boldsymbol{A}
A 为病态矩阵时,
κ
(
A
⊤
A
)
=
κ
(
A
)
2
\kappa(\boldsymbol{A}^\top\boldsymbol{A})=\kappa(\boldsymbol{A})^2
κ(A⊤A)=κ(A)2 会导致迭代求解收敛缓慢。由于微分算子是无界的,因此它们的离散化更容易导致病态的线性系统。
解决方法
作者想将上述离散PDE转化为如下鞍点问题:
min
π
max
δ
δ
⊤
(
A
π
−
f
)
\min_{\boldsymbol{\boldsymbol{\pi}}}\max_{\boldsymbol{\delta}}\boldsymbol{\delta}^\top(\boldsymbol{A}\pi-\boldsymbol{f})
πminδmaxδ⊤(Aπ−f)
这个方程的解和原方程的解是一致的
[
0
A
⊤
A
0
]
[
π
δ
]
=
[
0
f
]
,
w
i
t
h
κ
(
[
0
A
⊤
A
0
]
)
=
κ
(
A
)
.
\begin{bmatrix} \boldsymbol{0}&\boldsymbol{A}^\top\\ \boldsymbol{A}&\boldsymbol{0} \end{bmatrix} \begin{bmatrix} \boldsymbol{\pi}\\ \boldsymbol{\delta} \end{bmatrix} =\begin{bmatrix} \boldsymbol{0}\\ \boldsymbol{f} \end{bmatrix}, \quad\mathrm{~with~}\quad\kappa\left( \begin{bmatrix} \boldsymbol{0}&\boldsymbol{A}^\top\\ \boldsymbol{A}&\boldsymbol{0} \end{bmatrix} \right)=\kappa(\boldsymbol{A}).
[0AA⊤0][πδ]=[0f], with κ([0AA⊤0])=κ(A).
具体而言,作者引入了一个判别器
D
\mathcal{D}
D ,其输入为
x
∈
R
d
x \in \mathbb{R}^d
x∈Rd ,输出为
D
Ω
(
x
)
\mathcal{D}_\Omega(x)
DΩ(x) 以及
D
∂
Ω
(
x
)
\mathcal{D}_{\partial\Omega}(x)
D∂Ω(x) 。
P
\mathcal{P}
P 和
D
\mathcal{D}
D 进行零和博弈,其中
P
\mathcal{P}
P 学习求解偏微分方程,
D
\mathcal{D}
D 学习预测
P
\mathcal{P}
P 的误差。该博弈可以被定义为如下极小极大问题:
max
D
min
P
L
Ω
C
P
I
N
N
(
P
,
D
,
x
)
+
L
∂
Ω
C
P
I
N
N
(
P
,
D
,
x
‾
)
\max_{\mathcal{D}}\min_{\mathcal{P}}\mathcal{L}_{\Omega}^{\mathbf{CPINN}}(\mathcal{P},\mathcal{D},x)+\mathcal{L}_{\partial\Omega}^{\mathbf{CPINN}}(\mathcal{P},\mathcal{D},\overline{x})
DmaxPminLΩCPINN(P,D,x)+L∂ΩCPINN(P,D,x)
其中:
L
Ω
C
P
I
N
N
(
D
,
P
,
x
)
=
1
N
Ω
∑
i
=
1
N
Ω
D
Ω
(
x
i
)
(
A
[
P
]
(
x
i
)
−
f
(
x
i
)
)
,
L
∂
Ω
C
P
I
N
N
(
D
,
P
,
x
‾
)
=
1
N
∂
Ω
∑
i
=
1
N
∂
Ω
D
∂
Ω
(
x
‾
i
)
(
P
(
x
‾
i
)
−
g
(
x
‾
i
)
)
.
\begin{gathered} \mathcal{L}_{\Omega}^{\mathbf{CPINN}}(\mathcal{D},\mathcal{P},\boldsymbol{x}) =\frac1{N_\Omega}\sum_{i=1}^{N_\Omega}\mathcal{D}_\Omega(x_i)\left(\mathcal{A}[\mathcal{P}](x_i)-f(x_i)\right), \\ \mathcal{L}_{\partial\Omega}^{\mathbf{CPINN}}(\mathcal{D},\mathcal{P},\overline{\boldsymbol{x}}) =\frac1{N_{\partial\Omega}}\sum_{i=1}^{N_{\partial\Omega}}\mathcal{D}_{\partial\Omega}(\overline{x}_i)\left(\mathcal{P}\left(\overline{x}_i\right)-g\left(\overline{x}_i\right)\right). \end{gathered}
LΩCPINN(D,P,x)=NΩ1i=1∑NΩDΩ(xi)(A[P](xi)−f(xi)),L∂ΩCPINN(D,P,x)=N∂Ω1i=1∑N∂ΩD∂Ω(xi)(P(xi)−g(xi)).
上述博弈的纳什均衡为
P
≡
u
\mathcal{P} \equiv u
P≡u 且
D
≡
0
\mathcal{D} \equiv 0
D≡0。因此,计算此类零和博弈中纳什均衡的迭代算法可用于近似求解 PDE。在本文中,
P
\mathcal{P}
P 和
D
\mathcal{D}
D 是分别具有双曲正切和 ReLU 激活函数的全连接网络。每个网络的层数和神经元数量取决于 PDE 问题,优化器选择为ACGD。
实验结果
作者在二维Poisson方程、 非线性Schrödinger方程, 带粘滞项的Burgers’ 方程以及Allen-Cahn方程上进行了试验,并对PINN + Adam以及CPINN + ACGD的组合进行了对比。
同时,由于ACGD 使用 GMRES (Saad & Schultz, 1986) 和通过自动微分获得的 Hessian 向量积来求解 CGD 的更新。因此,(A)CGD 的迭代比 Adam 的迭代要昂贵得多。为了公平地考虑这种差异,作者还提供了两种方法所需的通过神经网络的前向传递次数。
Poisson
Δ u ( x , y ) = − 2 sin ( x ) cos ( y ) , x , y ∈ [ − 2 , 2 ] \Delta u(x,y)=-2\sin(x)\cos(y),\quad x,y\in[-2,2] Δu(x,y)=−2sin(x)cos(y),x,y∈[−2,2]
施加如下狄利克雷边界条件:
u
(
x
,
−
2
)
=
sin
(
x
)
cos
(
−
2
)
,
u
(
−
2
,
y
)
=
sin
(
−
2
)
cos
(
y
)
,
u
(
x
,
2
)
=
sin
(
x
)
cos
(
2
)
,
u
(
2
,
y
)
=
sin
(
2
)
cos
(
y
)
.
\begin{aligned}u(x,-2)&=\sin(x)\cos(-2),\quad&u(-2,y)&=\sin(-2)\cos(y),\\u(x,\quad2)&=\sin(x)\cos(\quad2),\quad&u(\quad2,y)&=\sin(\quad2)\cos(y).\end{aligned}
u(x,−2)u(x,2)=sin(x)cos(−2),=sin(x)cos(2),u(−2,y)u(2,y)=sin(−2)cos(y),=sin(2)cos(y).
其精确解为:
u
(
x
,
y
)
=
sin
(
x
)
cos
(
y
)
.
u(x,y)=\sin(x)\cos(y).
u(x,y)=sin(x)cos(y).
Schrödinger
u t + 1 2 u x x + ∣ u ∣ 2 u = 0 , x ∈ [ − 5 , 5 ] , t ∈ [ 0 , π / 2 ] u_t+\frac12u_{xx}+|u|^2u=0,\quad x\in[-5,5],\quad t\in[0,\pi/2] ut+21uxx+∣u∣2u=0,x∈[−5,5],t∈[0,π/2]
施加如下初始/边界条件:
u
(
0
,
x
)
=
2
sech
(
x
)
,
u
(
t
,
−
5
)
=
u
(
t
,
5
)
,
u
x
(
t
,
−
5
)
=
u
x
(
t
,
5
)
u(0,x)=2\operatorname{sech}(x),\quad u(t,-5)=u(t,5),\quad u_x(t,-5)=u_x(t,5)
u(0,x)=2sech(x),u(t,−5)=u(t,5),ux(t,−5)=ux(t,5)
Burgers’
u t + u u x − ( 0.01 / π ) u x x = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 0 ] u_t+uu_x-(0.01/\pi)u_{xx}=0,\quad x\in[-1,1],\quad t\in[0,0] ut+uux−(0.01/π)uxx=0,x∈[−1,1],t∈[0,0]
施加如下初始/边界条件:
u
(
0
,
x
)
=
−
sin
(
π
x
)
,
u
(
t
,
−
1
)
=
u
(
t
,
1
)
=
0
u(0,x)=-\sin(\pi x),\quad u(t,-1)=u(t,1)=0
u(0,x)=−sin(πx),u(t,−1)=u(t,1)=0
Allen-Cahn
u t − 0.0001 u x x + 5 u 3 − 5 u = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 1 ] u_t-0.0001u_{xx}+5u^3-5u=0,\quad x\in[-1,1],\quad t\in[0,1] ut−0.0001uxx+5u3−5u=0,x∈[−1,1],t∈[0,1]
施加如下初始/边界条件:
u
(
0
,
x
)
=
x
2
cos
(
π
x
)
,
u
(
t
,
−
1
)
=
u
(
t
,
1
)
,
u
x
(
t
,
−
1
)
=
u
x
(
t
,
1
)
u(0,x)=x^2\cos(\pi x),\quad u(t,-1)=u(t,1),\quad u_x(t,-1)=u_x(t,1)
u(0,x)=x2cos(πx),u(t,−1)=u(t,1),ux(t,−1)=ux(t,1)
算法和优化器排列组合
总结
这篇文章利用传统的有限元方法对PDE进行了分析,并认为平方损失在面对病态问题时会抑制迭代求解器的收敛性。于是作者通过将原问题转换为鞍点问题,构造了一个在纳什均衡点处与原问题等价的博弈情境,并利用ACGD来进行优化。
单从发布时间上看,这篇文章似乎比Is L 2 L^2 L2 Physics-Informed Loss Always Suitable for Training Physics-Informed Neural Network更早意识到平方损失所带来的问题,但个人感觉理论方面的证明有所欠缺,比如纳什均衡点的证明、 A \boldsymbol{A} A 为病态矩阵时的具体分析等。
同时,如果(A)CGD 的迭代比 Adam 的迭代要昂贵得多,那么,直接使用训练时间来衡量其表现不是一个更直接的方法吗?为什么要使用前向传播次数来对比其开销呢?因为原文代码使用了老版本的torch,无法在30系以上显卡安装,因此我还没有跑原文代码,后面打算在服务器上跑一下试试,看看二者的时间开销如何。
相关链接: