全球大约有20%的油井使用抽油杆泵将原油提升到地面。因此,对这些泵进行适当的预测性维护是油田作业中的一个重要问题。我们希望在故障发生之前能够知道泵出了什么问题。抽油杆泵井下部分的维护问题可以通过位移和负荷的曲线图进行可靠的诊断,这个图被称为“动力图”。本章说明了使用机器学习技术可以完全自动化这种分析,使其能够在故障之前自学习识别各种损坏类型。我们使用了从巴林油田的299个抽油杆泵中提取的35292张样本卡片的数据集。我们可以将11种不同的损坏类别与正常类别区分开,并且准确率达到99.9%。这种高准确性使其能够实时自动诊断抽油杆泵,并使维护人员将重点放在修理泵上,而不是监测它们,从而提高了整体的产油量并减少了环境影响。
全球所有油井中,大约有50%安装了某种形式的人工提升系统。其中,大约40%使用抽油杆泵,也被称为杆泵或吸杆泵。全球大约500,000台抽油杆泵正在使用中。抽油杆泵由井底的固定阀和连接在杆上、由地面上的马头装置驱动上下运动的可移动阀组成,如图1所示。
图1左侧是抽油杆泵的基本示意图,右侧展示了四个阶段中行程的演变
在行程上绘制位移和负荷的图形会生成右下角的动力图。
从井口到井底再返回井口的可移动阀的运动被称为行程。由于泵在每个行程开始时都返回相同的配置(除非泵坏了),因此运动固有的呈周期性。当杆开始下行时,固定阀关闭;见图1(a)。可移动阀一旦在井中遇到流体,就会打开并允许其通过;见图1(b)。在行程的底部,可移动阀关闭,并且行程被反转,此时固定阀再次打开,允许流体进入井中;见图1(c)。当关闭的可移动阀上升时,它将下行期间收集到的流体输送到地面;见图1(d)。我们可以测量在一个完整的行程中的负荷(即可移动阀上方的流体的重量)和来自地面的位移。如果我们将这两个变量绘制在一起,就得到了一个被称为动力图的图表;请参见图1右下角,并与实际示例图2进行对比。
图2 是一个带有四个主要点标记的动力图示例,请参阅介绍文字以了解说明。
1936年,沃尔顿·吉尔伯特(Walton Gilbert)发现,动力图的形状使有经验的人能够准确诊断抽油杆泵井下可能出现的典型问题)。请参见图3,其中显示了一些不同类别的示例。以下是一些典型的井下抽油杆泵问题列表:
图3:这是在巴林油田获取的一些卡片,展示了抽油杆泵的不同工况可以通过目视识别。
请参阅文本获取完整的工况列表。(A)正常;(B)轻微液击;(C)严重液击;(D)抽空;(E)气体干扰(严重);(F)可移动阀或柱塞泄漏;(G)固定阀、可移动阀泄漏或气体干扰;(H)泵撞击下行;(I)桶体破洞或柱塞脱离桶体;(J)泵无法运行;(K)泵上下撞击;(L)泵无法运行,向下撞击。
直接测量活动杆上的负荷是困难的,因此我们在杆顶测量负荷,并通过求解波动方程来推断井下的工况。基于此,我们可以计算出一些物理量,例如泵进口压力,而无需实际测量,并有效使用计算得到的井下图来诊断抽油杆泵的问题。现在,确定动力图的方法(在井口处测量并计算井下工况)已成为行业标准,并且依赖于准确近似活动部件在运动过程中经历的摩擦规律。
问题是:计算机能否进行这种诊断?如果可以的话,计算机将能够在实时测量时自动诊断每个动力图。根据行程持续时间和空闲时间的多少,单个抽油杆泵每分钟可能会产生多张图。一个油田可能有数百或数千台泵。对于一个人来说,要查看它们是几乎不可能的。这种自动化可以使维护人员专注于修理那些需要注意的泵,而不是确定哪些泵需要注意。因此,它减少了泵的环境影响(泄漏、污染、备件、废料等),同时提高了其可用性和产量。我们将在本章中证明,通过使用机器学习的自动方法,可以可靠地对抽油杆泵进行诊断,并教会它自己如何区分各种不同的损坏类别。
在我们的情况下,每个动力图都有100个负荷和位移测量值,覆盖了整个行程的持续时间。因此,每个图卡有200个变量来描述,而且需要将这些变量输入到我们选择的任何分类方法中。在每个机器学习项目中,首先要确定如何转换可用的输入数据(在我们的情况下是100个负荷和位移),以便(1)降低输入变量的数量而不丢失任何重要信息,以及(2)提取我们凭借专业领域知识了解到的任何有助于决策问题的数量。这个过程被称为特征工程,转换后的变量被称为特征。有时,从现场获得的数据可以直接提供给机器学习,或者只是简单地删除一些可用的输入变量。这是特征工程的一个简单版本。在特征工程阶段,我们有最大的机会将领域知识注入到机器学习任务中。通过机器学习获得的模型通常在训练数据上表现出色,因为在构建模型时已经对这些数据进行了了解。如果模型在测试数据上表现出色,那么模型就无法推广到新的情况,我们称之为过度拟合。如果模型甚至在训练数据上表现不佳,我们称之为欠拟合。这两种情况都是不理想的,我们寻找一个在两个数据集上表现良好的模型,以确保模型已经学会了我们想要它学习的任务。然后,可以将这样的模型应用于新数据,并且其结论变得有用。对于描述动力图的问题,文献中已经发表了几篇关于合适特征的建议。
早期文献中的一个重要思想是库的概念。库是一组具有已知分类的卡片。其思想是计算一个称为度量的距离函数,将待分类的卡片与库中的每个成员进行比较。选择距离最小的库卡片,并将其分类作为新卡片的分类结果。这种方法依赖于为库选择代表性的类别示例。如果要在实时环境中进行此过程,库的规模会受到限制。最困难的部分在于选择度量方式。
一篇论文中,库包含37张卡片,度量方式是比较两张卡片之间负荷和位移之间的差异的总和。
另一篇论文建议测量卡片傅里叶级数表示中的系数差异,或者对卡片的绘制图像进行一种灰度级别分析。这里的库包含28张卡片。尽管作者声称这些方法表现良好,但我们不知道测试用例的数量。
需要注意的是,用傅里叶级数来描述动力图是有意义的,因为动力图本身具有周期性。如果我们将每个位移x(s)和负荷y(s)的测量作为一个参数变量,用图像来索引一个动力图的各种测量结果。然后,我们可以将这个复杂变量图像进行傅里叶级数展开。x(s)y(s)s^u(s)=x(s)+iy(s)
这里,S是卡片的总周长,而M是矩的数量。傅里叶系数an为
还可以通过几何矩来描述卡片,并将差异进行阈值处理以确定最相似的库成员。这种方法在合成生成的卡片上产生了2.6%的测试误差。
在另一项研究中,对几何特征和傅里叶级数进行了评估,结果发现傅里叶级数更具代表性。该研究使用了1500张卡片,并获得了13.4%的误差。
一种有趣的方法是尝试从卡片中提取出一些重要的局部极值点,并将其与库卡片上的相似点进行比较。该方法使用了2166张卡片进行评估,似乎实现了5%的误差,但基于描述很难准确量化。
有些特征非常简化。例如将卡片分成32个段,然后计算每个段上的平均负荷。他们共有8个不同的类别,每个类别有300个训练样本,总共有6101张手动分类的卡片,并取得了2.2%的测试误差。
另一个想法是定位卡片的质心,并计算在绘制在卡片周围的极值矩形内卡片上方和下方的总面积。然后,他们使用极限学习机(一种单层感知器神经网络)对230张卡片进行训练,并对100张卡片进行测试,得到了11%的误差,但我们无法确定这是总体误差还是测试误差。质心是"
将卡片分解为傅里叶级数,并使用第一矩的系数是另一个降低维度的想法。使用这种方法,一篇论文报告了在102张已知卡片上的5%的误差。然而,目前尚不清楚他们用于对卡片进行分类的方法以及有多少卡片用于训练和测试。
一些提议依赖于能够检测卡片上站阀和行程阀打开和关闭的四个点,参见图2。有两种方法来确定这些点。一种依赖于纯几何解释,称为链码,另一种依赖于物理启发式方法。假设我们能够确定这些打开和关闭点,然后我们可以为卡片的四个段落计算一些量。
一篇论文提出了三个基于观测对之间直线之间夹角的几何量。他们为11个类别中的每一个构建了一个模糊逻辑分类器。由于论文未将数据分为训练和测试,因此测试误差可能高于24%。
另一种需要打开和关闭点的方法是计算每个段落数据的前七个统计矩。他们使用支持向量机从88个训练卡片和40个测试卡片中学习,以获得2%的测试误差。
另一篇论文使用四个段落的几何特征,并声称使用一个简单的查找表来确定每个类别是否具有某些特征,但作者没有提供数值结果。
一个完全不同的方法是将人类专家的知识和经验提取出来,以规则的形式进行表达,通常称为专家系统。这些规则必须用精确的数值术语来表达,以便在自动计算机系统上对卡片进行评估。对于这个任务,已经有人采用了这种方法,并讨论了如何获得这些规则的管理过程。作者没有报告系统的准确性。
值得注意的是,一篇论文声称在6113张手动分类的卡片上取得了完美的分类结果。由于他们没有描述他们的特征、分类方法,以及数据集是否以何种方式分为训练集和测试集,很难评估这个结果。
我们尝试了上述提到的每种特征方法。我们的结论是,通常情况下,自动检测四个阀门打开和关闭点在数值上是不稳定的,特别是对于非正常的动力图卡片,而这些卡片恰好是该应用程序的特殊关注对象。因此,我们决定排除所有需要这种基础的特征。
在选择特征时,我们必须在偏差和方差之间进行权衡。高偏差意味着测试误差高,高方差意味着算法在不同训练和测试数据集上的多次运行中测试误差的方差较大。特征数量较少通常会降低测试误差,但会增加方差,而特征数量较少则会从问题中删除重要信息,从而增加测试误差。因此,我们必须选择适量的特征来对情况进行描述,既要有足够的(偏差),又不要过多的(方差)细节。
在有多个候选特征可供选择的情况下,我们希望对它们进行排名,并选择对当前任务贡献最大的前几个特征。然而,这种简单方法通常注定会失败。特征工程领域的一个核心结果是,一个单独的无关紧要的特征可以与其他特征一起显著提高性能,而两个单独无关紧要的特征可能在一起具有重要意义。因此,我们不能单独选择特征,而是要以组的形式选择。在这种情况下存在问题,因为我们有很多特征可供选择,而特征组合的数量太多,无法在合理的计算时间内尝试所有组合。对于每个组合,我们必须多次训练模型,因为我们需要了解所选特征集的性能和方差。解决这个问题的常规方法是使用所谓的包装器方法,为每个组合训练一个简单模型,以节省整体计算时间。然后使用选定的特征集来训练复杂模型(Guyon and Elisseeff,2003)。
例如,通过傅里叶级数表示动力图卡片会产生许多数值实验,因为必须选择级数中的矩的数量。为了说明这种权衡,我们在图4中绘制了偏差和方差。图中的绘图是各种情况下的标准箱线图。纵轴表示在使用30000张卡片进行训练并在5292张卡片上进行测试的模型得到的测试误差的数量。每次训练模型时,训练和测试样本是随机选择的。所有用于图中的模型均表现为零的训练误差。箱子在图中的垂直位置,即五个模型的平均测试误差数量,表示偏差。箱子的垂直大小表示方差。前13个箱子对应于使用那么多矩的傅里叶级数表示卡片,从零个矩开始。之后的七个箱子,标记为S1到S7,对应于其他不同组合。
• S1:具有1个矩的傅里叶级数和的所有5个几何特征。
• S2:(Gao et al.,2015)的所有5个几何特征。
• S3:卡片的质心坐标。
• S4:卡片的质心坐标和平均线长度。
• S5:具有1个矩的傅里叶级数,卡片的质心坐标和平均线长度。
• S6:具有1个矩的傅里叶级数和卡片的质心坐标。
• S7:具有1个矩的傅里叶级数,卡片的质心坐标和两个面积积分。
图4 对傅里叶级数在动力图卡片表示中选择矩数量的偏差-方差权衡进行了说明。详细解释请参见正文。
通过这些实验,我们可以得出结论,具有4个矩的傅里叶级数具有最小的方差,但以显著的偏差为代价。具有1个矩的傅里叶级数具有最小的偏差,但以方差为代价。具有1个矩的傅里叶级数与质心坐标的组合(选项S6)在偏差和方差之间达到了最佳的折衷方案,平均测试误差为12个,标准差为4。这意味着测试误差率为0.0023 ± 0.0008,或准确率为99.8 ± 0.1%。整体上,遇到的最佳单一模型与S6特征组合一起,只有7个测试误差(准确率为(5292 – 7)/5292 x 100% = 99.9%)。我们选择将这个模型投入生产。
总之,我们的特征工程调查表明,最好的特征是傅里叶级数的第一个矩系数和卡片的质心坐标。因此,我们有五个特征。尽管这可能令人惊讶,因为它的简单性,但它确实导致了非常好的分类结果。与上述引用的论文相比,本研究使用了规模更大的数据集来训练模型,并测试其性能。
我们必须在现场测量一些卡片。这项工作在位于巴林油田的大约750个不同的擎杆泵中的299个擎杆泵上完成,所有这些泵都已安装仪表,并通过数字网络传输数据到中央数据中心,卡片可以实时获取并保存到数据库中。在2018年秋季的首次研究中,总共收集了5,380,163个卡片。
必须生成一些训练数据。巴林油田的运营公司Tatweer Petroleum公司有四位专家负责根据动力图卡片确定维护活动。要求这些专家观察所测量的卡片,并对其进行上述分类。在几周的时间里,他们对35,292张动力图卡片进行了分类。这些卡片构成了可以用于训练机器学习模型并确定其有效性的数据集。
我们为每个动力图卡片计算了特征;请参阅前面关于特征工程的讨论。我们还将这35,292张已知卡片分为两组。其中85%的卡片用于训练模型,15%的卡片用于在训练后评估模型。这两个数据集通常称为训练数据和测试数据。
我们将训练数据集提供给多个机器学习算法。每个算法都有一些参数,需要人类专家通过实验来调整这些参数以适应任务。我们对每种算法进行了参数调整,以获得最佳性能。我们尝试了单层感知器神经网络,多层感知器神经网络,极限学习和决策树。
对于这个任务来说,随机梯度增强决策树是最有效的方法。它在训练数据集上表现完美,并在测试数据集上达到了99.9%的准确率。它在测试数据集上的错误大致均匀地分布在各个类别之间,这是另一个令人满意的事实,请参见表2。其他一些算法在错误率上具有竞争力,但其错误倾向于集中在某一个或多个类别中,这显示了在准确检测该类别时存在系统性问题
最佳模型在测试数据集上的分类性能。
表2
类别 | 训练样本 | 测试样本 | 错误个数 |
---|---|---|---|
正常 | 8557 | 1529 | 0 |
轻微液压冲击 | 5347 | 955 | 0 |
严重液压冲击 | 93 | 15 | 0 |
无效泵 | 1981 | 379 | 0 |
泵撞击向下 | 1740 | 303 | 2 |
泵撞击上下 | 2258 | 407 | 2 |
无效泵,撞击向下 | 9045 | 1626 | 1 |
游动阀或柱塞泄漏 | 98 | 15 | 1 |
站立阀、游动阀泄漏或气体干扰 | 345 | 62 | 0 |
泵失灵 | 234 | 39 | 1 |
桶体有孔或柱塞脱离桶体 | 132 | 20 | 0 |
严重气体干扰 | 101 | 11 | 0 |
总计 | 29931 | 5361 | 7 |
对于每个类别,我们指定了使用了多少个训练样本和测试样本。模型在所有训练样本上表现完美,但在测试样本中偶尔出现错误,如上所述。
整个生成和使用分类模型的过程如图5所示。图的底部展示了生产情景,其中测量一个动力计卡片,提取其特征,并通过现有的分类模型计算其分类。模型本身是一个公式,它以卡片的特征作为输入,并使用已学习的几个参数将其输出为类别编号。图的顶部展示了生成模型的工作流程,实际上就是计算最终模型的公式参数。这个学习过程使用卡片的特征以及由人工专家生成的已知分类。不管我们选择使用什么类型的原始数据、特征工程或模型类型,这个示意性工作流程对于分类这个一般问题始终保持不变。
图5
基于对35292个手动分类的卡片进行了特征工程,我们确定了在模型的偏差和方差之间取得平衡的最佳特征组合,即采用卡片的傅里叶级数表示的第一矩和卡片的质心坐标。我们发现,根据文献提出的计算检测行程阀和立柱阀的四个开闭点的方法在数值上是不稳定的,因此与此相关的特征没有被研究。使用85%的数据进行训练和15%的数据进行测试,我们得到了一个在训练过程中没有出现错误的模型,但在测试过程中出现了7个错误。这种性能可以在多次训练中得到复现,每次训练中的训练和测试样本都是随机选择的,测试错误的方差为4个。不同类别的测试错误分布相对均匀,因此我们似乎没有产生系统性错误,详见表2。
我们得出结论,对于抽油杆泵的预测性维护,模型的分类准确度足够高,可以实际应用于在真实油田中识别各种抽油杆泵问题。它可以实时处理多个抽油杆泵的问题,并在检测到非正常卡片时自动发出警报并提供诊断结果,从而生成预测性维护措施。这个过程使得人工专家从监控和诊断抽油杆泵的工作中解放出来,转而从事更重要的修复任务。它还比人工专家自行发现问题更早地发出警报,因为算法可以在测量每个动力计卡片时进行诊断,这对于人力团队来说是不可想象的分析量。
我们注意到,这项工作可以将卡片分类为12个类别之一。原则上,我们已经识别出31个类别。现有的模型对剩余的19个类别将无法工作,因为我们没有为它们提供任何训练样本。当这些问题在实际抽油杆泵中发生时,相关的卡片应该进行手动分类,然后可以重复训练过程以扩展模型在当前领域之外的分类能力。我们估计每个类别需要约100个样本才能获得合理的结果。然而,更多的数据将始终导致更准确或更稳健的模型。无论模型成熟程度如何,手动分类的反馈始终具有价值。