深度算子网络DeepONet的训练新方法:两步训练法及其理论分析
深度算子网络DeepONet的训练新方法:两步训练法及其理论分析
算子网络DeepONet由两个网络构成,即trunk网络和branch网络,通常是同时训练这两个网络,这相当于是在高维空间中解决复杂的优化问题,同时,非凸和非线性的性质也使得训练非常有挑战性。为了解决这个问题,本文提出了一种新的训练方法,即两步训练方法,先训练trunk网络,再训练branch网络,通过将复杂的训练任务分解为两个子任务,降低了复杂度。
DeepONet的结构与训练
DeepONet由两个主要部分组成:trunk网络和branch网络。trunk网络负责表示输出函数的基,而branch网络则学习这些基的系数。具体来说:
trunk网络是一个L层神经网络,从输入空间映射到一个N维向量空间,其结构为:
$$
\phi: \Omega_y \subset \mathbb{R}^{d_y} \rightarrow \mathbb{R}^N
$$
其中,$\phi_0(\cdot; \mu) = (\phi_1(\cdot; \mu), \cdots, \phi_N(\cdot; \mu))$是一个L层神经网络,网络结构为$\vec{n}t = (d_y, n_1^{(t)}, \cdots, n{L_t-1}^{(t)}, N)$。branch网络是一个Lb层的向量值神经网络,结构为:
$$
c: \mathcal{X} \rightarrow \mathbb{R}^N
$$
其中,$\theta$表示网络参数,N指的是DeepONet的宽度,即每层神经元的个数。
DeepONet的输出定义为branch网络和trunk网络的内积:
其中,$\Theta = {\mu, \theta}$是DeepONet的可训练参数。
传统训练方法的挑战
在传统的训练方法中,DeepONet的训练目标是最小化以下损失函数:
$$
\mathcal{L}(\Theta) = \frac{1}{K} \sum_{k=1}^K \left| G[f_k] - \mathcal{G}{\Theta}[f_k] \right|{\mathcal{Y}}^p
$$
其中,$p$是一个依赖于$|\cdot|_{\mathcal{Y}}$的正数。然而,由于损失函数的非凸性和非线性性,传统的优化方法(如随机梯度下降)往往难以得到令人满意的解。
提出的两步训练方法
为了解决上述问题,本文提出了一个新的训练方法,将训练过程分为两个步骤:
第一步:训练新的trunk网络
首先,定义一个新的trunk网络$\hat{\phi}$,其形式为:
$$
\hat{\phi}(\cdot; \mu, T) = T \phi(\cdot; \mu)
$$
其中,$T$是一个可训练的$N+1$阶方阵。训练目标是最小化以下损失函数:
$$
\mathcal{L}(\mu, A) = \left| U - \Phi(\mu) T A \right|{p,p}
$$
其中,$U = [u_1, \cdots, u_K] \in \mathbb{R}^{m_y \times K}$,$\Phi(\mu) = [\phi(y_1; \mu), \cdots, \phi(y{m_y}; \mu)] \in \mathbb{R}^{m_y \times N}$。
第二步:训练branch网络
在第一步的基础上,训练branch网络以匹配$R^{\star}A^{\star}$,即考虑以下优化问题:
$$
\min_{\theta} \left| R^{\star}A^{\star} - C(\theta) \right|_{p,p}
$$
其中,$C(\theta)$是branch网络的输出矩阵。
理论分析
本文还对提出的训练方法进行了理论分析,证明了以下几点:
- 将(3.4)和(3.5)求解得到的最优解代入(3.3)等于(3.2)。
- 如果恰当选择trunk网络的结构,可以做到Loss为0。
- 完全训练的DeepONet的泛化误差具有理论保证。
泛化误差分析
泛化误差指的是DeepONet在未见过的数据上的表现。本文通过一系列假设和理论分析,给出了DeepONet泛化误差的上界估计。具体来说,假设算子类$\mathcal{C}_{op}$具有特定的谱形式,输入函数和传感器满足特定条件,trunk网络和branch网络具有足够的表达能力,可以得到以下结论:
对于任何$f \in \mathcal{X}$,完全训练的DeepONet的泛化误差满足:
$$
\mathbb{E} \left[ \left| G[f] - \tilde{O}{net}[f] \right|{L_{\omega}^2(\Omega_y)} \right] \leq \mathcal{E}(K, m_x, m_y, N)
$$
其中,$\mathcal{E}(K, m_x, m_y, N)$是一个依赖于训练数据数量、输入函数传感器数量、输出函数传感器数量和DeepONet宽度的误差项。
结论
本文提出了一种新的DeepONet训练方法,通过将训练任务分解为两个子任务,显著降低了训练难度。同时,通过严格的理论分析,证明了该方法的有效性和泛化能力。这对于推动DeepONet在实际问题中的应用具有重要意义。