加州理工华人博士提出傅里叶神经算子,偏微分方程提速1000倍,告别超算!

3b66380b9fd3a08832e28130d8748d4e.png


视学算法报道  

编辑:LRS

【新智元导读】偏微分方程存在于生活中的方方面面,但这个方程通常需要借助超算才能求解。最近加州理工的一个博士生提出了一种傅里叶神经算子,能让求解速度提升1000倍,从此让你不再依赖超算!

微分方程是数学中重要的一课。所谓微分方程,就是含有未知函数的导数。一般凡是表示未知函数、未知函数的导数与自变量之间关系的方程,就叫做微分方程。

如果未知函数是一元函数的,就叫做常微分方程;

如果未知函数是多元的,就叫做偏微分方程。

9049f4fb611dfe79d6c50528b36c7986.png

偏微分方程拥有广泛的应用场景,模拟客机在空中的飞行姿势,地震波在地球上的仿真,传染病在人群中扩散的过程,研究基本力和粒子之间的相互作用等场景,工程师、科学家和数学家们都诉诸于偏微分方程来描述涉及许多独立变量的复杂现象。

然而,偏微分方程的求解过程却是异常艰难的,尤其对于计算机来说,只能以最笨拙的方法去求解。

对于特别复杂的偏微分方程,可能需要数百万个CPU小时才能求解出来一个结果,所以求救过程也通常依赖于超级计算机。随着问题越来越复杂,从设计更优秀的火箭发动机到模拟气候变化,科学家们需要一个更「聪明」的求解方法。

或许,可以试试神经网络?

从历史上看,神经网络主要用于学习有限维欧氏域之间的映射,所以使用神经算子可以直接从任何函数参数依赖性中学习到偏微分方程(partial differential equations, PDE)的解。

相比于传统的解题方法,神经网络更倾向于找到一个通用的解决方案,训练一个模型就能解决一类偏微分方程,而非特定的方程求解。

加州理工学院的研究人员最近提出了一种新的解决PDE方程的神经网络策略,比之前的深度学习方法的准确率更高。

f49919c8f71ac4459fe17be736da0e09.png

另外,它更加稳定,并且能够解决所有类型的PDE,例如任何流体的Navier-Stokes方程,而无需重新训练。

它的运算速度比标准数学公式快1000倍,所以研究人员可能对超级计算机的需求没有那么大,并且可以利用超算来计算出更复杂的问题。

文章的第一作者是Zongyi Li, 加州理工学院三年级博士生,导师是Anima Anandkumar教授。主要研究方向包括机器学习,理论计算机科学和应用数学。最近一直在Kortschak学者计划的支持下研究偏微分方程的深度学习方法。

f12c87771724626f4e29b24d040f49fb.png

传统的求解方法,如有限元法(fem)和有限差分法(fdm),都是通过空间离散来求解方程的。在此之前,他们对解决方案进行了权衡:粗网格速度快,但精度低;精细网格精确但速度慢。

复杂的PDE系统通常需要非常细粒度的离散,因此传统解决方案非常具有挑战性和耗时。

另一方面,数据驱动方法可以直接从数据中学习方程组的轨迹。因此,基于学习的方法的阶数可能比传统的求解方法的阶数大。

机器学习则成了其中的关键,而方法也分为各个流派。

有限维算子(Finite-dimensional operators)将解算子参数化为有限维欧氏空间之间的深卷积神经网络,但它的定义是网格相关的,需要对不同的分辨率和离散度进行修改和调整,以实现一致的错误(如果可能的话)。

此外,这些方法仅限于训练数据的尺寸和几何形状的离散化,因此无法在该领域的新点上查询解决方案。相比之下,我们的方法显示了网格分辨率的误差不变性和网格间传递解的能力。

Neural-FEM直接将解函数参数化为神经网络工作,旨在模拟PDE的一个特定实例,而不是解决方案运算符。它具有网格无关性和准确性,但对于函数参数/系数的任何新实例,都需要训练一个新的神经网络。

该方法类似于有限元等经典方法,用神经网络空间代替有限组局部基函数的线性范围。神经-有限元方法与经典方法具有相同的计算问题:每一个新的实例都需要求解优化问题。此外,该方法仅限于了解基本PDE的设置。

2abf64850e2cf1b452e414243f5b9695.png

神经算子(Neural Operator)使用神经网络学习无网格、无限维算子。神经算子通过产生一组可用于不同离散化的网络工作参数来纠正上述有限维算子方法的网格相关性质。它具有在网格之间传递解的能力。

此外,神经算子只需接受一次训练。求解一个新的参数实例只需要网络的前向传递,从而解决了神经有限元方法中存在的主要计算问题。最后,神经运算符只需要数据,而不需要了解PDE的基础知识。

到目前为止,由于积分算子的评价代价高,神经网络算子在有限维设置下还没有得到与卷积或递归神经网络并行的有效数值算法。通过快速傅里叶变换可以缓解计算量。

傅里叶变换(Fourier Transform)常用于求解微分方程的谱方法,因为微分等价于傅里叶域的乘法。傅立叶变换在发展深度学习方面也发挥了重要作用。理论上,它们出现在通用逼近定理的证明中,并且在经验上,它们被用于加速卷积神经网络。

这篇论文也是提出了一种在傅立叶空间中直接定义的具有准线性时间复杂度和最新逼近能力的神经算子结构。

与以往解决PDE 方程的方法不同,研究人员这次选择指定傅里叶空间中的输入和输出,用于表示波频率的独特图。

据Anima Anandkumar教授称,他们从以前的其他领域的工作中发现是空气运动(air motion)确实可以被描述为波频的组合。例如,风的总体方向类似于在宏观层面的极长的频率,相比之下,微水平的小漩涡类似于具有非常短,快的高频波。

226ffd0dd7e9360b077d898d6164d1e1.png

神经网络的任务相对是简化的,因为它更容易估计傅里叶空间中的傅里叶函数而不是欧几里德空间中的PDE。

他们的策略在实际应用中能够显著提升准确率和效率。除了相比传统方法取得巨大的速度优势外,它们的系统在求解Navier-Stokes方程时,它们的系统在求解Navier-Stokes方程时获得了30%的错误率。

33b7855bb19f176cf4a8e362335df142.png

整个想法非常巧妙,而且还增加了策略的通用性。

以前,每种类型的流体必须独立训练。但是,正如研究人员的试验所证明的那样,这种方法需要训练一次来管理它们。虽然他们尚未尝试将其扩展到其他示例,但是当在求解涉及地震活动或任何材料类型或者寻址涉及导热率的PDE时,它也能够应对。

在实验部分可以看到,文中所提出的框架可以近似于复杂算子在高非线性、高频率模式和低能量衰减的PDE。神经运算器的能量来源于线性、全局积分算子(通过傅里叶变换)和非线性、局部激活函数的组合。

与标准神经网络结合线性乘法和非线性激活逼近高度非线性函数的方法类似,所提出的神经算子可以逼近高度非线性算子。

参考资料:

https://analyticsindiamag.com/advantages-of-fourier-neural-operator/

cf10aed3039ba5f97dab69f5d128a495.png

outside_default.png

点个在看 paper不断!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嗨!首先感谢你的问题。Matlab可以使用内置函数fft进行傅里叶变换的计算。下面是一个简单的示例代码: ``` % 定义时间序列 t = linspace(0,2*pi,1000); % 定义信号 y = sin(2*pi*5*t) + cos(2*pi*10*t); % 计算傅里叶变换 Y = fft(y); % 计算频率序列 f = linspace(0,1,1000); % 绘制频谱图 plot(f,abs(Y)); ``` 关于傅里叶变换求解偏微分方程和积分方程,这是一个非常广泛的领域,Matlab在这个领域也有很多的工具箱和函数。具体的实现方法可以根据不同的方程和问题进行选择和调整。如果你有具体的问题需要求解,可以提供更多的信息,我可以为你提供更具体的帮助。 ### 回答2: Matlab是一种功能强大的科学计算软件,可以方便地实现傅里叶变换(Fourier Transform)和傅立叶级数展开(Fourier Series Expansion)。 傅里叶变换是一种将一个信号从时域(时间域)转换到频域(频率域)的数学工具,通过分析信号的频谱特征,可以对信号进行频谱分析、滤波、降噪等操作。在Matlab中,可以使用fft()函数来实现离散傅里叶变换(DFT),ifft()函数来实现离散傅里叶逆变换(IDFT),fftshift()函数用于对频谱进行中心化处理。 傅立叶级数展开可以将一个周期信号表示为一系列正弦和余弦函数的线性组合,它在信号分析的应用中被广泛使用。在Matlab中,可以使用FourierSeries()函数来实现傅立叶级数展开,可以指定展开的周期、频率分量的数量和振幅等参数。 傅立叶变换在偏微分方程和积分方程的求解中也有重要应用。通过将偏微分方程或积分方程转化到频率域,可以简化求解过程。在Matlab中,可以通过傅里叶变换来求解时谐偏微分方程(Time-Harmonic PD Es),即偏微分方程的解具有频率依赖性质。通过将时谐偏微分方程转化为代数方程,可以使用Matlab的求解(如solve()函数)得到解析解。 对于积分方程,傅立叶变换同样可以发挥作用。可以通过将积分方程转化为代数方程,然后使用Matlab的求解进行求解。在这个过程中,使用傅里叶变换的目的是对局部波的响应进行频谱分析,并将问题转化为频域下的代数方程求解。 综上所述,Matlab提供了丰富的函数和工具,可以方便地实现傅里叶变换和傅立叶级数展开,并应用于偏微分方程和积分方程的求解。这些功能使得Matlab成为工程学、物理学以及其他科学领域中重要的数值计算和信号处理工具。 ### 回答3: Matlab可以用来实现傅立叶变换,从而求解偏微分方程和积分方程。 傅立叶变换是一种重要的数学工具,可以将一个函数表示为一系列正弦和余弦函数的组合。Matlab中有现成的函数fft可以实现离散傅立叶变换(DFT),而ifft函数可以进行逆傅立叶变换。 对于偏微分方程,我们可以通过傅立叶变换将微分方程转化为代数方程。首先,我们将待求函数进行傅立叶变换,得到其频率域表示。然后,我们可以将微分方程中的导数操作转化为乘法操作,从而得到一个代数方程。通过求解这个代数方程,我们可以得到频率域中的解。最后,使用ifft函数将频率域中的解进行逆傅立叶变换,得到时域中的解。 对于积分方程,我们也可以利用傅立叶变换来求解。通过将积分方程进行傅立叶变换,可以将其转化为代数方程。然后,我们可以通过求解这个代数方程来得到频率域中的解。最后,再将频率域中的解进行逆傅立叶变换,得到时域中的解。 总之,利用Matlab中的fft和ifft函数,我们可以利用傅立叶变换来求解偏微分方程和积分方程。这为我们研究和解决各种数学问题提供了一种有效的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值