于志刚 辛小军 范远洪 宋文江 张德政
(1.中海石油(中国)有限公司湛江分公司;2.中法渤海地质服务有限公司)
油田投产后, 油层本身的能量被不断消耗,同时层间压力也在不断减小,导致油田产量大幅降低。 为了提高油田的采收率,必须对油田进行注水[1~3]。 目前,国内油田始终坚持“注好水,注够水,精细注水”的原则[4~6],但普遍存在注采失衡的问题。 因此,对油田注水流量的预测研究具有十分重要的实际意义。
近年来,深度学习已经成为机器学习领域一个热门的研究方向,被广泛应用于时间序列数据的预测[7,8]。门控循环单元(GRU)是深度学习领域一个非常受欢迎的模型, 目前已被用于解决电力、交通及养殖业等领域的问题。 文献[9]提出了一种将随机森林(RF)与GRU神经网络相结合的风电预测模型, 针对气象信息与风电的因果关联,将融合特征输入GRU网络提取时序联系进行风电预测,并基于真实数据集验证了所提模型的有效性; 文献 [10] 分别采用循环神经网络(RNN)、长短期记忆(LSTM)和GRU 3种模型对鱼塘中的溶解氧含量进行了预测,结果表明GRU和LSTM的预测能力相近, 但GRU针对参数设置和模型训练更简便、快捷,总体上性能更优;文献[11]利用生态浮标监测数据,分别建立了单隐层和双隐层两种不同隐层的人工神经网络(ANN)模型对叶绿素a (Chl-a) 浓度进行了预测; 文献[12] 基于双层GRU神经网络和飞蛾火焰优化(MFO) 算法提出了一种新型自动驾驶行为决策方法,实验表明,该方法在汽车自动驾驶的行为决策方面比现有的方法准确性更高。
由于注水流量数据具有一定的周期性,且当前注水量受上一时刻注水量的影响,为了充分利用该特性,提高注水流量预测精度,笔者考虑采用GRU神经网络模型进行注水流量预测。 但是以往采用GRU模型对水力发电站的水流、油田特高含水期产量、股票走势及交通流量等的预测研究大多采用单一隐层的神经网络结构,其拟合能力虽强,但对主要信息的特征提取能力较差。
因此,笔者利用国内某油田注水井的历史注水数据,建立了单隐层和双隐层两种GRU模型对注水流量进行预测,通过对比两种不同隐层的预测结果来证明深度学习在注水流量预测效果上更具优势。
GRU神经网络模型是在RNN模型的基础上进行改进得到的。 作为一种强大的深度学习网络,RNN与其他神经网络有所不同, 它对前面的信息有一种独特的“记忆”功能[13],同时,RNN之所以被称为循环神经网络,是因为在RNN的网络结构(图1)中,一个时间序列当前时刻的输出值与前一时刻的输出值具有相关性,网络会记忆前一时刻的输出信息并直接应用到当前时刻输出的计算中, 即隐含层之间的节点是有连接的,且当前时刻隐含层的输入不仅包括输入层的输出还包括上一时刻隐含层的输出。
图1 传统RNN结构
GRU神经网络和LSTM神经网络都是在传统RNN的基础上改进得到的, 由于独特的结构设计,常被用于处理与时序相关的重要事件。 LSTM单元结构中包含3个门结构,分别是输入门、遗忘门和输出门。 与LSTM不同,GRU模型单元结构更加简单,只有2个门结构,分别是重置门rt和更新门zt(图2)。 图中,xt表示输入,ht代表t时刻隐含层的输出,ht-1代表t-1时刻隐含层的输出, h~t表示候选隐含层信息。 由于结构简单,算法运算的复杂程度也随之降低,模型更容易训练,且在预测表现上与LSTM模型效果相当,因此笔者选择GRU网络结构来构建注水流量预测模型。 当样本信息输入GRU模型时,根据设定的规则来判断输入样本里哪些是有用的信息,哪些是没用的信息,有用的信息留下,没用的信息会被丢弃。 通过引入门结构,在一定程度上解决了RNN反向传播过程中存在梯度消失或梯度爆炸的问题[14]。
图2 GRU单元结构
首先通过更新门和重置门的计算来确定当前时刻的隐含层状态和当前的记忆内容。 当前时刻的输入xt和上一时刻隐含层输出ht-1分别与权重矩阵W、U相乘,相加之后再利用sigmoid激活函数将结果压缩在0~1之间。 如果zt趋于0,则说明上一时刻隐含层输出将被遗弃,反之,若趋于1,则保留。 更新门和重置门的输出为:
sigmoid函数为:
rt用来控制遗弃或保留上一时刻的记忆内容, 如果rt为0, 那么~只包含当前时刻的输入信息:
tanh函数为:
zt决定需要从上一时刻的隐含层中遗弃多少信息,需要加入多少当前时刻的候选隐含层信息~,最后得到ht:
为了提高模型对输入样本信息主要特征的提取能力,提高模型预测的精度,拟对GRU神经网络模型的隐含层结构进行改进,结合所研究的油田注水流量预测问题,给出改进后的GRU神经网络结构(图3)。 隐含层的设置是用来更好地处理层间关系, 使神经网络具备学习训练的功能,但过多的隐含层会直接导致神经网络计算量增大、训练时间变长等负面问题,甚至导致预测能力降低,发生过拟合现象[11,15]。 因此经过多次试验,综合模型的预测效果,采用了双隐层的GRU结构,同时设置不同的神经元节点个数,对试验结果进行对比。 输入层代表采集到的注水历史流量样本输入,输入变量的个数设置为3个,即油压p1、套压p2和实际流量值Qt。在注水流量预测中,输出层的输出变量个数设置为1,即预测流量值Qp。
图3 双隐层GRU网络结构示意图
注水量主要受压力、 温度等多重因素的影响, 但由于同层井间温度上下浮动变化不明显,所以对预测结果造成的影响可以忽略不计,因此样本数据主要采集了影响注水量的其他两种因素,即油压、套压。 将国内某油田注水井的单层历史注水数据作为样本数据 (图4) 进行处理和分析,该层井深1 036.3 m,选取时间段为2015年11月12日12时54分至2015年11月12日13时58分,数据采集间隔为5 s,共采集到样本数据776组。
图4 注水井某一时段单层历史注水数据
为了降低模型仿真训练的难度,提升网络训练的速度,同时为避免因输入样本数据过大导致的数值问题, 首先要对样本数据进行预处理,由于样本数据中不存在极端的最大值或最小值,因此采用归一化处理,将数据缩放至[0,1]的范围内。 归一化公式为:
其中,x′为归一化后的值;xmax、xmin分别表示历史注水数据中的最大值和最小值。
所选取的数据集共包含776组样本数据,试验时将前676组数据作为训练集,后100组数据作为测试集。 模型在注水流量上的预测结果,采用平均相对误差(MRE)和均方误差(MSE)进行评价,误差越小,表明预测结果越准确,评价公式为:
其中,Qp表示预测流量值,Qt表示实际流量值。
在模型训练过程中,合适的训练方法和优化器的选择对模型训练的效果和预测的准确度也有很大的影响。 为了避免训练样本数据输入过多导致模型训练速度过慢, 甚至出现过拟合的现象,考虑采用小批量的训练方法,批量大小设置为5, 即按照时序每批输入5组样本数据进行训练。 对于优化器的选择,为了能加快模型的收敛速度,选用了常见的Adam优化器,与其他优化算法有所不同,该优化算法不需将学习率设定为常数,算法在优化过程中会计算神经网络每个参数的自适应学习率[16]。并采用Dropout方法来防止出现过拟合,丢弃率设为0.5。 每次试验设置的迭代次数均为100次。 具体算法流程如图5所示。
图5 基于GRU网络模型的预测算法流程
为了更直观地进行对比验证, 首先搭建了RNN、LSTM和GRU 3种预测模型分别对训练集样本数据进行训练、测试集数据进行预测,并利用评价指标MSE对3种模型的评价结果进行评估(表1)。从表1中可以看出,LSTM和GRU两种模型的预测误差非常接近,均小于RNN。 且在图6中,可以更加直观地看出,LSTM和GRU两种预测模型的拟合度更高, 且两种模型的预测效果也基本吻合。但是,由于GRU在结构上进行了简化,这使得它在模型训练过程中消耗的时间更短,提高了试验的整体效率。
表1 不同神经网络模型预测效果对比
图6 不同神经网络模型测试集预测结果对比
在试验过程中, 不同隐含层神经元节点数的设置会对模型的预测结果造成一定影响。 如果隐含层神经元节点数设置过少, 网络对输入信息主要特征的提取能力会相对减弱, 导致预测误差偏大;如果节点设置过多,极易出现过拟合现象,造成模型最终泛化能力降低(表2)。 通过对两种不同隐含层的神经元节点数进行反复试验,单隐层GRU网络结构为3-10-1时预测效果最好(即输入层节点数设置为3个,隐含层节点数为10个,输出层节点数为1个),测试集的平均相对误差为0.050 4, 双隐层GRU结构为3-6-6-1时预测效果最好, 测试集的平均相对误差为0.024 5。
表2 GRU不同隐层和节点设置对测试结果的影响
利用预测效果最好的单隐层(3-10-1)和双隐层 (3-6-6-1)GRU模型分别对训练集和测试集样本数据进行预测结果对比,结果如图7所示。 结果表明, 无论是训练集仿真值和实际值的对比,还是测试集预测值和实际值的对比,单隐层和双隐层GRU模型都能够较好地预测注水流量的变化趋势。
图7 不同隐层GRU模型训练集仿真和测试集预测效果
单隐层GRU模型676组训练集样本仿真MSE为0.073,100组测试集样本预测MSE为0.084;双隐层GRU 模型676 组训练集样本仿真MSE 为0.038,100组测试集样本预测MSE为0.055。
通过对两种不同隐层GRU模型预测结果的对比发现:双隐层GRU模型无论是对训练集的仿真还是对测试集的预测效果都比单隐层GRU的效果更好。 双隐层GRU模型训练集仿真的MSE比单隐层下降了0.035 m3/d,测试集的MSE比单隐层下降了0.029 m3/d。这说明双隐层结构GRU模型在对输入信息主要特征提取方面的能力要优于单隐层结构GRU模型,因此也有效地证明了深层学习在实际应用中的优越性。
4.1 利用国内某油田注水井历史注水数据作为样本数据,采用RNN、LSTM、GRU 3种神经网络对注水流量进行了预测,结果表明GRU神经网络总体上具有更优的性能。
4.2 搭建了两种不同隐层结构的GRU油田注水流量预测模型,通过对两种不同隐层GRU模型预测结果的对比和分析得出:双隐层结构较单隐层结构有更强的主要信息特征提取能力,预测精度也更高。
4.3 通过对历史注水数据进行仿真和预测,表明了GRU神经网络在油田注水流量预测方面的可行性和优越性。 在实际的油田注采中,基于深层GRU神经网络的预测模型对油田注水流量进行预测有着很好的应用前景。