王 通, 熊濤理
(沈陽工業(yè)大學(xué) 電氣工程學(xué)院, 沈陽 110870)
目前,我國石油開采企業(yè)多采用有桿泵抽油井采油[1].為了保障抽油設(shè)備的安全穩(wěn)定運行,提高油井工況診斷的技術(shù)水平具有重要意義.
國內(nèi)外現(xiàn)有油井工況診斷方法大多采用示功圖圖像作為依據(jù).早期的示功圖人工分析法耗費大量人力和時間,無法滿足生產(chǎn)需要.近年來,基于機器學(xué)習(xí)的方法較好地運用于抽油機工況診斷之中,如隨機森林[2]、支持向量機[3]、極限學(xué)習(xí)機[4]等,正逐步取代傳統(tǒng)的人工分析.這些方法主要過程為:首先對示功圖數(shù)據(jù)進行特征提取,再對提取到的特征進行分類.然而,特征的選擇需要借助豐富的經(jīng)驗知識,不同的特征提取方法可獲得不同的特征,導(dǎo)致診斷結(jié)果也有較大差異,影響了油井工況的準確判斷.
深度信念網(wǎng)絡(luò)(deep belief network,DBN)作為深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的經(jīng)典模型之一,以其優(yōu)異的特征提取能力,近年來被應(yīng)用在故障診斷與特征提取方法上,并且取得了較好的成績[5-10].DBN方法相比傳統(tǒng)的故障診斷方法,其通過逐層的貪婪無監(jiān)督學(xué)習(xí)與有監(jiān)督的調(diào)優(yōu),自動提取數(shù)據(jù)的特征,減少了人工參與帶來的不確定性.同時,為了有效保證DBN模型能夠達到令人滿意的結(jié)果,減少梯度擴散導(dǎo)致精度調(diào)節(jié)失敗,常采取梯度優(yōu)化算法來提高網(wǎng)絡(luò)訓(xùn)練速度與分類準確率.李忠剛等[11]采用DBN從行星齒輪箱提取機械故障震動的特征,并通過分析不同梯度優(yōu)化算法的表現(xiàn),使網(wǎng)絡(luò)更加有利于故障狀態(tài)分類.沈長青等[12]引入Nesterov動量法得到訓(xùn)練速度更快速的模型,提升深度信念網(wǎng)絡(luò)的泛化能力,更好地實現(xiàn)了軸承故障診斷.因此,本文利用深度信念網(wǎng)絡(luò)在自動提取數(shù)據(jù)特征上的優(yōu)勢,將深度信念網(wǎng)絡(luò)應(yīng)用于油井工況識別.在傳統(tǒng)的梯度優(yōu)化算法基礎(chǔ)上,提出一種改進Adam-DBN油井工況診斷方法.使用對比散度算法進行無監(jiān)督的預(yù)訓(xùn)練,獲取較優(yōu)的初始權(quán)值;運用動量法預(yù)測梯度下降位置,用于更新下降方向和學(xué)習(xí)率,避免梯度擴散導(dǎo)致調(diào)節(jié)精度變差.
DBN是由多個受限玻爾茲曼機(restricted bolt-zmannmachine,RBM)堆疊而構(gòu)成的多層深度學(xué)習(xí)網(wǎng)絡(luò).通過對大量無標簽數(shù)據(jù)貪婪無監(jiān)督學(xué)習(xí),再對少量有標簽數(shù)據(jù)進行有監(jiān)督的調(diào)優(yōu),獲得深層特征提取模型,實現(xiàn)對原始數(shù)據(jù)的降維.RBM是一種由可視層v和隱含層h組成的概率無向結(jié)構(gòu)模型,如圖1所示.
圖1 RBM結(jié)構(gòu)
輸入向量可以通過可視層v輸入到RBM網(wǎng)絡(luò),根據(jù)RBM結(jié)構(gòu),對于任意狀態(tài)(v,h),其能量函數(shù)為
(1)
式中:θ={W,a,b},W為權(quán)重,a為可視層的偏置,b為隱含層的偏置;ω為可視層與隱含層的連接權(quán)重;V為可視層神經(jīng)元個數(shù);H為隱含層神經(jīng)元個數(shù).
可視層神經(jīng)元v和隱含層神經(jīng)元h的聯(lián)合密度分布定義為
(2)
(3)
隱含層節(jié)點與可視層節(jié)點的激活概率為
(4)
(5)
RBM訓(xùn)練的目的就是求解參數(shù)θ={W,a,b},對參數(shù)求偏導(dǎo)數(shù)可得
ΔWij=〈vihj〉data-〈vihj〉model
(6)
Δai=〈vi〉data-〈vi〉model
(7)
Δbj=〈hj〉data-〈hj〉model
(8)
由于〈x〉model模型的期望在計算時比較困難,因此進行k步Gibbs采樣,通常情況下進行1步即可達到可視層和隱含層的平穩(wěn)分布,更新公式為
Wij=Wij+η(〈vihj〉0-〈vihj〉k)
(9)
ai=ai+η(〈vi〉0-〈vi〉k)
(10)
bj=bj+η(〈hj〉0-〈hj〉k)
(11)
式中,η為學(xué)習(xí)率.
DBN采用順序堆疊RBM構(gòu)成,結(jié)構(gòu)模型如圖2所示.網(wǎng)絡(luò)包含兩個階段:無監(jiān)督預(yù)訓(xùn)練和有監(jiān)督調(diào)優(yōu).
圖2 DBN結(jié)構(gòu)
前向堆疊RBM學(xué)習(xí)屬于無監(jiān)督學(xué)習(xí),通過將無監(jiān)督訓(xùn)練后的模型參數(shù)傳遞給有監(jiān)督訓(xùn)練作為參數(shù)的初始化.反向微調(diào)階段是從DBN網(wǎng)絡(luò)最上層進行,在多層RBM網(wǎng)絡(luò)之后增加一個反向傳播(BP)層作為DBN網(wǎng)絡(luò)的輸出層,基于訓(xùn)練樣本數(shù)據(jù)的類別,對使用Softmax分類器判定的類別進行統(tǒng)計,結(jié)合BP算法對DBN網(wǎng)絡(luò)反向訓(xùn)練,采用梯度更新算法更新參數(shù),微調(diào)各個初始連接權(quán)重.微調(diào)階段可以進一步優(yōu)化DBN網(wǎng)絡(luò)中各個連接參數(shù),使誤差損失值降低,從而提取出更為準確的數(shù)據(jù)特征.
當樣本數(shù)據(jù)較少時,為有效防止模型出現(xiàn)過擬合問題,引入Dropout正則化對學(xué)習(xí)算法進行約束.其思想是通過阻止特征檢測器的共同作用來提高神經(jīng)網(wǎng)絡(luò)的性能.實現(xiàn)方式為在前向傳播的過程中,以某一概率選取部分神經(jīng)元不再激活,即在訓(xùn)練過程中部分神經(jīng)元保留權(quán)重且不更新,同時失去連接,但下次樣本輸入時可能重新激活.DBN模型引入了Dropout技術(shù)后,減輕了不同特征之間的協(xié)同作用,從而有效減少了過擬合現(xiàn)象.
參數(shù)更新算法的優(yōu)劣影響網(wǎng)絡(luò)的訓(xùn)練精度.目前應(yīng)用在DBN中的參數(shù)梯度更新算法,最常用的方法為隨機梯度下降法(stochastic gradient descent,SGD).使用SGD更新梯度公式,即
θt=θt-1-ηθL(θt-1)
(12)
式中:t為迭代次數(shù)序號;L(θt-1)為損失函數(shù);θL(θt-1)為L(θt-1)關(guān)于θ的梯度.算法中一個關(guān)鍵的參數(shù)為學(xué)習(xí)率η,學(xué)習(xí)率可通過多次實驗和訓(xùn)練誤差最小來選取,然而實際選取初始學(xué)習(xí)率卻相當復(fù)雜,若η太大,訓(xùn)練誤差將會反復(fù)波動,損失函數(shù)值可能會明顯增大.若η太小,則會導(dǎo)致訓(xùn)練進程十分緩慢,損失函數(shù)值持續(xù)保持在一個較高的值,無法達到訓(xùn)練誤差精度的要求.
針對SGD算法的缺點,提出了Adam算法,在迭代自變量之前,加入一階變量mt用于計算過去梯度的指數(shù)加權(quán)平均值,迭代過程為
mt=β1mt-1+(1-β1)gt
(13)
式中:0≤β1<1為超參數(shù);gt=θL(θt).一階變量相當于E(gt),即當前梯度gt的期望.二階變量vt計算過去梯度平方的指數(shù)加權(quán)平均值,迭代過程為
vt=β2vt-1+(1-β2)gtgt
(14)
(15)
(16)
式中,ε為穩(wěn)定性常數(shù),目的是防止出現(xiàn)分母為零的情況,并且常取β1=0.9、β2=0.99.
修改后的一階、二階變量更新公式為
mt=γmt-1+gt
(17)
vt=βvt-1+(1-β)mtmt
(18)
參數(shù)更新公式為
(19)
1) 選擇現(xiàn)場示功圖數(shù)據(jù)集,將數(shù)據(jù)集劃分為訓(xùn)練樣本和測試樣本.
2) 初始化參數(shù),利用對比散度算法和訓(xùn)練數(shù)據(jù)對DBN進行預(yù)訓(xùn)練,得到最優(yōu)初始化參數(shù).
3) 將最優(yōu)初始化參數(shù)和樣本數(shù)據(jù)傳遞到誤差傳播網(wǎng)絡(luò)中,進行參數(shù)微調(diào).
4) 按式(17)、(18)計算反向微調(diào)過程參數(shù)梯度對應(yīng)的一階、二階變量.
5) 按式(19)權(quán)值參數(shù)精調(diào)公式,計算并更新對應(yīng)參數(shù).
6) 判斷是否滿足最大循環(huán)次數(shù),若是,訓(xùn)練結(jié)束,模型訓(xùn)練完成;否則,返回步驟3).
實驗數(shù)據(jù)選取某采油平臺油井上近兩年示功圖數(shù)據(jù),去除異常的示功圖后共584個.5種工況數(shù)目分別是正常300、供液不足130、氣體影響84、固定閥漏35、油泵下碰35,依次標記為工況Ⅰ~工況Ⅴ,5種工況示功圖如圖3所示.由數(shù)據(jù)可知,油井正常工況占比較大,非正常工況少量出現(xiàn),這種情況符合油井生產(chǎn)狀態(tài).本文實驗內(nèi)容主要是對改進Adam-DBN有效性進行驗證,因此所有對比方法按照油田生產(chǎn)實際狀態(tài)進行建模測試.其中隨機抽取各工況訓(xùn)練樣本數(shù)分別為270、110、70、30、30個,余下各工況樣本數(shù)30、20、14、5、5個作為測試樣本.
圖3 5種工況示功圖
為更好地實現(xiàn)數(shù)據(jù)的表示與分析,減少網(wǎng)絡(luò)輸入層的維度,首先對示功圖數(shù)據(jù)進行預(yù)處理,將示功圖圖像劃分成26×52網(wǎng)格的二值圖像,對經(jīng)過曲線的網(wǎng)格賦值為1,未經(jīng)過的賦值為0,DBN網(wǎng)絡(luò)的輸入層維數(shù)為1 352,示功圖預(yù)處理如圖4所示.
圖4 示功圖預(yù)處理
網(wǎng)絡(luò)結(jié)構(gòu)的隱含層設(shè)計為2層,神經(jīng)元個數(shù)分別為90、30,輸入層維數(shù)為1 352,輸出層維數(shù)與輸出模式類別數(shù)相同,故網(wǎng)絡(luò)節(jié)點數(shù)為1 352-90-30-5;無監(jiān)督訓(xùn)練60次,有監(jiān)督訓(xùn)練50次,無監(jiān)督動量因子為0.6,預(yù)訓(xùn)練起始學(xué)習(xí)率為0.01,隱含層使用sigmoid激活函數(shù).由于工況樣本數(shù)量較少,選取Dropout方法以P=0.1的概率,在訓(xùn)練過程隨機選取部分神經(jīng)元使之處于未激活狀態(tài),減少過擬合現(xiàn)象的出現(xiàn).
驗證改進的Adam-DBN算法對其他梯度優(yōu)化方法在DBN中的應(yīng)用對比.將改進的Adam-DBN算法與隨機梯度下降法(SGD-DBN)、動量法(momentum-DBN)、自適應(yīng)學(xué)習(xí)率(Adagrad-DBN)、自適應(yīng)矩估計(Adam-DBN)作用于微調(diào)階段梯度下降過程進行比較,5種算法調(diào)優(yōu)參數(shù)設(shè)置如表1所示.訓(xùn)練結(jié)果如圖5所示.
表1 DBN梯度優(yōu)化算法參數(shù)
圖5 基于梯度下降相關(guān)算法的損失函數(shù)值對比
對比圖5中目標函數(shù)的收斂情況可知,改進Adam-DBN算法的損失函數(shù)值在第1次迭代之后,相較于另外4種方法就呈現(xiàn)最低的損失值,10次迭代時已經(jīng)表現(xiàn)出良好的穩(wěn)定性,損失函數(shù)值平穩(wěn)后更加接近0.在測試數(shù)據(jù)集上表現(xiàn)出良好的穩(wěn)定性,迭代開始就可以快速下降,收斂狀態(tài)時損失函數(shù)值的平穩(wěn)值也更低,目標函數(shù)值保持平穩(wěn)下降且沒有出現(xiàn)大幅振蕩情況,明顯優(yōu)于對比算法.
為了進一步驗證改進Adam-DBN算法對油井工況識別的有效性,使用上述相同的樣本集,對常用于分類問題的支持向量機(SVM)、基于灰度矩陣極限學(xué)習(xí)機(GM-ELM)算法,以及基于上述4種優(yōu)化方法的DBN進行油井工況診斷準確效果對比.不同方法的油井示功圖識別實驗仿真結(jié)果對比如表2所示.
表2 油井示功圖識別實驗結(jié)果對比
由表2可以看出,改進的Adam-DBN算法準確率達到94.59%,優(yōu)于結(jié)果最好的Adam-DBN算法81.08%的準確率.運用于油井工況診斷的SVM與GM-ELM方法的準確率較高.對比算法在部分工況下的識別錯誤率較高,不能很好地識別出與其他工況的差異,導(dǎo)致較多工況發(fā)生誤判.改進的Adam-DBN算法能夠發(fā)掘更加細致的示功圖差異,提高了油井工況診斷的準確率.
本文提出了一種基于改進Adam-DBN的油井工況診斷方法,針對傳統(tǒng)油井工況診斷方法由于特征選擇困難和不確定性導(dǎo)致診斷效果不佳的問題,將深度信念網(wǎng)絡(luò)引入油井工況診斷領(lǐng)域.使用深層網(wǎng)絡(luò)來進行特征提取,同時對網(wǎng)絡(luò)參數(shù)訓(xùn)練過程中有監(jiān)督訓(xùn)練階段梯度下降進行優(yōu)化.在反向調(diào)優(yōu)過程中,運用動量法預(yù)測梯度下降位置用于更新下降方向,利用學(xué)習(xí)率自適應(yīng)選擇下降步長,有效避免梯度擴散導(dǎo)致調(diào)節(jié)精度變差的問題.仿真結(jié)果表明,該方法可以取得更低、更加穩(wěn)定的損失函數(shù)值,能夠更準確判斷出相似工況的類型,通過與其他診斷算法進行對比可知,改進的Adam-DBN擁有更高的分類精度,為油田的安全生產(chǎn)運行多提供一份保障.