智能代理在油藏建模中的应用

2020-04-01 07:20SHAHKARAMIAlirezaMOHAGHEGHShahab
石油勘探与开发 2020年2期
关键词:人工神经网络渗透率油藏

SHAHKARAMI Alireza,MOHAGHEGH Shahab

(1.圣费朗西斯大学,俄克拉荷马73104,美国;2.西费吉尼亚大学,西费吉尼亚州摩根敦 26506,美国)

0 引言

尽管计算机硬件技术近年来不断进步,但依然不能满足工程和科学领域解决实际问题的需要,模型模拟计算成本极高,在计算工程和科学问题中,代理模型计算成本更加低廉,可代替高保真模型[1-2]。随着现代硬件(如图形处理器)的开发,复杂的深度学习技术逐渐进入代理建模领域,代理建模在材料科学[3]、计算固体力学[4]、天气模拟[5]、生命科学[6]、计算物理学[7]、计算化学[8]等领域都得到了广泛的应用。在大多数应用中,代理模型是在监督学习模式下开发的,基于数据库对机器学习模型进行训练,该数据库的数据来源于基础模型模拟过程中产生的有效数据信息[2,9-10]。

在地下空间建模和地球科学领域中,代理建模是辅助油藏数值模拟的有效手段。在石油和天然气行业中,油藏模型多用于模拟不同条件下流体在地下多孔介质中的流动,广泛应用于油藏管理工作流,用于预测油井产量、优化注水方案、部署加密井、认识油井/油藏间连通情况等。为了使油藏模型更加精确可靠,工程和油藏研究人员通常要对其进行校准(即历史拟合)[11]。采用校准后的模型研究不同的作业方案,分析输入和输出数据的敏感性,并评估作业方案中的不确定性。以上工作需要通过基础油藏模型的大量模拟来实现,通常这些模型的运算非常昂贵且耗时,本文认为开发一套油藏模拟模型的智能代理模型有助于油藏模型的充分利用,同时可以大幅降低运算成本。

人工神经网络(ANN)已广泛应用于代理模型,以实现油藏管理的目的。尽管ANN具有黑箱特性,但可以利用ANN学习复杂数据库的非线性规律,解决地下领域的许多问题。ANN在油藏管理工作流程中的应用实例包括产量预测[12]、布井、异常探测、注蒸汽等。本文采用文献[13-14]中的数据库将 ANN应用于两个油藏建模的案例,第1个案例采用ANN建立的代理模型来预测井底压力和产量,重点在于历史拟合;第 2个案例采用 ANN快速预测特定地层的相饱和度和压力分布等储集层动态特征。通过与盲数据库结果对比,以证明ANN在油藏快速建模应用中的优势。

1 数据和方法

代理模型是以数据为驱动的,图1描述了开发代理模型的一般机器学习工作流程。在主题专家(Subject Matter Expert)的帮助下,数据专家/工程师需要分析具体问题和已知数据。在机器学习和模式识别中,预处理步骤(包括分析数据及数据库建立)要求从已知的原始数据中提取油藏特征。该步骤对数据进行处理并获取额外信息,同时在开发模型前剔除数据库中的冗余数据。处理过的数据库将用于开发机器学习模型,机器学习算法的选择主要取决于已知数据的质量和数量以及研究目标。本文两个案例采用前馈人工神经网络进行研究,该算法具有能处理复杂非线性数据、对异常数据容忍度良好以及适用范围广的特点。ANN性能介绍以及在石油工程中的应用见文献[15]。

图1 开发数据驱动代理模型的工作流程

开发油藏地质模型代理模型的一般流程包括设计基础油藏数值模拟、建立时空数据库、特征选择、建立机器学习模型、盲验证以及利用代理模型进行分析。代理模型可近似作为三维油藏数值模型。确定本文两个案例研究目标后,设计几种基础油藏数值模拟条件并开展模拟,采用拉丁超立方体实验抽样技术来覆盖解空间的不确定性。基础模型模拟的次数通常是人为确定的,如果模拟次数太多,则不适用代理模型;反之,如果模拟次数太少,提供的信息将不足以构建稳定的代理模型。根据作者使用经验,基础模拟模型非均质性较强时,模拟次数设定为10~16次。如图1所示,如果所建代理模型在验证步骤失败,则对数据库增加一组新的基础模型模拟运行。例如,在第 1个案例研究中进行了10次模拟来训练代理模型,利用新的一次模拟来验证所训练的代理模型(即盲验证),结果表明10次模拟产生了精确的代理模型。对于第2个案例,前10次模拟对代理模型进行训练,后3次模拟对代理模型进行验证,然而代理模型预测含水饱和度的绝对误差过大(大于 5%),因此在预测含水饱和度时增加了6次基础模型模拟。

基础模型模拟次数设定后,提取原始数据构建时空数据库。一般来说,研究目的影响特征选择和数据参数化,后文将通过讨论不同研究目的的案例,来说明代理模型在油藏建模应用中的灵活性。第 1个案例的研究目的是预测油井产量和井底压力;第 2个案例的研究目的是预测地层压力和相饱和度的平面分布。由于输出的属性不同,第 1个案例为基于油井的代理建模,第 2个案例为基于网格的代理建模,其特征选择方法和参数表示方法均不同。

在机器学习模型和代理模型开发过程中必须避免过度拟合,虽然过度拟合模型在数据库训练中表现良好,但不具有普适性,在处理未知数据集时效果不一定好。通常通过以下 2种方法来避免过度拟合:①训练阶段监控训练集和测试集的误差趋势,图2描述了如何在训练中选择合适的模型;②对模型进行盲验证,盲验证可确保模型没有过度拟合,并且保证模型在未知的数据上表现良好。

图2 模型训练和测试误差的比较

2 案例分析

2.1 智能代理用于辅助历史拟合

第 1个案例研究了代理模型在油藏模型历史拟合中的应用,其中使用的标准油藏模型为PUNQ-S3[16]。根据少量的 PUNQ-S3油藏模型模拟结果开发代理模型,同时考虑了孔隙度、水平渗透率和垂直渗透率分布的不确定性。多个人工神经网络组成了代理模型的预测引擎;采用未知数据对训练后的代理模型进行盲验证,然后将验证后的代理模型与差分进化算法相结合[11,15],进行自动历史拟合。

PUNQ-S3油藏模型包含5个地层,每层有19×28个网格(180 m×180 m)。油藏的东部和南部为断层,下部为水层。油藏压力低于泡点压力,油藏顶部有气顶,该油藏共钻有6口生产井。图3所示为该油藏顶部构造。为了避免过多开采气顶气,顶部两层没有射孔,其他层射孔情况如下:PRO-1井、PRO-4井、PRO-12井在第4、第5层射孔,PRO-5井和PRO-11井分别在第3层和第4层射孔,PRO-15井仅在第4层射孔。图4所示为各层垂直渗透率、水平渗透率和孔隙度的分布。基础油藏模型源文件来自文献[17],将该模型转换为CMG格式[18],已知数据包括:井点孔隙度和渗透率;地层的地质描述;前8年的生产数据;16.5年后的累计产量;现场 PVT(压力、体积、温度)数据、相对渗透率和Carter-Tracy水层特征数据;无毛管作用;油水界面和油气界面。

以基础油藏模型 PUNQ-S3[18]为基准进行数值模拟,以提取数据信息。根据井点的属性参数和地质描述,采用拉丁超立方体实验设计方法设计11次不同的油藏模拟,关于这些模拟方案的详细讨论见文献[15]。利用10次模拟对神经网络进行训练,利用第11次模拟对训练后的代理模型进行盲验证。

图3 PUNQ-S3模型的顶部构造[16]

图4 PUNQ-S3油藏模型孔隙度和渗透率分布图

从数值模拟结果中提取不同类型的数据,形成时空数据库,这个数据库包含用于训练神经网络的输入输出数据,输入数据包括井位经度和纬度、顶深、孔隙度、水平渗透率、垂直渗透率、厚度、产油量、前一个时间步的输出,输出数据包括井底压力、产气量和产水量。为了降低问题的复杂性并简化训练神经网络的数据,采用图5所示的分割分层系统。图5a为根据Voronoi图表得到的基于油井的油藏分割[19-20],在这个系统中,每口井都被分配了一个使用修正 Voronoi理论生成的泄油区域;图5b中每个泄油区又被分为4个网格层。考虑到近井地带对油井生产的影响较大,第1层只包括井筒所在网格,第2层和第3层分别由井筒所在网格周围的第 1圈和第2圈网格组成,第4层网格包含了泄油区剩余网格。计算每个网格层顶深、厚度、孔隙度和渗透率的平均值,并赋值给数据库中相应的井和网格层。

图5 PUNQ-S3油藏模型的细分

根据输出结果(井底压力、产气量、产水量)的数量,最终得到的代理模型包含 3个人工神经网络。本研究中每个人工神经网络的输入数据包括井筒所在网格的经度和纬度,每层(5个地质层和4个网格层)顶深、孔隙度、水平渗透率、垂直渗透率、厚度、产油量、前一个时间步的输出、时间。输出数据包括井底压力、产气量和产水量。每口井(及其泄油区)有60个不确定参数(5个地质层、4个网格层、3个不确定属性,即 5×4×3=60)。因此,用于微调拟合模型的不确定参数总数为360个(5个地质层、4个网格层、6口井、3个属性,即 5×4×6×3=360)。除了这些不确定参数外,数据库还包括其他信息,如元数据、地质特征、井位和操作约束等。

在人工神经网络的训练中,将数据分为3组:80%的数据用于训练,10%用于校准,10%用于验证。每个人工神经网络都有一个隐藏层,隐藏层数、隐藏神经元数和各神经网络的学习速度构成超参数,可以通过调整这些超参数来优化学习过程,在本研究中这些超参数使用默认值。

人工神经网络经过训练和验证后,可得到用于进行辅助历史拟合的代理模型。一个好的代理模型能够综合考虑油藏特征和产量约束(每一时间步的产油量)并预测输出值。得到每个时间步的输出值后,与实际生产数据历史值进行比较,并预估其目标函数(损失函数)。在本文实际生产数据研究过程中,使用均方根误差来评估预测值和实际值之间的误差,即以(1)式作为单井目标函数,以评价在单井层面上的相对误差,其中权重因子可根据数据的重要性设置。如果一口特定的井(或某一时间段)在生产过程中更重要,可以通过调整权重系数来表示该井的重要性。根据(2)式定义的全局目标函数评估油田级别的计算误差,该方程利用单井目标函数计算全局目标函数。本研究认为所有井和实测数据点同等重要,取权重因子为1。

部分井的验证结果和历史拟合结果如图6—图8所示。图6为代理模型和油藏模拟模型计算的验证数据组,包括井底压力、产气量和产水量。结果证明人工神经网络可以对未知数据组进行预测,这些未知数据是训练阶段未使用的。图7所示为PRO-1井和PRO-4井井底压力和产气量的代理模型历史拟合结果。由于历史拟合过程的非唯一性,选取了10个最佳拟合结果,(代理模型与差分进化优化算法耦合的结果),可见井底压力和产气量的历史拟合效果非常好。

图8所示为PRO-11井(唯一产水的井)产水量和累计产水量的历史拟合结果。未产水时历史拟合效果很好,但是见水后历史拟合的效果相对较差。需要指出的是,PRO-11井在生产的最后两年才出现产水,笔者认为由于产水阶段数据点少,所以用于产水预测的神经网络未发现产水动态规律。

图6 代理模型与基础油藏模型验证数据

图7 2口井井底压力和产气量的历史拟合结果

图8 PRO-11井产水量和累计产水量的历史拟合结果

2.2 智能代理用于CO2提高采收率油藏快速建模

第 2个案例研究了基于人工神经网络的代理模型在 CO2提高采收率油藏快速建模中的应用,用代理模型近似油藏模型在网格级别的输出,研究油藏特征不确定性(网格块的渗透率)、操作约束敏感性(注入井井底压力)对油藏压力和相饱和度的影响,详细的油藏模拟研究见文献[21];另一个目标是研究油田现场CO2注入50年的方案,监测1 000年期间CO2的运移情况。原始地质模型网格数量超过9×106个,为了模拟CO2封存机制,将原始模型粗化到13 600个网格,但计算成本仍然较高且耗时。本研究中油藏模拟使用的是 CMG(Computer Modeling Group)公司的 GEMGHGTM模拟器[22]。

模拟的油藏为美国德克萨斯州西部 Kelly-Snyder油田的 SACROC单元,为马蹄形环礁构造,自 1972年开始持续注入 CO2,是美国采用 CO2提高采收率最久的区域。截至2005年,注入CO2总量为9.3×107t,产出CO2约3.8×107t,物质平衡分析表明该地区已积累约5.5×107t的CO2[23-24]。本案例中的油藏模型基于Han[25]的研究建立,原始模型对提高采收率过程进行了200年的模拟(1972—2172)。本文利用200年后的压力、饱和度分布等油藏动态特征,建立了油藏基础模型,旨在模拟一个1 000年的周期(2172—3172),其中CO2在前50年间注入。模型包括25个模拟层,每层16×34个网格块,假设从2172年起,45口注入井均以恒定速率(331 801.9 m3/d)注入CO2,每口井仅射开一个层,射孔情况为:1口井在第19层射孔、40口井在第20层射孔、1口井在第21层射孔,3口井在第22层射孔。假设外部边界条件为无流动边界。图9为该单元的三维地质模型。

图9 SACROC单元油藏模型

基于CO2泄漏情况和渗透率非均质性选择9个模拟层(包括第1—第2层、第19—第25层)研究渗透率分布不确定性的影响,以及45口注入井井底流动压力的敏感性,选择射孔层顶部的第18层进行监测,利用油藏模型跟踪第18层在注入CO2期间及之后的压力分布和相饱和度分布。第18层的网格总数为544个,其中 422个网格块是活动的;白色网格厚度极薄,表示“空”网格或非活动网格。第18层的初始属性分布如图10所示,初始条件数据由原始模型获取,是油藏采用CO2提高采收率开发 200年(1972—2172)后的状态。

为了建立用于训练和验证神经网络的时空数据库,本研究设计了几个基础油藏模型的模拟方案,每个方案都调整了9个模拟层的渗透率和45口注入井的井底流动压力,基于基础模型中的渗透率范围设定渗透率分布,采用60%~100%的岩石静压作为注入井井底流压基准。在属性分布范围内,利用拉丁超立方体实验设计方法来组合输入参数值,目的是以最少的模拟次数获取最多的数据信息。渗透率的分布范围和平均值受基础模型约束,渗透率的分布在模拟中变化。假设井点位置的渗透率是已知的(取自岩心数据),利用地质统计方法(CMG-Builder中的反距离估计)可以生成渗透率的分布。图11为改变渗透率分布和注入井井底压力的过程。

本案例研究中的输入参数包括网格位置、顶部深度、孔隙度、渗透率、厚度、注入井到网格的距离、每个网格的初始压力、每个网格的初始相饱和度、注入井井底压力。输出数据包括压力分布、含水饱和度、CO2摩尔分数。每个输出属性对应一套人工神经网络,综合人工神经网络结果形成代理模型。利用10次油藏模拟训练压力神经网络,16次油藏模拟训练相饱和度神经网络,另外3次模拟用于盲验证。图12所示为第1层、第2层、第19层和第20层在13次模拟(10次训练,3次盲验证)中的渗透率分布。图13所示为 45口注入井在 13次模拟中的井底流动压力分布。

人工神经网络的训练和验证通过软件 IDEATM[26]完成,IDEATM通常用于开发油田使用的数据驱动模型。本文的两个研究案例都使用了一个隐藏层,隐藏神经元的数量遵循2n-1的经验法则,n表示输入参数的个数。采用前馈神经网络和反向传播算法进行训练,Sigmoid激活函数是 IDEATM中默认的激活算法,IDEATM能够动态地选择学习速率。如上所述,时空数据库是根据模拟运行的信息建立的,将数据库分为 3个部分:80%用于训练,10%用于校准,10%用于验证。3个神经网络完成训练后,利用盲测试来验证其鲁棒性。

图11 改变渗透率分布和注入井井底压力流程

代理模型预测的目标层(第18层)注CO2期间和注入后压力分布如图14和图15所示。CO2注入开始9年后基础模型和代理模型得到的压力分布结果对比如图14a和图14b所示,图14c为基础模型和代理模型结果的相对误差分布。图15为注入结束100年后的压力分布盲验证结果。训练组和验证组模拟的完整结果见文献[21],代理模型能够准确地预测验证组的压力分布。

图12 第1层、第2层、第19层和第20层在13次模拟中的渗透率分布

图16和图17为基础模型和代理模型得到的第18层含水饱和度分布对比,分别为CO2开始注入9年后以及停止注入100年后的结果。图16c和图17c为基础模型和代理模型预测结果的绝对误差分布,大部分绝对误差值小于3%,绝对误差最大值小于6%。

图18和图19所示为基础模型和代理模型预测的CO2摩尔分数分布对比,分别为 CO2开始注入 9年后和结束注入100年后的结果,图18c和图19c为绝对误差值分布图。与含水饱和度结果相似,大部分误差值小于3%,但最大绝对误差更大,约为10%。

图13 10次训练和3次盲验证模拟中45口注入井的井底流动压力

图14 CO2开始注入9年后基础模型和代理模型预测的目标层压力分布对比

3 讨论

图15 注入结束100年后基础模型和代理模型预测的目标层压力分布对比

在整个油藏管理工作流程中,多尺度、多相态油藏模型模拟计算量大,给油藏模拟带来很大困难[27]。基于机器学习的代理模型经过成功验证,能够在短时间内获取油藏模型模拟的结果,且单次模拟的计算成本非常低。本文介绍了两个案例研究中成功开发代理模型的步骤及得出的结果,且两个案例的目的不同,第1个案例(PUNQ-S3油藏)旨在预测井的产量和井底压力,第2个案例(SACROC单元)旨在预测油藏压力和相饱和度在注入期间和注入后的分布。

图16 注入9年后基础模型和代理模型预测的目标层含水饱和度分布对比

这两个案例测试了代理建模在油藏研究应用中的鲁棒性。研究过程中发现,代理模型与原始模拟模型相比可大幅节约计算成本。PUNQ-S3油藏模型是一个黑油模型,在12个3.2 GHz处理器集群上的单次运行时间不到5 min;利用11次基础油藏模型的模拟建立代理模型,经过验证的代理模型单次运行时间不到1 s。通过建立误差方程(1)式和(2)式,利用优化算法对不确定参数进行调整,创建自动历史拟合工作流,终止标准是1 000次代理模型调用和标准误差。在12个3.2 GHz处理器集群上运行时,单次代理模型调用、误差计算和优化算法模拟实现大约需要1 s,前文得出的历史拟合结果输出可在1 000 s内完成。此外,运行11次基础模型模拟需3 300 s(模拟11次,平均每次运行5 min),因此,PUNQ-S3油藏模型历史拟合中代理模型的开发、验证和应用的总时间为4 300 s。如果使用PUNQ-S3油藏基础模型,在相同的历史拟合工作流中,采用相同的终止标准需要 300 000 s的计算时间(1 000次模拟实现,每次模拟的平均运行时间为 5 min),代理模型可节省 98.9%的计算时间。SACROC单元油藏模型需要更长的运行时间,使用 12个 3.2 GHz处理器集群,单次油藏模型模拟平均需要 10~24 h,而使用代理模型得到前文研究结果的时间不超过几秒。

图17 注入结束100年后基础模型和代理模型预测的目标层含水饱和度分布对比

人工神经网络并不是代理建模中唯一可用的机器算法,之所以选择人工神经网络来进行监督学习,是因为它的预测精度高、对主信号以及非线性数据的学习能力强。但是人工神经网络也有一定的局限性:其黑箱特性限制了结果和算法的可解释性,且人工神经网络的训练速度相对较慢;超参数(如隐藏层的数量、隐藏神经元的数量和学习速度)的数量可能影响训练模型的准确性。从单一性能上看,可能存在比神经网络表现更好的监督学习算法:相对较新的机器学习技术,如支持向量机和增强算法在预测准确性方面都比神经网络好[28];在结果可解释性方面,决策树、随机森林和回归模型等算法表现更好;决策树和回归模型的训练速度快,但不适用于非线性问题。对于超参数的选择,可以通过执行搜索改变这些参数并比较结果,以选择最佳的超参数集,遗传算法[29]和贝叶斯优化[30]算法是最常用的超参数自动调整优化技术。值得注意的是,在本文两个案例中选择不调整神经网络超参数,以防止神经网络的训练时间大幅增加。

图18 注入9年后基础模型和代理模型预测的目标层CO2摩尔分数分布对比

另一点需要考虑的是,目前还没有确定构建完美代理模型所需的模拟次数的标准,为了确定最优运行次数,可以对代理模型的准确性与模拟运行次数进行敏感性分析。但是油藏模型的复杂性和非均质性可能会对运行次数产生影响,根据作者的经验,由于非均质油藏提供的信息比均质油藏层次高,所以均质油藏比复杂非均质油藏需要更多的运行次数。此外,数据参数化是降低问题维度的关键,在第 1个案例研究中使用 Voronoi理论[19-20]和分层系统对油藏进行参数化并减少参数数量。

图19 注入结束100年后基础模型和代理模型预测的目标层CO2摩尔分数分布对比

4 结语

开发代理模型的步骤并不是一成不变的,数据工程师应该根据地下空间建模问题的特性,有针对性地进行预处理、特征选择和模型选择。本研究的结果证明了基于机器学习的代理模型可以快速、准确地进行油藏模拟,研究结果对油藏管理工作流程中其他耗时的工作也有所帮助,如敏感性分析、产量优化和不确定性评估等。

致谢:感谢Intelligent Solutions公司提供用于开发代理模型的软件包。感谢CMG公司许可使用油藏数值模拟软件。

符号注释:

Fglobal——全局目标函数;Fi——井i的目标函数;N(i)——需要拟合的属性总数(如产油量、产气量、产水量);Nt(i,j)——总时间步数;Nw——总井数;Ys,i,j,t——代理模型预测的产量,m3/d;Ym,i,j,t——实测产量,m3/d;wt——权重因子,无因次;ΔYm,i,j——i井实测生产数据的最大值和最小值之差,m3/d。下标:i——井编号;j——属性编号;t——时间步。

猜你喜欢
人工神经网络渗透率油藏
页岩油藏提高采收率技术及展望
利用人工神经网络快速计算木星系磁坐标
人工神经网络实现简单字母的识别
中煤阶煤层气井排采阶段划分及渗透率变化
精细古地貌恢复指导隐蔽油藏勘探发现
注气驱油藏新型气驱特征曲线推导及应用
不同渗透率岩芯孔径分布与可动流体研究
SAGD井微压裂储层渗透率变化规律研究
基于改进人工神经网络的航天器电信号分类方法
模糊人工神经网络在工程建设项目后评价中的运用