王 珠 吳巖松 王少賢 王若暄
(中國石油大學(xué)(北京)信息科學(xué)與工程學(xué)院自動化系)
異常一般指的是系統(tǒng)由于出現(xiàn)一個或者多個參數(shù)、特性低于正常指標,出現(xiàn)了系統(tǒng)存在安全隱患的情況[1]。 工業(yè)上的異常檢測分為單個參數(shù)的異常檢測與報警和控制回路中關(guān)聯(lián)變量的異常檢測。 關(guān)聯(lián)變量(即操作變量和被控變量)的異常檢測能夠有效地反映出工藝過程中工況的遷移,以及執(zhí)行機構(gòu)和檢測儀表所發(fā)生的異常情況。
目前,煉化裝置中異常工況的檢測方法根據(jù)原理可分為3類:基于知識的方法、基于模型的方法和基于數(shù)據(jù)驅(qū)動的方法[2~4]。 其中,使用基于知識的方法和基于模型的方法實現(xiàn)故障檢測需要對機理進行充分的分析并掌握豐富的現(xiàn)場經(jīng)驗,導(dǎo)致這兩種方法在日趨復(fù)雜的化工生產(chǎn)過程中難以獲得良好的效果。 隨著信息時代的發(fā)展,智能儀表、傳感網(wǎng)絡(luò)等實現(xiàn)了對關(guān)鍵點位的全方位檢測,同時,也儲存了海量的體現(xiàn)裝置運行狀態(tài)的過程數(shù)據(jù)[5,6]。 如今,基于數(shù)據(jù)驅(qū)動的方法無需復(fù)雜機理知識,從歷史數(shù)據(jù)中挖掘有效信息的優(yōu)勢被顯現(xiàn)出來,成為應(yīng)用在故障檢測中的重要技術(shù)手段[7]。
基于數(shù)據(jù)驅(qū)動的常用診斷方法主要包括:基于統(tǒng)計原理的方法、 時域和頻域特征分析方法、包含人工智能的機器學(xué)習(xí)算法。 基于統(tǒng)計原理方法主要針對單個參數(shù),以相關(guān)過程變量的歷史數(shù)據(jù)為基礎(chǔ),借助多元投影等手段將歷史數(shù)據(jù)劃分為不同子空間, 進而構(gòu)造異常判斷的控制限[7,8]。LI W H等提出將遞歸主元分析(Principal Component Analysis,PCA)應(yīng)用于過程監(jiān)控中[9]。CAI L和TIAN X提出一種基于魯棒獨立成分分析(Independent Component Analysis,ICA) 的故障檢測方法, 一定程度上解決了傳統(tǒng)ICA方法對異常值敏感的問題[7,10]。 ZHAO S J等提出針對多階段的間歇過程的基于偏最小二乘(Partial Least Squares,PLS)模型[11]。 FAZAI R等提出將廣義似然比檢驗與PLS方法相結(jié)合, 建立故障檢測模型并應(yīng)用在化工過程檢測中[12]。 與PCA、PLS等傳統(tǒng)多元統(tǒng)計方法相比,支持向量機描述(Support Vector Data Description,SVDD)訓(xùn)練數(shù)據(jù)不存在高斯限制,可擴展到非線性情況, 逐漸應(yīng)用于異常檢測[7,13,14]。張漢元和田學(xué)民提出一種改進的SVDD算法,將其應(yīng)用于非線性過程的故障檢測[15]。
機器學(xué)習(xí)算法的核心是分類器,基于打好標簽的正常與異常數(shù)據(jù)進行分類,實現(xiàn)對異常的診斷。 YéLAMOS I 等提出一種基于支持向量機(Support Vector Machine,SVM) 的化工過程故障診斷方法[16]。 程換新和王建慶引入懲罰正則項優(yōu)化深度置信網(wǎng)絡(luò) (Deep Belief Network,DBN)[17],提高了故障診斷準確率。 李鋼和周東華提出基于SPM的多變量連續(xù)過程在線故障預(yù)測方法[18],可應(yīng)用于線性時不變系統(tǒng)。 張浩等提出基于關(guān)聯(lián)變量時滯分析卷積神經(jīng)網(wǎng)絡(luò)的生產(chǎn)過程時間序列預(yù)測方法[19],可應(yīng)用于大時滯系統(tǒng)的長步長時間序列預(yù)測。HAN Y等對長短期記憶(Long Short-Term Memory,LSTM) 網(wǎng)絡(luò)的隱含層節(jié)點個數(shù)進行優(yōu)化,建立了一種基于LSTM的化工過程故障檢測模型[20]。 竇珊等對LSTM進行時間序列重建,實現(xiàn)對生產(chǎn)轉(zhuǎn)置的異常檢測報警[21]。
上述多元統(tǒng)計方法與機器學(xué)習(xí)方法都屬于“監(jiān)督”學(xué)習(xí),需通過大量歷史數(shù)據(jù)訓(xùn)練產(chǎn)生數(shù)據(jù)的標簽,過程比較耗時。 “無監(jiān)督”學(xué)習(xí)在數(shù)據(jù)分析、 模式識別及機器學(xué)習(xí)等領(lǐng)域是一項重要的技術(shù)[22]。 其中,k-means聚類算法具有簡單、高效的優(yōu)點。 劉麗云等將其應(yīng)用于TE過程的故障診斷[23]。
針對閉環(huán)反饋控制回路關(guān)聯(lián)變量的異常檢測,可以在兩個關(guān)聯(lián)變量之間建立有效的數(shù)學(xué)模型。 采用相關(guān)分析法辨識對象的脈沖響應(yīng)函數(shù)[7,24]。
通常基于數(shù)據(jù)驅(qū)動的故障/異常檢測,只針對單一變量或具有關(guān)聯(lián)變量的檢測儀表與執(zhí)行機構(gòu)。 對于實際復(fù)雜工業(yè)控制回路,無法判斷其故障/異常是由噪聲干擾、工況遷移還是檢測儀表與執(zhí)行機構(gòu)發(fā)生異常造成的。 筆者在單變量歷史趨勢的基礎(chǔ)上進一步對控制回路的工況遷移、檢測儀表或執(zhí)行機構(gòu)進行異常檢測,提出一種通過相關(guān)分析提取動態(tài)特性, 建立有限脈沖響應(yīng)模型,通過有限脈沖響應(yīng)模型取值參數(shù)準確表示控制回路的運行狀態(tài),k-means聚類算法對整體動態(tài)特性進行聚類分析,SVDD根據(jù)聚類密度建立一個或多個超球體的方法來實現(xiàn)對單變量和多變量過程的綜合異常診斷。 利用實際煉化廠數(shù)據(jù)進行測試,結(jié)果表明該方法具有一定的可靠性。
筆者選取實際運行過程中某一控制回路輸入輸出數(shù)據(jù)進行辨識。 在相關(guān)分析辨識方法中,傳統(tǒng)的開環(huán)多次階躍的輸入信號并不滿足系統(tǒng)辨識對輸入信號豐富且持久的激勵要求[25],由于部分輸入信號的前向時刻與當前時刻的值相等,導(dǎo)致自相關(guān)矩陣中很多列向量差別不大,這樣的矩陣為病態(tài)矩陣,條件數(shù)很大[26],若輸入的自相關(guān)矩陣奇異,則無法對矩陣進行求逆運算。
因此,筆者選取運行過程中具有動態(tài)特性的數(shù)據(jù)進行相關(guān)分析辨識,保證輸入的自相關(guān)矩陣非奇異。
筆者采用多變量相關(guān)分析辨識方法,利用輸入自相關(guān)函數(shù)和輸入輸出互相關(guān)函數(shù)辨識出單通道的有限脈沖響應(yīng)模型。
線性定常離散傳遞函數(shù)模型如下:
其中,y1×q和u1×p分別為多變量系統(tǒng)在閉環(huán)自動控制下的p維輸出和q維輸入,e1×q為輸出噪聲,離散傳遞函數(shù)G(z)的展開式為:
則取過渡時間為N=k,當i>N時,令gi=0,可得系統(tǒng)的有限脈沖響應(yīng)模型如式:
取多變量輸入輸出互相關(guān)函數(shù)Ryu和輸入自相關(guān)函數(shù)Ruu為:
2.1.1 k-means算法原理
k-means屬于無監(jiān)督學(xué)習(xí)算法, 其基本思想是:通過迭代尋找將數(shù)據(jù)分為若干個簇的一種劃分方案,使得簇內(nèi)的點盡量緊密,簇與簇之間的距離盡量大。
k-means算法以距離作為數(shù)據(jù)間相似性度量的標準,一般采用歐氏距離來計算數(shù)據(jù)對象間的距離,其公式為:
其中,L表示數(shù)據(jù)對象的個數(shù)。
k-means聚類算法執(zhí)行過程中, 每次迭代,對應(yīng)簇的質(zhì)心都要進行更新。 定義第k個類的質(zhì)心為Centerk,類簇的質(zhì)心更新方式為:
其中,Ck表示第k個類簇,|Ck|表示第k個類簇中數(shù)據(jù)對象的個數(shù)。
定義損失函數(shù)為各個樣本距離所屬簇中心點的誤差平方和:
其中,K表示類簇的個數(shù)。 若前后兩次迭代J的差值小于某一閾值,則終止迭代,得到聚類最終結(jié)果,即:
其中,t為迭代次數(shù),ε為設(shè)定閾值。
2.1.2 k-means最優(yōu)K值選取
當數(shù)據(jù)維度較少且每類數(shù)據(jù)較為分散時,可以人為對K值進行設(shè)定。 但煉化裝置中數(shù)據(jù)量龐大,維度較高,通過人工設(shè)定K值并不現(xiàn)實,若人工設(shè)定不合適的聚類數(shù),會導(dǎo)致最終聚類后的某一簇包含異常樣本與正常樣本數(shù)量相當,聚類效果較差。 選取最優(yōu)K值的具體步驟如下:
a.確定K的取值集合和最大迭代次數(shù)tmax。
b. 對每一個K的取值,都進行迭代,更新類簇的質(zhì)心位置,終止迭代的損失函數(shù)記為Jmink。
c. 將所有K值下的損失函數(shù)在同一坐標系下進行比較。
d. 觀察圖像, 損失函數(shù)值出現(xiàn)明顯拐點時,所對應(yīng)的K值即最優(yōu)聚類數(shù)。
2.1.3 k-means算法具體實施步驟
k-means算法具體實施步驟如下:
a.通過上述方法確定最優(yōu)聚類數(shù)K。b.選擇K個對象作為初始聚類中心。
c.計算每個聚類對象到聚類中心的距離。
d.更新聚類中心。 直至聚類中心不發(fā)生改變或達到最大迭代次數(shù),算法終止。
e.將每類中所包含的數(shù)據(jù)保存并打好標簽。
SVDD基本思想是構(gòu)造超邊界形成一個超球體,使其盡可能多地包含訓(xùn)練樣本中的正樣本,實現(xiàn)正樣本與負樣本最大程度的分離[27,28]。 SVDD核心問題是尋求最優(yōu)邊界以達到最優(yōu)檢測效果[7,29]。
假設(shè)有一組正常訓(xùn)練數(shù)據(jù)x∈Rn×d, 其中n是樣本個數(shù),d是特征維度。 首先通過非線性變換函數(shù)Φ:x→F將函數(shù)從原始空間映射到特征空間,在特征空間尋找一個體積最小的超球體。 具體公式如下[30,31]:
其中,R是超球體半徑;a是超球體圓心;ξi≥0為松弛變量;C為常數(shù), 其作用在于控制半徑a的最小化和松弛變量的權(quán)衡。
結(jié)合拉格朗日乘子法,式(12)可以轉(zhuǎn)化為式(13)的對偶問題:
其中,αi是xi對應(yīng)的拉格朗日系數(shù)。
當超球體邊界無法保證準確分類時,可采用核函數(shù)的方法對SVDD進行優(yōu)化, 將訓(xùn)練數(shù)據(jù)映射至更高維的空間進行超球體的計算。 常用的核函數(shù)包括線性核函數(shù)、多項式核函數(shù)、Gaussian核函數(shù)和Sigmoid核函數(shù),核函數(shù)的確定需根據(jù)具體的需求[7,32]。 筆者根據(jù)需求選取如下Gaussian核函數(shù):
在所有正常訓(xùn)練樣本中,把拉格朗日系數(shù)滿足0<αi<C的樣本稱為支持向量,訓(xùn)練數(shù)據(jù)集中屬于支持向量的集合為SV,可由下式計算超球體球心和半徑[31]:
若o≤kR(k≥1),說明測試樣本在超球體球面上或者內(nèi)部,屬于正常樣本;反之,屬于異常樣本。
在實際訓(xùn)練過程中,應(yīng)在正類樣本訓(xùn)練集中加入少量負類樣本來防止過擬合現(xiàn)象。 假設(shè)訓(xùn)練樣本中正樣本和負樣本標簽分別為:
測試樣本xt到超球體球心的距離為:
異常診斷主要分為兩個階段:訓(xùn)練階段和在線測試階段,具體流程如圖1所示。
圖1 異常檢測總體流程
訓(xùn)練階段的主要步驟為:在控制回路中存在大量操縱變量與被控變量歷史數(shù)據(jù)的情況下,經(jīng)相關(guān)分析法辨識得出有限脈沖響應(yīng)模型參數(shù),總體構(gòu)成一個數(shù)據(jù)矩陣, 并在最優(yōu)聚類數(shù)下進行kmeans聚類。 此時,分以下3種情況訓(xùn)練SVDD超球體: 將含有大量數(shù)據(jù)樣本的類作為正常工況,并訓(xùn)練正常工況SVDD超球體; 將含有一部分數(shù)據(jù)樣本的類作為異常工況一、異常工況二等多種異常工況,并訓(xùn)練每類異常工況的SVDD超球體;將只含有少量數(shù)據(jù)樣本的類,或類中數(shù)據(jù)量占總數(shù)據(jù)量百分比不超過設(shè)定值的類舍棄,作為明顯故障的數(shù)據(jù)樣本。
在線測試階段主要步驟:將在線辨識得到的有限脈沖響應(yīng)模型參數(shù)與已訓(xùn)練的多個超球體所設(shè)閾值進行比較,若其在正常工況超球體閾值范圍之內(nèi),則為正常工況;若其在訓(xùn)練的多個異常工況超球體所設(shè)閾值范圍之內(nèi),則說明發(fā)生異常工況, 并診斷出具體產(chǎn)生哪一類異常工況;若其在所有已訓(xùn)練好的超球體閾值范圍之外,則說明此時檢測儀表或執(zhí)行機構(gòu)發(fā)生顯著異常現(xiàn)象,并有發(fā)展為故障的趨勢。
本課題的數(shù)據(jù)為國內(nèi)某煉化廠分餾總貌一段溫度控制回路中檢測儀表與執(zhí)行機構(gòu)的實際過程數(shù)據(jù),將其在Matlab平臺上進行仿真測試。首先, 獲取煉化廠中一段單輸入-單輸出控制回路的過程動態(tài)歷史數(shù)據(jù),每60 s采樣一次,根據(jù)歷史趨勢選擇數(shù)據(jù)段,使得動態(tài)矩陣非奇異。 然后,建立訓(xùn)練樣本數(shù)據(jù)集,將歷史數(shù)據(jù)按照時間序列進行劃分, 取每500 min的采樣數(shù)據(jù)作為一組數(shù)據(jù),通過相關(guān)分析法辨識其有限脈沖響應(yīng)模型。 通過現(xiàn)有的有限的實際過程控制回路的歷史數(shù)據(jù),共辨識出9組有限脈沖響應(yīng)模型參數(shù)。 有限脈沖響應(yīng)模型階次為10。 最后,總體構(gòu)成了一個9×10的矩陣。
將9組有限脈沖響應(yīng)模型參數(shù)進行聚類分析。 首先,確定最優(yōu)聚類數(shù)目為2,即將此數(shù)據(jù)集聚為兩類。 經(jīng)聚類后,其中一類含有7組數(shù)據(jù),另一類含有2組數(shù)據(jù)。 由于在實際化工運行過程中,正常數(shù)據(jù)要多于異常數(shù)據(jù)。 所以,選取密度大的一類作為正常樣本數(shù)據(jù)集訓(xùn)練SVDD超球體。
訓(xùn)練SVDD超球體,核函數(shù)采用Gaussian核函數(shù),C值和ξ值分別為0.3和0.03。
獲取此控制回路近一段時間內(nèi)的過程動態(tài)數(shù)據(jù),共辨識出5組有限脈沖響應(yīng)模型,有限脈沖響應(yīng)模型參數(shù)構(gòu)成一個5×10的矩陣,將其作為測試樣本集。 利用經(jīng)過訓(xùn)練的SVDD模型進行異常檢測,最終的測試結(jié)果如圖2所示。
圖2 單輸入-單輸出異常檢測結(jié)果
對檢測結(jié)果進行分析:測試樣本數(shù)目為5,經(jīng)訓(xùn)練后SVDD超球體閾值為0.404 3。 樣本1、2、4、5距超球體球心的距離都小于閾值, 即正常樣本。樣本3距離超球體球心的距離為0.421 1, 大于閾值,即異常樣本。 然后,在此控制回路沒有受到噪聲干擾以及工況發(fā)生遷移的情況下,判斷控制回路中檢測儀表或執(zhí)行機構(gòu)出現(xiàn)異常。 最后,對異常劃分等級,根據(jù)實際現(xiàn)場工業(yè)過程對控制回路的要求而定。
在當今工業(yè)背景下,不再只期望工業(yè)過程平穩(wěn)運行,而對控制效果、產(chǎn)品質(zhì)量提出了更高的要求。 所以,對控制回路的異常診斷更具有實際意義。 筆者提出使用相關(guān)分析法進行模型參數(shù)辨識、k-means與SVDD算法進行異常檢測的方法,可實現(xiàn)對執(zhí)行機構(gòu)與檢測儀表的異常檢測。 將筆者所提方法用于實際的工業(yè)過程中,測試結(jié)果驗證了所提方法的有效性。