基于深度学习卷积神经网络的地震数据随机噪声去除

2018-12-13 00:58韩卫雪周亚同
石油物探 2018年6期
关键词:曲波训练样本卷积

韩卫雪,周亚同,池 越

(河北工业大学电子信息工程学院,天津300401)

地震数据去噪是提高地震资料信噪比的重要步骤,去噪效果好坏直接影响后续地震数据处理的质量[1]。机器学习技术发展迅猛,作为机器学习的一个分支,深度学习和卷积神经网络在AlphaGo人机对弈[2]和网络大数据分析[3]等领域取得了巨大的成就。如何利用深度学习及CNN的强大功能去除地震数据噪声,是地震数据处理领域面临的课题之一。

常见的地震数据去噪方法有:f-k域滤波、f-x域预测滤波、小波变换去噪、曲波变换、低秩约束去噪等。中原敏明等[4]在频率波数域内设计不同的滤波器,对地震数据进行f-k二维滤波。康冶等[5]提出一种f-x域拟线性变换并用于去噪。刘婷婷等[6]将f-x域EMD和多道奇异谱分析结合用于去除地震数据随机噪声。张华等[7]研究了地震数据去噪时小波基的选择问题。王姣等[8]提出了一种改进的小波阈值随机噪声去除算法。LI等[9]提出基于小波高阶相关叠加的混合去噪算法并用于去除随机和相干噪声。孙成禹等[10]提出基于独立分量分析基的地震随机噪声压制。刘成明等[11]将Shearlet变换用于地震随机噪声压制。CHEN等[12]和ZHOU等[13]分别采用经验化和结构化矩阵低秩约束实施去噪等。刘伟等[14]实现了基于压缩感知和TV准则约束的地震资料去噪。上述去噪算法虽然取得了较好的应用效果,但在去噪性能或去噪效率方面仍然存在一些不足,因此探究新的去噪算法具有重要意义。

基于以上考量,本文构建一种适合于地震信号去噪的CNN,并将之用于地震数据随机噪声的去除。该CNN由输入层、卷积层、激活层、归一化层、输出层组成,其中激活层选用修正线性单元(ReLU)[17]作为激活函数,归一化层采用批归一化(BN)[23],以原始含噪地震数据作为输入,以随机噪声作为输出。CNN的训练过程是首先初始化网络,然后利用原始地震数据训练集及其对应的含噪数据集进行网络训练,直至得到网络结构的最优参数。网络的去噪过程为:将含噪地震数据输入训练完成的网络,利用残差学习得到与输入层对应的残差数据,该残差即为所含随机噪声。最后通过实际叠前海上数据、叠后陆地数据以及复杂陆地叠后地震数据进行去噪实验,验证本文去噪算法的可行性,并且与其它几种常见去噪算法相比,验证本文算法的去噪效果。

1 深度学习卷积神经网络简介

传统神经网络,如BP神经网络或径向基神经网络等,每层的神经元节点是全连接的,而在CNN中各节点局部连接,并且同一层的某些神经元的连接权重共享,这种结构更类似于生物神经网络,因此CNN网络模型复杂度更低,权值数量更少,这对于深度学习有重要意义[24]。典型的CNN的拓扑结构如图1所示。

图1 典型的卷积神经网络拓扑结构

CNN的典型网络拓扑结构通常包括输入层、卷积层、池化层、全连接层及输出层等。待处理数据作为网络输入层;卷积层作为特征提取层,每个神经单元的输入与前一层的局部感受野相连接,并提取局部特征,从而确定该局部特征与其它特征间的位置关系;池化层作为特征映射层,每个特征映射为一个平面,上面每个神经单元的权重相同;全连接层将每个局部特征进行组合,从而得到全局特征;输出层则需要根据网络的具体用途和网络结构确定。CNN因为具有局部连接和权值共享两个特点,有效减少了网络中的自由参数,提高了网络训练的效率,有利于提升地震数据去噪效率。

2 基于CNN的地震数据随机噪声去除

地震数据去噪是从含噪地震数据中去除噪声,恢复原始地震数据,具体公式如下:

(1)

式中:x为含噪地震数据;y为不含噪原始地震数据;v为所含噪声。地震数据去噪的最终目标是获得原始地震数据的一个估计y0,且y0≈y。

本文借鉴原本用于图像去噪的CNN结构[19],构建一种用于去除地震数据随机噪声的CNN。CNN最终能输出随机噪声R(x)≈v,用含噪地震数据x减去随机噪声R(x)即可获得原始地震数据的估计,即y0=x-R(x)。由含噪地震数据得到的随机噪声估计值与其期望值的均方差平均值为[19]:

电网调度工作较复杂,事关全局,必须加强监督管理的力度。改变原来的靠人管人的监管为靠制度管人,明确责任分工负责。将出票、审票、操作等各个环节纳入严格的监督管理之中,确保每个环节都不出纰漏。

(2)

2.1 地震数据去噪CNN的隐藏层

CNN隐藏层通常包括卷积层、激活层、归一化层。卷积层是多个特征面的组合,每个特征面上有多个神经元,而每个神经元通过卷积核与上一层的特征面局部连接,其中卷积核是一个权值矩阵。卷积层的主要作用是提取地震特征,其每一种输出的特征gj有:

(3)

设CNN激活层的激活函数为f(·),本文采用修正线性单元(ReLU)作为激活函数,对应的计算公式如下[17]:

(4)

ReLU激活函数如图2所示,图中横坐标u为CNN上一层网络的输出,纵坐标f(u)为当前网络层的输出。从图中可看出如果输入u>0,则该激活函数输出与输入相等,否则输出为0,因此输出不会因为输入的增大而趋于饱和。

除了卷积层和激活层,归一化层也是CNN隐藏层的一部分。本文的归一化层采用批归一化(BN)[23],具体原理为:在每一层网络输入时插入一个归一化层,即将输入数据进行归一化处理,之后再进入网络的下一层。在CNN网络中加入BN,能够减缓内部协变量转移,降低对初始化权重的敏感度,加快收敛的同时提高训练精度。

2.2 地震数据去噪CNN的具体拓扑结构

本文构建的CNN充分考虑了含噪地震数据与残差数据间的关系,即不仅建立起由含噪地震数据到残差数据的映射,而且也建立起由含噪地震数据到所含随机噪声的映射。图3为用于地震数据去噪的CNN具体拓扑结构。

如图3所示,以含噪地震数据作为CNN的输入层。图中拓扑结构的第一部分为C1:第一层卷积层的卷积核大小为3×3,经过卷积操作后得到64个特征映射。然后将特征数据的加权和输入激活层的激活函数ReLU,用于去除地震数据中的冗余,尽可能保留数据特征。图中拓扑结构的第二部分C2包括15个卷积层,每个卷积核大小均为3×3,卷积操作后得到64个特征映射。与C1不同的是,C2在卷积层与激活层之间添加了一个批归一化层,用于加快并稳定训练过程,提升去噪性能。图中拓扑结构的第三部分C3只包含一个卷积层,卷积核大小为3×3,经过卷积操作得到1个特征映射,即为网络的输出层。

图3 用于地震数据去噪的CNN具体拓扑结构

2.3 地震数据去噪CNN的特点

本文构建的CNN具有以下特点:

1) 网络输入和输出:通常网络的输出数据要求与输入数据大小相同,而如果特征数据与卷积核直接进行卷积操作,则会减小下一层特征数据的大小。为避免此种情况,本文在卷积操作前为特征数据扩展边界,直接补零至与输入数据相同大小,从而保证输出数据大小与输入数据一致,同时避免了边界数据伪影现象。

2) 残差学习[25]:CNN结合残差学习,构建一个由含噪地震数据到残差数据的非线性映射,平凡网络会因网络深度的增加导致训练误差随之增大,而加入残差学习的网络更加便于优化和控制误差范围。本文构建的CNN在增加网络深度时更易于提高训练精度,在地震数据去噪时也能够保留更多的数据波动特征。

3) 网络优化算法:本文采用自适应矩估计[26]作为网络参数优化算法。该算法通过计算梯度的一阶矩估计和二阶矩估计,动态调整不同网络参数的学习速率,确定每次迭代学习速率的范围,使得网络参数变化平稳,网络本身能够自适应学习。并且该算法对内存需求较少,缓解了机器运行压力。

2.4 训练样本数量对CNN去噪性能影响的验证

本文以原始不含噪叠前和叠后地震数据集作为训练样本集,借助MatConvNet工具箱[27]训练CNN,

并使用图形处理单元(GPU)提高训练速度[28]。实验在一台CPU主频为2.40GHz、GPU为NVIDIA GeForce 920M、内存为8GB、Microsoft Windows 10家庭中文版、64位操作系统的个人笔记本电脑上进行,运行环境为MATLAB(R2014b)。分别采用均方误差MSE、输入信噪比SNR_IN、输出信噪比SNR_OUT、峰值信噪比PSNR等指标定量衡量去噪算法的性能,上述指标的定义分别为:

式中:SNR_IN为含噪地震信号的信噪比(输入信噪比);SNR_OUT为含噪地震信号去噪后的信噪比(输出信噪比);y为不含噪原始地震数据;y0为去噪后的地震数据;y1为添加噪声后的地震数据;N代表地震数据的采样点总数;‖·‖2代表L2范数。

利用Marmousi地震数据进行去噪实验,以检验训练样本数量对去噪性能的影响。选用的Marmousi数据共有256道,每道含256个采样点。在该数据中,人为添加均值为0、噪声水平为幅值9.8%的加性高斯白噪声。设置两种去噪方案,方案一采用400个地震数据作为样本训练CNN,每个地震数据的道数为200,每道含200个采样点;方案二采用200个地震数据作为样本训练CNN,每个地震数据的道数为200,每道含200个采样点,两种方案均经过50历元(epoch),1个epoch等于使用训练集中的全部样本训练一次。两种方案的PSNR和MSE比较如图4所示。

图4 不同数量的训练样本下CNN去噪性能对比a PSNR对比; b MSE对比

图4表明方案一的峰值信噪比更高,均方误差更低,去噪性能优于方案二,这说明训练样本数量大一些,CNN去噪性能会好一些。但在实际应用中并不是训练样本越多越好,因为随着训练样本增多,网络训练速度会变慢。对于本文算法而言,方案一已经能达到预期的去噪效果,因此在后文的去噪实验中训练样本的数量均选定为400个。

3 地震数据去噪实验结果及分析

下面采用本文去噪算法分别对实际叠前海上数据、叠后陆地数据以及叠后复杂陆地数据进行去噪,并与常规的去噪算法如小波变换去噪、双树复小波变换去噪、曲波变换去噪进行比较。实验中训练样本集采用与第2.4节相同的数据集进行CNN训练。如果待去噪地震数据的噪声水平(事先预估)发生变化,需要重新训练CNN网络。

3.1 实际叠前海上地震数据随机噪声去除

在南海某地采集的原始含噪叠前海上数据如图5a 所示。该数据共240道,单道含800个采样点,经过预处理已去掉了除随机噪声以外的所有噪声,且幅值已归一化至[0,1]。从图中可看到,虽然不含有其它噪声,但双曲反射同相轴被随机噪声严重覆盖。首先对地震数据进行噪声水平估计,然后分别采用4种算法对其去噪,去噪效果如图5b到图5e所示,图5f 为CNN输出的随机噪声。

由图5b到图5e可看出,小波变换去噪后的地震数据仍然有噪声残留,同相轴模糊。与小波变换去噪相比,双树复小波变换与曲波变换的去噪效果要好一些,同相轴更加清晰,但是局部仍残留有少量噪声。与上述3种算法相比,采用本文CNN去噪算法去噪后噪声基本无残留,同相轴清晰连贯,更多的局部细节得以保留。

3.2 叠后陆地地震数据随机噪声去除

新疆某地叠后陆地地震剖面中的一段如图6a所示。该段剖面数据共200道,单道含600个采样点,事先已经过预处理去除了噪声。为了定量比较分析各算法的去噪效果,在该段数据中人为添加均值为0、噪声水平分别为数据幅值20%,25%,30%的加性高斯白噪声。其中噪声水平为20%的含噪数据见图6b。分别采用4种算法对其去噪,去噪效果如图6c~图6f所示。表1为4种去噪算法的性能指标对比。

图5 叠前海上地震数据的不同去噪算法结果对比a 预处理后的含噪叠前数据; b 小波变换去噪; c 双树复小波变换去噪; d 曲波变换去噪; e CNN去噪; f CNN输出的随机噪声

图6 叠后陆地地震数据的不同去噪算法结果对比a 预处理后的叠后地震数据; b 添加20%噪声后的数据; c 小波变换去噪; d 双树复小波变换去噪; e 曲波变换去噪; f CNN去噪

表1 叠后陆地地震数据的不同去噪算法性能指标对比

由图6c~图6f可见,CNN去噪算法的效果要明显优于小波变换与双树复小波变换去噪。与曲波变换相比,二者均有良好的去噪效果,但CNN去噪后的剖面上同相轴更清晰。

表1更加直观展现了4种去噪算法的去噪性能。在不同的噪声水平σ下,本文CNN去噪算法的SNR_OUT和PSNR最大且MSE最小,这意味着CNN去噪能力最强,接下来依次是曲波变换、双树复小波变换和小波变换。

3.3 叠后复杂陆地地震数据随机噪声去除

图7a为新疆某地原始含噪叠后地震剖面中的一段。该段数据共200道,单道含450个采样点,已经过预处理去掉了除随机噪声以外的噪声。首先对地震数据进行噪声水平估计,然后分别采用4种算法对其去噪,去噪效果如图7b~图7e所示,图7f为CNN输出的随机噪声。

图7 叠后复杂陆地地震数据的不同去噪算法结果对比a 预处理后的含噪叠后数据; b 小波变换去噪; c双树复小波变换去噪; d 曲波变换去噪; e CNN去噪; f CNN去除的随机噪声

对比图7b,图7c,图7d和图7e可看出,4种去噪算法都有一定去噪效果,但小波变换和双树复小波变换去噪后的地震数据仍有噪声残留,且靠近同相轴区域比较明显。CNN去噪与曲波变换去噪效果相比于前2种算法有了较大改善,剖面上已无明显噪声残留。但曲波变换去噪的结果过于平滑,波动特征损失较多。而CNN去噪局部细节保留得更完整,同相轴清晰,整个剖面显得干净。

4 结论

为了更有效地去除地震数据的随机噪声,本文提出了一种基于深度学习卷积神经网络(CNN)的地震数据随机噪声去除算法,是将深度学习用于地震信号处理的一种尝试。算法的关键在于构建一个适合于地震数据去噪的CNN,该CNN由输入层、卷积层、激活层、归一化层、输出层等构成,采用残差学习方式,辅之以ReLU和BN归一化,使得CNN的训练精度较高,保留了更多的原始数据细节。地震数据去噪实验表明:CNN能有效去除地震数据随机噪声,无论是从主观定性还是客观定量方面衡量,与常规地震数据去噪算法如小波变换、双树复小波变换以及曲波变换等相比,具有更强的去噪性能。下一步的工作是探讨CNN的地震数据去噪计算效率,分析CNN去噪时的泛化能力,探索更有效的训练样本集构建方式,并尝试用CNN去除面波和多次折射波等非随机噪声。

猜你喜欢
曲波训练样本卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
林海雪原(五)
人工智能
林海雪原(三)
从滤波器理解卷积
林海雪原(四)
基于傅里叶域卷积表示的目标跟踪算法
基于曲波变换的地震随机噪声压制新方法
宽带光谱成像系统最优训练样本选择方法研究
融合原始样本和虚拟样本的人脸识别算法