肖 翔
(中國科學技術大學 信息科學技術學院,安徽 合肥230026)
基于游梁式抽油機井的人工舉升法[1]是目前主流的采油法。人工舉升法以其結構簡單、成本低廉、適應性強等優點著稱。據不完全統計[2],全球超過90%的油田以及國內超過85%的油田都是采用這種方式進行原油開采。在油田開采的過程中,地下深井作業的環境較為復雜,容易引起井下抽油泵從正常的狀態轉變為故障的狀態。若抽油泵長期處于故障狀態,抽油泵設備會加速磨損使其生命周期驟縮,進一步影響油田的開采效率。由實時監測的數據快速、準確地診斷識別出抽油機井的工作狀態,會給實際的開采提供有價值的信息,實現高效開采的同時將損耗降至最小。
基于示功圖[3]的故障診斷的方式是趨于成熟的一種診斷技術。示功圖是由地面驢頭懸點處的位移為橫坐標,以載荷為縱坐標繪制而成的閉合曲線。泵功圖則描述抽油泵處位移、載荷的曲線。雖然泵功圖更能直接反映抽油泵在一次往復過程中的工作狀態,然而直接測量井下的泵功圖數據比較困難。因此,在實際的工程中通常使用測量比較簡單的示功圖代替井下泵功圖。示功圖具有實際的物理意義,不同工作狀態的示功圖在形狀上存在特定的差異。從示功圖的形狀輪廓識別出具體的所屬工況需要一定的專業知識,早期是由有經驗的工程師協作完成,但是由于油井規模越來越大,采集得到的示功圖數以萬計,由人工來診斷十分繁瑣且枯燥。若能提升計算機識別的準確率以滿足生產需要,則計算機可以完全取代工人診斷。
基于示功圖的計算機輔助診斷,近年來獲得學者與研究人員的高度重視,諸多方法如專家系統[4]、模糊理論[5]、神經網絡[6]、支持向量機[7]等先后被挖掘并應用于故障診斷任務。這些方法大多遵循先特征提取后模式分類的原則。特征提取是對原始數據降維達到降低問題的復雜度并能夠保留原始數據的有效信息的技術,常用的方法有傅里葉描述子、不變矩理論、灰度矩陣特征提取[8];模式分類是預測特征向量所屬類型的技術,可以通過建立專家庫計算相似度或通過機器學習算法設計分類器判別。然而,特征的選擇需要借助經驗和先驗知識,人工特征提取的過程中存在信息丟失,直接影響后續分類器的最終性能。利用計算機出色的計算能力以及大量的歷史數據的深度學習[9],通過自動特征學習,剛好可以填補這一空缺。
受卷積神經網絡(Convolutional Neural Networks,CNN)在圖像處理的啟發,本文提出基于卷積神經網絡的示功圖工況診斷模型,通過實驗分析網絡結構對模型性能的影響,設計出一種基于貪心策略的局部最優的卷積神經網絡模型。實驗結果表明,所提出的模型對未知的數據具有較強的預知能力,換言之,模型擁有優良的泛化性能。
本文提出基于CNN的功圖工況診斷的方法,主要分為兩個部分:離線訓練與在線診斷,對于要求實時性診斷的任務,可以先離線利用歷史樣本將模型訓練好,再對實時測量的新數據在線預測所屬工況,工作流程如圖1所示。

圖1 示功圖識別流程圖
首先介紹了本文的研究背景與現狀,接著簡要闡述了卷積神經網絡,然后對本文的數據集進行說明并闡明預處理過程,并通過實驗設計結構最優的網絡模型,最后對全文作出總結并提出了改進方向。
在早期的圖像識別研究中,最大的挑戰是如何組織特征,因為圖像數據不像其他類型的數據那樣可以通過人為理解來提取特征,需要借助SIFT、HoG等算法提取具有區分性的特征,然后利用SVM等機器學習算法識別。CNN可以直接接受原始圖像作為輸入,不需將特征提取與分類過程分離,其在訓練時自動提取最顯著的特征。
典型的CNN由輸入層、卷積層、池化層、全連接層和輸出層構成。本文采用一種基于LeNet[10]的CNN網絡結構作為圖像樣本的分類器,如圖2所示。輸入層的大小由輸入圖像的分辨率決定,而輸出層的大小則由分類任務的類別數確定,激活函數一般為選擇為softmax,對應屬于每個類別的概率。卷積層的目的則是由卷積核操作提取上一層的最基礎的特征如點或邊,一般稱之為特征圖,只要卷積核的數量足夠多,就可以將每個卷積核提取的基礎特征組合抽象成有效的高階特征,整個過程中卷積核權值共享,可以降低模型的復雜度,減小計算量的同時避免出現過擬合。為避免訓練過程中出現梯度彌散和梯度爆炸的現象,卷積層的激活函數通常選擇為ReLU。一個卷積層后面連接一個池化層,一般采用最大池化操作降低維度,保留最顯著的特征,提升模型的抗形變能力。卷積池化層的多層堆疊抽象組合出更高階的特征,可以提升模型的表達能力。將最終提取的有效高階特征進一步輸入全連接層進行分類識別。

圖2 LeNet-5結構圖
在評估模型的泛化能力時,不同的性能度量方式往往會得到不一樣的衡量結果,一般由任務需求決定。本文采用正確率和錯誤率來評判算法性能的優劣。
假設D={(x1,y1),(x2,y2),…,(xm,ym)}數據集,其中xi為樣本,yi為其對應的標簽,模型為f。
準確率(Accuary)表示被分對的樣本數量占所有樣本數的比重,相應地,錯誤率(Error)表示分類錯誤的樣本占樣本總量的比重,計算公式為:

式中,I(·)表 示指示函數。
本文數據源于某油田2019.01~2019.03不同油井的作業監測數據,該數據集合了不同類型傳感器的采集結果,主要為電參、力參及其他參數,存儲于后端服務器的數據庫中。從數據庫中讀取無標注的原始數據,選取其中的光桿載荷和位移屬性后,對數據清洗與自行標注。由于傳感器每隔30 min就會測量一次光桿的載荷和位移數據,一般而言,前后測量的數據繪成功圖差異不大,直接使用這些樣本容易使模型對某些功圖形成特殊偏好。為突出樣本的多樣性,采用以下策略篩選樣本:
(1)保留去除重復值、異常值后的樣本集合;
(2)按日期和井號分組,提取每天不同井號的首個記錄、中間記錄、末尾記錄共三個記錄;
(3)檢查提取樣本的完整性,若出現缺省值,輕度缺省采用平均值填充,重度缺省則丟棄。
基于上述策略,共提取出9類工況4 193份樣本,將樣本以8:2劃分為訓練集與測試集。樣本分布如圖3所示,詳細分布見表1。

圖3 樣本分布圖

表1 數據集細分表
一般來說,樣本的好壞決定最終模型分類性能的上限。對數據準備工作中獲取的光桿載荷和位移向量,需要進行預處理使之滿足某種協議,使處理后數據可直接作為后續模型的輸入。具體步驟概括如下:
(1)正則化
將信號的數值限制在[0,1]之間,可以降低計算的復雜度加速模型收斂,同時消除不同井號量綱的影響,對不同的新數據適應性強。
(2)信號圖像轉化
CNN對2D圖像輸入數據的擴展性強,可通過2D卷積核進行卷積操作直接獲取輸入圖像的特征圖。本文采用繪圖軟件,將兩個1D向量繪制成平面圖像,再保存成64×64分辨率的像素矩陣存儲在文件中,便于后續讀取。
(3)圖像二值化
設置像素矩陣的平均像素值為閾值,大于閾值的像素置為255,小于閾值的像素置為0。圖像二值化的目的是使像素矩陣稀疏化,優化計算過程,加速模型收斂。
圖像處理過程如圖4~圖6所示。

圖4 原始圖像

圖5 灰度圖像

圖6 二進制圖像
對于分類任務而言,特征選取的好壞直接決定網絡最終性能的上限。因此對卷積核的探究顯得格外重要。本小節采用LeNet-5框架結構,在此基礎上細微改動增加一個dropout層。該網絡結構為卷積層與池化層交替堆疊兩次,再與全連接層交互,然后連接一個dropout層,最后通過softmax層輸出。
本小節的實驗框架如圖7所示。

圖7 探究不同卷積核對實驗影響
為更好地探究卷積核對網絡的影響,利用控制變量法將除卷積核外的參數設為一致:如設置隨機種子,使權值偽隨機初始化;預設置學習率為0.001,調用Adam優化算法更新權值加快網絡收斂;池化操作選擇最大值池化,大小為2×2,步長設置為2。分別將卷積核窗口尺寸設置為5×5、3×3、2×2,步長為1;第一個卷積層卷積核數量設置為8,第二個卷積層卷積核數量設置為16;全連接層由128個神經元節點構成的隱含層與9個節點構成的輸出層組成。
實驗過程采用交叉驗證的思想,將由留出法劃分的訓練集樣本再次拆分為訓練集與驗證集,具體使用10折交叉驗證實現,將樣本分為10份,輪詢取其中1份為驗證集,而剩余的9份自動變為訓練集。這樣拆分出10組訓練集與驗證集的不同組合,相應地對應10種不同的結果。分別對每組展開訓練,將10組訓練結果的平均值作為最終的輸出,消除了隨機偶然性對網絡訓練過程的影響,使結果更具有說服力與代表性。
經10折交叉驗證后發現,網絡在大約200次迭代后逼近收斂,訓練樣本準確率在94.5%上下波動,而驗證樣本的準確率較為平滑,且與訓練樣本的準確率偏差不大,說明網絡在訓練過程中擬合程度恰好;對于網絡輸出的交叉熵損失值,相較于準確率訓練樣本與驗證樣本在損失函數曲線的逼近程度更高,幾近重合,收斂于0.13,進一步證實了網絡的擬合性能恰好,未偏向過擬合或欠擬合任意一方。
通過測試集平均值得到最終的準確率為97.7%,整個過程耗時63.03 min。訓練過程如圖8所示。

圖8 卷積核為5×5的網絡訓練過程
經10折交叉驗證后發現,網絡在大約200次迭代后逼近收斂,訓練樣本準確率在97.5%上下波動,波動較為明顯,且驗證樣本的準確率也呈現一定的輕微波動,但與訓練樣本的準確率偏差在可控的范圍內,說明網絡在訓練過程中穩定性稍差,擬合程度較好;對于網絡輸出的交叉熵損失值,相較于準確率訓練樣本與驗證樣本在損失函數曲線的更為貼近,偏差稍小,最終收斂于0.07,在性能方面與5×5相比較而言優越,從準確率和損失曲線來看則在穩定性與擬合程度方面差些。在滿足基本要求的前提下,為追求性能,選擇3×3卷積核是更好的選擇。
通過測試集平均值得到最終的準確率為98.1%,整個過程耗時52.18 min。訓練過程如圖9所示。

圖9 卷積核為3×3的網絡訓練過程
經10折交叉驗證后發現,網絡在大約200次迭代后逼近收斂,訓練樣本準確率在96.6%上下波動,波動較為劇烈,說明樣本在訓練過程中極不穩定,但驗證樣本的準確率相對比較平滑,導致訓練樣本的準確率與驗證樣本的準確率偏差在可控范圍內。方差較大,說明網絡在訓練過程中擬合程度稍差,容易出現擬合不足的現象。該現象同樣體現在損失曲線上,對于網絡輸出的交叉熵損失值,訓練樣本損失在0.09上下浮動,較為頻繁,但驗證樣本的損失相對比較平滑。在性能方面,相較于5×5而言略微占優,從準確率和損失曲線來看則在穩定性與擬合程度方面明顯差距,導致一般情況下,極少直接使用2×2卷積核。
在測試集平均值得到最終的準確率為97.8%,整個過程耗時47.32 min。訓練過程如圖10所示。

圖10 卷積核為2×2的網絡訓練過程
利用已有數據,在文獻[11]提出的目前先進的自編碼機算法作出一組對照實驗,具體數值見表2。
由表2可以看出,卷積核大小直接影響網絡最終的性能。在上述CNN三個實驗中,網絡均處于正常擬合狀態,性能都達到指標要求,過程也都近似,譬如都通過大約200次迭代逼近收斂,收斂的過程中訓練準確率與驗證準確率偏差不大,訓練損失與驗證損失偏差也不大,較自編碼機500次迭代收斂效率更高。而差異更多體現在最終的性能指標上,如5×5卷積核的訓練準確率在94.5%左右,3×3卷積核為97.5%左右,2×2卷積核為96.6%左右,在表現上3×3積核最優,5×5卷積核較差,但仍比自編碼機性能好。該結論也同樣適用于各卷積核中訓練樣本損失值。不失一般性,測試集準確率同樣遵循這一結論,5×5卷積核平均測試準確性只有97.7%,CNN中三者最低,較于自編碼機泛化性能好得多。在時間復雜度上,與卷積核大小呈現正相關,具體體現在計算的復雜性上,由模型的規模決定,而自編碼機實驗計算卻復雜得多。

表2 不同結構分類器性能對比
實驗結果表明,3×3卷積核實驗中表現最佳,預測準確率高達98%,驗證了本方法的有效性與可行性。
顯然,由于本文主要針對有限、無標注的數據進行學習訓練,預測的準確度受輸入標簽和算法的共同影響。若想要進一步提升模型的準確率,可以從兩個方面進行擴展:(1)為盡量減少人為標注帶來的誤差,一方面通過挑選一部分有充分理由證明是正確的標簽樣本為訓練集,但訓練集的數量必然不會多,另一方面對海量無標簽的數據進行半監督學習,設置閾值通過輪詢學習使得更多的樣本加入到訓練集中,迭代一定次數獲得的訓練集比人為模糊性標注的樣本更具有說服性;(2)改進模型算法,對于數據多、分辨率大的圖像數據,可以換用AlexNet[12]、VGG-16[13]甚至更復雜的ResNet[14]網絡解決。