如何将全波形反演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

相关文章

基于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底层实现:基于红黑

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav