魏航信,張 青
(西安石油大學(xué)機(jī)械工程學(xué)院,西安 710065)
基于抽油機(jī)示功圖的工況識(shí)別是石油生產(chǎn)中的一個(gè)重要問(wèn)題,特別是在智慧油田。傳統(tǒng)的方法是基于BP神經(jīng)網(wǎng)絡(luò),RBF神經(jīng)網(wǎng)絡(luò)[1-2],支持向量機(jī)(SVM)[3]或電功圖[4-5],這些方法正確率低。
近年來(lái),深度學(xué)習(xí)算法在圖像識(shí)別、故障診斷[6]等方面得到了廣泛的應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)成為一個(gè)強(qiáng)大的、通用的深度學(xué)習(xí)模型[7-9]。許多研究者對(duì)CNN的結(jié)構(gòu)及其在圖像分類識(shí)別中的應(yīng)用進(jìn)行了成功的研究。Verma A[10]提出了一種壓縮卷積神經(jīng)網(wǎng)絡(luò)模型,即CNDS,該模型尺寸小,速度快。Pathak A R[11]研究了深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用,如圖像分類、模式識(shí)別。A Kolsch[12]對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了改進(jìn),提出了用于文檔圖像分類實(shí)時(shí)訓(xùn)練和測(cè)試的極限學(xué)習(xí)機(jī),可以減少訓(xùn)練次數(shù),提高識(shí)別精度。
由于抽油機(jī)示功圖用圖形表示,因此可以采用深度學(xué)習(xí)算法進(jìn)行識(shí)別。與傳統(tǒng)方法相比,深度學(xué)習(xí)可以自動(dòng)識(shí)別圖像特征,不需要計(jì)算特征參數(shù)。因此,深度神經(jīng)網(wǎng)絡(luò)方法尤其適用于示功圖圖像識(shí)別[13-14]。
目前常用的文本識(shí)別系統(tǒng)是LeNet-5和Alexnet。但是Alexnet有很多參數(shù),卷積核需要傳回,訓(xùn)練時(shí)間長(zhǎng)[15]。MNIST數(shù)據(jù)集的LeNet-5分類準(zhǔn)確率可達(dá)99.2%。然而,示功圖比文本圖像復(fù)雜。此外,LeNet-5分類的每個(gè)類別都是單獨(dú)的,即LeNet-5網(wǎng)絡(luò)對(duì)于一個(gè)輸入圖像只能輸出一種類型的模式(工作條件)。但抽油機(jī)的一張示功圖可能代表兩類。因此,LeNet-5不能直接用于示功圖識(shí)別。
由于神經(jīng)網(wǎng)絡(luò)參數(shù)的選擇需要經(jīng)驗(yàn)和實(shí)驗(yàn),并且神經(jīng)網(wǎng)絡(luò)的參數(shù)也不是最優(yōu)的。因此,需要一種最優(yōu)方法來(lái)確定神經(jīng)網(wǎng)絡(luò)的參數(shù)。本文采用粒子群優(yōu)化(PSO)算法[16-17]。
為此,本文設(shè)計(jì)了一種改進(jìn)的神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)有3個(gè)卷積子層和3個(gè)池化子層。每個(gè)卷積的初始化特征映射數(shù)分別為10、10、10。初始化時(shí),每個(gè)池化子層的特征映射數(shù)也分別為10、10和10。然后用PSO對(duì)參數(shù)進(jìn)行優(yōu)化。在CNN識(shí)別出輸入示功圖的特征變量后,全連接神經(jīng)網(wǎng)絡(luò)可以將其分類為12種類型。
根據(jù)延長(zhǎng)油田等特低滲透油田油井工況,常見(jiàn)的工況有12種,如圖1所示。
圖1 常見(jiàn)的抽油機(jī)工況對(duì)應(yīng)的示功圖
使用現(xiàn)場(chǎng)采集的示功圖一般為.txt文件,分為兩列,第一列為懸點(diǎn)位移,第二列為懸點(diǎn)載荷。為了進(jìn)行示功圖可視化診斷,首先將示功圖數(shù)據(jù)繪制成圖形,然后將其輸入神經(jīng)網(wǎng)絡(luò)。
根據(jù)示功圖診斷特點(diǎn),建立了示功圖識(shí)別神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示。網(wǎng)絡(luò)有9層,該網(wǎng)絡(luò)的輸入信號(hào)為示功圖,像素大小為68×68,輸出信號(hào)是油井的工況。卷積層為C1、C3、C5,池化層為S2、S4、S6。第一層C1有d1個(gè)特征圖,卷積核為5×5,C1的輸出是64×64;第二層S2有d1個(gè)特征圖,輸出為32×32;第三層C3有d2個(gè)特征圖,卷積核為5×5,C3的輸出是28×28;第四層S4有d2個(gè)特征圖,輸出為14×14;第五層C5有d3個(gè)特征圖,卷積核為5×5,C5輸出是10×10;第六層S6有d3個(gè)特征圖,輸出為5×5。F7、F8、F9為全連接層,F(xiàn)7、F8分別有10個(gè)節(jié)點(diǎn),F(xiàn)9分別有12個(gè)節(jié)點(diǎn)。最后一層F9是分類層,其為一種分類器,可以將輸入的示功圖分成1或者2類。
圖2 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
輸入層C1、C3、C5的輸出如下:
C1層之后是ReLU激活函數(shù)。ReLU對(duì)輸入的每個(gè)元素執(zhí)行閾值操作,其中任何小于0的值都被設(shè)為0。
式中:i=1,3,5;對(duì)于C1,j=1,2,…,d1;對(duì)于C3,j=1,2,…,d2;對(duì)于C5,j=1,2,…,d3;O為每個(gè)卷積神經(jīng)網(wǎng)絡(luò)的輸出,b為網(wǎng)絡(luò)的偏置,a和m為中間變量,ReLU為激活函數(shù)。
對(duì)于池化層,輸出可以寫成:
式中:i=2,4,6;對(duì)于S2,j=1,2,…,d1;對(duì)于S4,j=1,2,…,d2;對(duì)于S6,j=1,2,…,d3;O為每個(gè)池化層的輸出;gij為特征圖的增益參數(shù);Ni為特征的子采樣率。
全連接神經(jīng)網(wǎng)絡(luò)F7和F8如下:
激活函數(shù)為:
式中:yi為第9層網(wǎng)絡(luò)的輸出,1>yi>0且
輸出層F9是一個(gè)分類器,與傳統(tǒng)分類器不同,該層輸出的故障類型不是排它性的單一故障種類。
深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的層數(shù)和節(jié)點(diǎn)數(shù)對(duì)其性能有很大的影響。網(wǎng)絡(luò)中節(jié)點(diǎn)過(guò)多會(huì)減慢學(xué)習(xí)速度,而節(jié)點(diǎn)過(guò)少則會(huì)降低訓(xùn)練精度。因此,有必要選擇合理數(shù)量的神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)和層數(shù)[18]。對(duì)于所建立的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型,采用粒子群優(yōu)化學(xué)習(xí)算法對(duì)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行優(yōu)化[19]。通過(guò)優(yōu)化節(jié)點(diǎn)數(shù)、網(wǎng)絡(luò)層數(shù)和學(xué)習(xí)速率,可提高深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練精度,縮短訓(xùn)練時(shí)間。
PSO優(yōu)化深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。包括數(shù)據(jù)獲取、神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練與優(yōu)化和神經(jīng)網(wǎng)絡(luò)模型測(cè)試3個(gè)模塊。在數(shù)據(jù)獲取模塊中,將示功圖數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)圖像;在模型訓(xùn)練優(yōu)化模塊中,采用PSO算法對(duì)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù)進(jìn)行優(yōu)化;在模型測(cè)試模塊中,對(duì)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)進(jìn)行測(cè)試,以驗(yàn)證其故障診斷的正確性。具體步驟如下。
圖3 PSO優(yōu)化后的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
(1)采集示功圖信號(hào)。數(shù)據(jù)的格式為文本文件,有兩列。第一列數(shù)據(jù)為荷載(kN),第二列數(shù)據(jù)為懸點(diǎn)位移(m)。
(2)將示功圖的文本文件轉(zhuǎn)化為標(biāo)準(zhǔn)圖像,具體過(guò)程見(jiàn)3.1節(jié)。
(3)初始化卷積神經(jīng)網(wǎng)絡(luò)和全連接網(wǎng)絡(luò)的參數(shù)。CNN的初始層數(shù)為3,學(xué)習(xí)速率為0.000 5。
(4)利用粒子群算法搜索每個(gè)參數(shù)的局部最優(yōu)位和全局最優(yōu)位置,然后對(duì)其進(jìn)行修正。公式如下:
(5)更新神經(jīng)網(wǎng)絡(luò)的權(quán)值后,用一組測(cè)試樣本計(jì)算神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確率。如果精度不是最高,則返回步驟(4),否則返回步驟(6)。
(6)將PSO優(yōu)化后的參數(shù)引入深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),對(duì)示功圖進(jìn)行診斷。
示功圖的故障診斷是在電腦上進(jìn)行的,其中計(jì)算機(jī)硬件為:CPUAMDFX(tm)3.80 GHz,內(nèi)存單元8 GHz,軟件為Matlab R2018a。
在延長(zhǎng)油田采集了12種示功圖2 000張。將每個(gè)圖像都根據(jù)經(jīng)驗(yàn)進(jìn)行標(biāo)記,然后將1 400幅圖像作為訓(xùn)練樣本,600幅圖像作為測(cè)試樣本。
從油田采集的示功圖數(shù)據(jù)為文本文件,然而輸入的訓(xùn)練數(shù)據(jù)是一個(gè)示功圖,像素為68×68,因此,需要將文本文件轉(zhuǎn)換為標(biāo)準(zhǔn)圖像。流程如圖4所示,具體如下。
圖4 訓(xùn)練樣本的制作
(1)用Matlab將所采集到的數(shù)據(jù)繪制成示功圖,如圖4(a)所示;
(2)刪除示功圖周圍的空間,使圖最大化,如圖4(b)所示;
(3)將圖形保存為圖像(.jpg);
(4)在Matlab中重新加載圖像,壓縮到68×68,并將該彩色圖像變成灰色圖像,然后把它保存到一個(gè)變量中,將矩陣歸一化,如圖4(c)所示;
(5)矩陣可以作為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本,示功圖的訓(xùn)練圖像如圖4(d)所示。
由于示功圖有12個(gè)類別,神經(jīng)網(wǎng)絡(luò)的輸出層可以分12類。例如,如果神經(jīng)網(wǎng)絡(luò)將示功圖診斷為第5類,則第5個(gè)元素為1,其他元素均為0。需注意,一張示功圖可能包含兩種工況,因此本文的神經(jīng)網(wǎng)絡(luò)可以對(duì)同一訓(xùn)練樣本的示功圖進(jìn)行兩種故障類型的分類。例如,一個(gè)示功圖在有類型4和類型5兩種故障類型,則訓(xùn)練標(biāo)簽為[0 0 0 1 1 0 0 0 0 0 0 0]。
以神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)迭代次數(shù)最少為優(yōu)化目標(biāo),用PSO算法對(duì)神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)進(jìn)行優(yōu)化,優(yōu)化過(guò)程如圖5所示,優(yōu)化了3個(gè)卷積層的節(jié)點(diǎn)數(shù),圖中顯示了其中2個(gè)卷積層節(jié)點(diǎn)數(shù)。最少的訓(xùn)練迭代次數(shù)為109。經(jīng)過(guò)PSO優(yōu)化后神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)數(shù):卷積層節(jié)點(diǎn)數(shù)分別為20、16、16,其維數(shù)為64×64×20、28×28×16、10×10×16,池化層節(jié)點(diǎn)數(shù)分別為20、16、16,其維數(shù)為32×32×20、14×14×16、5×5×16。
圖5 神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)及PSO優(yōu)化過(guò)程
對(duì)PSO優(yōu)化后的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,此時(shí)模型在訓(xùn)練集上的準(zhǔn)確率達(dá)到了99.4%,在測(cè)試集上的識(shí)別精度為94%,如圖6所示。
圖6 PSO優(yōu)化后的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程
為了比較本文提出的模型的性能,將AlexNet、CNN、PSO優(yōu)化后的CNN網(wǎng)絡(luò)結(jié)構(gòu)性能進(jìn)行比較,結(jié)果如圖7所示,可以看到經(jīng)過(guò)PSO優(yōu)化后的CNN在快速收斂的同時(shí),其預(yù)測(cè)精度高于其他模型;此外由于樣本數(shù)據(jù)規(guī)模較小,所以CNN網(wǎng)絡(luò)模型存在欠擬合;相較于PSO優(yōu)化后的CNN模型,AlexNet在訓(xùn)練收斂速度以及結(jié)果預(yù)測(cè)精度均有一定的差距。
圖7 不同網(wǎng)絡(luò)性能比較
利用測(cè)試樣本對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行測(cè)試,以兩張示功圖為例,如圖8所示。第一個(gè)示功圖屬于第2類工況。通過(guò)對(duì)圖像的識(shí)別,神經(jīng)網(wǎng)絡(luò)輸出為[0 0.902 0.011 0 0 0 0 0.217 0 0 0 0]。所以可以確定其應(yīng)該是第2類(供液不足)。對(duì)于第2個(gè)示功圖,屬于第4類和第5類工況。這個(gè)示功圖有兩類故障類型,神經(jīng)網(wǎng)絡(luò)的輸出為[0 0 0.002 0.807 0.901 0.001 0 0 0 0 0 0]??梢钥吹剑?個(gè)元素是0.807,第5個(gè)元素是0.901。結(jié)果表明,該神經(jīng)網(wǎng)絡(luò)可以識(shí)別兩種故障類型。
圖8 示功圖診斷
通過(guò)多次訓(xùn)練,識(shí)別結(jié)果如表1所示,由表可知,平均識(shí)別正確率為94%,對(duì)示功圖的平均識(shí)別時(shí)間為0.021 s。從而驗(yàn)證了本文所提出的神經(jīng)網(wǎng)絡(luò)的可靠性和準(zhǔn)確性。
表1 訓(xùn)練和測(cè)試神經(jīng)網(wǎng)絡(luò)精確度
本文研究了一種基于深度學(xué)習(xí)的油井工況識(shí)別方法。設(shè)計(jì)了改進(jìn)的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),包括CNN和全連接網(wǎng)絡(luò)?;谏疃葘W(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練包括前饋傳遞和反向傳播傳遞。在前饋傳遞過(guò)程中,將示功圖輸入神經(jīng)網(wǎng)絡(luò),計(jì)算期望輸出與實(shí)際輸出之間的誤差。在反向傳播通過(guò)過(guò)程中,根據(jù)誤差和學(xué)習(xí)速率對(duì)權(quán)值和偏差值進(jìn)行修正。采用PSO對(duì)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。利用2 000張示功圖模擬神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程和測(cè)試過(guò)程。對(duì)示功圖的平均識(shí)別時(shí)間為0.021s,訓(xùn)練精度為99.4%,識(shí)別精度為94%,驗(yàn)證了該神經(jīng)網(wǎng)絡(luò)的可靠性和準(zhǔn)確性。