1. 引言
在全球能源需求不断增长的背景下,致密气作为一种非常规天然气资源,受到广泛关注[1]。由于其储层特性复杂,产水量的准确预测对有效开发和管理至关重要。然而,传统预测方法往往难以应对致密气藏的非线性特征和不确定性。近年来,深度学习技术,尤其是LSTM (长短期记忆)神经网络,在时间序列预测领域表现出色。LSTM通过其独特的门控机制,能够捕捉长时间依赖关系,适用于处理复杂的时序数据。
前人在致密气井产水量预测上开展了诸多研究,刘世常通过绘制气藏视地质储量变化曲线计算地质储量,再将地质储量代入视地质储量法中便可反推出产水量[2];徐国伟使用生成动态资料和物质平衡方法相融合构建了气井产水量预测模型[3];冯强汉采用了多元线性回归法建立地层水含量预测模型,对指导苏里格气田戏曲开发具有重要意义[4],但是以上研究方法在模型的预测精度上依旧存在不足,因此本文将构建一个基于LSTM的预测模型,以提高预测精度和泛化能力。本文的创新点在于结合LSTM模型与致密气藏特性,提出了一种新的预测方法,通过数据预处理进一步提升数据集的整体质量,再通过超参数优化,建立更为准确的致密气井产水量预测模型。基于LSTM的致密气井产水量预测模型流程图如下图1所示。
2. LSTM的理论基础
2.1. 基本原理
LSTM的基本原理是通过引入cell状态和门控制来解决RNN在长序列中训练时梯度消失的问题(图2)。
2.2. 基本结构
LSTM的基本结构可以分为五个部分:遗忘门、输入门、Cell状态、输出门和隐藏状态。
(1) 遗忘门(Forget Gate)
遗忘门的功能是控制上一时刻的隐藏信息哪些应该舍弃。遗忘门的机制是通过一个sigmoid层,输入
Figure 1. Flow chart of the water production prediction model for tight gas wells
图1. 致密气井产水量预测模型流程图
Figure 2. LSTM flow chart
图2. LSTM流程图
当前输入和前一时刻的隐藏状态,输出一个0到1之间的值,对应每个信息单元的保留比例。计算公式为:
(1)
(2) 输入门(Input Gate)
输入门的功能是控制当前时刻的输入信息哪些可以添加。输入门的机制是包含一个sigmoid层和一个tanh层[5]。sigmoid层控制哪些值需要更新,tanh层生成新的候选值。计算公式为:
(2)
(3)
(3) Cell状态(Cell State)
Cell状态的功能是负责信息的存储和传递,相当于大脑的记忆模块,基于遗忘门和输入门的输出结果,不断添加或丢弃信息,结合新信息生成新的cell状态。计算公式为:
(4)
(4) 输出门(Output Gate)
输出门的功能是控制哪些信息可以输出到当前候选隐藏状态,输出门的机制是通过一个sigmoid层决定输出部分,再通过tanh激活后的cell状态调整,最终生成当前时刻的隐藏状态。计算公式为:
(5)
(5) 隐藏状态(Hidden State)
当前时间步的输出,传递到下一时间步和整个网络的输出。将输出门的输出结果和细胞状态的信息进行融合,生产最终的隐藏状态,通常用于下一时刻或最终的预测结果。计算公式为:
(6)
3. 数据预处理
3.1. 数据来源
为了保证模型建立的可靠性和真实性,本研究从PG气藏中获取到了P101-2H井组的实际生产数据。数据的时间是从2010-01月至2020-02月,共计3712条数据。选取特征字段有油管压力、套管压力、油管温度、套管温度、日常气量、日产水量。选取字段中的部分数据如表1所示。
Table 1. Characteristic field data of P101-2H well group in PG gas reservoir
表1. PG气藏P101-2H井组特征字段数据
日期 |
油管压力 |
套管压力 |
油管温度 |
套管温度 |
日产气量 |
日产水量 |
2010-01-10 |
34.50 |
0 |
33.5 |
9.0 |
11.5885 |
7.22 |
2010-01-11 |
33.40 |
19.8 |
43.1 |
18.0 |
48.0859 |
28.1 |
2010-01-12 |
33.00 |
24.0 |
46.0 |
24.0 |
49.6904 |
10.2 |
… |
… |
… |
… |
… |
… |
… |
2020-01-18 |
10.00 |
0.80 |
28.2 |
21.5 |
18.1548 |
16.51 |
2020-01-19 |
9.80 |
1.00 |
29.0 |
21.4 |
18.2753 |
16.62 |
2020-01-20 |
9.70 |
1.00 |
29.8 |
22.5 |
17.8663 |
16.73 |
3.2. 数据清洗
(1) 缺失数据处理
没有高质量的数据,就没有高质量的数据挖掘结果,数据缺失是数据预处理中经常遇到的问题之一。缺失数据的存在使得数据集丢失了大量有用信息,增加了数据集的不确定性,从而导致模型的准确性降低。
在进行缺失数据处理之前,我们先要对本研究的数据集进行缺失数据识别,根据缺失数据的数量来选择适合本研究的处理方法。首先,采用Pandas库中的df.isnull()方法,用于检测DataFrame中的缺失数据,返回值为布尔型,再将返回值的结果进行可视化分析,结果如图3所示。
由上图可以看出,缺失数据占比不足3%,可直接对缺失数据进行舍弃,舍弃之后再次对数据集进行缺失数据识别,结果如图4所示。
Figure 3. Dataset missing data display diagram
图3. 数据集缺失数据展示图
Figure 4. The display diagram of the dataset after missing data processing
图4. 数据集缺失数据处理后展示图
(2) 异常数据处理
异常数据处理是数据预处理中的一个重要步骤,主要目的是为了提升数据集质量以及模型的预测精度。因此,基于缺失数据的处理结果对异常数据进行校正处理,才能构建高质量的数据集。同样,在进行异常数据处理之前需要进行异常数据的检验,本文使用的是四分位距法(IQR)对异常数据进行识别[6]。每个特征因素异常数据识别结果如下图所示。
由图5可以看出,油管温度和日产气量包含异常数据较多,常用的异常数据处理方法有直接删除法和填补法,考虑到本研究数据集为时间序列,直接删除对数据集整体的有效性产生影响。因此,本文
Figure 5. Display of abnormal data in the dataset
图5. 数据集异常数据展示图
采用中位数填补法对异常数据进行处理,处理之后的结果如下图所示。
通过图6可以看出,经过异常数据的处理,油管温度和日产气量中大部分的异常数据都成为了正常数据,保留少量异常值是正常的,尤其是在复杂或噪声较大的数据集中。
3.3. 数据归一化
归一化是数据预处理中的一种常用技术,旨在将数据按比例缩放,使之落入一个小的特定区间,通常是[0, 1]或[−1, 1]。这个过程对于许多机器学习算法来说是非常重要的,因为它可以加快算法的收敛速度,提高模型精度和稳定性,特别是在处理不同量纲或量级的特征时。数据归一化公式为:
其中,
为数据归一化之后的结果,
、
分别代表各个特征因素中的最小值和最大值。归一化之后的部分数据如表2所示。
3.4. 特征选择
特征选择是根据对目标值影响的重要程度对特征因素进行筛选,主要目的是为了去除冗余数据,简化数据集,从而提升模型的性能和效率。本文用到的特征选择方法是皮尔逊相关性分析。
皮尔逊相关性分析法是用于衡量两个变量之间线性关系紧密程度的统计量,其取值范围在−1到1之间,其中1表示完全正相关,−1表示完全负相关,0表示没有线性关系。分析的结果如图7所示。
根据上图可以看出,影响因素中对日产水量影响程度最大的是油管压力,影响程度最小的是油管温度。因此,本文选取油管压力、套管压力、套管温度和日产气量作为影响气井日产水量的主控因素来建立模型。
4. 模型建立
本章将采用LSTM神经网络模型来建立致密气井产水量预测模型。首先,通过确定超参数范围来。接着,使用处理好的数据集对模型进行训练并可将结果进行可视化分析[7]。然后,将模型关键的超参数进行调优,减小模型预测结果与真实日产水量数据之间的误差。最后,对本研究建立的基于LSTM致密气井产水量预测模型的适用性和准确性进行评估,从而保证模型的使用性和可靠性。
4.1. 确定超参数
本文在研究LSTM模型建立时,只考虑了learning rate、batch size、number of hidden layers、units、dropout rate和epochs等较为关键的超参数,其余的超参数按照默认值取值,模型具体的超参数取值范围如表3所示。
4.2. 模型训练
将准备好的数据集划分为训练集和测试集,训练集占比80%,测试集20%,选取特征因素中的油管压力、套管压力、套管温度和日产气量作为训练集的输入,日产水量作为输出。训练集和测试集的预测结果如下图8所示。
由图9可以看出测试集的预测结果较为平稳,但在一些时间段预测值偏离实际值,存在些许误差。为了提升预测的准确度,从而确保模型预测的可靠性。因此,要对模型的超参数进一步优化。
4.3. 超参数调优
LSTM神经网络模型在预测时,通过不断调整参数,选出气井最优的参数[8]。选择尝试多组不同的
Figure 6. Display of the dataset after abnormal data processing
图6. 数据集异常数据处理后展示图
Table 2. PG gas reservoir P101-2H well group characteristic field data
表2. PG气藏P101-2H井组特征字段数据
日期 |
油管压力 |
套管压力 |
油管温度 |
套管温度 |
日产气量 |
日产水量 |
2010-01-10 |
0.381 |
0.73 |
0.69 |
0.35 |
0.46 |
0.72 |
2010-01-11 |
0.995 |
0.88 |
0.76 |
0.51 |
0.47 |
0.26 |
2010-01-12 |
0.970 |
0.83 |
0.79 |
0.56 |
0.46 |
0.52 |
… |
… |
… |
… |
… |
… |
… |
2020-01-18 |
0.237 |
0.20 |
0.49 |
0.56 |
0.43 |
0.42 |
2020-01-19 |
0.07 |
0.42 |
0.66 |
0.63 |
0.92 |
0.87 |
2020-01-20 |
0.07 |
0.44 |
0.65 |
0.63 |
0.47 |
0.08 |
Figure 7. Pearson coefficient correlation analysis results display
图7. 皮尔逊系数相关性分析结果展示图
Table 3. Hyperparameter value range
表3. 超参数取值范围
超参数 |
名称 |
取值范围 |
learning rate |
学习率 |
0.001~0.01 |
batch size |
批次大小 |
16, 32, 64, 128 |
number of hidden layers |
隐藏层数量 |
1~3 |
units |
神经元个数 |
32~64 |
dropout Rate |
丢弃率 |
0.2~0.5 |
epochs |
迭代次数 |
200 |
Figure 8. Training set prediction results display
图8. 训练集预测结果展示
Figure 9. Test set prediction results display
图9. 测试集预测结果展示
Table 4. Optimal values of hyperparameters
表4. 超参数最佳取值
超参数 |
名称 |
取值范围 |
learning rate |
学习率 |
0.01 |
batch size |
批次大小 |
32 |
number of hidden layers |
隐藏层数量 |
2 |
units |
神经元个数 |
32 |
dropout Rate |
丢弃率 |
0.2 |
epochs |
迭代次数 |
300 |
Figure 10. Training set results after hyperparameter tuning
图10. 超参数调优后训练集结果展示
参数,对模型逐一进行求解,找出其中使得相对误差最小的那组参数,作为模型的训练参数。通过超参数的组合训练,得出以下这组超参数的误差值最小,超参数的最佳取值如表4所示。
最后,使用优化之后的超参数再次训练模型,得出的训练集和测试集预测结果如图10、图11所示。
5. 结论
本文研究了基于LSTM模型的致密气井产水量预测方法,通过实际数据深入分析和实验验证,实验结果表明,该方法在实际应用中具有较高的可操作性和可靠性。证明了LSTM在处理复杂时间序列数据方面的优越性。此外,本文通过数据预处理和超参数优化,进一步提升了模型的泛化能力和预测精度。相对于前人的研究预测方法,本模型展现了更小的预测误差和更高的准确性。这主要得益于LSTM的门控机制,其能有效捕捉长程依赖和非线性关系,使模型在复杂的地质条件下依然保持稳定
Figure 11. Test set prediction results after hyperparameter tuning
图11. 超参数调优后测试集预测结果展示
的性能。总体而言,本文基于前人的研究方法并加以改进,通过数据集预处理和超参数调优,训练得到LSTM的致密气井产水量预测模型,误差较小,预测效果较好,对致密气井产水量的预测有重要的意义。