宋純賀,李澤熙,于洪霞,劉意楊*,馮鐵英,張雪健
(1.中國科學院 沈陽自動化研究所機器人學國家重點實驗室, 沈陽 110016) (2.中國科學院 網(wǎng)絡化控制系統(tǒng)重點實驗室, 沈陽 110016) (3.中國科學院 機器人與智能制造創(chuàng)新研究院, 沈陽 110169) (4.中國科學院 沈陽自動化研究所, 沈陽 110016) (5.沈陽工業(yè)大學 人工智能學院, 沈陽 110870) (6.杭州西奧電梯有限公司, 杭州 311199)
目前油田主要采用的傳統(tǒng)有桿抽油系統(tǒng),一旦系統(tǒng)出現(xiàn)故障,會造成采油成本增加、設備損壞,以及采油量降低;如果發(fā)生事故,則可能引發(fā)嚴重的人員和財產(chǎn)損失.因此設計可以及時且準確的識別油井故障類型的解決方法,不但可以減少人力成本,還可以提升油井的工作效率和安全性.文獻[1]將極限學習機的方法應用在有桿抽油機的故障分析中,首先對示功圖的特征進行提取,再利用極限學習機進行故障分類.文獻[2]使用傅里葉變換的方式對功圖進行特征提取,再使用徑向基神經(jīng)網(wǎng)絡對提取的特征進行故障分類.上述方法雖然可以解決抽油井故障診斷的問題,但是存在訓練時間長,準確率不高,參數(shù)設置復雜等問題.
深度學習的發(fā)展極大地推動了智能識別技術,目前深度學習模型已經(jīng)被應用到油井功圖故障識別問題之中[3-5],但仍然存在數(shù)據(jù)量少、模型識別精度不高的問題.在深度學習的理論基礎上,文中提出了一種基于改進GoogLeNet網(wǎng)絡結構的油井故障識別方法.實驗證明,采用改進的GoogLeNet網(wǎng)絡結構,識別故障準確率為96.05%,相對于基于LeNet、ResNet,以及基本GoogLeNet等網(wǎng)絡的識別方法,識別準確率有了明顯的提升.
文中數(shù)據(jù)來自遼河油田,其中包含了53個油井,從2019年9月~2019年11月這3個月的油井工況數(shù)據(jù).數(shù)據(jù)包括了井號、數(shù)據(jù)采集時間、位移、載荷、油管內徑、油壓等重要數(shù)據(jù).考慮到泵工圖能夠更加準確地表示抽油機的工作裝填,因此將懸點示功圖轉換為地層抽油泵處的泵功圖.泵功圖的橫坐標為位移數(shù)據(jù),數(shù)據(jù)量為200個;縱坐標為載荷數(shù)據(jù),數(shù)據(jù)量為200個,圖像形狀為不規(guī)則的閉合曲線.此后對功圖進行標準化處理,生成224像素×224像素大小的標準示功圖.
在遼河油田得到的大量數(shù)據(jù)中,選擇具有代表性且已經(jīng)完成標準化處理的大小為224像素×224像素的示功圖作為樣本.每一種工況類型對應1 050張樣本數(shù)據(jù)圖像,一共11種工況,總計11 550張圖像.每種功圖的典型圖像如圖1.
圖1 11種工況的示功圖
卷積神經(jīng)網(wǎng)絡的應用十分廣泛,在圖像識別,計算機視覺[6-7],人臉識別[8-9]等方面有著重要作用.卷積神經(jīng)網(wǎng)絡是一種深度學習模型,同時也是一種類似于人工神經(jīng)網(wǎng)絡的多層感知器,常用于分析視覺圖像,進行語義識別.卷積神經(jīng)網(wǎng)絡[10]一般包含數(shù)據(jù)輸入層,卷積層,池化層,歸一化層,全連接層[11]等.目前常用的卷積神經(jīng)網(wǎng)絡架構包括VGG、GoogleNet、ResNet等,文中比較各種常用深度學習網(wǎng)絡模型在油井功圖故障識別數(shù)據(jù)集的性能,選擇了GoogLeNet作為基本網(wǎng)絡架構,并進行了相應的改進.
GoogLeNet[12]采用模塊化的結構,即Inception結構,如圖2.GoogLeNet網(wǎng)絡結構模型有22層,由21層卷積層,1層全連接層和2個額外的輔助分類器層所組成.文中對GoogLeNet網(wǎng)絡結構模型進行改進,使得該網(wǎng)絡結構模型更加適合需求.其主要的改進體現(xiàn)在:① 去掉額外的兩個輔助分類器部分,減少網(wǎng)絡復雜程度,提升網(wǎng)絡訓練速度;② 加入CN歸一化層;③ 在每一層卷積層之后加入激活函數(shù),使用ReLu激活函數(shù)和ELU激活函數(shù),進一步提升網(wǎng)絡訓練速度和準確率;④ 在平均池化層后加入三層全連接層;⑤ 在三層全連接層后加入Dropout層.
圖2 Block部分的結構
GoogLeNet要求原始輸入圖像像素大小為224×224×3,且都需要進行預處理操作,使用7×7的卷積核,進行特征提取,卷積核的滑動步長為2,填充寬度為3,卷積后進行ReLU操作,再經(jīng)過3×3的max pooling層,其步長為2,再進行ReLU操作.使用3×3的卷積核再次進行特征提取,卷積核的滑動步長為1,填充寬度為1,卷積后進行ReLU操作,經(jīng)過3×3的max pooling,其步長為2,再進行ReLU操作,從而分析淺層的特征提取網(wǎng)絡.分析深層網(wǎng)絡中含有Inception結構的部分,由于Inception結構都是一樣的,文中只分析第一個Inception結構部分,其他部分同理.每一個Inception結構分為4個分支,采用不同尺度的卷積核來進行處理第一個分支為1×1的卷積核,然后進行ELU操作.第二個分支為1×1的卷積核,它作為3×3卷積核之前的降維,進行ELU操作,再進行3×3的卷積,其填充寬度為1,進行ELU操作.第三個分支為1×1的卷積核,它作為5×5卷積核之前的降維,進行ELU操作,再進行5×5的卷積其填充寬度為2,進行ELU操作.第四個分支為3×3的池化,其填充寬度為2,再進行1×1的卷積,進行ELU操作,最后將這4個分支連接在一起.在相同的Inception結構之后進行7×7的平均池化層,3個全連接層,將最后一層全連接層的參數(shù)設置為該實驗所需要的11,連接softmax分類器進行分類.
實驗采用搭載了win10操作系統(tǒng)的64位筆記本電腦,處理器為 Intel i5-10210U @2.1GHz,GPU為NVIDIA GeForce MX350,運行內存為16G,操作軟件為MATLAB 2020A.
訓練集與測試集的選擇是影響最終識別準確率的重要因素(表1).訓練集占比過高可能導致過擬合現(xiàn)象,測試集占比過高會導致由于訓練集數(shù)據(jù)量致使模型欠擬合.
表1 訓練集與測試集比例對準確率的影響
從表1可以看出:當訓練集與測試集比例為9 ∶1時其準確率最高,但是訓練集比例大,測試集比例小導致訓練的圖像過多,用來進行測試的圖像數(shù)量過少,不具有普遍代表性.所以選擇訓練集與測試集比例為7 ∶3,作為實驗的最終選擇.
神經(jīng)網(wǎng)絡學習過程的本質就是為了學習數(shù)據(jù)分布,如果沒有做歸一化處理,那么每一批次訓練數(shù)據(jù)的分布不一樣,從大的方向上看,神經(jīng)網(wǎng)絡需要在這多個分布中找到平衡點,從小的方向上看,由于每層網(wǎng)絡輸入數(shù)據(jù)分布在不斷變化,這也會導致每層網(wǎng)絡都在尋找平衡點,顯然,神經(jīng)網(wǎng)絡就很難收斂了,所以需要在神經(jīng)網(wǎng)絡的中間層加入歸一化處理.
3.2.1 批量歸一化層(Batch Normalization,BN)
BN是優(yōu)化深度神經(jīng)網(wǎng)絡中最激動人心的最新創(chuàng)新之一[13].大量數(shù)據(jù)表明,BN在 CNN上改進效果很顯著,具有加快模型收斂速度,增強模型泛化能力的優(yōu)點,但同時也存在一些缺點,如:對于有些像素級圖片的生成任務來說,BN 效果不佳;對于圖片分類等任務,只要能夠找出關鍵特征,就能正確分類,這算是一種粗力度的任務,因為在 Mini-Batch 內多張無關的圖片之間計算統(tǒng)計量,弱化了單張圖片本身特有的一些細節(jié)信息.
3.2.2 通道歸一化層(channel-wise normalization,CN)
文中使用了更細力度的歸一化方法,channel-wise normalization(channel-norm)[14],該方法在每層的channel維度上,使用最大的激活值對權值進行歸一化,其公式為:
(1)
(2)
(3)
圖3 歸一化層對于準確率的影響
表2 使用不同歸一化層對準確率的影響
學習率的選擇是本實驗中的重點問題之一,選取一個好的學習率可以使訓練過程高效準確,因此使用了Adam優(yōu)化器.
Adam優(yōu)化器[15]是一種結合了AdaGrad和RMSProp兩種優(yōu)化算法的優(yōu)點的自適應調節(jié)學習率的優(yōu)化器.AdaGrad能夠對每個不同的參數(shù)調整不同的學習率,對頻繁變化的參數(shù)以更小的步長進行更新,而稀疏的參數(shù)以更大的步長進行更新[16].RMSProp算法結合梯度平方的指數(shù)移動平均數(shù)來調節(jié)學習率的變化,能夠在不穩(wěn)定的目標函數(shù)情況下進行很好地收斂[17].Adam優(yōu)化器主要包含以下幾個顯著的優(yōu)點:實現(xiàn)簡單,計算高效,對內存需求少,參數(shù)的更新不受梯度的伸縮變換影響,超參數(shù)具有很好的解釋性,且通常無需調整.通常設置參數(shù)為β1=0.9,β2=0.999,ε=10-8,α=0.000 1[15].其公式如下:
gt=θf+θt-1
(4)
mt=β1·mt-1+(1-β1)·gt
(5)
(6)
(7)
(8)
(9)
從表3和圖4看出,在未使用Adam優(yōu)化器時,最優(yōu)學習率η=0.001,這時驗證集準確率為93.09%,采用Adam優(yōu)化器之后驗證集準確率能達到94.18%,提升了1.09%.因此,Adam優(yōu)化器適合文中訓練模型,且對準確率有一定的改進效果.
表3 使用不同學習率對準確率的影響
圖4 使用Adam優(yōu)化器對準確率的影響
在基本神經(jīng)網(wǎng)絡中,通常使用的激活函數(shù)為Sigmoid函數(shù)或者tanh函數(shù).但由于其容易產(chǎn)生梯度爆炸和梯度消失等問題,逐漸被ReLu函數(shù)及其改進函數(shù)所替代,例如ELU函數(shù)、Leaky ReLu函數(shù)等.
3.4.1 ReLu激活函數(shù)
ReLu激活函數(shù)的公式為:
ReLu=max(0,x)
(10)
可以看到,ReLu函數(shù)是一個在特定區(qū)間取最大值的函數(shù)[19],其收斂速度遠快于Sigmoid函數(shù)和tanh函數(shù),而且計算速度快.
3.4.2 ELU激活函數(shù)
ELU激活函數(shù)的公式為:
(11)
ELU激活函數(shù)是一種修正類的激活函數(shù),當其輸入值大于0時,其處理方式類似于ReLu激活函數(shù);但是當輸入值小于0時,ELU激活函數(shù)輸出為接近于0的負值,只需要極少的運算量,使計算速度相比于ReLu激活函數(shù)更快,且這部分輸出具有一定的抗干擾能力,從而可以消除ReLu激活函數(shù)導致網(wǎng)絡“死掉”的問題.
3.4.3 ReLu+ELU激活函數(shù)
文中將ReLu激活函數(shù)應用在GoogLeNet模型的淺層網(wǎng)絡結構,再將ELU激活函數(shù)應用在GoogLeNet模型的深層網(wǎng)絡結構.
從表4可以看出,采用Sigmoid和tanh作為激活函數(shù)時,識別的準確率最低,并且運行時間最長.而其他的激活函數(shù),如ReLu、ELU、softplus、leakyRelu,都在一定程度上提升了準確率.在組合方案中,在準確率方面,ReLu+ELU>ReLu+softplus>ReLu+leakyRelu,而在訓練時間方面,ReLu+leakyRelu 表4 使用不同激活函數(shù)對準確率和運行時間的影響 3.5.1 改變全連接層數(shù) 在GoogLeNet網(wǎng)絡結構中,經(jīng)多個卷積層和激活層后,連接著1個或1個以上的全連接層.全連接層中的每個神經(jīng)元與其前一層的所有神經(jīng)元進行全連接.全連接層可以整合卷積層或者池化層中具有類別區(qū)分性的局部信息,適當增加全連接層的層數(shù),會提升模型的準確率. 從表5可以看出全連接層的層數(shù)進行適當?shù)卦黾哟_實可以增強識別的準確率,但是不建議全連接層的層數(shù)超過4層.單純的增加全連接的層數(shù)不一定會增強識別的準確率,有的時候可能會導致相反的情況出現(xiàn),還會使得訓練時間變長. 表5 全連接層層數(shù)對準確率的影響 3.5.2 加入Dropout層 當網(wǎng)絡結構過于復雜且數(shù)據(jù)量又比較少的時候,會出現(xiàn)過擬合現(xiàn)象.Dropout層的直接作用是減少中間特征的數(shù)量,從而減少冗余,即增加每層各個特征之間的正交性.在神經(jīng)網(wǎng)絡訓練每次迭代過程中,Dropout層隨機扔掉一些神經(jīng)元.該神經(jīng)元對應的權重即保持上一步不變,其他的權重即更新,消除減弱了神經(jīng)元節(jié)點間的聯(lián)合適應性,增強了泛化能力,這樣就可以避免局部最優(yōu)和過擬合等問題[20]. 從表6可以看出加入Dropout層對準確率有著一定程度地提升,避免過擬合現(xiàn)象和陷入局部最優(yōu)的問題.改進Dropout層丟棄神經(jīng)元的比例也對結果有著一定的影響,一般選擇隱含節(jié)點Dropout率等于0.4~0.6,但經(jīng)過交叉驗證,隱含節(jié)點Dropout率等于0.5的時候效果最好,原因是0.5的時候Dropout隨機生成的網(wǎng)絡結構最多. 表6 加入并改變Dropout層比例對準確率的影響 使用多種不同的網(wǎng)絡結構模型進行對比實驗,包括:LeNet,DarkNet-19,ResNet-18,DenseNet-201,MobileNet,SqueezeNet,Shufflent,VGG-16,GoogLeNet,其迭代次數(shù)統(tǒng)一設定為500次.從表7可以看出DenseNet-201網(wǎng)絡結構最復雜,是所有網(wǎng)絡結構模型中層數(shù)最多的,達到了201層,但是其識別效果并不好,這說明了不是網(wǎng)絡的層數(shù)越深,識別的準確率就越高.對比MobileNet,SqueezeNet,Shufflent這3種輕量級網(wǎng)絡結構模型,其運行時間都要短于其他網(wǎng)絡結構,但是準確率不達標所以不予考慮.在對比GoogLeNet,LeNet,DarkNet-19,ResNet-18這4種經(jīng)典的網(wǎng)絡結構模型中,可以看出GoogLeNet網(wǎng)絡結構模型其個方面性能都要更優(yōu)越,所以選擇GoogLeNet網(wǎng)絡結構模型作為本實驗的基礎,通過對原始GoogLeNet網(wǎng)絡結構模型的改進得出的改進GoogLeNet網(wǎng)絡結構模型無論從準確率,還是運行時間都要明顯好于其他網(wǎng)絡結構模型.在油井功圖故障識別問題上,文中網(wǎng)絡模型具有高效率,高準確率等優(yōu)點,避免了由于人工識別功圖故障容易產(chǎn)生誤判的問題,同時也避免了因為不能及時識別油井故障而造成的經(jīng)濟損失. 表7 不同網(wǎng)絡結構對準確率的影響 針對抽油井故障類型識別問題,使用改進的GoogLeNet網(wǎng)絡結構,結論如下: (1) 在原始GoogLeNet網(wǎng)絡結構中加入CN歸一化層,使其識別準確率提升2.03%. (2) 使用Adam優(yōu)化器自適應調整學習率,使其準確率提升1.57%. (3) 將ReLu和ELU激活函數(shù)混合使用,從大幅提升訓練時間,速度提高了122%,準確率提升0.89%. (4) 改進網(wǎng)絡層數(shù):加入三層全連接層,加入Dropout層(Dropout率為0.5),準確率提升0.46%. 改進后的GoogLeNet網(wǎng)絡結構識別準確率達到了96.05%,運行時間達到了27.32 min.可以看出改進的GoogLeNet網(wǎng)絡結構具有更加高效,準確的優(yōu)點,且具有更好的魯棒性.在抽油井故障診斷問題中給出了一個實用的解決方法.3.5 網(wǎng)絡層數(shù)的增加與修改
3.6 結果分析
4 結論