文献名称
1. Data-Driven End-To-End Production Prediction of Oil Reservoirs by EnKF-Enhanced Recurrent Neural Networks
摘要:
在该文献中作者开发了一种新颖的端到端产量预测工作流程,可用于在生产开始时快速指导油藏开发。
模型的想法:将控制参数(流量和井底压力)与期望的产量直接联系起来,例如产量和含水率。
模型的优点:由于这是一个以数据驱动的端到端产量预测模型,一旦训练完成,就不需要数值迭代和梯度计算。
采用的方式:cascaded LSTM and Ensemble Kalman filter(ENKF) enhanced LSTM.
cascaded LSTM(级联LSTM):对常规LSTM的改进,它包含了一些物理量,例如 water breakthrough 。
Ensemble Kalman filter(ENKF) enhanced LSTM(EnKF增强型LSTM):具有基于实时生产数据进行数据同化的能力,因此提供了一种不断更新我们模型的方法。
数据同化:随着生产过程的进行,物理条件可能会发生变化。当前模型可能不适用于新的案例或已更新的模型变化。因此最好根据从任何生产记录中产生的实时观察值来更新我们的模型。
导言:
挑战:
对于真实的油田产量预测,挑战在于噪声以及油田中可能出现的缺失数据和异常。
对于合成数据,它可能涉及储层模拟的大维度,以及模拟过程中涉及的高度非线性和非均质性。即使使用油藏模拟的代理模型或模型简化技术,也有可能随着控制参数的变化,难以或需要特殊处理来近似新动态系统的采油速度。
技术:
统计方法:
- 传统的线性模型,如AR, MA and ARIMA
- 非线性时间序列模型,如ARCH(自回归条件异方差)和门限自回归模型。
- 参数统计方法如 DCA(下降曲线分析)
缺点:上述这些方法通常无法将石油生产过程背后的物理原理结合起来。
软计算:
- ANN(artificial neural network):人工神经网络
- RNN(recursive neural network):递归神经网络
本文采用的技术就是cascaded LSTM and Ensemble Kalman filter(ENKF) enhanced LSTM.(RNN的改进版)
问题定式化:
核心内容是如何利用多元时间序列,用深度LSTM模型进行预测。
输入: 控制参数( 注入速度 q w q_w qw和生产井底压力 B H P BHP BHP )、以前的含水率和生产速度。
输出: 总速率和含水率。
训练策略:
-
滑动窗口技术:输入变量是长度为n的时序数据序列,n+1是我们的窗口大小。如图4所示,窗口大小为50。前49个时间步长将是输入数据的长度,最后一个将是我们的输出结果。
-
贝叶斯优化:调节超参数以优化模型。
-
集合卡尔曼滤波器:该技术在新数据变得可用时合并新数据以改进现有模型。
Conclusion and Discussion:
LSTM方法为预测石油产量提供了一种有前景的新技术。从简单的LSTM到贝叶斯超参数调整的级联LSTM的改进。贝叶斯优化是一种比简单网格搜索和随机搜索算法更可靠、更快速的超参数调整方法。最后,集成卡尔曼滤波器可以帮助使模型预测更加鲁棒。当应用于实时生产优化时,LSTM和EnKF的耦合可能是有用的。
2. Production prediction at ultra-high water cut stage via Recurrent Neural Network
这里主要针对一些问题去查找相关的资料。
2.1 训练数据时间有多长?
时间步长(1~9)设为 d d d :根据文献上来看也就是利用过去 d d d 个月的信息去预测未来一个月的产量。这里最优模型步长为9,也就是利用过去9个月的信息去预测未来一个月的产量。
2.2 有哪些特征(时序)?这些序列是同步的吗?
生产天数、前 10年及以前投产采油井产量贡献、前 1 年投产采油井产量贡献、前 9 年投产采油井产量贡献、前 7 年投产采油井产量贡献、前 6 年投产采油井产量贡献、前 4 年投产采油井产量贡献、前 3 年投产采油井产量贡献、前 8 年投产采油井产量贡献、前 5 年投产采油井产量贡献、前 2 年投产采油井产量贡献、前 10 年及以前投产采油井数、当年投产采油井产量贡献、措施增油量、措施井次、当年投产采油井数、月注入量。
时间序列化构造:序列是由连续的 M M M 个特征向量组成, M M M 为时间序列步长,假设 X t X_{t} Xt 为 t t t 时刻的特征向量,则本文构造的输入序列形式为 { X t - M + 1 , X t - M + 2 , … , X t } \{X_{t-M+1},X_{t-M+2},…,X_{t}\} {Xt-M+1,Xt-M+2,…,Xt},因此主要是根据特征向量来同步。
对于油井产量贡献这个关键词还未能找到精确的定义,在其它文献中也尚未发现同样的字眼,并且经过讨论,之前是石油专业的师兄也未曾听过该说法。不过通过搜索倒是可以了解产量贡献的意思,其代表销售收入-直接材料成本,不知道对于油井产量贡献而言是否也是这个意思?如果是这个意思,那么上述特征的范围就需要实际生产的数据去形成,因为每个油田的收入与成本是不同的,所以需要结合具体的油田去找到特征的合法区间。同时相比于其它的预测方式,该文献并未考虑相关的物理因素影响,如井底压力之类的。
2.3 如何编码?与 one-hot 相比较。
编码方式在文献中倒是未能找清楚,不过顺势了解了一下one-hot以及Label Encoding。
2.3.1 one-hot(独热编码):
在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等。这些特征值并不是连续的,而是离散的,无序的。通常我们需要对其进行特征数字化。
那什么是特征数字化呢?例子如下:
性别特征:[“男”,“女”]
祖国特征:[“中国”,"美国,“法国”]
运动特征:[“足球”,“篮球”,“羽毛球”,“乒乓球”]
假如某个样本(某个人),他的特征是这样的[“男”,“中国”,“乒乓球”],我们可以用 [0,0,4] 来表示,但是这样的特征处理并不能直接放入机器学习算法中。因为类别之间是无序的(运动数据就是任意排序的)。
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
例如:
上述特征 :
[“男”, “女”] => [10, 01];
[“中国”,"美国,“法国”] => [100, 010, 001];
[“足球”,“篮球”,“羽毛球”,“乒乓球”] => [1000, 0100, 0010, 0001];
当一个样本为 [“男”,“中国”,“乒乓球”] 的时候,完整的特征数字化的结果为:[1, 0, | 1, 0, 0, | 0, 0, 0, 1]
为什么使用one-hot编码来处理离散型特征?
在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。
而我们使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。
将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。
优点:它的值只有0/1,不同的类型存储在垂直的空间。
缺点:当类别的数量很多时,特征空间会变得非常大。
2.3.1 Label Encoding(标签编码):
label encoding是将类别变量中每一类别赋一数值,从而转换成数值型。
例如:
运动特征:
[“足球”,“篮球”,“乒乓球”,“羽毛球”,“乒乓球”]=>[1, 2, 3, 4, 3]。
这里"篮球"和"羽毛球"的平均值是"乒乓球",所以label encoding最直观的缺点就是赋值难以解释,适用场景更窄。
2.4 数据是以油田为单位?
是的
2.5 如何做数据生成器?
文献中并未有图像展示在相应的参数下对油田产量预测的情况,只是展示了对实际值和预测值的比较图。因此我认为要想做数据生成器还是需要实际数据的支撑,通过找到实际数据间的关系去模拟出数据生成器。