基于GRU神经网络的测井曲线重构
2020-06-03曹俊兴尤加春
王 俊 曹俊兴 尤加春
(成都理工大学地球物理学院,四川成都 610059)
0 引言
测井资料作为连接地震与地质的桥梁和纽带,在油气勘探中发挥着至关重要的作用。实际应用中,由于井壁垮塌、仪器故障等因素,经常会造成部分测井数据失真或缺失,为后续解释工作带来一定困难。而重新测井不仅价格昂贵,且对于已经完井的井眼甚至不可能实现。为此,探索测井曲线重构方法,对失真或缺失井段的测井数据进行校正或重构以增加测井解释的准确性具有重要的意义。理论上可用多元回归分析等方法[1-2]实现测井曲线重构,但因地下地质情况的复杂性很难用确定性的函数表达[3],故基于统计分析的测井曲线重构通常精度较低,难以满足测井数据精确解释和储层精细描述的需求。
近些年发展的机器学习技术理论上可以刻画输入与输出数据之间的强非线性映射关系,已被广泛应用于初至拾取、地震数据重建等[4-7],为测井曲线的重构提供了新的手段。很多研究者尝试使用传统的全连接神经网络方法生成测井曲线[8-10]。该方法能够较好地挖掘测井数据之间的复杂非线性映射关系,但这些传统神经网络方法与统计分析类似,构造的是一种点对点的映射,重构得到的测井数据只与处于同一深度的其他测井信息有关,而忽略了待重构测井曲线随储层深度变化的趋势及历史数据之间关联性。由于地层的沉积作用是时序渐变的,而测井曲线是地层沉积特征的响应,具有一定的时序特征。循环神经网络(Recurrent Neural Network,RNN)是一种典型的深度神经网络(Deep Neural Network,DNN)结构,相比于全连接神经网络,其最大的区别在于各隐藏层单元之间相互并不独立,各个隐藏层神经元之间不仅相互联系,而且当前隐藏层单元的状态还受历史输入数据的影响,这个特性使其能够很好地提取数据结构的时序关系。已有学者初步运用其进行了测井曲线的人工合成[11],取得了比传统方法更好的效果。
深度学习的概念最早由Hinton等[12]提出,是目前机器学习学科发展最蓬勃的分支。深度学习通过构建具有多个隐藏层的深度神经网络模型,利用大量数据训练学习数据间的复杂有效信息。它能够从简单特征中自动提取复杂特征,且逐层越来越抽象,从而建立高维映射关系,以解决复杂的非线性问题。目前,深度学习主要有常规的全连接DNN、解决序列化问题的RNN、解决空间结构问题的卷积神经网络(Convolution Neural Network,CNN)及可用于数据生成的生成式对抗神经网络(Generative Adversarial Networks,GAN)等。深度学习已在机器翻译、自然语言处理[13-14]等领域成功应用。近年来,很多研究者将深度学习技术应用于测井解释与地质储层预测[15-17]。
RNN是一种解决序列数据问题的神经网络,不同于其他DNN结构,此结构考虑了历史样本对未来样本的影响,单个神经网络的隐藏层不仅连接当前神经网络下一层的输入,而且连接到下一个神经网络的隐藏层。长短期记忆网络(Long Short Term Memory Networks,LSTM)是一种特殊的RNN,相比DNN和传统的RNN能更准确地学习时序数据中的长期依赖性关系,解决了需要人工提取时序特征的问题,但该方法存在收敛速度较慢等问题。门控循环单元(Gated Recurrent Unit,GRU)神经网络是在LSTM基础上改进优化的神经网络,它具有更快的收敛速度,并具有与LSTM相当的准确率,目前在测井曲线重构以外的领域应用较为广泛[18-19],但尚未见到应用于测井曲线重构方面的研究。
测井数据具有序列化的数据结构,其变化趋势具有重要含义。此外,由于测井曲线的采样间隔相对较小,测井曲线中存在长期相关性,而GRU网络具有良好的长期记忆可很好地处理这些问题。基于此,本文提出利用基于RNN的GRU网络重构测井曲线,通过TensorFlow框架建立重构模型,利用实测数据进行验证,并与多元线性回归(Multiple Linear Regression,MLR)分析方法进行对比分析,结果表明,GRU神经网络取得了良好的重构效果。
1 重构方法与模型
1.1 多元回归分析
多元回归(Multiple Regression,MR)研究的是一个因变量与多个自变量之间的回归问题[20]。回归分析的基本思想是:虽然自变量与因变量之间没有严格的、确定性的函数关系,但可以设法找出最能代表它们之间关系的数学表达形式。在测井曲线校正或重构问题中,影响目标曲线的曲线往往不止一条,因此可用MR对其进行分析重构,其中最为简单、常用的是MLR分析。
MLR分析是处理变量间相关关系的有效方法,目前已得到广泛应用。在油气地球物理勘探中,不同的测井曲线往往反映不同的地层性质,如地层岩性、物性和含油气性等,彼此之间存在一定的相关性,很难用单一函数描述测井曲线之间的数学关系。尽管运用MLR能有效地建立简单的测井曲线之间的关系,可较好、便捷地重构缺失或失真的测井曲线,同时也能够清楚地表达各曲线之间的亲疏关系,但随着地质影响因素的增多,地层岩石物理特性之间的关系越来越复杂,仅通过MLR已难以精确描述各测井曲线之间的相关性[21],其应用效果往往差强人意。
1.2 RNN网络
RNN是专门处理序列和变长数据的深度学习模型[22],虽然链式结构的RNN对数据具有记忆功能,在一定的上下文环境中,可根据输入序列得出输出序列,但是其可以获取的上下文信息有限。因为在使用过程中,普通RNN的早期输入信号对隐藏层是有影响的。首先,随着时间的推移对输入的敏感性逐渐下降,甚至忘记之前的输入,这时就与传统神经网络区别不大[23];其次,与多层神经网络类似,随着神经元数量的增加,在反向传播过程中,RNN也会出现梯度爆炸和梯度消失等问题[24]。
1.3 LSTM神经网络
为解决传统RNN中存在的梯度爆炸、梯度消散以及长期依赖等问题,人们提出了各种改进的RNN网络。LSTM由一系列递归连接的记忆区块的子网络构成,每个记忆区块中包含一个或多个记忆细胞和三个乘法单元(输入门、输出门和遗忘门),可以对记忆细胞进行连续的写、读和重置操作[25-26]。LSTM单元结构如图1所示。
因LSTM具备长期学习的能力,有效地解决了梯度爆炸、梯度消散以及长期依赖问题,在各类问题中应用效果良好,已在一些领域得到了广泛应用[27-28],但由于LSTM神经网络模型的形式较复杂,因此也存在着训练、预测时间较长等问题。
图1 LSTM单元结构图ct-1 和ct为隐层节点状态; ht-1和ht分别表示前一序列和当前序列隐层节点输出; xt为当前序列隐层节点输入; f、i、j、o表示过程量; σ表示sigmoid非线性激活函数; tanh表示双曲正切函数
1.4 GRU神经网络
GRU神经网络是与LSTM功能几乎一样的网络,其内部结构单元与LSTM很相似,本质上也是使用门结构实现RNN对长短期信息的选择性记忆功能,有效地解决了时间递归过程中的梯度消失、梯度爆炸等问题[29]。GRU不仅保持了LSTM的重构效果,且训练参数较少。
在LSTM的基础上,GRU改良了“门”的设计,即将原来由三个“门”组成的细胞结构优化为两个“门”组成的细胞结构(图2),把遗忘门和输入门合成了一个单一的更新门(update gate),控制当前输入xt中哪些信息应被保留,重置门(reset gate)控制前一时刻的输出ht-1对当前输入xt的影响,同时还混合了细胞状态和隐藏状态及其他一些改动。这就使GRU网络比标准的LSTM网络更简单,计算速度更快。各参数之间的关系表述如下[30]。
图2 GRU单元结构图zt表示更新门状态;rt表示重置门状态;表示当前神经元的待定输出
更新门状态zt可由
zt=σ(Wz[ht-1,xt])
(1)
求得。zt取值越大,表示当前神经元要保留的信息越多,则上一个神经元要保留的信息越少,反之亦然。式中Wz表示更新门的权重。
重置门状态rt可用
rt=σ(Wr[ht-1,xt])
(2)
求得。当rt取值为0时,表示只需将当前神经元的输入作为输入,抛弃上个神经元传来的信息; 如果不为0(通常不为0)就表示之前的输入信息会被传递过来。式中Wr表示重置门的权重。
当前神经元的特定输出值为
(3)
GRU网络的输出值为
ht=(1-zt)ht-1+ztxt
(4)
式中“*”表示哈达玛积。
1.5 优化算法
优化算法种类较多,如随机梯度下降、AdaGrad、RMSProp、适应性动量估计(Adam)算法[31]等。随机梯度下降法简单,收敛速度快,是应用较为广泛的优化算法,但存在易陷入局部最优、难以获取最优解的缺点。Adam优化算法融合了AdaGrad和RMSProp算法的优势,不仅不需要固定的优化目标,还适用于稀疏梯度,而且会自然地执行步长回溯,具有实现简单、所需内存小、计算效率高等优点。为此,本文选用Adam优化算法。
1.6 数据预处理
为减小输入数据间数量级差别较大引起的重构误差,采用z-score标准化方法对输入数据进行标准化处理,以确保各参数处于合理的分布范围内,更容易总结出数据间的结构关系,即
(5)
1.7 基于GRU网络的重构模型
GRU重构模型的网络结构如图3所示。GRU网络包含输入层、输出层、隐藏层三个部分,其中隐藏层算法是网络的核心,是网络训练的主要研究对象。根据图3,基于GRU的测井曲线重构模型主要包括数据预处理、模型训练和预测三个部分。具体可分为以下5步。
(1)将输入测井数据采用z-score标准化方法进行预处理,划分训练集和测试集。
(2)确定GRU神经网络的结构。
第二,全面了解农村经济合作社组织对促进农村经济快速发展的意义。通过优化农村的产业结构,及时捕捉市场信息,全面了解农村经济发展的动态形势,从而为广大农民提供技术支持,指导农民按需生产。农村经济合作组织通过联合分散的农户,让其共同抵御相关风险,提升了农民的组织化程度,让农村将经济发展的大市场和小市场更好地对接起来。
(3)选择合适的激活函数和优化算法。
(4)采用训练数据集对神经网络进行训练,并检验模型的重构效果。若重构精度满足要求,则进入步骤(5);否则跳回步骤(2),并调整网络参数,直到模型满足重构精度为止。
(5)利用训练好的模型对测试数据集进行重构,然后将重构结果反标准化,得到对应的重构值。
图3 GRU网络重构框架
其中GRU网络的训练过程可细分为以下四步:
(1)前向传播计算GRU细胞的输出值;
(2)将模型输出值与实际值进行比较,反向计算每个GRU细胞的误差项,包括按时间和网络层级两个反向传播的方向;
(3)根据相应的误差项,计算每个权重的梯度;
采用重构值与实际值的均方根误差(root mean square error,RMSE)作为评价重构效果的标准
(6)
2 实际数据应用与结果分析
为了测试GRU模型的性能,进行了以下三组实验: ①某井中某一层段部分测井曲线缺失,利用该井中数据完整的测井曲线估计缺失的测井数据; ②某井中某一层段的所有测井曲线缺失,利用该井中未缺失的测井段以及邻井完整的测井曲线重构缺失段的测井数据; ③某井中整个井段某几条测井曲线全部缺失,利用剩余的几条完整测井曲线以及邻井完整的测井曲线重构缺失的测井曲线。
根据实验结果评价GRU网络根据不完整测井曲线自身的信息自动重构缺失段测井数据,评价GRU网络基于待重构井未缺失或失真层段测井曲线以及邻井信息重构测井曲线的能力,并将其与MLR方法进行分析比较。
2.1 实验准备
实验平台为深度学习框架TensorFlow1.7.0,Anaconda 3-4.1.1,scikit-lean0.19.1,Pandas0.22.0,NumPy1.14.2和Matplotlib2.1.2等,编程语言使用Python3.6。实测数据均来源于四川盆地的A、B两个探区。A1井位于A探区,测井数据为自然伽马(GR)、密度(DEN)、补偿中子(CNL)、声波时差(AC)以及泥质含量(SH)五条曲线。B1、B2、B3三口钻井位于B探区,测井资料包括GR、DEN、CNL、AC以及SP(自然电位)五条曲线。
2.2 实验
搭建的GRU网络模型包含2层GRU层,神经元个数分别为64和32;批量大小为60,即每次训练随机抽取60组数据进行网络训练;时间步长为50;学习率为0.006,学习率是网络设置的关键超参数,在最小化训练网络的损失函数时,学习率缩放了权重更新的幅度。学习率太低,训练速度会很慢;学习率太高,可能在梯度下降过程中直接跳过最低点,使网络训练发散。
2.2.1 实验一
SH曲线不是原始的测井曲线,故只是把它作为假设缺失的待重构目标曲线进行重构,即对A探区A1井缺失的DEN和AC进行重构时并未把SH曲线作为重构的原始母曲线参与重构。由于篇幅有限,文中仅对A探区A1井,B探区B1井的部分实验结果进行展示分析。
假设A1井2665~2790m井段的DEN和AC测井数据、3000~3250m井段的GR和SH数据缺失,利用该井中数据完整的其他测井曲线估计缺失的测井数据(图4)。假设B探区B1井1638~1888m井段的GR和CNL测井数据、1838~2088m井段的AC测井数据缺失,利用该井中数据完整的其他测井曲线估计缺失的测井数据(图5)。A1、B1井测井曲线重构RMSE分别见表1、表2。
图4 A1井测井曲线重构结果
图5 B1井测井曲线重构结果
表1 A1井测井曲线重构RMSE
表2 B1井测井曲线重构RMSE
2.2.2 实验二
由于篇幅有限,文中仅以B2井的部分实验结果为例进行分析。实验假设B2井2090~2287m层段的所有测井曲线全部缺失,利用该井中未缺失的层段以及邻井完整的测井曲线重构缺失段的测井数据(图6)。不同方法的曲线重构RMSE见表3。
图6 B2井缺失层段重构结果
表3 B2井测井曲线重构RMSE
2.2.3 实验三
假设B1井中AC以及SP两条测井曲线全部缺失,利用该井其他完整测井曲线以及邻井测井曲线重构缺失的测井曲线(图7)。B1井测井曲线重构RMSE见表4。
图7 B1井缺失曲线重构结果
表4 实验三B1井测井曲线重构RMSE
2.3 结果分析
从图4~图7可以看出,采用GRU网络和MLR模型进行测井曲线重构都取得了好的效果,整体趋势变化一致,基本能够反映失真或缺失层段测井曲线的变化趋势,在没有突变层段的情况下重构效果更好。但从图中不难看出,GRU模型的整体重构结果优于MLR模型,特别是在测井数据发生突变的层段(如图4中测深3005m附近的SH曲线,图5中测深1680m附近的CNL、GR曲线以及测深2065m附近的AC曲线,图6中测深2095m以及2274m附近的GR、DEN、CNL、AC以及SP曲线,图7中测深1210m附近AC曲线,测深1380m、1690m以及2070m附近的AC以及SP曲线),待重构的测井曲线在此附近阶跃式增加,并没有明显的变化,使MLR模型未能成功估计出目标测井曲线中的这一阶跃变化,生成了具有较大偏差的测井曲线。而GRU网络模型能够综合分析重构点前的输入数据对重构点处输入的影响,准确地预测到了待重构测井曲线的趋势性变化,重构效果明显优于MLR模型。
仔细观察图4~图6不难发现,由于GRU网络的长时记忆功能,在重构缺失层段测井数据的过程中,在重构或预测的初始位置,GRU网络的重构结果远比MLR模型重构结果准确,如图4中测深2665m处的DEN测井曲线、测深3000m处的SH测井曲线,图5中测深1638m处的GR、CNL测井曲线、测深1838m附近的AC测井曲线,图6中测深2090m附近层段的GR、DEN、CNL、AC以及SP测井曲线。这表明GRU神经网络的强记忆功能对于这种强非线性测井曲线数据具有较好的重构能力。
由表1~表4也可以看出,GRU网络和MLR模型在测井曲线重构中均具有较小的均方根误差,但前者明显小于后者,其中A1井部分缺失层段的GR、SH、AC、DEN曲线重构的均方根误差分别下降了32.89%、16.63%、34.10%、23.70%,B1井部分缺失层段的GR、CNL、AC曲线重构的均方根误差分别下降了45.43%、51.56%、35.01%,B2井全部缺失层段的AC、SP、GR、DEN、CNL曲线的重构均方根误差分别下降了43.89%、41.11%、21.50%、35.71%、25.95%,B1井整体缺失的AC和SP曲线重构的均方根误差分别下降了29.18%、42.96%。这些数据表明,利用GRU网络比MLR模型重构结果的精度更高,稳定性更强,与实测值的一致性更强。
MLR分析建立的是同一层段的输入与输出测井数据之间的非线性映射关系,以挖掘数据中未知的、潜在的信息,进而实现失真或缺失层段测井曲线估算的目的。由于MLR只考虑了测井曲线之间的非线性关系,而未考虑测井数据随测深的变化而变化的特性,因此当输入的测井数据没有整体的突变而输出测井数据出现突变的情况下,基于MLR建立的模型重构结果会出现较大的偏差。
GRU网络模型属于动态的深度学习模型,具有独特的门结构设计、状态反馈和记忆功能,其内部网络节点的状态演化对应于测井数据随深度变化的趋势和前后关联的动态变化特性。在GRU网络结构中,每个循环神经单元内都存在一个能够重复使用该单元的自循环结构,这一结构使先前的信息得以保留并可再次使用。这就使GRU网络不但能充分利用测井曲线之间的非线性特性,还能学习到测井曲线随测深变化的特性。测井曲线重构结果不但基于当前层段的数据,还受浅层段数据的影响。GRU网络能更有效地提取输入数据中蕴含的事先未知的复杂信息。因此,利用GRU网络模型进行测井曲线重构具有比MLR更高的稳定性和准确度。
3 结论
本文介绍了一种基于门控循环单元神经网络的测井曲线重构方法。该方法从测井数据出发自动寻找测井曲线之间的强非线性关系,无需人工提取时序特征,避免了传统经验公式和统计分析重构的局限性。将其应用于实际测井曲线重构,并与多元回归分析方法对比。结果表明,本文方法对缺失段的测井曲线重构具有较高的准确性和鲁棒性。在对一些缺少关键测井资料的老井进行复查时,该方法也可为其提供一定的技术支持。
尽管本文提出了基于门控循环单元神经网络的测井曲线重构方法,且取得了一定的效果,但重构的测井曲线不可能完全符合地层的真实情况,与真实曲线之间的亦存在一定的偏差。而且本文仅采用了单一的深度学习模型,尚未与其他深度学习模型结合应用,因此模型改进以及多模型混合运用,以进一步提升模型重构效果,有待后续深入研究。