论文阅读:A Method for Representing Periodic Functions and Enforcing Exactly Periodic Boundary Conditions with Deep Neural Networks
A Method for Representing Periodic Functions and Enforcing Exactly Periodic Boundary Conditions with Deep Neural Networks
周期性边界条件
周期性边界条件广泛存在于各个领域的计算科学中,特别是当物理域沿一个或多个方向无限或均匀时,数值模拟中通常只计算一个单元,并对单元边界施加周期性边界条件。对于经典数值方法,解决此类问题的另一种常用技术是用傅里叶展开式来表达未知场函数,从而产生所谓的傅里叶谱或伪谱方法 。虽然两者都被称为周期性条件,但当使用和不使用傅里叶展开时,数值方法所施加的周期性要求是不同的。通过使用傅立叶展开,该方法寻求平滑的周期函数作为控制方程的解,该函数自动满足解值及其在单元边界上的所有导数(无限阶)的周期性。另一方面,当该方法中不使用傅立叶展开时,需要在单元边界上显式地施加周期性,并且这只能对解值及其导数施加到某个有限阶。对于这两种类型的周期性边界条件,可以将前者称为 C ∞ C^\infty C∞ 周期条件,后者称为 C k C^k Ck 周期条件,其中 k > 0 k \gt 0 k>0 表示周期条件施加的最高导数。它们可以严格定义如下:
考虑一个定义在实轴上,以
L
L
L 为周期的平滑周期函数
f
(
x
)
f(x)
f(x)
f
(
x
+
L
)
=
f
(
x
)
,
∀
x
∈
(
−
∞
,
∞
)
.
f(x+L)=f(x),\quad\forall x\in(-\infty,\infty).
f(x+L)=f(x),∀x∈(−∞,∞).
可以将
f
(
x
)
f (x)
f(x) 限制为有限区间
[
a
,
b
]
[a, b]
[a,b],其中
b
−
a
=
L
b − a = L
b−a=L。则
f
f
f 在边界上满足以下关系:
f
(
a
)
=
f
(
b
)
,
f
′
(
a
)
=
f
′
(
b
)
,
f
′
′
(
a
)
=
f
′
′
(
b
)
,
…
,
f
(
m
)
(
a
)
=
f
(
m
)
(
b
)
,
…
f(a)=f(b),\quad f'(a)=f'(b),\quad f''(a)=f''(b),\quad\ldots,\quad f^{(m)}(a)=f^{(m)}(b),\quad\ldots
f(a)=f(b),f′(a)=f′(b),f′′(a)=f′′(b),…,f(m)(a)=f(m)(b),…
上述条件可以被称为 C ∞ C^\infty C∞周期条件,满足这些条件的平滑函数 f ( x ) f (x) f(x) 称为 [ a , b ] [a, b] [a,b] 上的 C ∞ C^\infty C∞ 周期函数,或简称为周期函数。
实际上,这个函数可能并不平滑,并且上述条件可能仅需要达到有限阶
k
(
k
>
0
)
k (k > 0)
k(k>0) 的导数,即
f
(
l
)
(
a
)
=
f
(
l
)
(
b
)
,
0
⩽
l
⩽
k
f^{(l)}(a)=f^{(l)}(b),\quad0\leqslant l\leqslant k
f(l)(a)=f(l)(b),0⩽l⩽k
上述
(
k
+
1
)
(k+1)
(k+1)个条件可以被称为
C
k
C^k
Ck周期条件,将满足上述条件的函数
f
(
x
)
f (x)
f(x) 称为
[
a
,
b
]
[a, b]
[a,b] 上的
C
k
C^k
Ck 周期函数。
精确 C ∞ C^\infty C∞ 周期条件
定理2.1 假设
v
(
x
)
v(x)
v(x) 是一个在实轴上光滑并且周期为
L
L
L 的周期函数,即,对于所有的
x
∈
(
−
∞
,
∞
)
x \in (-\infty, \infty)
x∈(−∞,∞) ,
v
(
x
+
L
)
=
v
(
x
)
v(x+L)=v(x)
v(x+L)=v(x)。同时,
f
(
x
)
f(x)
f(x) 为任意平滑函数。可以定义
u
(
x
)
=
f
(
v
)
=
f
(
v
(
x
)
)
u(x)=f(v)=f(v(x))
u(x)=f(v)=f(v(x)) 于是,
KaTeX parse error: Expected 'EOF', got '&' at position 15: u(x+L)=u(x), &̲ \forall x \in …
其中,
a
,
b
a,b
a,b 为两个实数,且
b
−
a
=
L
b-a=L
b−a=L.
作者希望利用 DNN 来表示具有指定周期 L 的任意平滑周期函数,从而自动满足
C
∞
C^\infty
C∞ 周期条件。考虑如下正弦函数:
p
(
x
)
=
A
cos
(
ω
x
+
ϕ
)
+
c
,
with
ω
=
2
π
L
p(x)=A\cos(\omega x+\phi)+c,\quad\text{with}~\omega=\frac{2\pi}L
p(x)=Acos(ωx+ϕ)+c,with ω=L2π
其中常数
A
,
c
A,c
A,c和
ϕ
\phi
ϕ 是可训练参数。而
ω
\omega
ω 是上面给出的固定常数,以确保
p
(
x
)
p(x)
p(x) 具有周期
L
L
L。令
σ
(
⋅
)
\sigma(·)
σ(⋅) 表示非线性激活函数(例如“tanh”或“sigmoid”)。可以定义
v
(
x
)
=
σ
(
p
(
x
)
)
=
σ
(
A
cos
(
ω
x
+
ϕ
)
+
c
)
v(x)=\sigma(p(x))=\sigma(A\cos(\omega x+\phi)+c)
v(x)=σ(p(x))=σ(Acos(ωx+ϕ)+c)
非线性函数
σ
(
⋅
)
\sigma(·)
σ(⋅) 将在输出中生成高频分量。因此,虽然
p
(
x
)
p(x)
p(x) 具有单一频率
ω
\omega
ω,但
v
(
x
)
v(x)
v(x) 不仅包含频率
ω
\omega
ω,还包含具有其他频率和更高频率的分量,所有这些分量都具有公共周期
L
L
L。最后,考虑如下通过DNN表示的任意函数
f
(
x
)
f (x)
f(x):
u
(
x
)
=
f
d
n
n
(
v
(
x
)
)
u(x)=f_{\mathrm{dnn}}(v(x))
u(x)=fdnn(v(x))
其中
f
d
n
n
f_{dnn}
fdnn 表示由 DNN 表示的任意函数。由定理2.1可知,该
u
(
x
)
u(x)
u(x) 完全满足
C
∞
C^\infty
C∞ 周期条件。
在实践中,通常会将 DNN 表示的任意函数 f d n n ( ⋅ ) f_{dnn}(·) fdnn(⋅) 与上面定义的一组具有可调参数的独立周期函数 v ( x ) v(x) v(x) 组合起来。这导致了层内具有多个神经元的周期性层的想法。作者在当前的工作中考虑前馈深度神经网络架构。
上图用草图说明了当前 DNN 的想法。令 x x x 表示网络的输入层, u ( x ) u(x) u(x) 表示网络的输出层。可以使用第二层(输入 x x x 后面)来实现一组独立的已知周期函数( v ( x ) v(x) v(x) 的副本),其周期为 L L L 且参数可调,使得网络的输出 u ( x ) u(x) u(x) 完全满足 C ∞ C^\infty C∞ 周期性条件 。可以将这样的层称为 C ∞ C^\infty C∞ 周期层,或者简称为周期层。
C
∞
C^\infty
C∞ 周期层内的操作定义如下:令
L
p
(
m
,
n
)
\mathcal{L}_p(m,n)
Lp(m,n) 表示
C
∞
C^\infty
C∞ 周期层,其中
n
n
n 表示该层输出中的节点数,
m
m
m 表示独立周期函数集
v
(
x
)
v(x)
v(x) 的大小。这里
m
m
m 和
n
n
n 都是
C
∞
C^\infty
C∞周期层
L
p
(
m
,
n
)
\mathcal{L}_p(m,n)
Lp(m,n) 的超参数。
L
p
(
m
,
n
)
\mathcal{L}_p(m,n)
Lp(m,n) 内的运算定义为:
v
i
(
x
)
=
σ
(
A
i
cos
(
ω
x
+
ϕ
i
)
+
c
i
)
,
1
⩽
i
⩽
m
;
q
j
(
x
)
=
σ
(
∑
i
=
1
m
v
i
(
x
)
W
i
j
+
B
j
)
,
1
⩽
j
⩽
n
.
\begin{aligned}&v_i(x)=\sigma(A_i\cos(\omega x+\phi_i)+c_i),\quad1\leqslant i\leqslant m;\\&q_j(x)=\sigma\left(\sum_{i=1}^mv_i(x)W_{ij}+B_j\right),\quad1\leqslant j\leqslant n.\end{aligned}
vi(x)=σ(Aicos(ωx+ϕi)+ci),1⩽i⩽m;qj(x)=σ(i=1∑mvi(x)Wij+Bj),1⩽j⩽n.
上述方法同样可以被扩展至更高维度,以二维为例,假设
(
x
1
,
x
2
)
(x_1,x_2)
(x1,x2) 表示二维坐标,
u
(
x
1
,
x
2
)
u(x_1,x_2)
u(x1,x2) 表示要表示的平滑周期函数,其周期如下:
u
(
x
1
+
L
1
,
x
2
)
=
u
(
x
1
,
x
2
)
,
u
(
x
1
,
x
2
+
L
2
)
=
u
(
x
1
,
x
2
)
,
∀
x
1
,
x
2
∈
(
−
∞
,
∞
)
,
u(x_1+L_1,x_2)=u(x_1,x_2),\quad u(x_1,x_2+L_2)=u(x_1,x_2),\quad\forall x_1,x_2\in(-\infty,\infty),
u(x1+L1,x2)=u(x1,x2),u(x1,x2+L2)=u(x1,x2),∀x1,x2∈(−∞,∞),
其中,
L
1
,
L
2
L_1,L_2
L1,L2 分别表示在
x
1
,
x
2
x_1,x_2
x1,x2 方向上的周期。同样,可以利用单个周期单元
[
a
1
,
b
1
]
×
[
a
2
,
b
2
]
[a_1,b_1] \times [a_2,b_2]
[a1,b1]×[a2,b2] 来写出周期条件如下:
{
∂
α
∂
x
1
α
u
(
a
1
,
x
2
)
=
∂
α
∂
x
1
α
u
(
b
1
,
x
2
)
,
∀
x
2
∈
[
a
2
,
b
2
]
,
∂
α
∂
x
2
α
u
(
x
1
,
a
2
)
=
∂
α
∂
x
2
α
u
(
x
1
,
b
2
)
,
∀
x
1
∈
[
a
1
,
b
1
]
,
α
=
0
,
1
,
2
,
…
\left\{\begin{aligned}\frac{\partial^\alpha}{\partial x_1^\alpha}u(a_1,x_2)&=\frac{\partial^\alpha}{\partial x_1^\alpha}u(b_1,x_2),\quad\forall x_2\in[a_2,b_2],\\\frac{\partial^\alpha}{\partial x_2^\alpha}u(x_1,a_2)&=\frac{\partial^\alpha}{\partial x_2^\alpha}u(x_1,b_2),\quad\forall x_1\in[a_1,b_1],\quad\alpha=0,1,2,\ldots\end{aligned}\right.
⎩
⎨
⎧∂x1α∂αu(a1,x2)∂x2α∂αu(x1,a2)=∂x1α∂αu(b1,x2),∀x2∈[a2,b2],=∂x2α∂αu(x1,b2),∀x1∈[a1,b1],α=0,1,2,…
其中 $a_1、b_1、a_2 $和
b
2
b_2
b2 是给定的常数,满足
b
1
−
a
1
=
L
1
b_1 − a_1 = L_1
b1−a1=L1 和
b
2
−
a
2
=
L
2
b_2 − a_2 = L_2
b2−a2=L2。此时,可以通过以下操作定义 2D 周期层
L
p
2
D
(
m
,
n
)
\mathcal{L}^{2D}_p(m,n)
Lp2D(m,n):
v
1
i
(
x
1
)
=
σ
(
A
1
i
cos
(
ω
1
x
1
+
ϕ
1
i
)
+
c
1
i
)
,
1
⩽
i
⩽
m
;
v
2
i
(
x
2
)
=
σ
(
A
2
i
cos
(
ω
2
x
2
+
ϕ
2
i
)
+
c
2
i
)
,
1
⩽
i
⩽
m
;
q
j
(
x
1
,
x
2
)
=
σ
(
∑
i
=
1
m
v
1
i
(
x
1
)
W
i
j
(
1
)
+
∑
i
=
1
m
v
2
i
(
x
2
)
W
i
j
(
2
)
+
B
j
)
,
1
⩽
j
⩽
n
.
\begin{aligned} &v_{1i}(x_{1})=\sigma\left(A_{1i}\cos(\omega_{1}x_{1}+\phi_{1i})+c_{1i}\right),\quad1\leqslant i\leqslant m; \\ &\begin{aligned}v_{2i}(x_2)=\sigma\left(A_{2i}\cos(\omega_2x_2+\phi_{2i})+c_{2i}\right),\quad1\leqslant i\leqslant m;\end{aligned} \\ &q_{j}(x_{1},x_{2})=\sigma\left(\sum_{i=1}^{m}v_{1i}(x_{1})W_{ij}^{(1)}+\sum_{i=1}^{m}v_{2i}(x_{2})W_{ij}^{(2)}+B_{j}\right),\quad1\leqslant j\leqslant n. \end{aligned}
v1i(x1)=σ(A1icos(ω1x1+ϕ1i)+c1i),1⩽i⩽m;v2i(x2)=σ(A2icos(ω2x2+ϕ2i)+c2i),1⩽i⩽m;qj(x1,x2)=σ(i=1∑mv1i(x1)Wij(1)+i=1∑mv2i(x2)Wij(2)+Bj),1⩽j⩽n.
其中,
m
m
m 和
n
n
n 是
L
p
2
D
\mathcal{L}^{2D}_p
Lp2D 层的超参数,
q
j
(
x
1
,
x
2
)
(
1
≤
j
≤
n
)
q_j(x_1, x_2) (1 \le j \le n)
qj(x1,x2)(1≤j≤n)表示该层的输出,常数
ω
1
\omega_1
ω1和
ω
2
\omega_2
ω2 定义为
ω
1
=
2
π
L
1
,
ω
2
=
2
π
L
2
\omega_1=\frac{2\pi}{L_1},\quad\omega_2=\frac{2\pi}{L_2}
ω1=L12π,ω2=L22π
通过将任意 DNN 表示的函数与上述定义的 2D
C
∞
C^\infty
C∞ 周期层组合起来,就获得了一个整体 DNN,其输出自动且精确地满足 2D
C
∞
C^\infty
C∞ 周期条件。三个及更高维度的
C
∞
C^\infty
C∞ 周期层可以用类似的方式定义。
精确 C k C^k Ck 周期条件
定理2.2 假设
v
(
x
)
(
x
∈
[
a
,
b
]
)
v(x)(x \in [a,b])
v(x)(x∈[a,b]) 表示具有高达
k
k
k 阶的连续导数并满足以下属性的给定函数,
v
(
l
)
(
a
)
=
v
(
l
)
(
b
)
,
0
⩽
l
⩽
k
v^{(l)}(a)=v^{(l)}(b),\quad0\leqslant l\leqslant k
v(l)(a)=v(l)(b),0⩽l⩽k
假设
f
(
x
)
f (x)
f(x) 表示在实轴上定义的任意函数,其连续导数高达
k
k
k 阶。定义
u
(
x
)
=
f
(
v
)
=
f
(
v
(
x
)
)
(
x
∈
[
a
,
b
]
)
u(x) = f (v) = f (v(x)) (x \in [a, b])
u(x)=f(v)=f(v(x))(x∈[a,b]) 于是,
u
(
l
)
(
a
)
=
u
(
l
)
(
b
)
,
0
⩽
l
⩽
k
u^{(l)}(a)=u^{(l)}(b),\quad0\leqslant l\leqslant k
u(l)(a)=u(l)(b),0⩽l⩽k
作者希望找到
[
a
,
b
]
[a, b]
[a,b] 上任意
C
k
C^k
Ck 周期函数的 DNN 表示,使得 DNN 自动满足
C
k
C^k
Ck 周期条件。为了在定理 2.2 中的
[
a
,
b
]
[a, b]
[a,b] 上构造
C
k
C^k
Ck 周期函数
v
(
x
)
v(x)
v(x),作者把目光转向了 Hermite 插值条件。因此可以使用次数最多为
(
2
k
+
1
)
(2k + 1)
(2k+1)的Hermite插值多项式来构造
v
(
x
)
v(x)
v(x) 。
{
h
(
a
)
=
s
0
,
h
(
b
)
=
s
0
;
h
′
(
a
)
=
s
1
,
h
′
(
b
)
=
s
1
;
⋯
h
(
k
)
(
a
)
=
s
k
,
h
(
k
)
(
b
)
=
s
k
.
\begin{cases}h(a)=s_0,\quad h(b)=s_0;\\h^{\prime}(a)=s_1,\quad h^{\prime}(b)=s_1;\\\cdots\\h^{(k)}(a)=s_k,\quad h^{(k)}(b)=s_k.&\end{cases}
⎩
⎨
⎧h(a)=s0,h(b)=s0;h′(a)=s1,h′(b)=s1;⋯h(k)(a)=sk,h(k)(b)=sk.
于是,可以定义如下:
{
p
(
x
)
=
h
(
x
)
+
(
r
0
+
r
1
x
)
(
x
−
a
)
k
+
1
(
x
−
b
)
k
+
1
,
v
(
x
)
=
σ
(
p
(
x
)
)
=
σ
(
h
(
x
)
+
(
r
0
+
r
1
x
)
(
x
−
a
)
k
+
1
(
x
−
b
)
k
+
1
)
,
\begin{cases}p(x)=h(x)+(r_0+r_1x)(x-a)^{k+1}(x-b)^{k+1},\\v(x)=\sigma(p(x))=\sigma\left(h(x)+(r_0+r_1x)(x-a)^{k+1}(x-b)^{k+1}\right),\end{cases}
{p(x)=h(x)+(r0+r1x)(x−a)k+1(x−b)k+1,v(x)=σ(p(x))=σ(h(x)+(r0+r1x)(x−a)k+1(x−b)k+1),
其中
r
0
r_0
r0 和
r
1
r_1
r1 是两个额外的可调参数,
σ
(
⋅
)
\sigma(·)
σ(⋅) 是非线性激活函数(例如“tanh”或“sigmoid”)。 上式中对应于
k
=
0
、
1
k = 0、1
k=0、1 和
2
2
2 的
p
(
x
)
p(x)
p(x) 的显式形式由下式给出:
p
(
x
)
=
s
0
+
(
r
0
+
r
1
x
)
(
x
−
a
)
(
x
−
b
)
,
for
k
=
0
;
p
(
x
)
=
s
0
+
s
1
(
x
−
a
)
(
b
−
x
)
(
a
+
b
−
2
x
)
+
(
r
0
+
r
1
x
)
(
x
−
a
)
2
(
x
−
b
)
2
,
f
o
r
k
=
1
;
p
(
x
)
=
ξ
3
(
x
−
a
)
3
[
s
0
+
(
−
3
s
0
ξ
+
s
1
)
(
x
−
b
)
+
(
6
s
0
ξ
2
−
3
s
1
ξ
+
s
2
2
)
(
x
−
b
)
2
]
+
ξ
3
(
b
−
x
)
3
[
s
0
+
(
3
s
0
ξ
+
s
1
)
(
x
−
a
)
+
(
6
s
0
ξ
2
+
3
s
1
ξ
+
s
2
2
)
(
x
−
a
)
2
]
+
(
r
0
+
r
1
x
)
(
x
−
a
)
3
(
x
−
b
)
3
,
f
o
r
k
=
2
,
\begin{aligned} p(x) &=s_0+(r_0+r_1x)(x-a)(x-b),\quad\text{ for }k=0; \\ p(x) &=s_0+s_1(x-a)(b-x)(a+b-2x)+(r_0+r_1x)(x-a)^2(x-b)^2,\quad\mathrm{~for~}k=1; \\ p(x) &=\xi^3(x-a)^3\left[s_0+(-3s_0\xi+s_1)(x-b)+\left(6s_0\xi^2-3s_1\xi+\frac{s_2}2\right)(x-b)^2\right] \\ &+\xi^3(b-x)^3\left[s_0+(3s_0\xi+s_1)(x-a)+\left(6s_0\xi^2+3s_1\xi+\frac{s_2}2\right)(x-a)^2\right] \\ &+(r_0+r_1x)(x-a)^3(x-b)^3,\quad\mathrm{~for~}k=2, \end{aligned}
p(x)p(x)p(x)=s0+(r0+r1x)(x−a)(x−b), for k=0;=s0+s1(x−a)(b−x)(a+b−2x)+(r0+r1x)(x−a)2(x−b)2, for k=1;=ξ3(x−a)3[s0+(−3s0ξ+s1)(x−b)+(6s0ξ2−3s1ξ+2s2)(x−b)2]+ξ3(b−x)3[s0+(3s0ξ+s1)(x−a)+(6s0ξ2+3s1ξ+2s2)(x−a)2]+(r0+r1x)(x−a)3(x−b)3, for k=2,
其中
ξ
=
1
b
−
a
\xi=\frac1{b-a}
ξ=b−a1 。令
f
d
n
n
(
x
)
f_{dnn}(x)
fdnn(x) 表示由深度神经网络表示的任意函数。根据定义的
v
(
x
)
v(x)
v(x),可以定义:
u
(
x
)
=
f
d
n
n
(
v
(
x
)
)
u(x)=f_{\mathrm{dnn}}(v(x))
u(x)=fdnn(v(x))
此时根据定理 2.2
u
(
x
)
u(x)
u(x) 恰好满足
C
k
C^k
Ck 周期条件。
同样,可以定义
C
k
C^k
Ck 周期层内的操作定义如下。令
L
C
k
(
m
,
n
)
\mathcal{L}_{C^k}(m,n)
LCk(m,n) 表示
C
k
C^k
Ck 周期层,其中
n
n
n 表示该层输出中的节点数,
m
m
m 表示单个
C
k
C^k
Ck 周期函数
v
(
x
)
v(x)
v(x) 集合的大小。
m
m
m 和
n
n
n 都是该层的超参数。给定输入
x
x
x,可以通过以下方式计算
C
k
C^k
Ck 周期层
L
C
k
(
m
,
n
)
\mathcal{L}_{C^k}(m,n)
LCk(m,n) 的输出
q
j
(
x
1
,
x
2
)
(
1
≤
j
≤
n
)
q_j(x_1, x_2) (1 \le j \le n)
qj(x1,x2)(1≤j≤n):
v
i
(
x
)
=
σ
(
h
i
(
x
)
+
(
r
0
i
+
r
1
i
x
)
(
x
−
a
)
k
+
1
(
x
−
b
)
k
+
1
)
,
1
⩽
i
⩽
m
;
q
j
(
x
)
=
σ
(
∑
i
=
1
m
v
i
(
x
)
W
i
j
+
B
j
)
,
1
⩽
j
⩽
n
.
\begin{aligned} &v_{i}(x) =\sigma\left(h_i(x)+(r_{0i}+r_{1i}x)(x-a)^{k+1}(x-b)^{k+1}\right),\quad1\leqslant i\leqslant m; \\ &q_{j}(x) =\sigma\left(\sum_{i=1}^mv_i(x)W_{ij}+B_j\right),\quad1\leqslant j\leqslant n. \end{aligned}
vi(x)=σ(hi(x)+(r0i+r1ix)(x−a)k+1(x−b)k+1),1⩽i⩽m;qj(x)=σ(i=1∑mvi(x)Wij+Bj),1⩽j⩽n.
实验结果
作者在周期函数、Helmholtz equation、 unsteady diffusion equation and the wave equation上进行了试验
周期函数
C ∞ C^\infty C∞ 函数
u 1 ( x ) = sin ( 2 π x + 0.25 π ) + cos ( 9 π x − 0.1 π ) − 2 sin ( 7 π x + 0.33 π ) \begin{aligned}u_1(x)=\sin(2\pi x+0.25\pi)+\cos(9\pi x-0.1\pi)-2\sin(7\pi x+0.33\pi)\end{aligned} u1(x)=sin(2πx+0.25π)+cos(9πx−0.1π)−2sin(7πx+0.33π)
在域 Ω = { x ∣ 0 ⩽ x ⩽ 2 } \Omega=\{x|0\leqslant x \leqslant 2 \} Ω={x∣0⩽x⩽2} 上是 C ∞ C^\infty C∞ 周期函数。作者使用 C ∞ C^\infty C∞ 周期 DNN 以及 k = 0 k = 0 k=0 和 k = 1 k = 1 k=1 的 C k C^k Ck 周期 DNN 来近似 u 1 ( x ) u_1(x) u1(x)。
上图为训练过程中的损失下降情况,从上到下分别为 C ∞ C^\infty C∞ 、 C 0 C^0 C0 、$。
上图为训练结果(第一排)和真实值误差(第二排),从左到右分别为 C ∞ C^\infty C∞ 、 C 0 C^0 C0 、 C 1 C^1 C1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vgqdjdZB-1691159097012)(.A Method for Representing Periodic Functions and Enforcing Exactly Periodic Boundary Conditions with Deep/4.png)]
上表为训练结果在两个边界点上不同阶导数上的预测值,框中为大幅偏离真实值的预测,可以看到 C ∞ C^\infty C∞ 在各阶导数上都优于其他两个,而 C 1 C^1 C1 在一阶导数上优于 C 0 C^0 C0
C 0 C^0 C0 函数
u 2 ( x ) = sin π x 2 u_2(x)=\sin\frac{\pi x}2 u2(x)=sin2πx
在域 Ω = { x ∣ 0 ⩽ x ⩽ 2 } \Omega=\{x|0\leqslant x \leqslant 2 \} Ω={x∣0⩽x⩽2} 上是 C 0 C^0 C0 周期函数,其中, u 2 ( 0 ) = u 2 ( 2 ) u_2(0)=u_2(2) u2(0)=u2(2) 且 u 2 ′ ( 0 ) ≠ u 2 ′ ( 2 ) u_2^{\prime}(0)\neq u_2^{\prime}(2) u2′(0)=u2′(2)
上图为训练结果(第一排)和真实值误差(第二排),从左到右分别为 C ∞ C^\infty C∞ 、 C 0 C^0 C0 、 C 1 C^1 C1
上表为训练结果在两个边界点上不同阶导数上的预测值,可以看到 C 0 C^0 C0 在各阶导数上都优于其他两个(这里的框不知道是什么意思,可能是笔误?)
非周期函数
u 3 ( x ) = cos π x 2 u_3(x)=\cos\frac{\pi x}2 u3(x)=cos2πx
在域 Ω = { x ∣ 0 ⩽ x ⩽ 2 } \Omega=\{x|0\leqslant x \leqslant 2 \} Ω={x∣0⩽x⩽2} 上是非周期函数。
上图为训练结果(第一排)和真实值误差(第二排),从左到右分别为 C ∞ C^\infty C∞ 、 C 0 C^0 C0 、 C 1 C^1 C1
上表为训练结果在两个边界点上不同阶导数上的预测值,可以看到虽然误差都很大,但两个边界点处的值都十分近似,可以表明网络确实强制执行了周期性边界条件。
总结
相比直接将输入 x x x 通过三角函数映射到周期函数上,这个方法似乎只是多了一个可学习参数 ϕ \phi ϕ, 不太清楚这两者的区别。忘记是在哪看到的这篇文章了,好像是之前一篇文章的引用里,忘记为什么要看这片文章了,看来下次把文章加入待阅读列表的时候还是要备注一下的好。。。
相关链接: