如何将全波形反演FWI与人工智能AI的神经网络做对比?

2023-10-14 10:48

本文主要是介绍如何将全波形反演FWI与人工智能AI的神经网络做对比?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.全波形反演

2.神经网络


全波形反演可以说现在被地球物理界的小伙伴做烂了,一提到全波形反演大家先到的就是高精度...各种优点,可是他却有着与人工智能的同样的缺陷,那就是计算量的限制。但是在当下,随着计算技术的不但进步,虽然有人说摩尔定律已死,但是现在各种超级计算机横空出世,我们国家的曙光、天河等位居世界前列,相信,为了得到高精度的结果,这点计算花费是值得的,今天就来简单对地球物理的全波形反演(Full Waveform Inversion)和神经网络(Neural Network)进行简单的对比。

1.全波形反演

总所周知,全波形反演其实就是数学方法的堆叠(其实大部分的科学研究最终都要归功于数学,但是为什么没有诺贝尔数学奖呢?这个故事留给大家自己搜索)。全波形反演的流程其实非常简单:建立数据和模型的非线性关系是要点。假如数据为D,模型为M,他们之间的关系是A,那么简单的关系就是:

AM=D

A说白了就是人类一直研究的自然规律(突然想起一句话:世间万物都是由分子构成“来自《大灌篮》”),地球物理学的常用规律是动力学和运动学理论,前者是波动理论,后者是旅行时理论,同时,当参数出现误差时候,方程就转变成了:

A\Delta M=\Delta D

这里的\Delta D就是数据误差,其实就是波形反演中观测数据与模拟数据之间的误差,\Delta M就是模型误差,就是我们需要更新的模型参数更新量。通常研究过程中加入修正量,叫做bias(偏置):

A\Delta M = \Delta D + bias

这个变量的引入通常会产生一定的修正作用,我们常说到的井约束等信息等。

人类法则是人类从自然法则中获取的一个无线接近于自然法则的定律。

2.神经网络

神经网络的原理大同小异,但是他的区别在于“人类法则”未知,需要通过大量的数据进行训练才能获取的一种规律。

y = ax + b

将其写成神经网络的通用符形式为:

y = wx + bias

其中w为权重,bias为偏置。

如何建立这个“人类法则”的初始状态呢?这里就引入了一个叫做sigmoid函数和softplus函数的随机变量,用这个随机变量建立初始权重和偏置。

给出一个GitHub开源项目中的sigmoid函数的例子,项目名称mnist-neural-network,请大家自行搜索:

/*返回一个 正态分布的随机数*/
double
random_normal_distribution (void)
{return sqrt (-2.0 * log (drand ())) * cos (2.0 * M_PI * drand ());
}/*返回一个此范围内的伪随机数*/
int
random_integer (int min, int max)
{return min + rand () / (RAND_MAX / (max - min + 1) + 1);
}/*sigmoid函数*/
double
sigmoid_to_number (double number)
{
/*
a    sigmoid = 0     i=-9999...99
b            = 0.5   i=0
c            = 1     i=9999...99
*//* exp (double) returns a "double" value, so casting is not required */return 1.0 / (1.0 + exp (-number));
}/*sigmoid的导数*/
double
sigmoid_prime_to_number (double number)
{/* Avoid to call same function 2 times */double sigmoid_number = sigmoid_to_number (number);return sigmoid_number * (1.0 - sigmoid_number);
}

建立完整的初始状态后,就可以根据最速下降法或者其他一些数学方法计算梯度(权重)和修正量(偏置)了,这里需要一系列的神经网络划分,不同的神经网络对于训练结果也会有不同的结果。给出一个简单的神经网络实例:

这个例子是手写数字识别的网络划分,每个手写字体有28*28=784个像素,最终的输出只有0~9数字。

这篇关于如何将全波形反演FWI与人工智能AI的神经网络做对比?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210000

相关文章

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

exfat和ntfs哪个好? U盘格式化选择NTFS与exFAT的详细区别对比

《exfat和ntfs哪个好?U盘格式化选择NTFS与exFAT的详细区别对比》exFAT和NTFS是两种常见的文件系统,它们各自具有独特的优势和适用场景,以下是关于exFAT和NTFS的详细对比... 无论你是刚入手了内置 SSD 还是便携式移动硬盘或 U 盘,都需要先将它格式化成电脑或设备能够识别的「文

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑