当前位置: 首页 > 科技观察

高数有救!神经网络在不到一秒的时间内求解偏微分方程

时间:2023-03-21 11:08:37 科技观察

随着任务数量的增加,使用当前计算方法构建通用日常机器人对解决方案的搜索正迅速变得令人望而却步。我们都想要能够执行一系列复杂任务的通用机器人,例如清洁、维护和交付“高等数学”,好吗?微分方程是数学中的重要课程。微分方程是未知函数的导数。一般凡是表示未知函数、未知函数的导数和自变量之间关系的方程都称为微分方程。如果未知函数是单变量函数,则称为常微分方程;如果未知函数是多元的,则称为偏微分方程。偏微分方程具有广泛的应用场景,如模拟客机在空中的飞行姿态,模拟地球上的地震波,传染病在人群中传播的过程,研究基本力与粒子的相互作用等。工程师、科学家和数学家采用偏微分方程来描述涉及许多自变量的复杂现象。然而,求解偏微分方程的过程极其困难,尤其是计算机,只能用最笨拙的方法求解。对于特别复杂的偏微分方程,求解一个结果可能需要数百万个CPU小时。随着问题变得越来越复杂,从设计更好的火箭发动机到模拟气候变化,科学家们需要一个“更智能”的解决方案。也许,试试神经网络?最近,研究人员通过神经网络实验证明,他们可以比传统的偏微分方程求解器更快地逼近解。更好的是,经过训练的网络无需重新训练即可求解一类偏微分方程。通常,神经网络将数据从一个有限维空间(例如,图像的像素值)映射或转换到另一个有限维空间(例如,对图像进行分类的数字,例如1代表猫,2代表猫狗)。求解偏微分方程的神经网络从无限空间映射到无限空间。偏微分方程的有用性来自于它们的复杂性。例如,我们想以二维视角观察飞机机翼附近的空气流动。建模者想知道空间中任一点的流动(也称为流场)和不同时刻的速度和压力,就需要偏微分方程。特定的偏微分方程,即Navier-Stokes方程,可以模拟这种流体流动,同时考虑能量、质量和动量守恒定律。在这种情况下,解决方案可能是一个特定的公式,允许开发人员计算不同时间的流场状态。偏微分方程通常过于复杂,无法提供通用的解析解。对于Navier-Stokes方程的最一般形式尤其如此:数学家尚未证明是否存在唯一解,更不用说通过分析实际找到它们了。在这些情况下,建模者转向数值方法,将偏微分方程转换为一组易于处理的代数方程,假设这些方程可以保持在较小的空间和时间增量中。在超级计算机上以数值方式求解复杂的偏微分方程可能需要几个月的时间。此外,如果所研究系统的初始条件或边界条件或几何形状(例如机翼设计)发生变化,则必须重新开始求解。同样,使用的增量越小(正如研究人员所说,网格越细),模型越准确,数值求解所需的时间就越长。神经网络更擅长将未知函数拟合到这样的黑盒子中,其中输入是一个向量,输出是另一个向量。如果存在将一组输入向量映射到一组输出向量的函数,则可以训练网络学习该映射,并且两个有限维空间之间的任何函数都可以由神经网络逼近。2016年,研究人员研究了如何使用常用于图像识别的深度神经网络来求解偏微分方程。首先,研究人员生成了用于训练网络的数据:数值解算器计算流过大小和方向不同的xy简单对象和原始形状(三角形、四边形等)的流体的速度场。有关对象几何形状和流体初始条件的二维图像编码信息用作输入,而相应速度场的二维快照用作输出。从无限空间到无限空间的映射与2016年的工作相比,本次研究更有意义。网络不仅可以学习如何逼近函数,还可以学习将函数映射到函数的“算子”,没有“维度爆炸”的烦恼。例如,如果其他神经网络或机器学习算法想要将错误率从10%降低到1%,所需的训练数据量或网络规模可能呈指数级增长,使任务无法完成。在数学上,算子的输入输出是没有限制的,比如正弦函数sin(x),输入输出是无穷维的,因为x可以是任意值,函数可以是作用于x的任意变换。学习近似算子的深度学习网络可用于一次求解所有类似的偏微分方程,并针对一系列初始和边界条件以及物理参数对相同现象进行建模。1995年的工作表明,浅层网络可以近似算子算子。由于神经网络的引入,这种算子被称为神经算子,是实际算子的近似值。2019年,研究人员在1995年的工作基础上提出了DeepONet。其独特之处在于其分叉架构,它在两个并行网络(一个分支和一个主干)中处理数据。前者在输入端学习某个函数的近似值,而后者在输出端学习相同的函数。DeepONet结合两个网络的输出来学习偏微分方程所需的运算符。训练DeepONet,在每次迭代中调整分支网络和骨干网络中的权重,直到整个网络几乎没有超出容错范围的错误。DeepONet一旦训练好,就可以模拟算子,输入可以得到表示偏微分方程的数据,输出是网络训练得到的近似解。假设您提供100个代表初始/边界条件和物理参数的样本,这些样本不在训练数据中,并且需要流场,DeepONet可以在几分之一秒内为您提供流场状态。然而,DeepONet的训练过程仍然消耗了大量的计算能力,如何提高准确率和减小步长以产生更大的计算量也是一个问题。能不能快点?改变观点去年,加州理工学院和普渡大学的Anandkumar及其同事构建了一个名为傅里叶神经算子(FNO)的深度神经网络,他们声称这种网络速度更快。他们的网络还将函数映射到函数,从无限维空间到无限维空间,并且他们在偏微分方程上测试了他们的神经网络。他们解决方案的核心是傅立叶层。在他们将训练数据推送到神经网络的单层之前,他们对其进行了傅立叶变换。然后,当这些层通过线性运算处理了这些数据后,它们会执行傅里叶逆变换以将其转换回其原始格式。这种变换称为傅里叶变换,它将一个连续函数分解为多个正弦函数。整个神经网络由几个傅立叶层组成。事实证明,这个过程比DeepONet的计算更直接,并且类似于通过在PDE和其他函数之间执行称为卷积的繁琐数学运算来求解PDE。在傅里叶域中,卷积涉及简单的乘法,相当于将傅里叶变换后的数据通过一层人工神经元(在训练期间获得精确的权重),然后进行傅里叶逆变换。因此,最终的结果是FNO学习了整个偏微分方程的算子,将函数映射到函数。这种方法显着加快了求解速度。在一个相对简单的示例中,仅需要30,000次模拟即可求解上述Navier-Stokes方程,FNO每次模拟仅需几分之一秒,而DeepONetSecond为2.5秒。对于相同的精度,传统的求解器需要18个小时。数学意义两个团队的方法都被证明是成功的,但随着神经网络的广泛使用,尚不清楚为什么它们工作得如此好以及它们是否在所有情况下都如此。Mishra和他的同事现在正在对这两种方法进行全面的数学理解。经过一年的工作,2月,Mishra的团队在Karniadakis的帮助下,对DeepONet架构进行了112页的数学分析。他们证明这种方法是真正通用的,因为它可以将输入端的任何函数集映射到输出端的任何函数集,而不仅仅是PDE,而无需为深入理解Karniadakis定理网和他们1995年的前身。该团队尚未完成一篇分析FNO的论文,但Mishra认为它可以比DeepONet更有效地解决某些问题。他的团队正在对FNO进行详细分析,包括与DeepONet的比较。但是,很明显,这两种方法都优于传统求解器。对于某些无法编写偏微分方程的场景,神经算子可能是对此类系统建模的唯一方法。这是科学机器学习的未来。