本发明属于地球物理勘探和机器学习领域的一种基于测井曲线深度学习的泥砂分层检测方法,具体涉及到dbn在测井岩性解释中的研究与应用。
背景技术:
测井解释就是将测井信息加工解释成地质信息,以往大多通过数学方法建立解释模型来完成这项工作。测井在油气勘探中被比喻成人的眼睛,测井解释的核心就是确定测井信息和地质信息之间的关系,利用测井信息来确定储层岩性、储层流体性质和储层参数。
但是在目前,钻井取芯仅限于某些层段,不能获取整个工区内的储层参数。所以现在一些未知地区的储层参数主要是依靠地质学家们通过以往经验建立的数学公式来预测,经验公式或简化地质模型对于一般地质储层参数的获取有一定的指导意义,但对于解决复杂隐蔽地质问题,特别是泥砂分层问题还是有很大的局限性。
深度学习是大数据时代下发展起来的自动特征提取与预测方法,已经成功应用于语音识别、人脸检测与目标追踪等领域,但是很少有在石油勘探领域的应用。
技术实现要素:
本发明的目的为克服现有泥砂分层问题上存在的不足,提供了一种能够更简单高效地确定岩性特征以及提高岩性识别分类精度的基于测井曲线深度学习的泥砂分层检测方法。
本发明的技术方案是:
一种基于测井曲线深度学习的泥砂分层检测方法,
首先,要获取训练模型所需要的数据,所需要的训练数据和测试数据都应该是同一工区内的测井数据;
其二,把输入的测井数据输入深度信念神经网络dbn中,建立了一个应用于泥砂分层方面的dbn网络模型,初始时的网络模型分为3层;其中,输入层为包括自然伽马、密度、声波和中子测井数据;网络输出层由2个分别代表泥层和砂层的神经元组成,相邻两层即组成一个受限玻尔兹曼机rbm;隐层神经元激活函数采用s型函数,深度学习模型中每层神经元激活值作为原始数据新的特征表达,输出层各个神经元输出只能无限接近1和0,而不能达到1和0;
其三,rbm在网络学习之前需要先进行无监督的预训练,确保特征向量映射到不同的特征空间,尽可能多的保留特征信息。
上述方案还包括:
a)深度学习模型预训练:dbn网络在进行训练之前将每两层网络节点作为一个rbm进行岩性检测深度学习模型配置参数的无监督预训练,其中,所述配置参数包括模型深度、模型每层神经元节点数以及神经元激活函,而并不是将网络权值设置为任意随机值;
b)深度学习参数微调:通过a)中预训练后,网络中的神经元节点之间的网络权重参数已经初始化,而并不是随机初始化,将自然伽马、密度、声波、中子测井数据和泥岩、砂岩标签分批输入dbn网络模型进行有监督的训练,进行网络训练的时候需要不断调整网络的中间层数,即除了输入层和输出层外的中间层数据,初始中间层数为1、中间层神经元个数、神经元激活函数以及学习率,最终保留能够使学习效果最好的网络结构;
c)预测同工区内未进行录井的井中岩性:通过b)中获得网络训练预测模型,然后输入想要预测的自然伽马、密度、声波、中子测井数据,通过训练好的dbn预测模型预测出其相对应的泥岩和砂岩分类的隶属度,泥岩和砂岩分类的标签是一个在[0,1]范围内的浮点型数据。
所述泥岩和砂岩分类的标签分别是一个在[0.99-0.01]和[0.01-0.99]范围内的浮点型数据
所述rbm是一种两层基于能量的随机神经网络,除了同层的双向连接之外具有与经典玻尔兹曼机相似的结构;由一组输入节点组成的rbm输入层被表示为可见层(v),由一组隐藏节点组成的rbm输出层被表示为隐层(h),设定vi和hj分别表示可见节点的第i个值和隐藏节点的第j个值,权重矩阵w表示双向权重,矢量c和b分别表示可见层和隐藏层的偏差,
所有rbm的w、c和b通过rbm的顺序训练来确定,即第一个rbm中的输入节点根据dbn模型的输入产生,然后根据学习算法生成第一个rbm中的输出节点;第一个rbm中的输出节点被认为是第二个rbm的输入节点,通过重复该过程来确定所有的dbn参数,rbm的能量函数表示为
其中wij是连接变量vi和hj的双向权重,ci和bj分别是第i个可见和第j个隐藏节点的偏差,v和h是表示相连的两层,可见和隐藏节点的每个潜在组合的状态概率可以表示为sp(v,h),
其中
可能的组合;
对于给定的一组可见节点,隐藏节点的所有可能状态的概率为sp(v)
计算出log(sp(v))相对于wij、ci和bj的导数,以更新权重矩阵wij和偏差ci和bj
其中带<·>的表示所有训练的期望数据,
在等式(4)中<vihj>data由等式(7)计算得到
<vihj>data=sp(h|v)vt(7)
其中sp(h|v)表示在已知可见节点v时隐藏节点h的状态概率,由等式(8)得到
训练数据作为输入产生一组初始化的可见节点{v},隐藏节点{h}的状态由等式(8)计算出来,然后根据等式(7)计算出<vihj>data,计算得到等式(4)中的<vihj>model由等式(9)计算出
<vihj>model=sp(v′|h′)v′t(9)
在更新隐藏节点{h}的状态之后,可见节点{v′}的状态由sp(vi|h)来描述
然后再根据等式(8)更新隐藏节点{h′}的状态以及根据等式(9)得到<vihj>model。
进一步的,用于更新权重矩阵的学习算法描述为
wk+1=wk+δw=wk+η(<vh>data-<vh>model)(11)
其中η表示该算法的学习效率,wk表示第k个步长时的权重矩阵,可见节点的偏差c和隐藏节点的偏差b更新给出等式,
ck+1=ck+δc=ck+η(<v>data-<v>model)=ck+η(v-v′)(12)
bk+1=bk+δb=bk+η(<h>data-<h>model)=bk+η(h-h′)(13)。
通过反向传播神经网络进一步微调dbn模型的权重矩阵,微调过程旨在最小化均方误差(ems),定义为
其中yp(i)和ye(i)分别为第i个预测值和实验值,n是样本数。
在微调过程中,采用ems的反向传播来更新权重矩阵,权重矩阵的更新方程为
wk+1=wk+δw=wk+αdk(15)
其中α为微调算法的学习率,dk表示ems梯度下降最大的方向,
反向传播算法的收敛条件给出,
其中β是一个足够小的正参数,k是反向传播算法的迭代次数。
本发明的有益效果是:将深度学习方法引入了泥砂分层中,应用于泥砂分层方面的dbn网络模型。相对于传统的采用公式建模的方式能在已有的属性中发现更多隐藏的信息,解决了泥砂分层定性分析问题,在检测模型训练好后,能够根据一口井的自然伽马、密度、声波、中子4种测井数据得出其相对应位置的泥岩和砂岩,泥岩和砂岩不是简单的由0,1表示,输出层神经元输出只能无限接近1和0,而不能达到1和0,分别代表其属于泥层和砂层的概率,泥砂分层的岩性标签是一个在[0,1]范围内的浮点型数据,大小表示其属于泥层和砂层的隶属程度,可以更精确的表示它的岩性特征。该方法利用深度学习能从已有的特征中发现并组合数据内部的特征以及基于所述岩性检测深度学习模型及所述目标层位,获得所述目标层位学习的高层特征,低层特征属于局部性特征,高层特征是低层特征的非线性组合,属于抽象的结构性特征,高层特征更具有区分性及类别指示性。本发明将深度学习引入地震勘探领域,能够更简单高效地确定岩性特征以及提高岩性识别分类精度。
附图说明
附图1是本发明一种基于测井曲线深度学习的泥砂分层检测方法实施例的流程图;
附图2是本发明的神经网络期望输出编码图;
附图3是dbn模型结构图;
附图4是rbm模型结构图。
具体实施方式
下面将结合本发明说明书附图,对本发明的具体实施方案进行详细描述:
图1是基于测井曲线深度学习的泥砂分层检测方法的流程图,本预测方法分为三个阶段,具体包括:
a.深度学习模型预训练12:本发明的dbn网络在进行训练之前将每两层网络节点作为一个rbm进行岩性检测深度学习模型配置参数的无监督预训练,其中,所述配置参数包括模型深度、模型每层神经元节点数以及神经元激活函数等,而并不是将网络权值设置为任意随机值,这样可以明显提高网络在后面进行有监督学习时的学习效率。
b.深度学习参数微调13:本发明通过a中预训练后,网络中的神经元节点之间的网络权重参数已经有了一个比较好的初始化,而并不是随机初始化,将准备好的自然伽马、密度、声波、中子4种测井数据和泥岩、砂岩标签属性分批输入dbn网络模型进行有监督的训练,进行网络训练的时候需要不断调整网络的中间层数、中间层神经元个数、神经元激活函数以及学习率,最终保留能够使学习效果最佳的网络结构14。
c.预测同工区内未探明岩性的井中岩性15:本发明通过b中获得网络训练预测模型,然后输入想要预测测井数据的自然伽马、密度、声波、中子4种测井数据属性,通过训练好的dbn预测模型预测出其相对应的泥岩和砂岩分类的隶属度。泥岩和砂岩分类的标签是一个在[0,1]范围内的浮点型数据,而不是简单的0、1表示,可以更精确的表示它的岩性特征。
图4是本发明的rbm模型结构图,rbm是一种两层基于能量的随机神经网络,除了同层的双向连接之外具有与经典玻尔兹曼机相似的结构。因此,它被称为限制玻尔兹曼机。由一组输入节点组成的rbm输入层被表示为可见层(v)。由一组隐藏节点组成的rbm输出层被表示为隐层(h)。如图4所示,vi和hj分别表示可见节点的第i个值和隐藏节点的第j个值,权重矩阵w表示双向权重,矢量c和b分别表示可见层和隐藏层的偏差。
所有rbm的w、c和b可以通过rbm的顺序训练来确定。第一个rbm中的输入节点根据dbn模型的输入产生。然后根据学习算法生成第一个rbm中的输出节点。第一个rbm中的输出节点被认为是第二个rbm的输入节点。然后,可以通过重复该过程来确定所有的dbn参数。rbm的能量函数可以表示为
其中wij是连接变量vi和hj的双向权重,ci和bj分别是第i个可见和第j个隐藏节点的偏差。可见和隐藏节点的每个潜在组合的状态概率可以表示为
其中
可能的组合。
对于给定的一组可见节点,隐藏节点的所有可能状态的概率为,
可以计算出log(sp(v))相对于wij,ci和bj的导数,以更新权重矩阵和偏差。
其中<·>表示所有训练的期望数据。
在等式(4)中<vihj>data可以由等式(7)计算得到,
<vihj>data=sp(h|v)vt(7)
其中sp(h|v)表示在已知可见节点v时隐藏节点h的状态概率。可以由等式(8)得到,
训练数据作为输入产生一组初始化的可见节点{v}。隐藏节点{h}的状态可以由等式(8)计算出来。然后根据等式(7)可以计算出<vihj>data,现在的关键问题是计算得到等式(4)中的<vihj>model,<vihj>model可以由等式(9)计算出,
<vihj>model=sp(v′|h′)v′t(9)
在更新隐藏节点{h}的状态之后,可见节点{v′}的状态可以由sp(vi|h)来描述,
然后再根据等式(8)更新隐藏节点{h′}的14状态以及根据等式(9)得到<vihj>model。
用于更新权重矩阵的学习算法可以描述为,
wk+1=wk+δw=wk+η(<vh>data-<vh>model)(11)
其中η表示该算法的学习效率,wk表示第k个步长时的权重矩阵。同时,可见节点和隐藏几点的偏差更新可以给出等式,
ck+1=ck+δc=ck+η(<v>data-<v>model)=ck+η(v-v′)(12)
bk+1=bk+δb=bk+η(<h>data-<h>model)=bk+η(h-h′)(13)
所有rbm由上述无监督学习算法训练。但由无人监督的学习算法提供的训练不足以满足精度要求。因此,通过反向传播神经网络进一步微调dbn模型的权重矩阵。微调过程旨在最小化均方误差(ems),定义为
其中yp(i)和ye(i)分别为第i个预测值和实验值,n是样本数。
在微调过程中,采用ems的反向传播来更新权重矩阵。权重矩阵的更新方程为,
wk+1=wk+δw=wk+αdk(15)
其中α为微调算法的学习率,dk表示ems梯度下降最大的方向。
反向传播(backpropagation,bp)算法的收敛条件可以给出,
其中β是一个足够小的能够得到可接受预测结果的正参数,k是bp算法的迭代次数。
以上所述,仅是本发明的较佳实施例,任何熟悉本专业的技术人员可能利用上述阐述的技术方案加以改型或变更为等同变化的等同实例。凡未脱离本发明技术方案内容,依据发明的技术方案对上述实施例进行的任何简单修改、变更或改型,均属于发明技术方案的保护范围。