郭小萍,王 浩,李 元
(沈陽化工大學(xué) 信息工程學(xué)院,沈陽 110142)
隨著現(xiàn)代化工業(yè)技術(shù)快速進(jìn)步以及生產(chǎn)規(guī)模不斷擴(kuò)大,工業(yè)過程中各環(huán)節(jié)也變得日趨復(fù)雜,為有效確保生產(chǎn)過程安全以及提升產(chǎn)品質(zhì)量,故障診斷方法被廣泛研究,并且逐漸成為工業(yè)過程自動(dòng)化技術(shù)發(fā)展的熱點(diǎn)[1]。隨著檢測(cè)儀器的發(fā)展與過程數(shù)據(jù)量的增加,大量測(cè)量數(shù)據(jù)可被用來提取有效信息,這促進(jìn)了基于數(shù)據(jù)驅(qū)動(dòng)的故障診斷方法在化工過程中的應(yīng)用,此方法利用大量數(shù)據(jù)為基礎(chǔ)建立模型,實(shí)現(xiàn)對(duì)過程的監(jiān)測(cè)[2-3]。
在眾多故障診斷方法當(dāng)中,聚類算法是一種廣泛使用的方法,其通過分析歷史數(shù)據(jù)在內(nèi)在結(jié)構(gòu)上的相關(guān)性得到診斷規(guī)則,之后利用該規(guī)則分類樣本。文獻(xiàn)[4]提出一種模糊聚類故障診斷算法,利用類別間的隸屬度關(guān)系來判斷類別屬性,但該算法在針對(duì)大數(shù)據(jù)及高維數(shù)據(jù)時(shí),性能會(huì)下降。現(xiàn)代工業(yè)過程易產(chǎn)生大規(guī)模、高維度以及復(fù)雜結(jié)構(gòu)的數(shù)據(jù)[5]。利用特征轉(zhuǎn)換方法將高維數(shù)據(jù)特征轉(zhuǎn)換到低維特征空間。文獻(xiàn)[6]提出一種局部線性嵌入結(jié)合k 均值的故障診斷算法,驗(yàn)證了數(shù)據(jù)經(jīng)過降維之后再聚類的有效性。盡管如此,數(shù)據(jù)高度復(fù)雜的特征結(jié)構(gòu)仍然給聚類算法帶來了挑戰(zhàn)[7]。
隨著深度學(xué)習(xí)的發(fā)展,深度神經(jīng)網(wǎng)絡(luò)逐漸具備層次化結(jié)構(gòu)以及強(qiáng)大的非線性映射能力,這使得大規(guī)模的深層次特征提取成為了可能[8]。深度聚類算法是一種以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的聚類算法,其主要分為兩個(gè)階段:特征變換與聚類。文獻(xiàn)[9]基于在相同流形結(jié)構(gòu)中的樣本類型一致的假設(shè),提出一種利用流形結(jié)構(gòu)的深度聚類算法;文獻(xiàn)[10]將密度聚類與自編碼器結(jié)合,提出深度密度聚類算法;文獻(xiàn)[11]結(jié)合自編碼器與K-means 聚類,預(yù)訓(xùn)練自編碼器提高初始化參數(shù)質(zhì)量,同時(shí)采用交替優(yōu)化方式更新網(wǎng)絡(luò)參數(shù)與聚類中心,因此對(duì)于聚類損失利用率降低,聚類過程中的誤差不能完全考慮,導(dǎo)致聚類結(jié)果準(zhǔn)確性降低。
本文將K-means 聚類算法分類時(shí)產(chǎn)生的誤差融入到卷積自編碼器誤差項(xiàng)中,統(tǒng)籌誤差尋優(yōu)進(jìn)行網(wǎng)絡(luò)參數(shù)的調(diào)整,提出一種深度嵌入聚類(DEC)故障診斷方法。首先對(duì)收集到的各類數(shù)據(jù)歸一化,通過卷積自編碼器提取相關(guān)特征構(gòu)成特征空間。在該空間中尋找K-means 聚類中心,并計(jì)算聚類誤差,而且將其引入到卷積自編碼器損失函數(shù)中,統(tǒng)籌誤差完成網(wǎng)絡(luò)參數(shù)調(diào)整,交替更新完成特征學(xué)習(xí)和聚類任務(wù)。根據(jù)聚類結(jié)果可以判斷數(shù)據(jù)是否存在故障及其類型。最后通過TE 過程實(shí)驗(yàn)驗(yàn)證了本文所提方法的有效性,并與基于AE 和K-means 算法對(duì)比,結(jié)果表明本方法具有更高正確率。
自編碼器(auto encoder,AE)是一種無監(jiān)督學(xué)習(xí)方法,包含編碼器和解碼器兩部分。編碼器生成從輸入層到隱藏層的特征映射,而解碼器執(zhí)行從隱藏層到輸出層的自重構(gòu)[12]。
自編碼器要求重構(gòu)后數(shù)據(jù)盡可能接近原始數(shù)據(jù),因此需要最大限度減少重建損失,其利用最小化重構(gòu)誤差優(yōu)化參數(shù),AE 網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。

圖1 自編碼器網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of auto-encoder
假設(shè)輸入向量為{x1,x2,…,xn},利用編碼函數(shù)f(x)將n 維向量x 映射到m 維隱含層矢量h 中,以此來實(shí)現(xiàn)數(shù)據(jù)降維,映射關(guān)系如下:

式中:f 為編碼器的激活函數(shù)Relu[13];w1為輸入層到隱藏層的權(quán)重矩陣;b1為偏置。
在解碼階段,使用解碼函數(shù):

式中:g 為解碼器的激活函數(shù)Relu;w2為隱藏層到輸出層的權(quán)重矩陣;b2為偏置。
AE 是通過最小化重構(gòu)誤差來優(yōu)化參數(shù)集,誤差損失函數(shù)如下:

卷積自編碼器[14](convolutional auto-encoder,CAE)是基于CNN 基礎(chǔ)上的自編碼器算法,采用卷積核來進(jìn)行特征學(xué)習(xí)。CAE 中結(jié)合卷積濾波與自編碼器的無監(jiān)督預(yù)訓(xùn)練,不同之處在于權(quán)值共享的位置,CAE中權(quán)值共享發(fā)生在輸入位置,對(duì)于特征空間中局部結(jié)構(gòu)進(jìn)一步保留。
深度嵌入聚類融合神經(jīng)網(wǎng)絡(luò)與聚類算法于一體,利用數(shù)據(jù)驅(qū)動(dòng)的方法共同解決特征空間與聚類成員兩者間的關(guān)系。與在數(shù)據(jù)空間或淺層線性嵌入空間中對(duì)數(shù)據(jù)操作工作的不同,DEC 通過反向傳播在聚類目標(biāo)上學(xué)習(xí)特征映射,并且進(jìn)一步細(xì)化聚類結(jié)果。本文DEC 中神經(jīng)網(wǎng)絡(luò)采用卷積自編碼器網(wǎng)絡(luò),聚類算法采用K-means 聚類[15]。將輸入數(shù)據(jù)送到CAE 中提取特征,聚類特征得到聚類中心。
對(duì)于輸入數(shù)據(jù){x1,x2,…,xn}∈Rn×m中m 組數(shù)據(jù),分為k 個(gè)簇,每個(gè)簇都由聚類中心向量μj,j=1,2,…,k 表示。不同于直接對(duì)原始輸入數(shù)據(jù)進(jìn)行聚類,深度聚類中先對(duì)輸入數(shù)據(jù)進(jìn)行非線性映射的轉(zhuǎn)換,轉(zhuǎn)換后數(shù)據(jù)的維度小于原始數(shù)據(jù)的維度。
DEC 對(duì)數(shù)據(jù)進(jìn)行聚類的同時(shí)學(xué)習(xí)一套在特征空間Z 中的k 個(gè)聚類中心以及利用卷積自編碼器將數(shù)據(jù)映射到特征空間Z 的參數(shù)θ。算法網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,其中主要包含兩個(gè)階段:

圖2 基于卷積自編碼器的深度聚類算法Fig.2 Deep clustering based on CAE
(1)利用卷積自編碼器對(duì)參數(shù)初始化處理。當(dāng)網(wǎng)絡(luò)達(dá)到穩(wěn)定狀態(tài)時(shí),完成初始化。
(2)優(yōu)化初始化參數(shù)。卷積自編碼器產(chǎn)生重構(gòu)損失,隱層特征聚類產(chǎn)生聚類損失,將兩部分損失組合形成損失函數(shù)。優(yōu)化部分采用隨機(jī)梯度下降和反向傳播算法優(yōu)化網(wǎng)絡(luò)參數(shù)和聚類中心,直至網(wǎng)絡(luò)收斂。
在訓(xùn)練一個(gè)有效的深度學(xué)習(xí)模型的過程中,參數(shù)尋優(yōu)一直是一個(gè)被重點(diǎn)關(guān)注的問題。本算法目的是為了找到一個(gè)更好的f 使得特征空間Z 更適合聚類任務(wù),因此要注意到兩部分的損失,分別是編碼器損失與聚類損失。聚類損失由聚類結(jié)果確定,通過計(jì)算簇中心與嵌入點(diǎn)之間的軟分配,利用KL 散度計(jì)算聚類產(chǎn)生的損失。
為了更好的衡量聚類過程中簇中心μj與嵌入點(diǎn)zi之間的相似性,本算法選擇利用學(xué)生t 分布(Student’s Distribution)[16]作為度量標(biāo)準(zhǔn)。

式中:zi=fθ(xi)∈Z,qij為樣本i 分配給簇j 的概率,即軟分配。由軟分配可以進(jìn)一步得出輔助目標(biāo)分布pij:

在提出輔助目標(biāo)分布之后,通過學(xué)習(xí)它們的高置信度分配在迭代中改進(jìn)聚類,模型的構(gòu)建是通過軟分配來匹配目標(biāo)分布進(jìn)行訓(xùn)練,這里用KL 散度損失[17]作為聚類損失,其用來測(cè)量p 分布和q 分布兩者之間的非對(duì)稱差異。KL 散度損失如下:

自此已經(jīng)得到參數(shù)優(yōu)化所需要的兩部分損失。目標(biāo)損失的函數(shù)定義如下:

式中:Lr表示重構(gòu)損失;Lc表示聚類損失;γ 用來控制特征空間與原始數(shù)據(jù)的真實(shí)程度。
本算法通過小批量隨機(jī)梯度下降(SGD)和反向傳播優(yōu)化整體的損失Loss,共有3 種參數(shù)需要優(yōu)化,分別是自編碼器權(quán)重、聚類中心以及目標(biāo)分布P。
編碼器權(quán)重和聚類中心更新。首先將目標(biāo)分布P 固定,Lc相對(duì)于特征空間點(diǎn)zi與聚類中心μj的梯度計(jì)算如下:

對(duì)于聚類中心μj的更新選擇m 個(gè)樣本的批量數(shù)據(jù),學(xué)習(xí)率為λ:

解碼器的權(quán)重更新如下:

編碼器的權(quán)重更新如下:

DEC 故障診斷方法主要包括兩部分,如圖3 所示。

圖3 故障診斷流程Fig.3 Fault diagnosis flow chart
離線建模主要步驟:
(1)選取5 種故障樣本數(shù)據(jù)與正常數(shù)據(jù)作為離線建模數(shù)據(jù)矩陣,進(jìn)行歸一化處理;
(2)初始化神經(jīng)網(wǎng)絡(luò)參數(shù),將權(quán)值參數(shù)初始化為一個(gè)常數(shù);
(3)利用處理后的數(shù)據(jù)訓(xùn)練編碼器網(wǎng)絡(luò),得到隱藏層特征,構(gòu)成特征空間;
(4)K-means 聚類在特征空間中對(duì)提取特征進(jìn)行聚類,得到聚類中心,根據(jù)聚類誤差計(jì)算聚類損失;
(5)結(jié)合編碼器重構(gòu)損失與聚類損失構(gòu)成損失函數(shù),利用隨機(jī)梯度下降和反向傳播算法優(yōu)化網(wǎng)絡(luò)參數(shù),更新簇中心,直至網(wǎng)絡(luò)收斂;
(6)訓(xùn)練完成得到模型與聚類中心。
在線故障診斷主要步驟:
(1)獲取測(cè)試數(shù)據(jù)并且進(jìn)行歸一化處理;
(2)利用建模步驟中建立好的模型對(duì)處理的數(shù)據(jù)進(jìn)行特征提取;
(3)獲取建模步驟中聚類中心,計(jì)算特征到已知聚類中心的距離;
(4)比較特征到不同聚類中心的距離,將其劃分為距離聚類中心最近的類別;
(5)根據(jù)已知聚類中心的標(biāo)簽得到測(cè)試數(shù)據(jù)故障類型。
田納西-伊斯曼(Tennessee Eastman,TE)過程是一個(gè)化工過程實(shí)驗(yàn)平臺(tái),主要對(duì)裝置、物料與能量間非線性慣性進(jìn)行描述,它被廣泛運(yùn)用于復(fù)雜工業(yè)過程控制與故障診斷中的方法驗(yàn)證[18]。該過程共有21 中故障工況,產(chǎn)生正常數(shù)據(jù)和21 個(gè)故障數(shù)據(jù),其中包含41 個(gè)測(cè)量變量和12 個(gè)操作變量。本文選取所有變量,考慮到K 均值算法的局限性,采用正常數(shù)據(jù)與5 種故障數(shù)據(jù)建立模型,訓(xùn)練集總共2900個(gè)樣本,測(cè)試集總共2400 個(gè)樣本。
實(shí)驗(yàn)基于PyTorch 框架,針對(duì)訓(xùn)練框架設(shè)置超參數(shù),批訓(xùn)練尺寸設(shè)置為128,權(quán)重衰減因子設(shè)0.0002,迭代150。將聚類數(shù)k 設(shè)置為5,低維特征空間的維數(shù)設(shè)置為29。
模型的訓(xùn)練準(zhǔn)確性和測(cè)試準(zhǔn)確性如圖4 所示,可以看出其隨著迭代次數(shù)不斷提高而提高。

圖4 DEC 準(zhǔn)確性對(duì)比Fig.4 Accuracy comparison for DEC
DEC 算法聚類階段的預(yù)測(cè)標(biāo)簽和真實(shí)標(biāo)簽,如圖5 所示。可以看出數(shù)據(jù)被分成5 類,并且與已知的數(shù)據(jù)標(biāo)簽對(duì)比發(fā)現(xiàn)大部分的數(shù)據(jù)都是正確的,在故障1 和故障2 數(shù)據(jù)的診斷中出現(xiàn)小部分樣本錯(cuò)誤。AE-kmeans 的聚類結(jié)果,如圖6 所示,對(duì)于故障1,2,7 和9 故障不能準(zhǔn)確的劃分類別,可以看出故障7 在故障1,2 和9 中都存在。
對(duì)比圖5 和圖6 兩種方法在5 種故障上的聚類結(jié)果可以看出聚類損失對(duì)于聚類結(jié)果來帶的影響。DEC 算法能夠有效利用聚類損失得到更準(zhǔn)確的結(jié)果,建立更有效的診斷規(guī)則。

圖5 DEC 聚類結(jié)果Fig.5 DEC clustering results

圖6 基于AE-kmeans 聚類結(jié)果Fig.6 Based on AE-kmeans clustering results
兩種算法在TE 數(shù)據(jù)集不同故障類型數(shù)據(jù)上的診斷率,如表1 所示。

表1 兩種方法診斷率對(duì)比Tab.1 Comparison of diagnosis rate between two methods %
從表1 中可以看出在21 個(gè)故障中,DEC 算法正確診斷率超過90%以上的有7 種,其中故障3 和故障9 兩種故障放在一起診斷時(shí)會(huì)出現(xiàn)誤判,診斷率相對(duì)較低,其它故障診斷時(shí)相互產(chǎn)生一些影響。而AE-kmeans 算法在大多數(shù)故障上的診斷率相DEC 都有明顯差距。
對(duì)比兩種算法可以看出本文采用的方法具有更好的故障診斷率。DEC 算法對(duì)比AE-kmeans 聚類算法在一些較難診斷的故障類型上具有更好的診斷率,這說明DEC 算法建立的模型對(duì)于過程的描述更加準(zhǔn)確,也更適用于故障診斷的建模監(jiān)控。
本文提出的深度聚類算法在數(shù)據(jù)特征提取以及聚類方面有著顯著的改善。DEC 通過不斷的迭代基于KL 散度的聚類損失以及自編碼器的重構(gòu)損失來優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù),提供了相對(duì)于超參數(shù)設(shè)置的改進(jìn)性能以及魯棒性,以此進(jìn)一步來優(yōu)化聚類目標(biāo)。在對(duì)TE 過程進(jìn)行仿真實(shí)驗(yàn)中驗(yàn)證了算法的優(yōu)越性,基于AE 和K-means 結(jié)合的方法在故障檢測(cè)率和診斷準(zhǔn)確率方面都要低于DEC 算法,DEC 算法對(duì)數(shù)據(jù)的特征提取能力的優(yōu)越性有效提升了聚類的效果。后期在對(duì)算法的改進(jìn)當(dāng)中還要進(jìn)一步驗(yàn)證算法能否有效處理規(guī)模較大的數(shù)據(jù)集,以及更復(fù)雜工況下產(chǎn)生的數(shù)據(jù)。