FISTA解决地震反演问题 [WIP]
-
迭代收缩阈值算法(Iterative shrinkage-thresholding algorithm, ISTA)是一种用于信号处理和图像重建的优化算法。
本文将介绍ISTA算法原理和其处理地震反演问题的实际应用。
优化问题
梯度下降
-
对于一个线性变换问题,其中和已知,为未知噪音,我们需要求解。
本质上这就是一个线性回归问题,从线性回归可知我们可以使用梯度下降解决这个问题。
-
梯度下降会带来新的问题,对于无约束的优化问题
若实函数在点处可微且有定义,梯度下降总是认为在点沿着梯度相反的方向下降最快。
所以当连续可微时,若存在一个足够小的数值使得
则有。
梯度下降核心便是通过式2找到序列,使得。
显然,此时初值的选取成了关键,即梯度下降可能陷入局部最优,同时的选取(机器学习中的学习率)也是关键,太小会导致迭代太慢,太大会导致无法收敛。
Seismic impedance inversion based on cycle-consistent generative adversarial network
- DOI:10.1016/j.petsci.2021.09.038
- 由于地震数据的短缺严重影响深度学习的方法和性能。该文提出一种基于cycleGAN的阻抗反演方式来提取未标记数据中包含的信息。
CAUC: Combining Channel Attention U-Net and Convolution for Seismic Data Resolution Improvement
-
地震分析和解释对数据分辨率很敏感。由于复杂的自然环境和有限的采集技术,原始地震数据分辨率通常较低。但地震子波的频率带宽是可调的,所以根据这些特征来提高数据的分辨率是可行的。本文提出了一种通道注意U-Net和物理卷积组合(CAUC)算法来增强地震数据的分辨率。
地震反演基本知识
基本概念
-
地震数据
波向地下传播时,由于地下结构不同导致地震波会反射回地表,通过在地表设置检波器收集到的波数据即为地震数据。
-
速度模型
在地震反演中,我们用速度模型来描述地下地质结构,不同的介质波的传播速度不一样,故而可以由速度模型反推介质成分。
-
波阻抗(Impedance)
波阻抗等于速度乘密度,波阻抗越大代表要产生单位振动速度所需的应力越大。
-
反射系数
反射系数代表地震波在地下不同介质界面上发生折射、反射的能量损失程度。计算公式为
其中代表波阻抗。
-
地震褶积
其实就是子波和反射系数进行卷积运算,一般是在时间域进行运算。本质是把反射系数序列作为一个函数,是地震波传播的数字信号模拟。可以理解为地震波在地下垂直传播过程,在经过不同界面时和反射系数进行叠加。
Identity Mappings in Deep Residual Networks
-
深度残差网络表现出很好的分类准确率,该文是作者在原始ResNet的基础上分析了残差块背后的数学原理。
残差块
Deep-learning seismic full-waveform inversion for realistic structural models
-
传统方法需要初始模型且计算量大,该文使用共炮点集合和共检波器集合进行特征提取,并进一步反演获得速度模型。
Mapping full seismic waveforms to vertical velocity profiles by deep learning
-
传统方法大多尝试将完整数据映射为二维标签,这在处理复杂地下结构时存在局限性。该文利用CNNs学习共中心点道集(CMP)数据道一维速度记录的映射。
Pyramid Scene Parsing Network
-
这是一种基于整合全局上下文信息的金字塔池化模块的网络架构,根据全局先验信息能够有效地进行图像分割。
金字塔池化
-
在深度神经网络中,感受野的大小决定了使用上下文信息的能力。常用的池化例如全局平均池化(GAP)利用全局信息进行池化,但在复杂场景下表现并不好,作者希望能够有一个基于子区域的全局上下文信息表示,于是提出了金字塔池化的概念。
在金字塔池化模块中,特征图先经过池化操作(使用自适应平均池化)进行下采样,再进行上采样(使用二次线性差值)得到新的特征图并与原特征图拼接。
同时金字塔池化融合了四个比例的特征(默认是[1, 2, 3, 6])。
四、PyTorch—自定义反向传播
-
在神经网络 —— 损失函数 & 反向传播中已经介绍了反向传播的基本概念。
反向传播的本质就是条偏导链,通过最后的loss值往前逐层计算梯度,更新权重。
在
PyTorch
中,使用loss.backward()
便是执行反向传播的过程,不过本文的重点主要是了解如何自定义反向传播过程。一般来说,有两种情况我们需要用到自定义反向传播:- 引入了不可微的函数,此时需要自定义求导方式;
- 希望在偏导链中引入新的约束(类似损失函数的惩罚项)。