張俊玲,段禮祥,王志喜,王文權
(1. 中國石油大學(北京)機械與儲運工程學院,北京 102249; 2. 中國石油大學(北京)安全與海洋工程學院,北京 102249;3. 川慶鉆探工程有限公司井下作業公司,四川 成都 610000; 4. 川慶鉆探工程有限公司安全環保質量監督檢測研究院,四川 廣漢 618300)
壓裂泵是提高油氣井采收率的主要設備之一,通過對油層進行壓裂作業以達到增產的目的[1]。壓裂車工作環境復雜、多變,振動信號激勵源眾多,導致故障診斷困難。傳統壓裂車故障診斷技術主要是通過耳聽、手摸、測量缸體的振動值大小等方法[2],診斷準確率不高,一般只能采取事后維修的方式,無法實現故障預測。
隨著人工智能的興起,壓裂車故障診斷方法也得到了一定程度的發展。張俊玲等[3]提出了一種基于局部均值分解樣本熵與支持向量機相結合的壓裂車故障診斷方法,實現了壓裂車液力端的故障診斷。為解決壓裂車動力系統振動信號故障難以辨識的問題,杜小磊等[4]采用提升多小波包(LMWP)、小波自編碼器(WAE)和長短時記憶網絡(LSTM)結合的壓裂車故障診斷方法,提高了故障診斷的準確率。傳統故障診斷方法假設訓練數據與測試數據是獨立同分布的,且訓練模型需要大量的數據[5],而壓裂泵的實際信號通常不能滿足該條件。為解決這一問題,W.Dai等[6]提出了一種基于實例的遷移學習算法(TrAdaBoost),該方法主要針對訓練數據和測試數據來自不同數據源的情況,利用大量的輔助訓練數據,幫助少量的目標訓練數據構建一個更可靠的診斷模型[7]。但TrAdaBoost應用過程中存在兩個問題:模型訓練時間較長、只適用于二分類問題。
針對上述問題,本文提出一種基于K-TrAdaBoost遷移學習的壓裂泵故障診斷方法。通過引進KNN,得到輔助訓練數據集的初始權重,并在模型內部引入多分類器,實現多種類型故障診斷。將KNN與TrAdaBoost相結合,可有效降低TrAdaBoost模型的訓練時間,提高壓裂泵故障診斷準確率。
為了解決故障診斷中數據非獨立同分布和TrAdaBoost算法中因迭代次數多導致模型訓練時間過長等問題,引進了鄰近算法(KNN),并引入決策樹多分類器作為內部分類算法[13],實現故障診斷多分類。
KNN通過測量特征值間距離進行分類,對于某樣本,若大多數特征屬于某一類別,則該樣本也屬于該類別。KNN算法的結果主要取決于某樣本與其相鄰樣本個數K的選擇[14]。數據距離采用歐氏距離計算,將距離的倒數作為輔助訓練數據的初始權重。利用倒數作為權重方便快捷,但當樣本距離過大時,會出現由近至遠時衰減過快的現象[15],為了避免該現象的發生,采用高斯函數進行加權,優化懲罰因子,對初始權重進行平緩過渡處理。
KNN算法步驟如下:1)將已知的目標訓練數據加上類別標簽作為KNN的訓練數據,將輔助訓練數據作為KNN的測試數據;2)通過歐氏距離公式,計算周圍范圍內K個訓練數據與測試數據間的距離;3)距離的倒數作為輔助訓練數據的初始權值,為避免衰減過快,引入高斯函數,優化距離的懲罰因子,得到公式[15]:
D——待測樣本到近鄰點間的距離;
A——常數,可以避免距離較小時權重值過大,設為0.5。
K-TrAdaBoost算法的原理:先將輔助訓練數據作為測試數據,將目標訓練數據作為訓練數據,輸入到KNN模型中,計算距離,引入高斯函數改進懲罰因子,得到輔助訓練數據與目標訓練數據間的相似性,并將其作為TrAdaBoost模型的初始權重;然后將得到的初始權重輸入到TrAdaBoost模型中進行模型訓練;最后將目標測試數據輸入到訓練好的故障診斷模型中得到故障診斷結果。
基于K-Tradaboost的壓裂泵故障診斷方法主要是利用KNN計算輔助訓練數據與目標訓練數據的相似性,得到調整后的初始權重,再輸入到TrAdaBoost模型中進行模型訓練,最后將測試數據輸入到訓練好的故障診斷模型中,得到所需的故障診斷結果?;贙-Tradaboost遷移學習的壓裂泵故障診斷方法具體步驟如下:
1)將采集到的某個工況下的實際數據作為輔助樣本,另一個工況下的實際數據作為目標樣本。
2)設輔助樣本數據作為KNN模型的測試數據,目標樣本數據作為KNN模型的訓練數據,得到調整后的初始權重。
4)計算訓練數據的分類錯誤率 εt,并判斷 εt是否大于 0.5,如果大于 0.5,設 εt=0.5,通過公式(3)調整參數 βt的大小,如果小于0.5,直接將 εt值代入公式(3)計算 βt的大小,得到 βt值后,通過公式(4)計算得到新的權重。
5)重復步驟3)、4),重復N次,通過迭代可以得到一個訓練好的故障診斷模型hN,將該模型作為測試數值Z個分類器中的一個分類器。
6)將步驟5)重復Z次,就可以得到Z個分類器hN j,j=1,2,···,Z。
7)將測試數據集輸入到Z個分類器中,可以得到Z個故障診斷結果。
本實驗數據來自中國石油集團川慶鉆探工程公司某作業區的2000型壓裂車五缸柱塞泵,對其進行振動信號采集。2000型壓裂車所使用的SQP2500泵是一種往復、容積式、單作用、臥式五缸柱塞泵,其結構如圖1所示,實驗數據測點布置圖如圖2所示。
圖1 2000型柱塞泵
圖2 測點分布圖
實驗采樣頻率為10 kHz,高于各測點應變基頻的20倍以上,保證采樣數據的真實性和完整性。采集數據共分為3種狀態,正常情況(無壓力、1600 r/min)、少彈簧故障(無壓力、1600 r/min)及高壓高速(50 MPa、1840 r/min)情況,分別對 2 號缸和3號缸進行數據采集,2號缸按3號方向采集的振動信號用于輔助數據,3號缸按7號方向采集的振動信號用于測試數據。
將訓練數據和測試數據中的每一類數據的各2048點作為訓練數據和測試數據。本實驗設計如下:1)訓練數據:2號缸測取的數據樣本6144個(3種狀態各2048 個),3 號缸測取的數據樣本 1536 個(3 種狀態各512個);2)測試數據:3號缸測取的數據未標記的樣本1536個(3種狀態各512個)。為了方便,將正常工作狀態記為A1、少彈簧故障工作狀態記為 A2、高速高壓(50 MPa、1840 r/min)工作狀態記為A3。
圖3為2號缸3種狀態下的時域和頻域圖。圖中左側為時域圖、右側為頻域圖,分析圖3,時域中A2和A3狀態相比于A1狀態有些許變化,頻域圖中3種狀態有微小差別,無法判斷故障類型,故提出基于K-Tradaboost遷移學習的壓裂泵故障診斷方法,判斷故障類型,提高診斷準確率。
圖3 2號缸3種狀態下的時域、頻域圖
將輔助訓練數據與目標訓練數據輸入到KNN中,得到初始權重。在KNN模型中,K(鄰近個數)參數對該模型影響較大[16],在診斷前,需對K取值大小進行討論。
將2號缸的數據用于計算,將得到的權重求平均值,作為初始權重。通過討論不同K值,得到了不同結果,將實驗結果準確率和實驗時間進行對比,得到圖4。
圖4 不同 K 值對應準確率和運行時間
從圖中可以看出,隨著K值的不斷增大,準確率不斷提高,運行時間也隨之增長。當K=20時,準確率達到90%以上,準確率較高,運行時間約12 s,運行時間較短,因此選取K值為20。
圖5 不同 N 值下 TrAdaBoost與 K-TrAdaBoost準確率對比圖
通過圖5可以看到,K-TrAdaBoost在N=4時就已經達到了最大準確率,而TrAdaBoost在N=14時才能夠達到最大準確率,且K-TrAdaBoost最大準確率高于TrAdaBoost的最大準確率。本實驗對N=4時的K-TrAdaBoost與N=14時的TrAdaBoost故障診斷準確率和訓練時間進行對比,得到表1。
表1 TrAdaBoost與K-TrAdaBoost對比表
從表中可以看出,在N=4的情況下,提出的算法訓練時間更短、故障診斷準確率更高,證明了該算法的有效性。
針對壓裂泵難以獲取足夠多帶標簽數據的問題,提出了基于K-TrAdaBoost遷移學習的壓裂泵故障診斷方法,并進行了實驗驗證,得到以下結論:
1)傳統故障診斷方法是建立在獨立同分布的基礎上,而TrAdaBoost遷移學習可以將大量不同、有關聯的數據遷移到目標數據集中,再進行故障診斷。
2)KNN模型中,K值對其準確率的影響較高,實驗證明隨著K值的增大,KNN分類的準確率增大,但是模型的運行時間也隨之增長,實驗發現在K=20時,模型的準確率較高、訓練時間較少。
3)TrAdaBoost訓練總迭代次數N對模型的訓練有一定影響,N值越大、訓練時間越長,通過引入KNN,得到初始權重,減少迭代次數,降低模型的訓練時間,并引入多分類器,使得模型適應多分類問題。
4)實驗結果表明K-TrAdaBoost遷移學習能夠有效地彌補TrAdaBoost的不足之處,提高了壓裂泵故障診斷準確率,證明了所提方法的可行性與有效性。