張儉讓, 劉睿卿, 李學(xué)文, 王智鵬, 史振東
(1.西安科技大學(xué) 安全科學(xué)與工程學(xué)院, 陜西 西安 710054;2.教育部西部礦井開采及災(zāi)害防治重點(diǎn)實(shí)驗(yàn)室, 陜西 西安 710054)
隨著煤礦智能化的發(fā)展,數(shù)據(jù)量的增長異常迅猛。采煤機(jī)是綜采“三機(jī)”之一,其工作環(huán)境復(fù)雜,自身安裝有多個(gè)傳感器,采樣頻率高,數(shù)據(jù)量大[1-2]。采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)屬于動態(tài)的時(shí)間序列數(shù)據(jù),可用于采煤機(jī)運(yùn)行狀態(tài)的實(shí)時(shí)分析判斷及預(yù)測。對采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集與分析處理,可一定程度上保障采煤機(jī)及人員安全,對采煤機(jī)智能化運(yùn)行具有重要意義[3]。
目前機(jī)械設(shè)備的狀態(tài)預(yù)測方法仍然大量使用傳統(tǒng)機(jī)器學(xué)習(xí)方法,如自回歸模型[4]、隱馬爾科夫模型[5]、BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型[6]等。這些模型在預(yù)測少量數(shù)據(jù)時(shí)取得了不錯(cuò)的效果,但面對大量數(shù)據(jù)應(yīng)用時(shí)往往效果不理想。
Storm是一種開源的分布式實(shí)時(shí)大數(shù)據(jù)處理框架,具有適用場景廣泛、可伸縮性高、無數(shù)據(jù)丟失的特點(diǎn),適用于大量時(shí)間序列流數(shù)據(jù)的實(shí)時(shí)處理[7-8]。因此,本文在Storm框架基礎(chǔ)上進(jìn)行采煤機(jī)運(yùn)行狀態(tài)預(yù)測。循環(huán)神經(jīng)網(wǎng)絡(luò)在處理與時(shí)間序列相關(guān)的數(shù)據(jù)方面取得了良好效果,但在反向傳播過程中,隨著層數(shù)增多,會出現(xiàn)梯度消失或者爆炸現(xiàn)象,對模型的擬合程度有較大影響。門控循環(huán)單元(Gate Recurrent Unit,GRU)是循環(huán)神經(jīng)網(wǎng)絡(luò)的一種變體,其解決了長距離時(shí)序數(shù)據(jù)預(yù)測中容易出現(xiàn)的梯度爆炸和消失問題,應(yīng)用于金融時(shí)間序列預(yù)測[9]、電力負(fù)荷預(yù)測[10]等領(lǐng)域時(shí)取得了良好效果。因此,本文采用GRU預(yù)測采煤機(jī)的時(shí)序數(shù)據(jù),結(jié)合Storm框架和GRU實(shí)現(xiàn)采煤機(jī)運(yùn)行狀態(tài)預(yù)測。
Storm的核心組件主要包括主控節(jié)點(diǎn)(Nimbus)和從節(jié)點(diǎn)(Supervisor)。Nimbus節(jié)點(diǎn)主要負(fù)責(zé)資源分配和任務(wù)調(diào)度,Supervisor節(jié)點(diǎn)負(fù)責(zé)接收Nimbus分配的任務(wù),管理和啟動所有的工作(Worker)。1個(gè)Supervisor對應(yīng)4個(gè)Worker,1個(gè)Worker對應(yīng)1個(gè)拓?fù)?Topology),Topology由Stream、Spout和Bolt組成。Stream即數(shù)據(jù)流;Spout充當(dāng)采集器的角色,實(shí)現(xiàn)與數(shù)據(jù)源的連接;Bolt為業(yè)務(wù)邏輯運(yùn)算節(jié)點(diǎn),訂閱多個(gè)Spout,實(shí)現(xiàn)業(yè)務(wù)處理、連接運(yùn)算等操作。Storm數(shù)據(jù)流模型基本結(jié)構(gòu)如圖1所示。
圖1 Storm數(shù)據(jù)流模型基本結(jié)構(gòu)
GRU結(jié)構(gòu)如圖2所示。其中xt為t時(shí)刻的輸入值,ct為記憶細(xì)胞,ht為t時(shí)刻隱藏單元的歷史信息,at為重寫的記憶細(xì)胞的候選值,ot為t時(shí)刻的輸出值,rt為重置門,ut為更新門。GRU通過記憶細(xì)胞ct將歷史數(shù)據(jù)信息保存下來,用于數(shù)據(jù)預(yù)測。當(dāng)t時(shí)刻實(shí)際數(shù)據(jù)xt到達(dá)時(shí),結(jié)合隱藏單元?dú)v史信息ht-1,通過更新門和重置門控制上一個(gè)單元有多少信息可以保留,當(dāng)前單元有多少信息可以添加到記憶細(xì)胞ct并傳遞給下一個(gè)單元,通過激活函數(shù)輸出當(dāng)前時(shí)刻的預(yù)測值ot。常用的激活函數(shù)為tanh,K類別分類問題可以選用softmax作為激活函數(shù)。為了簡化描述,設(shè)置輸出的激活函數(shù)為softmax函數(shù),隱藏層的激活函數(shù)為tanh函數(shù)。
圖2 GRU結(jié)構(gòu)
更新門ut用于確定上一隱藏層中的記憶信息,重置門rt用于確定上一隱藏層中的遺忘信息,記憶細(xì)胞候選值at用于確定當(dāng)前的記憶內(nèi)容,記憶細(xì)胞ct用于確定當(dāng)前要保留的信息,其計(jì)算公式分別為
ut=σ(wu[ct-1,xt]+bu)
(1)
rt=σ(wr[ct-1,xt]+br)
(2)
at=tanh(wh[rtct-1,xt]+bc)
(3)
ct=utat+(1-ut)ct-1
(4)
式中:σ為sigmoid函數(shù);wu,wr,wh分別為更新門ut、重置門rt和記憶細(xì)胞候選值at的更新權(quán)值;bu,br,bc分別為更新門ut、重置門rt和記憶細(xì)胞候選值at的偏差值。
基于Storm的采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)分布式實(shí)時(shí)預(yù)測模型如圖3所示。采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)是以固定時(shí)間間隔源源不斷地產(chǎn)生,本文結(jié)合在煤礦收集的采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù),在Hadoop分布式存儲數(shù)據(jù)庫中通過crontab編寫定時(shí)讀取數(shù)據(jù)的腳本,用來模擬采煤機(jī)的實(shí)時(shí)數(shù)據(jù)流。將流數(shù)據(jù)傳送到不同的消息隊(duì)列Spout中,Spout將數(shù)據(jù)以元組流的形式發(fā)送給相應(yīng)Bolt,通過多個(gè)Bolt實(shí)現(xiàn)對數(shù)據(jù)的預(yù)處理、預(yù)測、誤差計(jì)算及存儲,最終實(shí)現(xiàn)對采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)的實(shí)時(shí)預(yù)測[11]。
圖3 基于Storm的采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)分布式實(shí)時(shí)預(yù)測模型
為方便管理海量的采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù),基于Hadoop[12]設(shè)計(jì)數(shù)據(jù)存儲結(jié)構(gòu),包括1張索引表和多張數(shù)據(jù)表[13]。索引表包括監(jiān)測點(diǎn)位置、預(yù)測模型、預(yù)警閾值上界TUBn(n為監(jiān)測點(diǎn)數(shù))和下界TLBn,見表1。數(shù)據(jù)表通過行增長的方式模擬時(shí)間序列,每一列代表某個(gè)監(jiān)測點(diǎn)所采集的時(shí)間序列數(shù)據(jù),見表2,其中m為時(shí)間點(diǎn)數(shù),Datanm為監(jiān)測數(shù)據(jù)。在實(shí)際生產(chǎn)中,各個(gè)測點(diǎn)的實(shí)時(shí)運(yùn)行數(shù)據(jù)會以固定時(shí)間間隔存入Hadoop中,經(jīng)主控節(jié)點(diǎn)Nimbus的調(diào)配傳入 Spout中進(jìn)行處理。
表1 索引表
表2 數(shù)據(jù)表
Spout通過調(diào)用nextTuple()方法從Hadoop中提取相應(yīng)監(jiān)測點(diǎn)的信息,將信息封裝后傳遞給Bolt,具體步驟如下:
(1) 連接Hadoop,從相應(yīng)監(jiān)測點(diǎn)的數(shù)據(jù)表中讀取n個(gè)數(shù)據(jù)。
(2) 判斷數(shù)據(jù)序列長度是否達(dá)到預(yù)測的歷史數(shù)據(jù)樣本容量N,達(dá)到則進(jìn)行步驟(4),否則進(jìn)行步驟(3)。
(3) 從數(shù)據(jù)庫讀取新數(shù)據(jù),將新數(shù)據(jù)添加到序列末尾,跳回步驟(2)。
(4) 將數(shù)據(jù)封裝成元組形式發(fā)送到預(yù)處理Bolt。
Bolt接收Spout傳遞的元組,通過多個(gè)Bolt調(diào)用execute()方法,分別實(shí)現(xiàn)數(shù)據(jù)的預(yù)處理、預(yù)測、誤差計(jì)算和存儲,具體步驟[14]如下:
(1) 預(yù)處理Bolt接收從Spout傳遞來的元組,解析對應(yīng)監(jiān)測點(diǎn)的N個(gè)數(shù)據(jù);導(dǎo)入python包處理異常值,并將數(shù)據(jù)標(biāo)準(zhǔn)化,以元組形式發(fā)送到GRU預(yù)測Bolt。
(2) 預(yù)測Bolt接收預(yù)處理Bolt傳遞的標(biāo)準(zhǔn)化后的數(shù)據(jù),導(dǎo)入訓(xùn)練好的GRU模型,預(yù)測下一時(shí)刻的數(shù)據(jù),并等待該時(shí)刻實(shí)際數(shù)據(jù),將預(yù)測數(shù)據(jù)和實(shí)際數(shù)據(jù)一起發(fā)送到預(yù)警Bolt。
(3) 預(yù)警Bolt根據(jù)設(shè)定的閾值判斷是否要預(yù)警,將預(yù)測結(jié)果和預(yù)警信息發(fā)送到存儲Bolt。
(4) 存儲Bolt接收數(shù)據(jù)并存儲。
以某礦綜采工作面MG400930-WD電牽引采煤機(jī)的數(shù)據(jù)為例,取采煤機(jī)中的截割部電動機(jī)電流、截割部電動機(jī)溫度、牽引部電動機(jī)電流、牽引部電動機(jī)轉(zhuǎn)速、調(diào)高泵工作壓力、調(diào)高泵工作轉(zhuǎn)速、冷卻水壓、變頻器電流8種監(jiān)測數(shù)據(jù)(依次用a—h表示)各1 000條作為實(shí)驗(yàn)數(shù)據(jù)。
首先進(jìn)行GRU模型訓(xùn)練。對原始數(shù)據(jù)中的缺失值、異常值及噪聲進(jìn)行預(yù)處理,將預(yù)處理后的數(shù)據(jù)作為輸入數(shù)據(jù)。將輸入數(shù)據(jù)以7∶3的比例分為訓(xùn)練集和測試集。隱藏層針對訓(xùn)練集進(jìn)行訓(xùn)練,通過優(yōu)化函數(shù)Adam、損失函數(shù)MSE調(diào)節(jié)模型的超參數(shù),以損失值最小作為調(diào)優(yōu)準(zhǔn)則對模型進(jìn)行優(yōu)化。
通過訓(xùn)練找到GRU的最優(yōu)參數(shù),在Hadoop上模擬實(shí)時(shí)數(shù)據(jù)流,設(shè)置基本時(shí)間窗口為1 min。在主控節(jié)點(diǎn)Nimbus調(diào)控下,將8種測試集數(shù)據(jù)并行輸入8個(gè)Worker中,在各自的拓?fù)渲型瓿蓪?shù)據(jù)的預(yù)測和預(yù)警。
GRU超參數(shù)尋優(yōu)結(jié)果見表3,其中C1—C7分別為尋優(yōu)訓(xùn)練次數(shù)、學(xué)習(xí)率、神經(jīng)元數(shù)量、權(quán)重衰減、時(shí)間步數(shù)、每次訓(xùn)練樣本數(shù)、隱藏層數(shù)。從表3可看出,8種監(jiān)測數(shù)據(jù)在GRU模型中收斂的訓(xùn)練次數(shù)不同,但均小于500次,收斂速度較快。
表3 GRU超參數(shù)尋優(yōu)結(jié)果
將訓(xùn)練好的GRU導(dǎo)入Bolt中,用測試集模擬實(shí)時(shí)數(shù)據(jù)流,各測試集中300個(gè)點(diǎn)的真實(shí)值和預(yù)測結(jié)果對比如圖4所示。
a) 截割部電動機(jī)電流
4.3.1 GRU預(yù)測結(jié)果評價(jià)
采用平均絕對誤差(MAE)、均方根誤差(RMSE)及擬合優(yōu)度(R2)作為GRU擬合程度的評價(jià)指標(biāo),其計(jì)算公式分別為
(5)
如果我們回到一般城邦的具體的人員構(gòu)成上,就會發(fā)現(xiàn),在寡頭制和平民制中,窮人階層和富人階層可以得到很好的混合,即形成一個(gè)人數(shù)較多的中產(chǎn)階層,他們既不太窮,又不太富,而是擁有中等家資。這是貧富混合得適中、恰到好處的一個(gè)階層。如果他們執(zhí)政,則可以兼得平民制和寡頭制的好處,能服務(wù)于所有公民;同時(shí),這種財(cái)富狀況對于他們的政治美德培養(yǎng)是一個(gè)極好的基礎(chǔ),因?yàn)樗麄儭白钊菀茁爮睦硇浴盵2](P144),可以避免人的兩種極端的性格品質(zhì)。這樣的城邦就是盡可能地由平等或同等的人所組成,這樣他們之間就能坦蕩地交往,并且產(chǎn)生出公民友誼,所以,這樣的城邦就將是現(xiàn)實(shí)中最優(yōu)良的城邦,能得到最出色的治理。
(6)
(7)
GRU預(yù)測結(jié)果評價(jià)指標(biāo)對比見表4。
表4 評價(jià)指標(biāo)對比
擬合優(yōu)度R2的值越接近1,MAE和RMSE的值越接近0,效果越好。由表4可知,因?yàn)樵紨?shù)據(jù)較大,數(shù)據(jù)類型d和f的MAE和RMSE的值相對較大,而其余類型的原始數(shù)據(jù)較小,誤差也相對較小。8種數(shù)據(jù)的MAE和RMSE均接近0,初步判斷GRU可作為預(yù)測模型。8種數(shù)據(jù)的R2均達(dá)到0.9以上,說明基于Storm的分布式時(shí)間序列實(shí)時(shí)預(yù)測模型適用于采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)的預(yù)測。
4.3.2 預(yù)警的準(zhǔn)確性
根據(jù)經(jīng)驗(yàn)和誤差要求,設(shè)定各類實(shí)驗(yàn)數(shù)據(jù)的閾值,見表5,其中Ie1,Ie2分別截割部電動機(jī)、牽引部電動機(jī)的額定電流,Ie1=87 A,Ie2=105 A。
表5 數(shù)據(jù)閾值設(shè)定
根據(jù)閾值設(shè)定,將各類數(shù)據(jù)的狀態(tài)分為正常、注意和故障3種。當(dāng)采煤機(jī)運(yùn)行時(shí),若數(shù)據(jù)未達(dá)到注意值,則狀態(tài)為正常,工作性能穩(wěn)定,無需采取措施;若數(shù)據(jù)達(dá)到注意值而未達(dá)到故障閾值,則狀態(tài)為注意;若數(shù)據(jù)達(dá)到故障閾值,則狀態(tài)為故障。預(yù)測Bolt在得到預(yù)測數(shù)據(jù)而實(shí)際數(shù)據(jù)未到時(shí),對數(shù)據(jù)狀態(tài)進(jìn)行預(yù)測并作出相應(yīng)預(yù)警[15]。測試集的各數(shù)據(jù)預(yù)測狀態(tài)與實(shí)際狀態(tài)的對比結(jié)果如圖5所示,其中縱坐標(biāo)1,2,3分別表示正常、注意和故障3種狀態(tài)。各類數(shù)據(jù)的預(yù)警準(zhǔn)確率見表6。
(a) 截割部電動機(jī)電流
從表6可看出,除冷卻水壓外,其余數(shù)據(jù)的預(yù)警準(zhǔn)確率均達(dá)到95%以上,滿足實(shí)際應(yīng)用要求。由于冷卻水壓數(shù)據(jù)值較小,注意值和故障閾值間隔很小,預(yù)測時(shí)誤差偏大,但也達(dá)到85%以上,準(zhǔn)確率較高,具有一定的實(shí)用價(jià)值。
表6 預(yù)警準(zhǔn)確率
4.3.3 處理時(shí)間
實(shí)驗(yàn)?zāi)M從傳感器得到數(shù)據(jù)并傳入Hadoop中,Storm從Hadoop中讀取數(shù)據(jù),主控節(jié)點(diǎn)Nimbus通過Zookeeper監(jiān)控和分配任務(wù),通過Supervisor節(jié)點(diǎn)將具體的處理邏輯交由Worker完成。分別測量將流數(shù)據(jù)傳入Spout中所需要的時(shí)間,Spout將數(shù)據(jù)分發(fā)給Bolt所需要的時(shí)間,預(yù)處理Bolt、預(yù)測Bolt、預(yù)警Bolt和存儲Bolt所需要的總時(shí)間,結(jié)果見表7。
表7 預(yù)測模型處理時(shí)間
從表7可看出,數(shù)據(jù)庫、Worker中Spout和各Bolt針對流數(shù)據(jù)的處理速度較快,整個(gè)預(yù)警過程共10 s左右,遠(yuǎn)低于測點(diǎn)數(shù)據(jù)采集間隔(1 min), 因此,可滿足應(yīng)用要求。
(1) 提出基于Storm的采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)分布式實(shí)時(shí)預(yù)測模型,結(jié)合Hadoop 數(shù)據(jù)庫,模擬實(shí)際生產(chǎn)中采煤機(jī)時(shí)間序列運(yùn)行數(shù)據(jù),采用深度學(xué)習(xí)中的GRU對數(shù)據(jù)進(jìn)行處理,實(shí)現(xiàn)對采煤機(jī)運(yùn)行狀態(tài)數(shù)據(jù)的預(yù)測和預(yù)警。
(2) 實(shí)驗(yàn)結(jié)果表明:GRU收斂速度較快,且擬合優(yōu)度達(dá)到0.9以上;各種數(shù)據(jù)狀態(tài)預(yù)測的準(zhǔn)確率均達(dá)到85%以上,整個(gè)預(yù)警過程僅需10 s左右,遠(yuǎn)低于測點(diǎn)數(shù)據(jù)采集間隔(1 min),模型的預(yù)警準(zhǔn)確率和效率均能滿足要求。
(3) Storm框架仍需進(jìn)行包括負(fù)載均衡、集群調(diào)優(yōu)等優(yōu)化,以更好地滿足應(yīng)用要求,下一步將對此進(jìn)行研究。