如何理解Fourier Neural Operator (FNO)

news2024/11/29 12:42:50

写这篇blog是因为多方参考才读懂这两篇文章,希望能用自己的语言表达出来加深一下理解。因为是刚刚开始学习这部分内容,错误之处敬请指出。

文章目录

  • 前言
  • 算子Operator概念理解
  • 问题建立
  • Graph Neural Operator的思想
    • 证明
    • 采样多少个数据点可以用来表示一组a_j和u_j?
  • Fourier Neural Operator的思想
    • 直观对比CNN滤波和Fourier滤波

前言

2022年Nvidia发表在arXiv上的的FourcastNet作为几乎是最早的一篇气象大模型的工作(之前Google Research的MetNet主要还是对于降水的预报)。除了Transformer的backbone之外,使用到了2021年发表在ICLR上的Fourier Neural Operator。为了更好的理解模型的理论基础,可以详细学习一下 Fourier neural operator for parametric partial differential equations 以及他的前期工作 Neural operator: graph kernel network for PDE。

文章指路:
GNO
FNO
作者对这两篇文章的解析blog

算子Operator概念理解

算子(Operator)是函数空间到函数空间的映射。从广义上讲,对任何函数进行某一项操作都可以看作是一个算子。在神经网络中例如convolution,fully connected layer等,都可以当作一种算子。

因此,区别于之前的一些PINN文章,从 给定的一个函数中采样 x x x和对应的 y y y,建立一个神经网络来学习这个函数,本篇文章中提到的Operator旨在学习一个函数簇到另一个函数簇的映射。例如,具有不同初始条件的Burgers方程,到这些方程的解的映射,是这个神经网络算子需要学习的内容。

因此他的好处在于,对于某种表达形式的方程,例如Burgers方程,训练一个算子可以得到Burgers方程不同初始条件下的解。而文章中所提到的参数 a a a,可以理解成初始条件/边界条件/含有物理意义的系数等。

问题建立

请添加图片描述
假设我们有一个一般的二阶椭圆偏微分方程,其中u是需要求解的函数,f(x)是右端项,a(x)是参数。一般的,f(x)和a(x)均为已知。f(x)也可以理解成物理方程中的强迫项。方程可以以算子的形式表示,如下图所示。请添加图片描述
偏微分方程一般可以写成上述形式。 L a L_a La表示在参数 a a a是的算子。
在这里插入图片描述
作者希望用神经网络来模拟映射关系F,实现一组方程在给定不同参数a的情况下,求得方程的解。其中,A是参数a的集合,或者理解成参数空间。
在这种情况下,神经网络的输入和输出都是函数的表达式。为了能表示出函数,作者在 a a a u u u上进行了K个点的采样 P i = 1 , … , K P_{i=1,…,K} Pi=1,,K,并通过 a j ∣ P k a_j | P_k ajPk u j ∣ P k u_j | P_k ujPk作为网络的输入输出来进行训练。

Graph Neural Operator的思想

作者考虑使用格林函数(Green Function)作为PDE的求解方法。格林函数是一种用来解有初值条件和边界条件的非齐次微分方程的函数。

证明

若可找到线性算符L的格林函数G,则有在这里插入图片描述由于 L a u ( x ) = f ( x ) L_au(x) = f(x) Lau(x)=f(x),则可以得到 L a u ( x ) = ∫ L G ( x , s ) f ( s ) d s L_au(x) = \int LG(x,s)f(s)ds Lau(x)=LG(x,s)f(s)ds。其中,L算子只对x起作用,不对被积分的变量s起作用,因此可以得到 L a u ( x ) = L ∫ G ( x , s ) f ( s ) d s L_au(x)= L\int G(x,s)f(s)ds Lau(x)=LG(x,s)f(s)ds,所以也可以得到 u ( x ) = ∫ G ( x , s ) f ( s ) d s u(x) = \int G(x,s)f(s)ds u(x)=G(x,s)f(s)ds,其中s表示定义域中的某一个点,例如G(1,0)就表示x=0对x=1这个点的影响。因此对 s s s进行积分,就可以理解成要求解定义域中的点对x的影响。

如果进行离散采样,并且把所有离散点看作图神经网络中的节点的话,点对x的影响可以看作是图神经网络的边的传递。

采样多少个数据点可以用来表示一组a_j和u_j?

即上述K为多少比较合适?

考虑有向边,建立图神经网络的复杂度为O(k^2)。根据Monte Carlo integration 的error【这边暂时还没理解为什么看这个error,可能理解错了】,error和采样点的关系为 δ ∼ K − 1 / 2 \delta \sim K^{-1/2} δK1/2。当对函数采样200个点时(对于每一组函数对,训练用400个,测试用200个),就已经可以达到比较好的效果。

Fourier Neural Operator的思想

如果将图神经网络中的message passing替换成Fourier变换和逆变换层,则可以得到FNO的大致结构,如下图所示。FNO是图片— 图片的学习。
在这里插入图片描述

具体的,对于每一层神经网络的输入,FNO层做三件事情:

  1. 对于输入进行傅立叶变换
  2. 过滤掉比较高频的modes,这一步我自己的理解是为了消除一些采样的噪声等,提高模型的鲁棒性
  3. 对于低频modes进行傅立叶逆变换。

W为bias term,用shortcut的方式增加一个偏差项(线性)。因为傅立叶具有周期性,通过激活函数 σ \sigma σ来恢复函数的非周期边界条件和一些高频modes。

直观对比CNN滤波和Fourier滤波

作者在blog中给出了很直观的Fourier filter和CNN filter的比对。CNN的filter可以很好的捕捉局部的特征,可以很好的提出图片的边缘信息。而傅立叶filter是 全局 的,并且是三角函数,因此可以更好的用来表示连续方程。在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五金件外观检测机如何确保产品质量?

五金件是指由金属材料制成的各种零部件或制品,主要用于各种机械设备、工具、建筑结构以及其他领域。五金件通常由金属加工、铸造、锻造等方式制造,具有耐久性、强度高、稳定性强等特点。应用于工业制造、建筑、家具、汽车、电子产品等领域。 本案五金件尺…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: (电源)插座(电器上的)插口,插孔,管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

佛山市人工智能产业生态交流会:实在智能Agent引领“智造浪潮”

制造业,实体经济的核心,技术创新的先锋,供给侧结构性改革的关键。在新一轮产业竞争中,数字化转型成为制造业升级的必由之路,是引领未来的重要抓手。 为促进数字经济赋能实体经济,加快人工智能技术的推广应用…

Object类里面的clone方法与接口cloneable的理解

文章目录 前言一、Object类二、Cloneable接口 前言 今天在进行使用clone方法时产生了一个疑问,为什么Object类明明有clone()方法,但为什么还要加上cloneable这个接口呢,下面我们就来解答一下为什么要重写clone()方法非要加上cloneable接口&a…

Ant Design 表单基础用法综合示例

Ant Design 的表单组件设计得非常出色,极大地简化了表单开发的复杂度,让开发者能够快速构建出功能丰富、交互友好的表单界面。 接下来总结一下 Ant Design 中表单的基本用法。 Form 组件 用于定义整个表单,可以设置表单的布局方式、提交行为等。通常会将表单字段组件嵌套在 F…

Meta宣布全新训推一体加速器:完全集成PyTorch 2,性能3倍提升

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 Meta 疯狂砸入数十亿美元,一部分招揽人才,一部分造芯片。 Meta 正在不…

用户状态保持机制-Session

0、业务需求 会话:web应用中的会话是指一个客户端浏览器和服务器之间连续发生的一系列请求和响应的过程。 会话状态:web应用中的会话状态是指web服务器与浏览器在会话过程中产生的状态信息,借助会话状态,服务器能够把属于同一会话…

1572. 【基础赛】涂色(paint)

1572. 【基础赛】涂色(paint) (Input: paint.in, Output: paint.out) 时间限制: 2 s 空间限制: 256 MB 具体限制 题目描述 Introl获得了一个N行的杨辉三角,他将每行中值为奇数的位置涂为了黑色。 Chihiro将提出M次询问,在第L…

51单片机上面的IIC协议

1、什么是IIC协议 2、模拟IIC协议 51单片机上面是没有与IIC协议相关的寄存器的(没有相关的硬件),不像串口可以配置对应的寄存器达到目的(比如修改波特率9600 or 115200),要配置IIC只能够根据用户手册里面的…

【LeetCode】单调栈类题目详解

所有题目均来自于LeetCode,刷题代码使用的Python3版本 单调栈 通常针对一维数组的问题,如果需要寻找一个元素右边或者左边第一个比自己大或者小的元素的位置,就可以使用单调栈,时间复杂度为O(n) 单调栈的本质是空间换时间&#…

[AIGC] Spring中的SPI机制详解

文章目录 1. 什么是SPI2. Spring中的SPI机制3. Spring SPI的工作流程4. Spring SPI的应用 1. 什么是SPI SPI (Service Provider Interface)是Java中服务提供者接口的缩写,它是Java提供的一种用于被第三方实现或扩展的接口,SPI的作…

2024 年最新前端工程师使用 Webpack 模块打包工具详细教程(更新中)

概述 Webpack 模块打包工具 Webpack 是一个现代的静态模块打包工具,用于将前端应用程序的各种资源(例如如:JavaScript、CSS、图片等)视为模块,并将它们打包成可以在浏览器中运行的静态文件。它的主要功能包括模块打包…

对 FileReader 的理解

1、文档 FileReader - Web API 接口参考 | MDN 2、概念 FileReader 对象是一个内置的 JavaScript 对象,用于在客户端(浏览器)中异步读取文件内容。 它提供了一种在 Web 应用程序中读取文件数据的方式,可以读取文件内容并将其转…

跟TED演讲学英文:The next grand challenge for AI by Jim Fan

The next grand challenge for AI Link: https://www.ted.com/talks/jim_fan_the_next_grand_challenge_for_ai? Speaker: Jim Fan Date: October 2023 文章目录 The next grand challenge for AIIntroductionVocabularyTranscriptSummary后记 Introduction Researcher Jim…

MySQL事务、主从、分库分表常见面试题

文章目录 1.事务的特性2.并发事务问题,如何解决,默认隔离级别3.undo log和redo log的区别4.事务中的隔离性是如何保证的(解释一下MVCC)5.主从同步原理6.分库分表 1.事务的特性 2.并发事务问题,如何解决,默认…

2022年蓝桥杯省赛软件类C/C++B组----积木画

想借着这一个题回顾一下动态规划问题的基本解法,让解题方法清晰有条理,希望更多的人可以更轻松的理解动态规划! 目录 【题目】 【本题解题思路】 【DP模版】 总体方针: 具体解题时的套路: 【题目】 【本题解题思…

压缩列表ziplist

目录 1压缩列表的结构 2.压缩列表节点的构成 previous_entry_length encodeing conent 3.压缩列表API 1.创建列表 ziplistNew 2.正向遍历 ziplistNext 3.反向遍历 ziplistPrev 4.插入元素 ziplistInsert 5.级联更新 __ziplistCascadeUpdate 6.删除节点 7.查找entr…

L2-2 巴音布鲁克永远的土(二分+并查集)

思路:我们可以二分答案,然后判断当前答案合不合理。 对于判断答案合理,可以用并查集,看mid能否把所有检查点连进一个集合中,枚举每个结点,如何当前结点周围的四个方向可以连的话,就加进同一个集…

host文件nginx代理 综合理解

之前一直理解得很糙 导致遇到问题很迷糊 今天经过大佬两句话讲明白了 特此记录 host文件 首先host做了代理 也就是对浏览器的DNS寻址做了拦截 具体原理可以参照当我们在地址栏输入URL的时候浏览器发生了什么 例如127.0.0.1 www.baidu.com 将 127.0.0.1 www.baidu.com 链接自…

DHCP抓包分析

DHCP动态路由配置协议,是C/S架构,由DHCP服务器为客户端动态分配IP信息。 DHCP客户端首次接入网络数据交互过程: 如何解决IP地址的冲突: ▫ DHCP服务器端:收到DHCP DISCOVER报文时,给客户端分配IP地址前会发…