伴隨企業(yè)業(yè)務(wù)的不斷擴(kuò)大,業(yè)務(wù)IT支撐系統(tǒng)規(guī)模及平臺組件架構(gòu)數(shù)量對應(yīng)激增,其中作為基礎(chǔ)資源之一的主機(jī)數(shù)量也程指數(shù)級增加,與此同時業(yè)務(wù)對系統(tǒng)資源的需求和敏感度也伴隨業(yè)務(wù)規(guī)模的增加而越發(fā)的苛刻。運維團(tuán)隊對系統(tǒng)可用性的保障也如履薄冰,每一個可能的異常情況都應(yīng)該被及時發(fā)現(xiàn),及時響應(yīng),及時處理,以保障系統(tǒng)和服務(wù)的穩(wěn)定高效運行,給客戶良好的使用體驗。為了保障基礎(chǔ)資源之一主機(jī)的穩(wěn)定可靠,筆者對運行中的主機(jī)健康度做了基于LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)的預(yù)測。
本次分享分為四個部分:
1、LSTM簡介
2、基本數(shù)據(jù)準(zhǔn)備
3、多元LSTM預(yù)測
4、模型優(yōu)化
隨著深度學(xué)習(xí)技術(shù)發(fā)展,相關(guān)深度學(xué)習(xí)模型逐漸被應(yīng)用到時序數(shù)據(jù)研究中。深度學(xué)習(xí)模型是擁有多個非線性映射層級的深度神經(jīng)網(wǎng)絡(luò)模型,對輸入信號逐層抽象并提取特征,挖掘出更深層次的潛在規(guī)律,以達(dá)到提前預(yù)知預(yù)警的效果。
眾多深 度 學(xué) 習(xí) 模 型 中,循 環(huán) 神 經(jīng) 網(wǎng) 絡(luò) ( RecurrentNeural Network,RNN) 將時序的概念引入到網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計中,使其在時序數(shù)據(jù)分析中表現(xiàn)出更強(qiáng)的適應(yīng)性。
RNN 變體中,長短期記憶( Long Short-Term Memory,LSTM) 模型彌補(bǔ)了RNN 的梯度消失、梯度爆炸和長期記憶能力不足等問題,使循環(huán)神經(jīng)網(wǎng)絡(luò)能夠真正有效地利用長距離的時序信息。
LSTM 模型在不同領(lǐng)域的時序數(shù)據(jù)研究中已有不少成功的應(yīng)用案例,包括文字語言相關(guān)的語言建模、語音識別、機(jī)器翻譯,多媒體相關(guān)的音頻和視頻數(shù)據(jù)分析、圖片標(biāo)題建模,道路運輸相關(guān)的交通流速預(yù)測,以及醫(yī)學(xué)相關(guān)的蛋白質(zhì)二級結(jié)構(gòu)序列預(yù)測等。
但在可靠性領(lǐng)域,LSTM 模型的應(yīng)用非常有限,尤其是對故障時間序列預(yù)測的相關(guān)問題研究,目前還未發(fā)現(xiàn)更多的案例。本文針對系統(tǒng)級故障時間序列數(shù)據(jù),提出了一種基于 LSTM 循環(huán)神經(jīng)網(wǎng)絡(luò)的預(yù)測方法,該方法包括3 層( 輸入層、隱藏層和輸出層) 網(wǎng)絡(luò)結(jié)構(gòu)的詳細(xì)設(shè)計,以及網(wǎng)絡(luò)訓(xùn)練和網(wǎng)絡(luò)預(yù)測的具體實現(xiàn)算法等。在此基礎(chǔ)上,以預(yù)測誤差最小化為目標(biāo),進(jìn)一步提出了基于多層網(wǎng)格搜索的 LSTM 預(yù)測模型參數(shù)優(yōu)選算法。
LSTM模型網(wǎng)絡(luò)拓?fù)?/span>
例用數(shù)據(jù)采用某場地實時數(shù)據(jù)999條作為樣本數(shù)據(jù)進(jìn)行訓(xùn)練和測試。樣本中主要采集了四個現(xiàn)場的主機(jī)指標(biāo)數(shù)據(jù)(1分鐘系統(tǒng)負(fù)載、CPU使用率、等待CPU進(jìn)程個數(shù)、內(nèi)存利用率)。
對樣本進(jìn)行清洗后截取前6個樣本數(shù)據(jù)如下圖:
對數(shù)據(jù)進(jìn)行歸一化處理并對每個樣本數(shù)據(jù)行生成一個模擬健康度,將新樣本數(shù)保存到test_health.csv文件中。
新生成test_health.csv文件截取前6個樣本數(shù)據(jù)如下圖所示:
我們可以使用這些數(shù)據(jù)來構(gòu)建預(yù)測問題,在此數(shù)據(jù)基準(zhǔn)下,使用前幾個小時的主機(jī)指標(biāo)情況和健康度,依此預(yù)測下一個小時的主機(jī)指標(biāo)及健康度情況。
我們已經(jīng)以易于使用的形式獲得了數(shù)據(jù),創(chuàng)建了每個系列的快速繪圖并查看所擁有的數(shù)據(jù)。
下面代碼加載新的“test_health.csv”文件,并將每個系列繪制為多帶帶的子圖。
運行示例將創(chuàng)建一個包含5個子圖的趨勢圖,顯示每個變量999個小時的數(shù)據(jù)。如下圖所示:
第一步是為LSTM準(zhǔn)備主機(jī)數(shù)據(jù)集,將數(shù)據(jù)集構(gòu)建為有監(jiān)督的學(xué)習(xí)問題,并對輸入變量進(jìn)行歸一化。
考慮到前面時間步驟的主機(jī)指標(biāo)測量和主機(jī)健康度情況,我們將監(jiān)督學(xué)習(xí)問題設(shè)計為預(yù)測當(dāng)前小時(t)的主機(jī)健康度。
根據(jù)主機(jī)健康度情況和最近24小時的主機(jī)指標(biāo)情況,預(yù)測下一個小時的主機(jī)健康度情況。
如上預(yù)測下一個小時的主機(jī)健康度,并根據(jù)下一個小時的“預(yù)期”主機(jī)健康度狀況進(jìn)行預(yù)測。我們可以使用開發(fā)的series_to_supervised()函數(shù)來轉(zhuǎn)換數(shù)據(jù)集。接下來,將所有特征標(biāo)準(zhǔn)化,然后將數(shù)據(jù)集轉(zhuǎn)換為監(jiān)督學(xué)習(xí)問題。
轉(zhuǎn)化監(jiān)督學(xué)習(xí)問題代碼:
我們在第一隱藏層中定義50個神經(jīng)元,在輸出層中定義1個神經(jīng)元來定義LSTM,以預(yù)測主機(jī)健康度。輸入形狀為1個時間步長,具有5個特征。我們使用平均絕對誤差(MAE)損失函數(shù)和隨機(jī)梯度下降的有效Adam版本。該模型將適合于50個訓(xùn)練周期,每批次的數(shù)量為72。請記住,每批結(jié)束時都會重置Keras中LSTM的內(nèi)部權(quán)重,因此,內(nèi)部狀態(tài)可能是幾天的函數(shù),嘗試對此進(jìn)行測試,有助于模型的成熟度完善。最后,我們通過在fit()函數(shù)中設(shè)置validate_data參數(shù)來跟蹤訓(xùn)練過程中的訓(xùn)練和測試損失。在運行結(jié)束時,繪制訓(xùn)練損失和測試損失。
首先,我們必須將準(zhǔn)備好的數(shù)據(jù)集分為訓(xùn)練集和測試集。為了加快對本演示模型的訓(xùn)練,我們將僅在360的數(shù)據(jù)上擬合模型,然后在剩余639的數(shù)據(jù)上對其進(jìn)行評估。
下面的示例將數(shù)據(jù)集分為訓(xùn)練集和測試集,然后將訓(xùn)練集和測試集分為輸入和輸出變量。最后,將輸入(X)整形為LSTM期望的3D格式,即[樣本,時間步長,特征]。
運行此示例將打印訓(xùn)練數(shù)據(jù)以及測試輸入和輸出集,其中約有360個小時的數(shù)據(jù)用于訓(xùn)練,約有637小時的測試數(shù)據(jù)。
現(xiàn)在,我們可以定義和擬合我們的LSTM模型。
我們將在第一隱藏層中定義50個神經(jīng)元,在輸出層中定義1個神經(jīng)元來定義LSTM,以預(yù)測主機(jī)健康度。輸入形狀將是1個時間步長,具有5個特征。我們將使用平均絕對誤差(MAE)損失函數(shù)和隨機(jī)梯度下降的有效Adam版本。該模型將適合于50個訓(xùn)練周期,每批次的數(shù)量為72。請記住,每批結(jié)束時都會重置Keras中LSTM的內(nèi)部權(quán)重,因此,內(nèi)部狀態(tài)可能是幾天的函數(shù),嘗試對此進(jìn)行測試,有助于模型的成熟度。最后,我們通過在fit()函數(shù)中設(shè)置validate_data參數(shù)來跟蹤訓(xùn)練過程中的訓(xùn)練和測試損失。在運行結(jié)束時,繪制訓(xùn)練損失和測試損失。
模型擬合后,我們可以預(yù)測整個測試數(shù)據(jù)集。我們將預(yù)測與測試數(shù)據(jù)集結(jié)合起來,然后換算比例。我們還使用預(yù)期的主機(jī)健康度對測試數(shù)據(jù)集進(jìn)行換算。利用原始比例的預(yù)測和實際值,我們可以為模型計算一個誤差分?jǐn)?shù)。在這種情況下,我們計算均方根誤差(RMSE),該均方根誤差與變量本身的單位相同。
首先運行示例創(chuàng)建一個圖,顯示訓(xùn)練期間的訓(xùn)練和測試損失。
我們需要對此模型進(jìn)行進(jìn)一步優(yōu)化。訓(xùn)練和測試損失在每個訓(xùn)練時期的末尾打印,以便于我們知道模型數(shù)據(jù)。運行結(jié)束時,將打印測試數(shù)據(jù)集上模型的最終RMSE。我們可以看到,該模型實現(xiàn)的RMSE 3.700
首先,在調(diào)用series_to_supervised()時必須適當(dāng)?shù)亟鉀Q問題。我們將使用3個小時的數(shù)據(jù)作為輸入。還要注意,我們不再將所有其他字段的列都明確地放在ob(t)處,我們在指定輸入和輸出列時需要更加小心。
我們的框架數(shù)據(jù)集中有3 * 5 + 5列。我們將使用3 * 5或15列作為前3個小時內(nèi)所有功能的obs的輸入。我們將預(yù)測下一個小時主機(jī)各個指標(biāo)作為輸出,如下所示:
接下來,我們可以正確地重塑輸入數(shù)據(jù)以反映時間步長和功能。.
此外,我們可以通過增大神經(jīng)元個數(shù),及增大每個神經(jīng)元計算次數(shù)。來最大量減小優(yōu)化在神經(jīng)網(wǎng)絡(luò)傳遞時的加權(quán)值。如下圖所示:
其他變化是如何評估模型那?具體來說,在我們?nèi)绾沃貥?gòu)具有5列的行的過程中,這些行適合于反轉(zhuǎn)縮放操作以將y和yhat還原為原始比例,以便于我們計算RMSE。
更改的要點是我們將y或yhat列與測試數(shù)據(jù)集的后4個特征連接起來,以求反比例,如下所示:
運行優(yōu)化后,顯示訓(xùn)練期間的訓(xùn)練和測試損失,模型已不存在測試損失,損失降至訓(xùn)練損失以下,如下圖所示:
最后,打印出測試RMSE:
模型優(yōu)化完成!當(dāng)然最終此次分享只是參考!具體模型調(diào)優(yōu)還需要按照各位的各自業(yè)務(wù)進(jìn)行調(diào)優(yōu)操作!
主機(jī)負(fù)載數(shù)據(jù)可能會存在周期化數(shù)據(jù),比如正常業(yè)務(wù)系統(tǒng)存在忙時和閑時兩種狀態(tài),如果上午十點為主機(jī)業(yè)務(wù)量最大時期(即主機(jī)系統(tǒng)忙時),那輸入數(shù)據(jù)是否要以前一天十點為輸入數(shù)據(jù)?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130226.html
摘要:令人驚訝的是,創(chuàng)作出了一個有一定含義的故事。再次聲明,本文中的示例只為了簡化討論。這是由于精度依賴于初始參數(shù)的隨機(jī)設(shè)定。訓(xùn)練次數(shù)越多超過次精度也會相應(yīng)提高。 在深度學(xué)習(xí)中,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是一系列善于從序列數(shù)據(jù)中學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)。由于對長期依賴問題的魯棒性,長短期記憶(LSTM)是一類已經(jīng)有實際應(yīng)用的循環(huán)神經(jīng)網(wǎng)絡(luò)?,F(xiàn)在已有大量關(guān)于 LSTM 的文章和文獻(xiàn),其中推薦如下兩篇:Goodfel...
摘要:摘要在年率先發(fā)布上線了機(jī)器翻譯系統(tǒng)后,神經(jīng)網(wǎng)絡(luò)表現(xiàn)出的優(yōu)異性能讓人工智能專家趨之若鶩。目前在阿里翻譯平臺組擔(dān)任,主持上線了阿里神經(jīng)網(wǎng)絡(luò)翻譯系統(tǒng),為阿里巴巴國際化戰(zhàn)略提供豐富的語言支持。 摘要: 在2016年Google率先發(fā)布上線了機(jī)器翻譯系統(tǒng)后,神經(jīng)網(wǎng)絡(luò)表現(xiàn)出的優(yōu)異性能讓人工智能專家趨之若鶩。本文將借助多個案例,來帶領(lǐng)大家一同探究RNN和以LSTM為首的各類變種算法背后的工作原理。 ...
摘要:對于以比特幣為首的數(shù)字貨幣近期的表現(xiàn),只能用瘋狂來形容。比特幣的成交記錄就是事件序列上的加個數(shù)據(jù),可以基于過去的成交記錄序列來對未來的價格作出預(yù)測,和的模型比較合適。最后采用了,用爬取,它包含比特幣的個交易記錄。 簡介 TensorFlow-Bitcoin-Robot:一個基于 TensorFlow LSTM 模型的 Bitcoin 價格預(yù)測機(jī)器人。 文章包括一下幾個部分:1.為什么要...
摘要:有能力對元胞狀態(tài)添加或者刪除信息,這種能力通過一種叫門的結(jié)構(gòu)來控制。一個有個這種門,來保護(hù)和控制元胞狀態(tài)。輸出將會基于目前的元胞狀態(tài),并且會加入一些過濾。同時也將元胞狀態(tài)和隱狀態(tài)合并,同時引入其他的一些變化。 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)人們的每次思考并不都是從零開始的。比如說你在閱讀這篇文章時,你基于對前面的文字的理解來理解你目前閱讀到的文字,而不是每讀到一個文字時,都拋棄掉前面的思考,從頭開始...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20