deeponet(nature原文部分重点提取)
论文链接:Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators | Nature Machine Intelligence
原文部分重点提取
DeepONets 会产生小的泛化误差
隐式类型算子还可以描述我们对其形式没有任何数学知识的系统
DeepONets 中的训练数据集大小是输入函数 u 的数量和 G(u) 的评估位置 y 的数量的乘积。
在使用结构化数据从偏微分方程学习算子时,一些工作将输入和输出函数视为图像,然后使用卷积神经网络(CNN)来学习图像到图像的映射 G(参考文献 1)。),但这种方法只能应用于特定类型的问题,其中
选择了 16 个测试用例来研究对空间 V 进行采样的重要问题。这些示例包括积分、勒让德变换、分数阶导数、非线性 ODE 和 PDE,以及随机 ODE 和 PDE。
G : u ↦ G(u) 它需要两个输入 [u(x), u(x), …, u(x)] 和 y
令 G 为采用输入函数 u 的运算符,G(u) 为相应的输出函数。对于 G(u) 域中的任意点 y,输出 G(u)(y) 是实数。因此,网络的输入由两部分组成:u 和 y,输出为 G(u)(y)
一般来说,输入没有任何特定的结构,因此我们使用 FNN 和 ResNet 作为基线模型(branch分支中)。为了将 DeepONets 与其他模型进行比较,我们还考虑将 CNN 或 RNN 作为特定问题和数据集的一些示例中的基线。
在本研究中,我们所有的训练数据集都是从数值求解器获得的;
函数 g 和 f 可以选择为不同类别的神经网络,满足函数的经典万能逼近定理,例如(堆叠/非堆叠)全连接神经网络FNN、残差神经网络resnet和卷积神经网络CNN。
我们主要考虑以下函数空间:高斯随机场(GRF)、谱表示并将输入函数表示为图像。我们注意到,一个数据点是一个三元组 (u, y, G(u)(y)),因此特定输入 u 可能出现在具有不同 y 值的多个数据点中。例如,大小为 10,000 的数据集只能从 100 个u 轨迹生成,并且每个轨迹在 100 个不同的 y 位置评估 G(u)(y)。此外,对于不同的u,y的数量和位置可能不同。在我们的数据集中,对于每个 u,我们在 G(u) 域中随机选择 P 个不同的 y 点,因此数据点的总数等于 P ×u。
案例2d:
这个案例可以发现是将定义域从一维映射到二维
初始条件或边界条件的值为零
"Zero initial/boundary conditions"
数学和物理学中常用的术语,尤其是在涉及微分方程、偏微分方程、流体动力学、电磁学等领域时。指的是在求解某些方程时,所施加的初始条件或边界条件的值为零。
1. Zero Initial Conditions(零初始条件)
- 定义:初始条件指定了在时间 ( t = 0 ) 时,系统或方程的状态。在零初始条件下,系统的初始状态被设定为零。
- 举例:假设你在求解一个振动系统(例如弹簧振子),零初始条件意味着在 ( t = 0 ) 时,位移和速度都为零,即 ( x(0) = 0 ) 和 ( v(0) = 0 )。
2. Zero Boundary Conditions(零边界条件)
- 定义:边界条件用于描述在空间某些特定位置(通常是系统的边界)上的解的行为。零边界条件指的是在边界上的解值为零。
- 举例:假设你在求解热传导问题,零边界条件意味着在边界的温度为零,类似于在求解一个固体物体的热分布时,边界上的温度为零,即 ( T(x = 0) = 0 ) 或 ( T(x = L) = 0 ),其中 ( L ) 是物体的长度。
总结:
- 零初始条件:意味着在时间 ( t = 0 ) 时,系统的状态(例如位移、速度、温度等)为零。
- 零边界条件:意味着在空间边界上的值为零,常用于描述某些物理量在边界处的行为。
这些条件在物理学、工程学和其他应用科学中通常用于简化问题,帮助数学模型更容易求解。
总结中提到deeponet-fno代码中电对流案例
更广泛地说,DeepONet 可以代表一个多尺度算子,该算子使用时空尺度上多个数量级的数据进行训练,例如,使用流体力学或其他多尺度问题中的分子、介观和连续介质体系的数据进行训练。我们还可以设想其他类型的复合 DNN,用于开发多物理场算子,例如,在电对流中,由于外加电势的连续变化,涉及阴离子和阳离子的流场和浓度场的演变。事实上,在正在进行的工作中,我们开发了 DeepONet 的扩展来模拟这种电对流多物理场问题,我们表明 DeepONet 比谱元求解器快得多。我们在高超音速方面获得了类似的加速和高精度,用于学习空气动力学以及多个物种的有限速率化学。如果泛化误差是有界的,学习这种多尺度和多物理场非线性算子将简化计算建模,并且有助于以良好的精度快速预测未见过的新参数值和新输入函数(边界/初始条件/激励)的复杂动力学。
后续:找了一下代码看还没有开发,issue中也没有提到截至目前
issue中提到可以用带有时间的2D或者3d数据,作者提到deeponet输入和输出有不同的可能方式。
url:Handling 3D data like time evolution of 2D fluid flow. · Issue #2 · lu-group/deeponet-fno · GitHub
问题:
现在,我想使用 DeepONet 解决流动问题。我的输入是维度(样本、高度、宽度、时间)或对应于不同时间步骤的图像,这些图像描述了流动的演变。具体来说,我的输入是从 t = 1 到 m 个时间步骤的速度,我想预测接下来的 n 个时间步骤的速度 [batch, :,:,:m] -> [batch,:,:, m: m+n]。
我应该如何预处理此类问题的数据?是否有使用 deepOnet 的此类流问题的代码实现?
另外,我们可以使用类似 FNO-2D-time 的 DeepOnet(更多是 RNN 类型结构)吗?
自己案例可以考虑用deeponet的情况
预测所有时间上的位移
可以考虑每个点的位移共3159个
input_branch(500,3159,3) input_trunk:time(500)
output:(500,3159,3)
上个时间预测下个时间上的
input_branch(500,3159,3) input_trunk:数字range(3159,3)
output:(500,3159,3)
其他待实现想法
上个时间到下个时间位移的映射,也就是位移量的算子(能不能用流体固体合在一起?或者用两个deeponet让下一个时间的流固体位移总损失最小做为损失函数?也可以考虑流体到固体坐标(耦合算子)的映射行不行?)