衷路生,盧文濤
(華東交通大學電氣與自動化工程學院,江西南昌330013)
近些年來,深度學習模型在復雜故障識別任務中表現(xiàn)優(yōu)異,并且在許多傳統(tǒng)的識別任務中的識別準確率也顯著提高[1-2]。 文獻[3]提出了深度學習模型架構(gòu)ResNet,利用殘差恒等映射層,減輕了網(wǎng)絡的訓練,顯著提高了圖像識別率。 文獻[4]提出了一種基于電機狀態(tài)監(jiān)測的一維卷積神經(jīng)網(wǎng)絡模型故障檢測系統(tǒng),具有內(nèi)在的自適應設(shè)計,把電機故障檢測的特征提取和分類融合為一體,更加快速、高效地完成故障檢測。 文獻[5]提出了基于LeNet-5 的新型CNN 故障診斷模型,將信號轉(zhuǎn)換為二維圖像的處理,快速提取轉(zhuǎn)換后的圖像特征。文獻[6]提出改進后的DBN 網(wǎng)絡模型,用Laplace 函數(shù)中的位置參數(shù)控制稀疏度,使無標簽的數(shù)據(jù)特征更加直觀的表示出來,達到更好的準確度。 文獻[7]提出了一種改進的偏最小二乘法(IPLS)用于多種狀態(tài)過程監(jiān)測。文獻[8]提出基于過程監(jiān)測和故障診斷(PM-FD)的基本數(shù)據(jù)驅(qū)動方法,在非高斯測量噪聲下,其提出的多數(shù)測試方法在TE 過程具有良好的故障診斷性能。 文獻[9]探索了無監(jiān)督局部多層感知分類器在過程故障診斷的應用,其能區(qū)分不同類別的已知故障類型,提高了神經(jīng)網(wǎng)絡模型的分類性能。 文獻[10]提出基于隨機優(yōu)化的變量方案的故障識別方法,優(yōu)化測試數(shù)據(jù)的累積誤差。 文獻[11]提出一種基于可擴展DBN 的故障診斷模型,利用全雙層反向傳播網(wǎng)絡訓練故障特征,在TE 平臺上的識別率顯著提高。
上述方法在一定程度上改善了深度學習模型在圖像識別和故障診斷上的性能,但仍然存在不足。 基于文獻[12]的學術(shù)思想,本文提出了一種基于CapsNet 的過程故障識別模型。
本文以TE 化工過程的故障診斷為實驗對象,TE 化工過程是模擬了Eastman 化學公司的實際化工的聯(lián)合反映的一個過程,此平臺已經(jīng)廣泛成為測試各種模型和算法的故障檢測及診斷性能的依據(jù)[13]。 TE 過程主要包括20 類故障以及1 類正常工況。 采集樣本運行時間為100 h,故障為第20 h 引入,獲取10 000 個觀測數(shù)據(jù),其中前2 000 個數(shù)據(jù)為正常樣本,其余8 000 個數(shù)據(jù)為故障樣本。
從生成的8 000 個故障樣本數(shù)據(jù)隨機選取6 400 個樣本作為訓練集,剩余1 600 個樣本作為測試集。20種故障對應共為128 000 個訓練樣本及32 000 個測試樣本。每次隨機選取10 種故障,則有64 000 個訓練樣本及其16 000 測試樣本。 如圖1 右側(cè)所示,對樣本數(shù)據(jù)訓練集的選取。
圖1 樣本數(shù)據(jù)集的選取Fig.1 Selection of sample data set
如圖1 右側(cè)所示,每一種故障數(shù)據(jù),從0 到8 000 個樣本點里,隨機選取6 400 個樣本,再進行10 種故障隨機排列,則有64 000 個樣本點作為訓練集。 最后進行零-均值規(guī)范化,對訓練集標準化。 規(guī)范化公式為
式中:i 表示樣本數(shù)據(jù)中的第i 類故障, j 表示第i 類故障數(shù)據(jù)中對應的53 個變量之一;μ,σ 表示原始故障數(shù)據(jù)的均值與標準差。
對新生成的故障數(shù)據(jù)集χji,進行重構(gòu),隨機選取49 個變量轉(zhuǎn)換為7×7 的方形圖像,即χji∈7×7×64 000?;?×7 的方形數(shù)據(jù)圖像建立CapsNet 故障識別網(wǎng)絡模型。
從整體結(jié)構(gòu)上,模型可分為故障分類模塊、數(shù)據(jù)重構(gòu)模塊。 故障分類模塊主要包括:輸入層、卷積層、膠囊層, 數(shù)據(jù)重構(gòu)模塊主要利用膠囊網(wǎng)絡模型來逆向估計作為訓練集輸入的TE 檢測數(shù)據(jù)。 圖2 為利用TE 數(shù)據(jù)構(gòu)建的基于CapsNet 的過程故障識別模型, 其中圖2 下方的圖形是網(wǎng)絡模型各層輸出向量的特征可視化圖。
從特征圖中明顯可以看出某類故障已經(jīng)大致準確預測。 充分說明了CapsNet 對故障分類的有效性和優(yōu)越性。
圖2 基于CapsNet 的過程故障識別模型Fig.2 Process fault identification model based on CapsNet
1) 輸入層為重構(gòu)、 歸一化所得的7×7 矩陣,矩陣所包含的TE 過程數(shù)據(jù)為20 類故障以及1類正常工況。
2) 第二層是卷積層。 該層使用256 個步幅為1 的2×2 卷積核,對輸入為7×7 的檢測數(shù)據(jù)進行卷積,選取sigmoid 作為神經(jīng)元的非線性函數(shù)。 其中,sigmoid 函數(shù)、卷積的數(shù)學表達式如式(2)式(3)所示,該卷積層得到數(shù)據(jù)矩陣維數(shù)為6×6。 輸出神經(jīng)元數(shù)量為256×6×6=9 216,權(quán)值數(shù)量為128×10=1 280。
其中用卷積核m×m 對n×n 的復雜工況故障數(shù)據(jù)進行步幅S 的卷積運算。
3) 第三層為初始膠囊層(膠囊層1),該層包含卷積運算,并作為膠囊層的輸入。該層有32 個通道,每個通道包含8 維的卷積膠囊。 根據(jù)式(2)式(3)定義,通道內(nèi)每個卷積單元對第二層6×6 的數(shù)據(jù)矩陣進行卷積運算后得到的2×2 數(shù)據(jù)矩陣,因此,該層的輸出神經(jīng)元數(shù)量為32×8×2×2=1 024,膠囊數(shù)量為32×2×2=128,連接第二層和第三層之間的卷積運算的權(quán)值數(shù)量為256×3×3×32×8+32×8=590 080。 第二層與第三層之間卷積運算組成第三層膠囊的8 維向量。 膠囊層1 的輸出是產(chǎn)生膠囊層2 的輸入向量。
4) 第四層為故障分類膠囊層(膠囊層2),該層包含10 組16 維的故障分類膠囊。
在網(wǎng)絡訓練過程中,選擇了動態(tài)路由算法來預測TE 過程故障類別,防止了以往神經(jīng)網(wǎng)絡中池化層的故障信息丟失,根據(jù)圖2 可知,膠囊層2 在膠囊層1 輸出8 維向量的基礎(chǔ)上進行傳播和路由更新。 路由更新如圖3 所示。
圖3 路由更新Fig.3 Routing update
膠囊層1(即低層)的128 個膠囊的輸出向量ui∈R8×1,i=1,2,…,128,通過動態(tài)路由機制發(fā)送到合適的高層膠囊, 使得該膠囊能以最大概率表征某類故障的存在性,ui∈R128×1被路由到該高層膠囊使得其輸出向量的模長‖vj‖最大化,同時保持ui的方向不變,即ui所表征的參數(shù)信息被保留到高層膠囊。
膠囊層2(即高層)膠囊的輸出向量vj∈R16×1,j=1,2,…,10,模長‖vj‖表示TE 過程中某類故障存在的概率,因此必須滿足概率條件0≤‖vj‖≤1。 向量vj的方向可表示故障類型。
最終,耦合系數(shù)cij由bij的softmax 函數(shù)計算得到
耦合系數(shù)cij甲來量化低層膠囊與高層膠囊之間的連接, 從而計算膠囊的輸出。 其動態(tài)路由更新過程為:①初始化bij為0;②根據(jù)公式(9)計算耦合系數(shù)cij;③運用式(4)式(5)計算預測向量及高層膠囊的輸入向量;④由式(7)計算高層膠囊的輸出向量;⑤式(8)更新相似性bij,然后返回②,迭代次數(shù)3 次;計算膠囊輸出。
數(shù)據(jù)重構(gòu)模塊利用膠囊網(wǎng)絡模型故障分類模塊的結(jié)果來編碼訓練樣本的輸入數(shù)據(jù),即利用膠囊網(wǎng)絡模型來逆向估計作為訓練集輸入的7×7 的TE 檢測數(shù)據(jù),構(gòu)建三層全連接的網(wǎng)絡架構(gòu),實現(xiàn)對過程控制系統(tǒng)檢測數(shù)據(jù)的重構(gòu)/估計。 數(shù)據(jù)重構(gòu)模塊如圖4 所示。
首先,設(shè)置重構(gòu)模塊的輸入向量。 網(wǎng)絡訓練過程的故障分類膠囊層采用掩蔽方法只保留正確膠囊的激活向量,即膠囊層L 中對應于訓練標簽的膠囊輸出向量作為活躍向量,而膠囊層L 中的其他輸出向量,則全部設(shè)置為零,由此得到160 維的重構(gòu)模塊輸入向量(除16 維活躍向量非零外,其余144 維向量為零);
然后,將得到的重構(gòu)模塊輸入向量傳給由三個全連接層組成的解碼器,經(jīng)過三個全連接層的訓練,最終輸出7×7 的TE 數(shù)據(jù)矩陣,與最初的輸入數(shù)據(jù)矩陣進行比對,從而快速進行反饋修正,使損失誤差降為最小。
圖4 重構(gòu)模塊Fig.4 Reconstitution module
本文采用深度學習框架Tensorflow[14]進行實驗驗證。網(wǎng)絡模型設(shè)置處理數(shù)據(jù)的batch_size 為100,共對實驗數(shù)據(jù)訓練30 個epoch。 訓練集的批量個數(shù)為640(64 000/100=640),每epoch 迭代640 次,每次需要0.3 s。
針對傳統(tǒng)網(wǎng)絡訓練過程無法熟知每層網(wǎng)絡的具體操作的問題, 本文對CapsNet 的每層網(wǎng)絡的輸出向量進行特征可視化分析,如圖5 所示。
圖5 特征可視化Fig.5 Feature visualization
首先,將輸入從一維故障數(shù)據(jù)重構(gòu)為二維7×7 的圖像數(shù)據(jù)。卷積操作后,可以看出故障數(shù)據(jù)的某類特征被提取出來,得到新的二維6×6 的圖像。 然后,使用步幅為1 的3×3 卷積核操作得到2×2 的圖像矩陣,故障特征再次被提取、被細分化。最后,經(jīng)過動態(tài)路由算法更新預測。從得到的10×16 的輸出圖像清楚看到,一類故障類型可以被網(wǎng)絡快速識別,且識別準確率也極高。
從圖5 所示的故障分類膠囊層可以看出,隨機選取的10 類故障向量是一個160 維(10×16)的輸出矩陣,每行表示一類故障輸出,16 維的輸出活躍向量與其他輸出向量存在明顯差異,表明模型能準確識別每一類輸入故障。
針對本文所提的20 種故障數(shù)據(jù)以及一種正常工況數(shù)據(jù),隨機進行4 次實驗驗證。 每次隨機選取10 類不同故障進行訓練。 這樣既可以保證訓練集和測試集不重復,又能同時對20 種故障數(shù)據(jù)進行識別。
表1 20 種故障的訓練準確率與測試準確率Tab.1 Training accuracy and test accuracy of 20 kinds of faults
從表1 可以得出:20 種故障的整體訓練準確率都達到96%以上, 整體測試準確率均達到92%以上,說明了模型具有良好的診斷能力。
其次,再對每一類故障樣本的數(shù)據(jù)集進行3 次測試,每類故障的測試準確率如表2 所示。
表2 每類故障的測試準確率表Tab.2 Test accuracy of each type of fault
如表2 中所示,除第三類故障外,其余19 類故障的測試準確率都為90%以上,達到預期的實驗效果,由于故障3 和故障5 較難識別,在文獻[8,10] 中, 故障3 的識別率僅達到2.37%和10.25%,在文獻[8]中,故障5 的識別率僅達到34.75%。 在本文的20 類故障識別里,故障3 的測試準確率達到86.96%, 故障5 的測試準確率為90.81%,實驗表明本文提出的故障診斷模型的性能有了明顯提高。
隨機選取10 種故障識別的數(shù)據(jù)測試仿真圖如圖6 所示。
圖6 所示,圖中實線表示隨機選取10 種故障識別的訓練準確率,圖中虛線表示隨機選取10 種故障識別的測試準確率。當step 為0 到4 000 時,訓練準確率和測試準確率同時迅速增加為96%和94%左右。 4 000 步之后,增長速度逐漸緩慢,最終均趨于穩(wěn)定。在此過程中,訓練及測試準確率的增長趨勢保持同步,有一定的穩(wěn)定性和一致性。
圖6 隨機選取10 種故障識別的數(shù)據(jù)測試仿真圖Fig.6 Test simulation diagram of randomly selected 10 kinds of fault identification data
表3 測試結(jié)果對比Tab.3 Comparison of test results
總的誤差損失為邊緣損失誤差與重構(gòu)模塊損失誤差之和。 當?shù)螖?shù)達到4 000 次的時候, 準確率接近95%, 總的誤差損失已經(jīng)低至0.1。 隨著迭代次數(shù)的增加,損失值收斂于0.09。
表3 中,將本文所提過程故障診斷模型的數(shù)值仿真結(jié)果與同在TE 過程數(shù)據(jù)庫上進行故障診斷其他故障診斷方法的仿真結(jié)果進行對比,本文模型的平均故障分類準確率可達到95.593 8%,高于現(xiàn)有模型對TE 過程故障的識別準確率。 說明了本模型的故障識別性能較之前模型有顯著提高。
本文提出基于CapsNet 模型的過程故障診斷方法,首先,對輸入數(shù)據(jù)進行預處理,再進入網(wǎng)絡模型訓練,主要通過在動態(tài)一致路由更新上進行故障分類,還增加重構(gòu)模塊來對輸入數(shù)據(jù)矩陣及時反饋修正,降低損失誤差。 實驗結(jié)果表明CapsNet 模型比之前模型更適合過程故障識別。 同時因為網(wǎng)絡結(jié)構(gòu)簡單以及網(wǎng)絡的空間特性,訓練速度及識別準確率都大大提高。