JCP | RandONets:利用随机投影学习线性和非线性算子的浅层网络,含多个MATLAB实例

文摘   2024-11-17 15:02   中国  
最近不少道友后台反馈说收不到公众号的推文,我查了相关规则发现,微信公众号发布了新规则,只有点亮小星星才能第一时间收到文章推送,步骤如下:

点击上方蓝字关注我吧!

RandONets:利用随机投影学习线性和非线性算子的浅层网络

我们提出了一种基于随机投影的机器学习方法,利用 Johnson-Lindenstrauss (JL) 和/或 Rahimi 和 Recht (2007) 提出的 随机傅里叶特征 (RFFN),来高效学习线性和非线性算子。

RandONets 是一种基于随机投影的浅层神经网络,旨在高效学习线性和非线性算子。该方法结合了随机化技术和神经网络,以更低的计算成本和更高的数值精度学习各种算子,特别是在科学计算和工程领域中的应用。其核心思想是通过随机投影简化网络结构,使得模型训练和计算更加高效。

摘要

深度神经网络已广泛应用于动力系统的正问题和反问题的求解。然而,它们的实现需要优化高维的参数和超参数空间。由于这一要求,再加上对大量计算资源的需求,成为了实现高数值精度的障碍,同时也影响了解释性。为了解决上述挑战,我们提出了基于随机投影的算子网络(RandONets):一种利用随机投影和量身定制的数值分析方法的浅层网络,可以快速且准确地学习线性和非线性算子。

图1. 基于随机投影的算子网络(RandONet)的示意图。RandONets首先在固定的空间点网格上离散输入函数(𝑢)。然后,它将空间位置(𝒚)空间分别嵌入到一个随机隐藏层(例如,使用Sigmoid激活函数),并将离散化的函数空间嵌入到低失真核嵌入空间(例如,使用Johnson-Lindenstrauss随机投影[38]或Rahimi和Recht随机傅里叶特征[39])。最后,输出由分支(𝐵)和主干(𝑇)特征的加权(𝑊)内积组成。训练可以通过线性最小二乘法技术(例如,Tikhonov正则化、SVD和QR分解)进行。


基于之前的工作,我们证明了 RandONets 是线性和非线性算子的通用逼近器。由于其简单性,RandONets 提供了输入空间的单步变换,有助于提高模型的可解释性。为了评估其性能,我们将重点放在偏微分方程(PDE)算子上。我们表明,RandONets 在数值逼近精度和计算成本方面,比传统的“基本”DeepONets 优越了几个数量级。因此,我们相信,RandONets 方法将推动科学机器学习领域的发展,促进新型“轻量级”方案的开发,这些方案不仅提供高精度,而且能显著降低计算成本。

RandONets 的 MATLAB 工具箱(包括示例)可在 GitHub 上获取,网址为:https://github.com/GianlucaFabiani/RandONets。

关键词

  • RandONets
  • 可解释机器学习
  • 随机投影
  • 浅层神经网络
  • 线性与非线性算子
  • 数值分析

核心思想

  1. 随机投影:RandONets 采用了Johnson-Lindenstrauss (JL) 投影随机傅里叶特征 (RFFN) 等方法,这些方法利用低维随机映射来有效表示和近似线性和非线性算子。这种方法减少了传统神经网络所需的计算复杂度,使得网络训练更加快速。

  2. 浅层网络:与深度神经网络相比,RandONets 使用的为浅层网络。由于其较少的层数和参数,RandONets 在保持高精度的同时,减少了计算资源的需求,训练和推理速度显著提高。

  3. 线性和非线性算子的逼近:RandONets 可以逼近各种类型的算子,包括线性和非线性算子。这些算子在科学计算中发挥重要作用,特别是在解决偏微分方程(PDE)等问题时,具有广泛的应用。

理论基础

RandONets 的理论依据表明,它们能够作为通用逼近器,即可以精确地逼近任何线性和非线性算子。这一理论结果扩展了陈和陈(1995)的证明,为算子的学习和逼近提供了强有力的理论支持。

引言

近年来,机器学习(ML)在求解微分方程和多尺度/复杂系统的正问题和反问题方面取得了显著进展,极大丰富了我们的计算工具。在正问题中,机器学习算法,如高斯过程和物理信息神经网络(PINNs),被训练来逼近非线性微分方程的解,特别是对于刚性和高维非线性微分方程组[1-8],以及非线性函数方程的求解[9-14]。反问题的求解则利用机器学习算法从数据中学习物理规律、参数及各尺度之间的闭合关系[15,3,16,9,17-20,10,11]。
据我们所知,首个基于神经网络的反问题求解方法是在Gonzalez等人(1998)[21]中提出的,旨在识别抛物型偏微分方程(PDE)演化规律(右侧项),其利用空间偏导数作为基函数。同一时期,针对PDE的反问题,通过降阶模型(ROMs)采用数据驱动的正交分解(POD)基函数[22]和傅里叶基函数(在近似惯性流形的背景下)[23]也展开了研究。
近年来,几种先进的基于机器学习的非线性算子逼近方法应运而生,重点关注偏微分算子,其中最为突出的是深度算子网络(DeepONets)[10]、傅里叶神经算子(FNOs)[24]和基于图的神经算子[25,26]。DeepONets通过扩展90年代Chen和Chen[27]提出的动力系统通用逼近定理,采用所谓的分支和干网络,分别处理输入函数和空间变量及/或参数,从而提供了一种强大且多功能的框架,用于动力系统中的算子学习。可以使用各种架构来构建任一/两个网络,从而为解决复杂动力系统建模中的挑战性问题提供了新的方向[10,28-30]。FNOs[24]通过傅里叶变换捕捉数据中的全局模式和依赖关系。FNOs使用频域中的卷积层和逆傅里叶变换将其映射回原始领域。此变换使得神经网络能够高效学习具有长程相关性的复杂高维输入和输出。此方法对于涉及大空间域的问题尤其具有优势。基于图的神经算子[26,25]将非线性算子建模为一个图,其中节点代表输出函数的空间位置,学习网络的核函数,从而逼近PDE。它们定义了一系列复合操作,每一层都是在有限维度的参数依赖下映射到无限维空间。作者还证明了一个通用逼近定理,表明该方法可以逼近任何给定的非线性连续算子。基于上述开创性方法,其他方法还包括小波神经算子(WNOs)[31]和谱神经算子(SNOs)[32],它们为输入和输出函数使用固定数量的基函数,这些基函数可以是切比雪夫多项式或复指数函数。关于神经算子应用的综述,感兴趣的读者可以参考最近的工作[33]。

在这里,我们提出了基于随机投影的算子网络(RandONets),以解决训练过程中“维度灾难”问题,并促进模型的可解释性。DeepONets作为一种强大的方法,已在动力系统的科学机器学习中引发了革命,但也存在一些局限性。其训练过程通常需要多次遍历大型数据集,以更新深度学习网络参数的高维空间,导致计算时间和内存消耗巨大。此外,非线性算子的复杂性和问题域的大小可能会进一步增加计算负担。更重要的是,超参数调优、正则化技术和模型选择程序都会增加额外的计算开销。因此,训练DeepONets可能需要大量计算资源,包括高性能计算集群或GPU,同时由于其深度架构,模型本身缺乏可解释性。训练深度神经网络的计算需求可能会显著影响收敛行为和数值逼近精度。高维参数空间可能导致收敛到(接近)全局最优解的困难。在某些情况下,优化算法可能会陷入局部最小值或平台期,阻碍网络高精度逼近非线性甚至线性算子的能力。为了解决这些挑战,需要仔细考虑优化策略、正则化方法和数据集规模,平衡计算效率与所需的逼近精度(有关成本-精度权衡的关键讨论和方法可参见[34-37])。

我们提出的RandONets解决了这些挑战,利用浅层(仅一隐藏层)前馈神经网络、随机投影[38-42,17,6]和数值分析方法,为线性和非线性算子的逼近提供了计算高效的框架,从而增强了可解释性。具体来说,我们将已建立的数值分析方法,如Tikhonov正则化和带正则化的主成分QR分解,应用于求解病态线性问题。这些方法提供了具有保证的(接近)最优收敛性质的高效数值逼近。基于以往的工作,我们证明了RandONets是线性和非线性算子的通用逼近器。此外,我们评估了RandONets在逼近PDE演化算子(右侧项)的性能,展示了RandONets在数值逼近精度(对线性算子达到机器精度)和计算成本方面,比传统DeepONets提高了几个数量级。总之,我们的工作表明,经过精心设计的“轻量级”神经网络,结合量身定制的数值方法,可以提供比深度神经网络更快速、更精确的非线性算子逼近,同时也增强了可解释性。

本文结构安排如下:第2节描述了问题;第3.1节和第3.2节分别介绍了DeepONets和随机投影神经网络(RPNNs)方法的基本原理和必要符号;第3.3节介绍了RandONets,接着在第3.3.1节,我们扩展了Chen和Chen[27]关于算子通用逼近的定理,适用于RandONets架构;第4节评估了RandONets在各种线性和非线性基准问题中的表现,并将其性能与传统DeepONet进行了比较。我们从一些简单的常微分方程(ODE)问题开始,逼近解算子,然后继续展示PDE演化算子逼近的结果。最后,在第5节总结并给出未来的研究方向。

图2. 案例研究1:反导数算子,方程(56)。 (第一行) 大数据集案例,800个训练输入函数;(第二行) 有限数据集案例,150个训练输入函数。 (a)、(d) 训练集和测试集的均方误差(MSE),使用2个隐藏层(每个隐藏层40个神经元)作为分支网络和主干网络的DeepONets。 (b)、(c)、(e)、(f) RandONets的MSE和𝐿2误差,5%-95%的范围和中位数,对于不同大小𝑀的分支嵌入。误差仅针对测试数据集中的输出函数进行计算。比较Johnson-Lindenstrauss(JL)分支嵌入与随机傅里叶特征(RFFN)嵌入。我们将主干网络的大小设置为𝑁 = 200,输入点的网格大小设置为𝑚 = 100。数值逼近精度与(b)-(e)分支网络隐藏层中神经元数量𝑀的关系;以及(c)-(f)与计算时间(秒)之间的关系。


表1
案例研究1:反导数算子,方程(56)。我们报告均方误差(MSE)、百分位数(中位数、5%、95%)和𝐿2误差在测试集中的分布。大数据集案例使用800个训练函数,而有限数据集案例使用150个训练函数。我们使用传统的DeepONets,具有2个隐藏层,分支和主干网络都用[𝑁, 𝑁]个神经元表示,设置𝑁 = 5、10、20、40。DeepONets使用20,000次Adam迭代训练(学习率分别为0.001和0.0001)。我们报告了RandONets的结果,包括使用Johnson-Lindenstrauss(JL)特征的分支网络(𝑀 = 100个神经元)和随机傅里叶特征(RFFN)分支网络(𝑀 = 2000个神经元)。


结论

在本研究中,我们提出了RandONets方法,用于逼近线性和非线性算子。我们的工作基于三个关键要素:(a)输入函数空间的线性和非线性随机嵌入,(b)浅层(单隐藏层)随机神经网络,以及(c)为求解病态线性问题量身定制的数值分析方法。首先,基于以往的研究成果,我们证明了RandONets是通用逼近器。我们进一步通过与传统DeepONets在各种基准问题上的比较,评估了RandONets的性能,包括常微分方程(ODE)的解算子的逼近问题,以及偏微分方程(PDE)的线性和非线性演化算子(右侧项)问题。我们展示了RandONets在计算成本和数值精度方面比传统DeepONets提高了几个数量级。特别地,我们展示了具有JL随机嵌入的RandONets在逼近PDE的线性演化算子时无与伦比,对于对齐的数据几乎达到了机器精度。具有非线性随机嵌入的RandONets比传统DeepONets精度高102到103倍,并且速度快103倍。

在这里,我们的目标是向学术界介绍RandONets。因此,与DeepONets的更先进版本以及其他方法(如FNOs等)的广泛比较超出了本研究的范围。然而,在未来的工作中,我们计划评估RandONets在高维非线性算子逼近中的表现,并对PDE解算子进行逼近,从而进行“全面且公正的比较”,如[28]中所做的那样。

我们相信我们的工作将激发该领域的进一步发展,鼓励探索数值分析如何提高浅层神经网络的适用性和可解释性。这可能使得浅层网络在特定的科学机器学习任务中,在精度和计算效率方面比深度神经网络提高几个数量级。朝着这个方向,例如,在[77]中,作者展示了“准确的”浅层前馈神经网络优化相比训练深度神经网络更能为PDE提供优越的结果。


MATLAB 示例

主函数为 train_RandONet.m,用于训练 RandONet 模型。

我们在 main_RandDeepOnet_examples.m 文件中提供了5个示例/演示:

  1. 反导数问题load('data_antiderivative.mat'),基于 DeepXDE Python 库中的问题)
  2. 带外力的单摆问题load('data_Pendulum.mat'),基于 DeepXDE Python 库中的问题)
  3. 线性PDE扩散-反应问题load('data_DiffReac.mat')
  4. 非线性PDE粘性Burgers方程load('data_burgers.mat')
  5. 非线性PDE Allen-Cahn方程load('data_AllenCahn.mat')

问题描述

本研究聚焦于学习线性和非线性泛函算子 的任务。此类算子定义了两个无穷维函数空间 之间的映射。为简单起见,我们假设 均为 的子集,其中 表示定义在 上的连续函数的集合。

集合 的元素为函数 ,它们通过算子 转化为其他函数 。对于 ,算子 的值表示为

这种算子在许多科学和工程应用中具有重要作用,特别是在偏微分方程的背景下。通过有效学习这些非线性算子(即从数据中发现),我们期望在从流体动力学和材料科学到金融和生物系统等领域提升我们的理解和预测能力。

尽管目标是从数据中学习作用于函数()的算子,但为了能够应用网络逼近,必须对其进行离散化。一个实用方法是使用函数在有限个位置 的取值 ,其中 ,这些位置被称为“传感器”。

对于输出函数的数据,有两种情况。第一种是输出函数在固定网格 上已知,这称为“对齐”数据。另一种是输出网格对每个输入函数随机变化,称为“未对齐”数据。如果该网格均匀采样且足够稠密,可通过插值将输出函数近似到固定位置,回归为对齐数据的情况。然而,当输出仅在稀疏位置可用时,插值变得不切实际。尽管如此,正如论文中所述,我们的方法可以应对这种情形,但在训练机器学习模型时会增加计算成本(因为此时无法完全利用数据的固定结构)。


代码文档

我们提供了用户友好且适用于 MATLAB 的工具,用于学习线性和非线性算子。基于随机投影的算法是一种快速高效的函数逼近机器学习算法。

train_RandONet.m

训练 RandONet 模型。

语法

net = train_RandONet(ff, yy, Nt, Nb, kmodel)

输入

  • ff: 分支网络的输入矩阵(函数)。
  • yy: 主干网络的输入向量(空间位置)。
  • Nt: 主干网络的神经元数(默认值:200)。
  • Nb: 分支网络的神经元数(默认值:1000)。
  • kmodel: 模型类型(1 表示 JL,2 表示 RFFN,默认值为 2)。

输出

  • net: 训练好的 RandONet 模型,包含主干和分支网络的参数,包括权重和偏置。

结构

  • tr_fT: 主干网络激活函数(非线性变换)。
  • tr_fB: 分支网络激活函数(非线性变换)。
  • `alphat

, betat`: 主干网络的输入变换参数。

  • alphab, betab: 分支网络的输入变换参数。
  • C: 内积的权重矩阵。

描述: 该函数通过 COD 伪逆初始化网络参数,并训练主干和分支层,结果存储在输出 net 中。


eval_RandONet.m

评估 RandONet 模型,通过计算主干和分支网络的加权内积。

语法

G = eval_RandONet(net, ff, yy)

输入

  • net: RandONet 模型结构,包含以下字段:
    • tr_fT: 主干网络激活函数。
    • tr_fB: 分支网络激活函数。
    • alphat, betat: 主干网络输入变换参数。
    • alphab, betab: 分支网络输入变换参数。
    • C: 内积的权重矩阵。
  • ff: 分支网络的输入函数。
  • yy: 主干网络的输入空间位置。

输出

  • G: RandONet 模型的输出,计算为主干和分支网络变换的加权内积

描述: 该函数将输入通过主干和分支网络变换后,利用权重矩阵 对这些变换的内积进行加权,得出结果。



END


PINNs代码汇总

长按扫码

点赞

关注

在看

💙整理不易,希望各位道友能够多多支持宝库,支持邪云宝库!你的一个点赞、一次转发、 随手分享,都是宝库前进的最大动力~

💛2024,不忘初心,宝库会给大家带来更好的内容,让我们2024,一起暴富!


邪云宝库
用于分享物理科学启发AI的新范式:人工智能的物理科学(PhysicsScience4AI, PS4AI)资料。用于各种debug日志,偏微分方程,物理信息神经网络,算法原理及实现,数据挖掘,机器学习,智能优化算法,多元统计及生活分享。
 最新文章