明 震,朱希安
(北京信息科技大學(xué) 信息與通信工程學(xué)院,北京 100101)
火力發(fā)電廠中,凝結(jié)水泵被用來在火電熱力系統(tǒng)中輸送凝汽器內(nèi)的凝結(jié)水。在泵的入口處壓力下降,而溫度不變時,水就會發(fā)生汽化。汽化時泵體振動增大,出口壓力、電流急劇下降,水泵無法正常工作[1],即發(fā)生凝結(jié)水泵汽化故障。目前,關(guān)于相關(guān)故障的預(yù)警還停留在固定閾值檢測,或是頻次較高的人工巡檢中。
發(fā)電廠設(shè)備長期處于高強(qiáng)度、高溫、高壓的生產(chǎn)環(huán)境中,故障的發(fā)生率和危害性較大,實時檢測設(shè)備狀態(tài)、提前判斷設(shè)備是否發(fā)生故障的預(yù)警系統(tǒng)必不可少??煽康念A(yù)警系統(tǒng)需要運(yùn)行人員長期細(xì)致地記錄故障手冊,形成特定類型故障的專家知識庫,很難在短時間內(nèi)實現(xiàn)。在實際生產(chǎn)中,發(fā)電廠本身積累了大量的設(shè)備監(jiān)控數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)通過漸進(jìn)、逐層的方式替換了原本復(fù)雜、人工特定的特征工程,在海量數(shù)據(jù)的分析中展現(xiàn)出強(qiáng)大的能力。將深度學(xué)習(xí)技術(shù)引入到電廠設(shè)備的預(yù)警系統(tǒng)中,對故障的事前發(fā)現(xiàn)、及時處理,以及確定機(jī)組檢修時機(jī)等方面很有幫助。
現(xiàn)有的電廠預(yù)警系統(tǒng)大多對設(shè)備的正常運(yùn)行區(qū)間進(jìn)行數(shù)據(jù)挖掘和建模。韓萬里等[2]對電廠引風(fēng)機(jī)運(yùn)行數(shù)據(jù)進(jìn)行主成分分析(principal component analysis,PCA)降維,再利用多元狀態(tài)估計進(jìn)行建模和故障預(yù)警;朱朋成等[3]以熱力學(xué)機(jī)理和數(shù)據(jù)挖掘為基礎(chǔ),確定了磨煤機(jī)正常運(yùn)行的特征參數(shù)閾值及預(yù)警規(guī)則,擁有較高的置信區(qū)間;李曉東等[4]采用向量量化(learning vector quantization,LVQ)神經(jīng)網(wǎng)絡(luò)對磨煤機(jī)設(shè)備狀態(tài)進(jìn)行預(yù)測;肖黎等[5]先采用基于密度的有噪聲聚類(density-based spatial clustering of applications with noise,DBSCAN)方法進(jìn)行狀態(tài)聚類,再采用隨機(jī)森林分類法進(jìn)行建模,同時實現(xiàn)了故障分類和磨煤機(jī)壽命的估算。本文以凝結(jié)水泵歷史運(yùn)行數(shù)據(jù)作為輸入,結(jié)合LSTM網(wǎng)絡(luò)建立水流量預(yù)測模型,實現(xiàn)水泵汽化故障的預(yù)警。
傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)會產(chǎn)生梯度消失問題,這就意味著模型難以學(xué)習(xí)到長期依賴的遠(yuǎn)距離信息。長短期記憶神經(jīng)網(wǎng)絡(luò)(long short-term memory neural network,LSTM-NN)是在循環(huán)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,于1997年由Hochreiter和Schmidhuber 首次提出的一種遞歸神經(jīng)網(wǎng)絡(luò)[6]。LSTM自從被提出以來就被廣泛應(yīng)用于時間序列的相關(guān)問題中,在對時序數(shù)據(jù),如股票、車流量、生物數(shù)量[7-9]等方面進(jìn)行預(yù)測時,和各行業(yè)的傳統(tǒng)算法對比,都取得了不錯的效果。凝結(jié)水泵運(yùn)行數(shù)據(jù)也屬于時序數(shù)據(jù),反映了水泵運(yùn)行狀態(tài)隨時間的變化,適合用LSTM進(jìn)行處理和預(yù)測。LSTM網(wǎng)絡(luò)的核心部分在于采用獨特的控制門結(jié)構(gòu),由遺忘門、輸入門、輸出門3種門結(jié)構(gòu)來控制神經(jīng)網(wǎng)絡(luò)中隱藏層的記憶單元細(xì)胞,如圖1所示。
圖1 LSTM網(wǎng)絡(luò)的單個時序單元
遺忘門決定著前一時刻的神經(jīng)單元有多少信息被舍棄,在t時刻遺忘門的輸出函數(shù)為ft;輸入門it記錄當(dāng)前時刻的某些信息,同時采用tanh激活函數(shù),和遺忘門共同控制記憶細(xì)胞的更新;輸出門ot控制最終輸出ht與記憶細(xì)胞信息Ct的邏輯關(guān)系,即選擇輸出記憶細(xì)胞中的信息。
(1)
(2)
(3)
(4)
ht=tanh(Ct)·ot
(5)
式中:Wt和Ut分別為當(dāng)前時刻隱藏層節(jié)點和輸入數(shù)據(jù)的權(quán)重矩陣;bt為偏置項;σ為Sigmoid激活函數(shù);Ct-1和Ct表示記憶單元細(xì)胞中的內(nèi)容。
模型預(yù)測值和真實值的差距稱為殘差。為了抑制較大孤立殘差的不利影響,減少誤報次數(shù),本文采用滑動窗口統(tǒng)計法對獲得的殘差序列進(jìn)行處理,以得到更恰當(dāng)?shù)念A(yù)警閾值。
設(shè)殘差序列為R:
R=[r1,r2,…,rn]
(6)
對R取一滑動窗口,窗口寬度為N,計算窗口內(nèi)連續(xù)N個殘差均值:
(7)
經(jīng)過窗口滑動,可以得到處理后的殘差均值序列。定義故障預(yù)警閾值為E:
E=αEmax
(8)
式中:Emax為處理后的殘差均值序列中最大值的絕對值;α為預(yù)警系數(shù),需要結(jié)合實際模型數(shù)據(jù)以及專家意見進(jìn)行設(shè)定,以期達(dá)到最好的預(yù)警效果。
本文數(shù)據(jù)來自于某電廠凝結(jié)水泵2020年1月1日至2020年10月25日,每隔10 min取得的凝結(jié)水泵測點無故障數(shù)據(jù),共23 127條,設(shè)為數(shù)據(jù)集A;以及2020年11月3日至2020年12月31日,每隔2 min取得的凝結(jié)水泵測點驗證數(shù)據(jù)(含實際故障),共41 415條,設(shè)為數(shù)據(jù)集B。每一條數(shù)據(jù)由發(fā)電機(jī)有功功率、凝結(jié)水流量、凝結(jié)水泵出口母管壓力、凝結(jié)水泵軸承溫度、凝結(jié)水泵電動機(jī)電流、凝結(jié)器水位等測點數(shù)據(jù)構(gòu)成。
在實際工作中,電廠往往采用多臺水泵輪換工作,測量設(shè)備有時會出現(xiàn)故障,導(dǎo)致測點數(shù)據(jù)采集失敗,接口產(chǎn)生空值及異常值,部分?jǐn)?shù)據(jù)缺失時序性。為保證數(shù)據(jù)的可用性,本文采用以下方法對原始數(shù)據(jù)進(jìn)行清洗和處理:1)凝結(jié)水泵電動機(jī)電流和凝結(jié)水泵軸承溫度這兩類測點選擇當(dāng)前工作水泵的數(shù)據(jù),去除噪聲數(shù)據(jù)并整合為一類;2)對缺失數(shù)據(jù)進(jìn)行均值填補(bǔ),整理亂序數(shù)據(jù);3)溫度測點接入時,去除對應(yīng)的異常值。經(jīng)過預(yù)處理后的部分?jǐn)?shù)據(jù)如表1所示。
表1 預(yù)處理后的部分測點名稱及數(shù)值展示
當(dāng)凝結(jié)水泵汽化故障發(fā)生時,出口壓力和電流會降低,而凝結(jié)水流量會快速下降。在對以凝結(jié)水流量為因變量、各類測點為自變量進(jìn)行Pearson式相關(guān)分析以及咨詢相關(guān)專家可行性后,本文選取發(fā)電機(jī)有功功率、凝結(jié)水流量、凝結(jié)水泵出口母管壓力、凝結(jié)水泵電動機(jī)電流、凝結(jié)器水位這5類測點數(shù)據(jù),通過預(yù)測凝結(jié)水流量及滑動窗口統(tǒng)計法來確定閾值,進(jìn)而判斷是否出現(xiàn)凝結(jié)水泵汽化故障,這樣比單一測點進(jìn)行預(yù)測更為準(zhǔn)確。
為了消除數(shù)據(jù)量綱,加快模型收斂速度,本文采取的標(biāo)準(zhǔn)化方法是最常用的零—均值規(guī)范化法:
(9)
式中:x為原始數(shù)據(jù);μ和σ分別為原始數(shù)據(jù)的均值和標(biāo)準(zhǔn)差。
基于LSTM的凝結(jié)水泵故障預(yù)警算法流程如圖2所示。
圖2 基于LSTM的凝結(jié)水泵故障預(yù)警算法流程
本文在Windows操作系統(tǒng)下搭建CPU版本的LSTM預(yù)測模型,Python版本為3.7,采用Keras深度學(xué)習(xí)框架。Keras深度學(xué)習(xí)框架具有免費(fèi)、模塊化、開源、易擴(kuò)展的優(yōu)點,可以支持任意網(wǎng)絡(luò)架構(gòu)的搭建。預(yù)測模型的訓(xùn)練步驟如下:
1)數(shù)據(jù)分類:開始訓(xùn)練前,劃分?jǐn)?shù)據(jù)集A為訓(xùn)練集和驗證集,訓(xùn)練集占70%,驗證集為30%。
2)訓(xùn)練模型:選取滑動窗口,并選取發(fā)電機(jī)有功功率、凝結(jié)水流量、凝結(jié)水泵出口母管壓力、凝結(jié)水泵電動機(jī)電流、凝結(jié)器水位作為特征數(shù)據(jù)輸入模型,配置LSTM模型的訓(xùn)練參數(shù),輸出是預(yù)測的凝結(jié)水流量值。
3)參數(shù)優(yōu)化:根據(jù)模型在驗證集上的表現(xiàn),對模型的參數(shù)在恰當(dāng)?shù)姆秶鷥?nèi)進(jìn)行取值,控制變量不斷調(diào)整模型參數(shù),并利用model.save()來保存最佳模型,方便下次調(diào)用,節(jié)約訓(xùn)練時間。
4)閾值確定:通過模型預(yù)測值與實際值的滑動殘差,進(jìn)行預(yù)警閾值確定。
5)實驗驗證:將數(shù)據(jù)集B(含實際故障)全部輸入預(yù)測預(yù)警模型中進(jìn)行驗證。
為了對比模型在不同參數(shù)設(shè)置下的模型性能,本文采用均方誤差MMSE和平均絕對誤差MMAE作為預(yù)測模型性能的評價手段:
(10)
(11)
將數(shù)據(jù)集A輸入LSTM模型,運(yùn)用控制變量法,選取恰當(dāng)?shù)娜≈捣秶?xùn)練過程中不斷調(diào)整模型超參數(shù)。得到的最終模型結(jié)構(gòu)及各項參數(shù)為:測試窗口序列長度為18,Sequential模型由3層LSTM層堆疊構(gòu)成,通過return_sequences參數(shù)來實現(xiàn)中間層輸出序列的完整返回。為了防止過擬合,每層后添加了一層Dropout層,Dropout值為0.2,最后加入全連接層將輸出維度聚合為1;訓(xùn)練時的損失函數(shù)為均方差,優(yōu)化算法采用RMSprop(root mean square prop),批訓(xùn)練數(shù)量batch=128,訓(xùn)練次數(shù)epochs=20。
為了突顯LSTM模型的性能,本文采用模型結(jié)構(gòu)相似的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)模型與之對比。對比結(jié)果如表2所示,可以看出LSTM在測試集上的預(yù)測效果更加優(yōu)秀。
表2 RNN和LSTM模型在測試集上的表現(xiàn)
圖3和圖5分別為RNN和LSTM在測試集上的預(yù)測結(jié)果。圖4和圖6是兩種模型在測試集上的殘差圖。
圖3 RNN模型在測試集上的部分預(yù)測圖
圖4 RNN模型在測試集上的部分殘差圖
圖5 LSTM模型在測試集上的部分預(yù)測圖
圖6 LSTM模型在測試集上的部分預(yù)測圖
由圖3、圖5可知:凝結(jié)水流量周期性較強(qiáng),可以分為劇烈變化區(qū)和平緩變化區(qū),劇烈變化時流量迅速上升或下降,隨后進(jìn)入平緩區(qū),兩者交替出現(xiàn)。在波動平緩時期,RNN和LSTM模型的預(yù)測精度相差不大,真實值與預(yù)測值的殘差值也保持在較小數(shù)值之內(nèi);但在樣本劇烈波動時,RNN的表現(xiàn)不佳。由圖4、圖6對比可知:RNN的殘差值比LSTM大,這是因為LSTM在RNN的結(jié)構(gòu)基礎(chǔ)上引進(jìn)了控制門結(jié)構(gòu),網(wǎng)絡(luò)中蘊(yùn)含了樣本的長短期依賴信息,在數(shù)據(jù)劇烈變動后能較快地回復(fù)預(yù)測精度。
因此,LSTM模型能夠有效預(yù)測凝結(jié)水泵正常工作時的凝結(jié)水流量。出現(xiàn)故障前,凝結(jié)水泵的動態(tài)特性會產(chǎn)生巨大變化,預(yù)測值與實際值之間出現(xiàn)較大殘差。
將含有實際故障的數(shù)據(jù)集B輸入最佳模型中,截取故障發(fā)生當(dāng)天的部分預(yù)測圖,如圖7所示。結(jié)合殘差圖圖8可知:未發(fā)生故障時,殘差較小,模型能夠有效預(yù)測凝結(jié)水流量走勢。
圖7 凝結(jié)水泵汽化故障發(fā)生當(dāng)天的預(yù)測圖
圖8 凝結(jié)水泵汽化故障發(fā)生前的殘差圖
凝結(jié)水泵汽化故障發(fā)生在平緩變化區(qū),2020-11-29日12∶27分左右(圖8第353個采樣點)故障發(fā)生時,實際凝結(jié)水流量值短時間內(nèi)多個采樣點小于預(yù)測值,殘差超過預(yù)警閾值。在2020-11-29日 12∶36左右(圖8第359個采樣點),電廠設(shè)備工人發(fā)現(xiàn)故障,手動打開再循環(huán)門,凝結(jié)水流量短時間內(nèi)急劇增加,故障解除。事后經(jīng)檢查,是由于供熱期間,抽汽量影響低負(fù)荷凝結(jié)水流量,到達(dá)再循環(huán)門自啟條件,影響從凝汽器向除氧器打水而產(chǎn)生的故障。由此可知,采用基于LSTM預(yù)測的殘差模型進(jìn)行預(yù)警,能夠比設(shè)備運(yùn)維人員更早發(fā)現(xiàn)故障征兆,可以實現(xiàn)故障的早期預(yù)警。
本文利用電廠凝結(jié)水泵的歷史運(yùn)行數(shù)據(jù),采用LSTM神經(jīng)網(wǎng)絡(luò)模型對凝結(jié)水流量進(jìn)行預(yù)測,通過實際值與預(yù)測值的殘差進(jìn)行預(yù)警閾值的設(shè)定,若樣本短時間內(nèi)多次超過預(yù)警閾值則進(jìn)行預(yù)警。結(jié)果表明,LSTM模型在驗證集上的均方誤差為0.015 9,優(yōu)于擁有相似模型結(jié)構(gòu)的RNN模型,具有較強(qiáng)的預(yù)測功能。同時相較于人工實時監(jiān)控,能夠略微提前發(fā)出預(yù)警信號,實現(xiàn)凝結(jié)水泵汽化故障的早期預(yù)警。該方法依賴于歷史故障數(shù)據(jù),對預(yù)警閾值的設(shè)定需要借助專家經(jīng)驗和實際數(shù)據(jù)進(jìn)行進(jìn)一步的改進(jìn),從而減少誤報率,達(dá)到更好的預(yù)警效果。