孟 巍 王智強 葉 茂 鄭麗巖 任世杰
(1.鞍鋼集團礦業(yè)有限公司信息中心;2.沈陽中科奧維科技股份有限公司;3.東北大學資源與土木工程學院)
電鏟、球磨機、旋流器等大型礦業(yè)設(shè)備作為礦山運行的核心一直是企業(yè)重點關(guān)注的對象[1],這些設(shè)備出現(xiàn)故障,勢必導(dǎo)致生產(chǎn)停滯,甚至造成安全問題[2]。為了減少設(shè)備故障帶來的損失,企業(yè)通常會對這些設(shè)備進行監(jiān)控[3]。對設(shè)備的運行監(jiān)控通常是按照時間序列進行的,然而在數(shù)據(jù)采集的同時,仍然難以避免出現(xiàn)數(shù)據(jù)缺失的現(xiàn)象,而數(shù)據(jù)的丟失往往會造成預(yù)警信息的錯誤,因此通常需要對缺失的數(shù)據(jù)進行適當?shù)奶幚恚瑥亩瓿蓪υO(shè)備運行狀態(tài)的正確評估[4]。
缺失數(shù)據(jù)的處理方法包括刪除法、插補法、加權(quán)法和參數(shù)似然法等,而在各種處理缺失數(shù)據(jù)的方法中,插補方法由于簡單且效果好被普遍使用[5]。隨著機器學習和深度學習的快速發(fā)展,神經(jīng)網(wǎng)絡(luò)技術(shù)被廣泛應(yīng)用于數(shù)據(jù)缺失值的處理并取得了較好的結(jié)果[6]。缺失數(shù)據(jù)的插補在一定程度上可以看成是對一些未知數(shù)據(jù)的預(yù)測[7],而利用BP神經(jīng)網(wǎng)絡(luò)等模型對已有數(shù)據(jù)進行訓練學習,然后利用訓練好的模型輸入?yún)?shù)獲得預(yù)測值即可很好地解決數(shù)據(jù)缺失的插補問題。除了傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)外,循環(huán)神經(jīng)網(wǎng)絡(luò)(簡稱RNN)將時序的概念引入到網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計中,使其在數(shù)據(jù)的分析預(yù)測中取得了更好的結(jié)果。長短期記憶(簡稱LSTM)模型作為RNN的優(yōu)秀變體也被應(yīng)用于各種數(shù)據(jù)的預(yù)測中[8]。為了更準確地完成缺失值的插補過程,本文利用BP神經(jīng)網(wǎng)絡(luò)和LSTM模型相結(jié)合的方式對球磨機的缺失數(shù)據(jù)進行預(yù)測。
磨礦是礦石破碎的后續(xù)工序。球磨機是磨礦的主要設(shè)備。為了實時監(jiān)控球磨機的運行狀態(tài),需要采集球磨機的多項運行參數(shù),如給礦量、給水量、壓力、電流值、給礦濃度、給水濃度、排水量等。這些參數(shù)在某種程度上存在著一定的復(fù)雜聯(lián)系,單憑經(jīng)驗公式很難對因故丟失的數(shù)據(jù)進行預(yù)測補充,而神經(jīng)網(wǎng)絡(luò)的“黑箱”特性可以解決該問題。
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋型神經(jīng)網(wǎng)絡(luò),其學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。在信號正向傳播的過程中,樣本是由輸出層傳入,經(jīng)過各個未顯露的隱含層內(nèi)部計算后傳入輸出層,最終經(jīng)輸出層處理后產(chǎn)生預(yù)測結(jié)果,將網(wǎng)絡(luò)預(yù)測值與實際值對比,計算出神經(jīng)網(wǎng)絡(luò)的預(yù)測誤差,接著進入誤差的反向傳播階段(圖1)。誤差反向傳播時,預(yù)測誤差從輸出層傳入,經(jīng)過各個隱含層處理傳入輸入層。在預(yù)測誤差的傳遞的同時,也將預(yù)測誤差分給各層,當各層獲得作為修正該層的神經(jīng)元權(quán)值依據(jù)的誤差信號時,由學習信號正向傳播與誤差信號反向傳播不斷調(diào)整各層權(quán)值,當神經(jīng)網(wǎng)絡(luò)輸出的誤差減少到設(shè)定的期望誤差或滿足當前設(shè)置的迭代次數(shù)時,終止權(quán)值的調(diào)整。
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)不考慮數(shù)據(jù)之間的時間相關(guān)性,只將上一層的輸出作為當前層的輸入?,F(xiàn)實中的很多數(shù)據(jù)都具有時序上的關(guān)聯(lián)性,即某一時刻網(wǎng)絡(luò)的輸出除了與當前隱含層的輸入相關(guān)之外,還與之前某一隱含層或某幾個隱含層的輸出有關(guān)。針對這些問題,循環(huán)神經(jīng)網(wǎng)絡(luò)RNN模型應(yīng)運而生(圖2)。在許多序列問題中,例如文本處理、語音合成及機器翻譯等,循環(huán)神經(jīng)網(wǎng)絡(luò)都表現(xiàn)出了不凡的性能。然而RNN模型隨著時間序列的不斷深入,會出現(xiàn)“梯度消失”和“梯度爆炸”的現(xiàn)象。
圖3中,LSTM模型作為RNN的變種,既擁有RNN在分析時序數(shù)據(jù)時的高適應(yīng)性,又彌補了RNN的梯度消失和梯度爆炸問題,能有效地利用長距離的時序信息。對于球磨機的監(jiān)控數(shù)據(jù),利用好時序信息可以更有效地解決數(shù)據(jù)的缺失與插補問題。
單一的預(yù)測模型總會有各自的優(yōu)點和缺陷,如BP神經(jīng)網(wǎng)絡(luò)的優(yōu)點是具有很強的非線性映射能力和柔性的網(wǎng)絡(luò)結(jié)構(gòu),缺點是學習過程耗費的時間多及不易找到全局極小值點。LSTM模型的優(yōu)點是在序列建模問題上有一定優(yōu)勢,具有長時記憶功能,缺點是并行處理上存在劣勢。為了充分利用不同模型各自的優(yōu)勢,不同模型的組合應(yīng)用是一種常用的辦法,新模型將不同模型的優(yōu)勢組合應(yīng)用,可以使組合模型的預(yù)測結(jié)果更加接近真實值。由于球磨機的監(jiān)控數(shù)據(jù)本身是關(guān)于時間的數(shù)據(jù),可以看作時間序列,因此本文選擇LSTM模型與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合的方式對缺失數(shù)據(jù)進行預(yù)測。本文設(shè)計了基于權(quán)重分配方式的組合預(yù)測模型(圖4)。該方法的主要思路是分別使用BP神經(jīng)網(wǎng)絡(luò)和LSTM模型對球磨機的某項缺失數(shù)據(jù)進行訓練預(yù)測,然后根據(jù)預(yù)測的準確率賦給每個算法的結(jié)果1個權(quán)重系數(shù),將每個模型預(yù)測的結(jié)果乘以權(quán)重系數(shù)后做和,形成最終的預(yù)測結(jié)果。
預(yù)測結(jié)果公式為
式中,R為總的預(yù)測結(jié)果;Rlstm為LSTM模型的預(yù)測處理結(jié)果;Rbp為BP模型的預(yù)測處理結(jié)果。
為了使預(yù)測結(jié)果更加接近真實值,引入修正誤差方法,即誤差權(quán)重乘以訓練集平均誤差,各模型修正結(jié)果計算公式為
式中,λlstm為LSTM模型預(yù)測結(jié)果的權(quán)重;rlstm為LSTM模型的原始預(yù)測結(jié)果;λle為LSTM模型預(yù)測結(jié)果的誤差權(quán)重;elstm為LSTM模型在訓練集上的平均誤差。
同理,BP模型修正公式為
式中,λbp為BP模型預(yù)測結(jié)果的權(quán)重;rbp為LSTM模型的原始預(yù)測結(jié)果;λbpe為BP模型預(yù)測結(jié)果的誤差權(quán)重;ebp為BP模型在訓練集上的平均誤差。
預(yù)測權(quán)重λlstm和λbp,計算公式為
式中,acclstm為LSTM模型上預(yù)測集的準確率;accbp為BP模型上預(yù)測集的準確率。
誤差權(quán)重λle和λbpe計算公式為
式中,erlstm為LSTM模型上預(yù)測集的誤差率;erbp為BP模型上預(yù)測集的誤差率。
試驗選取電流值、排水量、給礦量、給礦濃度、壓力、泵池高、給水量、給水濃度和給旋流器量9個球磨機監(jiān)控數(shù)據(jù),數(shù)據(jù)每隔5s采集1次,共計10萬條。將數(shù)據(jù)按9∶1分為訓練集和測試集,在給礦量數(shù)據(jù)中隨機選取10個數(shù)據(jù)刪除后作為缺失值進行預(yù)測比較。試驗采用的深度學習框架為tensorflow,具有運行速度快,結(jié)構(gòu)簡潔,高層API豐富等優(yōu)勢。該試驗的實現(xiàn)過程在jupyter編譯器上實現(xiàn),試驗步驟如下。
(1)第1步引入外部包。引入tensorflow機器學習框架用以搭建模型,引入numpy庫用以處理數(shù)據(jù),引入xlrd庫用以從數(shù)據(jù)庫中讀入數(shù)據(jù),引入matplotlib庫用以實現(xiàn)繪圖。
(2)第2步導(dǎo)入并處理數(shù)據(jù)。從數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù),并對數(shù)據(jù)進行處理以便輸入模型進行學習。其中數(shù)據(jù)按9∶1分為訓練集與驗證集,從驗證集中隨機取10個數(shù)據(jù)作為測試集用來檢驗?zāi)P皖A(yù)測結(jié)果的好壞。其中,LSTM模型的輸入數(shù)據(jù)以給礦量的11個連續(xù)數(shù)據(jù)作為1組,依次類推直至數(shù)據(jù)全被分配完畢。BP模型的輸入數(shù)據(jù)為除去時間的其余9個相關(guān)數(shù)據(jù)。
(3)第3步構(gòu)建模型。LSTM模型構(gòu)建為2個LSTM塊順次相連,最后添加1個全連接層輸出預(yù)測結(jié)果。值得一提的是,LSTM模型輸入的數(shù)據(jù)維度為三維,其中第一維代表每次輸入模型的數(shù)據(jù)組個數(shù),即訓練中的batch_size。第二維代表用來預(yù)測結(jié)果需要的參數(shù)的個數(shù)。第三維代表輸出的特征數(shù)的個數(shù),本文中輸出的特征值只有給礦量的預(yù)測值,故本文中各個模型輸出的特征值數(shù)目為1。
LSTM模型中采用均方差作為損失函數(shù),Adam作為優(yōu)化函數(shù),訓練過程中觀察模型中每個epoch的損失值。訓練過程中迭代次數(shù)為136次,batch_size為100。不同神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果見圖5。
BP模型的結(jié)構(gòu)為2個全連接層順次相連,其中第1個全連接層的隱藏節(jié)點數(shù)為10,激活函數(shù)為Relu,第2個全連接層的節(jié)點數(shù)為1,即輸出的特征值的個數(shù)。BP模型的輸入數(shù)據(jù)維度為二維,其中第一維代表每次喂入模型的數(shù)據(jù)組的個數(shù),即訓練中的batch_size,第二維代表每個數(shù)據(jù)組中參數(shù)的個數(shù)。
BP模型同LSTM模型一樣采用均方差作為損失函數(shù),采用Adam作為優(yōu)化函數(shù),訓練過程中觀察每個epoch的損失值。訓練過程中迭代次數(shù)為100,batch_size為10。經(jīng)過長時間訓練后,得到模型權(quán)重,并記錄損失值不下降時每個模型在訓練集上的誤差絕對值的平均值用來計算預(yù)測時的修正誤差。
(4)第4步結(jié)果預(yù)測。將測試集的10個數(shù)據(jù)組分別輸入LSTM模型以及BP模型中,得到的預(yù)測值經(jīng)過公式(1)處理后得到最終預(yù)測值。將得到的3種預(yù)測結(jié)果分別與真實值比對發(fā)現(xiàn),組合模型得到的預(yù)測結(jié)果優(yōu)于單一模型得到的預(yù)測結(jié)果。其中,使用BP模型預(yù)測準確度為92%,使用LSTM模型預(yù)測準確度為96%,使用BP-LSTM組合模型預(yù)測準確度為98%。
為了更好地對球磨機缺失數(shù)據(jù)進行預(yù)測插補,利用BP和LSTM 2種神經(jīng)網(wǎng)絡(luò)對缺失數(shù)據(jù)進行預(yù)測,結(jié)果表明,使用2種神經(jīng)網(wǎng)絡(luò)的組合模型可以使預(yù)測結(jié)果達到更優(yōu),證明該方法是切實可行的,也為缺失值的預(yù)測插補提供了新的思路。