曹炳堯,柏 杰,侯佩儒
(上海大學(xué) 特種光纖與光接入網(wǎng)重點實驗室,上海 200444)
私有云的高可靠性是保障業(yè)務(wù)系統(tǒng)及云上作業(yè)正常運行的關(guān)鍵因素,在基于私有云環(huán)境本身高可靠的基礎(chǔ)上實現(xiàn)對私有云的故障檢測可以及時排除故障因素,進一步增強系統(tǒng)可靠性。目前在故障檢測方面大多直接對系統(tǒng)級別故障數(shù)據(jù)進行檢測,該方式在故障種類單一時可獲得較好的預(yù)測結(jié)果[1],但在私有云這類多因素故障的場景中效果并不理想。同時在正常私有云環(huán)境下,單靠運維人員對監(jiān)控指標(biāo)、運行日志等海量數(shù)據(jù)進行分析,排查潛在風(fēng)險,也存在數(shù)據(jù)處理困難,排查準(zhǔn)確率低,流程效率緩慢等缺點。
因此,針對上述問題,本文根據(jù)私有云監(jiān)控指標(biāo)的時間序列數(shù)據(jù),采用X11分解算法對監(jiān)控指標(biāo)數(shù)據(jù)進行預(yù)處理獲取特征數(shù)據(jù)并作為神經(jīng)網(wǎng)絡(luò)輸入,將卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短期記憶(LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)融合進行模型構(gòu)建,實現(xiàn)對監(jiān)控指標(biāo)時間序列的訓(xùn)練和預(yù)測。由于LSTM網(wǎng)絡(luò)克服了RNN對時間序列預(yù)測時存在的梯度爆炸和梯度消失等問題,目前LSTM模型在時間序列上得到了廣泛應(yīng)用,并且在私有云監(jiān)控指標(biāo)的預(yù)測中表現(xiàn)也比較突出。
文獻[2]驗證了LSTM模型在云環(huán)境下對監(jiān)控指標(biāo)時間序列比單一模型在預(yù)測上具備精度更高的優(yōu)勢。Sudhakar[3]結(jié)合RNN和LSTM模型對服務(wù)器工作負(fù)載進行預(yù)測,并通過對比驗證了預(yù)測效果其優(yōu)于ARIMA模型,但相較而言其預(yù)測時間更長。Zhang等人[4]將螢火蟲智能優(yōu)化算法對LSTM預(yù)測模型進行優(yōu)化實現(xiàn)對云主機負(fù)載的預(yù)測,提高了峰谷值處的預(yù)測精度。文獻[5]提出了GRU-LSTM組合模型對云計算資源負(fù)載進行預(yù)測,提高了預(yù)測精度的同時減少了預(yù)測時間。文獻[6]進一步對LSTM模型進行優(yōu)化,結(jié)合PF模型提高了突發(fā)負(fù)載時預(yù)測精度。文獻[7]結(jié)合果蠅優(yōu)化算法對LSTM模型進行改進,通過對果蠅算法的尋優(yōu)能力的提高加強了預(yù)測的精確度,但是存在突發(fā)狀況變化的預(yù)測精度低的缺點。
上文實驗中,通過將LSTM模型和其他算法結(jié)合的方式實現(xiàn)時間序列預(yù)測,這種多模型體系往往在預(yù)測精度上高于單一模型,但是一方面部分模型在LSTM超參數(shù)的選擇往往采用試錯法或者只進行簡單的優(yōu)化,而忽略超參數(shù)對模型預(yù)測效果的影響,另一方面在簡單優(yōu)化超參數(shù)的模型中往往僅采用單一LSTM網(wǎng)絡(luò)結(jié)構(gòu)進行預(yù)測,預(yù)測精度又沒有復(fù)合模型高。本文在將LSTM神經(jīng)網(wǎng)絡(luò)模型和CNN神經(jīng)網(wǎng)絡(luò)結(jié)合的基礎(chǔ)上,利用PSO算法實現(xiàn)超參數(shù)的優(yōu)化工作,并采用采用高斯正態(tài)分布實現(xiàn)確定預(yù)測的波動范圍,設(shè)定其上下限閾值,從而對真實數(shù)據(jù)進行故障檢測,使其在預(yù)測結(jié)果及故障檢測中產(chǎn)生更好的效果。最后通過和單一模型以及多模型結(jié)合的預(yù)測方法進行多方面對比,從而展示、分析本文設(shè)計算法的優(yōu)缺性。
本節(jié)主要介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)以及粒子群優(yōu)化算法(PSO)。神經(jīng)網(wǎng)絡(luò)是一門重要的機器學(xué)習(xí)技術(shù),它通過模擬人腦的神經(jīng)網(wǎng)絡(luò)以期實現(xiàn)近似人腦功能的人工智能技術(shù),而粒子群優(yōu)化算法是群集智能的一種,為多主體優(yōu)化系統(tǒng)體系中的一種算法。
卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)是一種可以同時學(xué)習(xí)多種特征的深度神經(jīng)網(wǎng)絡(luò),目前在已被廣泛應(yīng)用于多個領(lǐng)域,包括圖像、語言識別,資源預(yù)測等[8]。CNN的網(wǎng)絡(luò)結(jié)構(gòu)由輸入層、卷積層、池化層、全連接層以及輸出層構(gòu)成,其中卷積層和池化層通過相互配合可以學(xué)習(xí)并總結(jié)歷史數(shù)據(jù)的抽象特征信息,其中卷積層對輸入數(shù)據(jù)進行濾波工作,計算提取出數(shù)據(jù)的建模特征,具體計算方式如公式(1),從而挖掘出數(shù)據(jù)特征向量關(guān)聯(lián)關(guān)系,池化層會在獲取的特征信息基礎(chǔ)上保留卷積后的主要特征的同時降低網(wǎng)絡(luò)復(fù)雜度,提升模型特征信息提取效果?;贑NN算法的優(yōu)越性已經(jīng)有很多研究人員將CNN成功應(yīng)用于故障診斷中[9]。
(1)
式中,?表示卷積計算;F表示卷積層輸入數(shù)據(jù);ω表示卷積核的權(quán)重參數(shù);C、Wf、Hf分別為卷積核的通道數(shù)、寬度以及高度。
一般情況下一維CNN網(wǎng)絡(luò)處理時間序列數(shù)據(jù)具有更佳效果,二維CNN網(wǎng)絡(luò)則在圖像處理方面效果更好,本文中數(shù)據(jù)為時間序列數(shù)據(jù),選擇一維CNN網(wǎng)絡(luò)。在經(jīng)過池化層后將數(shù)據(jù)輸入全連接層,將多維數(shù)據(jù)轉(zhuǎn)化為一維。一維CNN網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 一維CNN結(jié)構(gòu)圖
此外,CNN網(wǎng)絡(luò)的神經(jīng)元之間共享一個卷積濾波器的參數(shù),從而大幅度減少網(wǎng)絡(luò)冗余參數(shù),避免過擬合現(xiàn)象。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)如CNN神經(jīng)網(wǎng)絡(luò)在同層之間神經(jīng)元不會互相傳遞信息,輸出信號僅與輸入信號相關(guān),因此無法處理具有連續(xù)關(guān)系的輸入信號且無記憶能力,對本文中的時間序列數(shù)據(jù)處理效果不佳。為此要構(gòu)建具備記憶功能的神經(jīng)網(wǎng)絡(luò)模型,可采用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network),通過梯度下降算法、權(quán)重共享以及前向反饋機制實現(xiàn)對時間序列的預(yù)測,目前循環(huán)神經(jīng)網(wǎng)絡(luò)已被廣泛應(yīng)用在自然語言處理[10]、計算機視覺[11]、計算機生物學(xué)等領(lǐng)域,在計算機及IT系統(tǒng)領(lǐng)域中的應(yīng)用還較少。
未展開的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2(a)所示,其網(wǎng)絡(luò)結(jié)構(gòu)同傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相同,包含輸入層、隱藏層和輸出層。圖中A表示神經(jīng)網(wǎng)絡(luò)模型,xt表示輸入時間序列在t時刻的數(shù)據(jù),ht表示在t時刻的輸出數(shù)據(jù),其中區(qū)別于CNN網(wǎng)絡(luò)的是隱藏層輸出的數(shù)據(jù)除了會將信息流輸出到ht,同時會將當(dāng)前時刻的神經(jīng)元信息傳遞到下一時刻的神經(jīng)元,并在下一時刻加以利用,U、W、V為神經(jīng)網(wǎng)絡(luò)中的權(quán)重矩陣。這種鏈?zhǔn)浇Y(jié)構(gòu)揭示了RNN本質(zhì)上是與時間序列相關(guān)的,但是RNN雖然理論上可以保留所有的歷史時刻的信息,在實際情況下,信息的傳遞會因為時間間隔造成衰減效應(yīng),即梯度消失,這種情況下會嚴(yán)重降低對數(shù)據(jù)有長期依賴的信息在處理上的效果。并且RNN模型由于在訓(xùn)練時需要預(yù)先確定延遲窗口長度,但是該值的改變難以確定,其最優(yōu)值也難以獲取。所以本文將進一步研究其優(yōu)化算法LSTM。
圖2 RNN和LSTM結(jié)構(gòu)圖
由于RNN上述的問題,文獻[12]提到了長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM,long short-term memory)。LSTM通過實現(xiàn)時間遞歸,將隱藏層中RNN細(xì)胞替換為LSTM細(xì)胞,并在細(xì)胞內(nèi)采用“門”的概念實現(xiàn)長距離的保留長期歷史信息[13]。圖2(b)為LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。和RNN網(wǎng)絡(luò)相比,此處LSTM網(wǎng)絡(luò)添加了表示細(xì)胞狀態(tài),用以表示當(dāng)前LSTM網(wǎng)絡(luò)的狀態(tài)信息并用來傳遞到下一時刻的LSTM網(wǎng)絡(luò)中,其次在隱藏層中設(shè)計了3個門結(jié)構(gòu):ft遺忘門、it記憶門和ot輸出門,LSTM神經(jīng)元隱藏層網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 LSTM神經(jīng)元隱藏層網(wǎng)絡(luò)結(jié)構(gòu)
遺忘門決定了上一周期的時間序列是否從歷史數(shù)據(jù)中進行過濾,記憶門與之相反,它決定輸入信息Xt和Ht-1中需要保留的信息,主要將該循環(huán)周期內(nèi)的需要存儲的時間序列信息存儲到神經(jīng)元狀態(tài)中,Ct細(xì)胞狀態(tài)通過更新傳遞到下一時刻Ct-1,輸出門并非最終輸出狀態(tài),僅為當(dāng)前時刻輸出信號,需要作為下一時刻輸入信號傳遞到下一階段,詳細(xì)計算方式如公式(2)~(6):
ft=σ(Wf·[ht-1,xt]+bf)
(2)
it=σ(Wi·[ht-1,xt]+bi)
(3)
c′=tanh(Wc·[ht-1,xt]+bc)
(4)
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=ot·tanh(c)
(6)
式中,W是門的權(quán)重矩陣,σ表示sigmod函數(shù),b是門的偏置項。
由獲取到的時間序列數(shù)據(jù)輸入當(dāng)前時刻數(shù)據(jù)Xt,前一時刻的細(xì)胞狀態(tài)Ct+1作為該網(wǎng)絡(luò)神經(jīng)元狀態(tài)輸入,將當(dāng)前時刻的信息Xt通過遺忘門ft處理,去除冗余信息以后和輸入門合并生成當(dāng)前時刻的細(xì)胞狀態(tài)Ct,同時由處理過的歷史信息與經(jīng)過記憶門it處理后的輸入信息進行運算得到當(dāng)前時刻輸出信號ht,該信號也將傳遞到下一時神經(jīng)元。
LSTM神經(jīng)網(wǎng)絡(luò)通過增加細(xì)胞狀態(tài),并經(jīng)過遺忘門和記憶門更新細(xì)胞狀態(tài),從而長時間保存了時間序列數(shù)據(jù)的歷史信息,有效緩解了梯度消失、梯度爆炸以及長期依賴的問題。
在LSTM算法中,除了LSTM內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)需要通過訓(xùn)練得到,還存在大量需要在訓(xùn)練網(wǎng)絡(luò)模型之前預(yù)設(shè)的參數(shù),這些參數(shù)被稱為超參數(shù)(hyper-parameters),這些參數(shù)在訓(xùn)練過程中保存不變,但其值對模型訓(xùn)練具有較大影響,訓(xùn)練完成后通常需要進行調(diào)優(yōu),找到一組全局最優(yōu)超參數(shù)。目前超參數(shù)優(yōu)化算法包括網(wǎng)格搜索法、隨即搜索算法、貝葉斯算法等,本文采用粒子群優(yōu)化算法(PSO,particle swarm optimization)對LSTM模型的超參數(shù)進行優(yōu)化。
PSO算法是由Eberhart和Kennedy提出,通過模仿大自然群居動物的集群覓食行為,通過在群體中的個體間的互相關(guān)系來尋找最優(yōu)解[14]。其憑借易于實現(xiàn)、參數(shù)少等優(yōu)點被廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練、遺傳算法等領(lǐng)域。粒子群通過粒子間信息交換保留記憶進行迭代向全局最優(yōu)解進行演變,獲取最優(yōu)粒子實現(xiàn)尋優(yōu)。
尋優(yōu)超參數(shù)被包含著粒子群的向量內(nèi),設(shè)置M個參數(shù)構(gòu)成搜索空間創(chuàng)建粒子群,粒子群內(nèi)包含N個粒子,計算具體方式如公式(7):
(7)
式中,Xi表示粒子的位置,Vi表示粒子的尋優(yōu)速度,Pbest表示第i個粒子的搜索到的最優(yōu)位置,gbest表示迭代后整個粒子群搜索到的最優(yōu)位置。
本文將PSO應(yīng)用于LSTM的超參數(shù)優(yōu)化中,并建立LSTM-PSO模型,以尋找超參數(shù)的全局最優(yōu)解。
根據(jù)私有云監(jiān)控指標(biāo)時間序列數(shù)據(jù)的特點,結(jié)合第1節(jié)相關(guān)理論,本節(jié)提出CNN-LSTM-PSO模型的故障檢測的方案,首先采用X11分解法等技術(shù)對時間序列進行數(shù)據(jù)預(yù)處理,并在此基礎(chǔ)上選擇為LSTM模型添加卷積層的方案實現(xiàn)對模型的訓(xùn)練及預(yù)測,最后基于多層PSO算法完成對超參的選優(yōu)算法以進一步優(yōu)化預(yù)測效果,并使用高斯正態(tài)分布進行閾值選定。
本文以LSTM神經(jīng)網(wǎng)絡(luò)為核心,將實現(xiàn)過程分為七層,包括數(shù)據(jù)預(yù)處理層、卷積層、輸入層、隱藏層、網(wǎng)絡(luò)訓(xùn)練場、超參優(yōu)化層和輸出層,其基本實現(xiàn)框圖如圖4所示。實現(xiàn)過程描述如下:
步驟1:數(shù)據(jù)預(yù)處理層將短采樣周期監(jiān)控指標(biāo)時間序列進行平滑處理,并將數(shù)據(jù)分解得到周期和趨勢數(shù)據(jù)。
步驟2:卷積層將數(shù)據(jù)歸一化,并使用CNN網(wǎng)絡(luò)模型進行特征學(xué)習(xí)并提取。
步驟3:輸入層對特征數(shù)據(jù)進行訓(xùn)練集劃分,數(shù)據(jù)分割以滿足LSTM神經(jīng)網(wǎng)絡(luò)輸入要求。
步驟4:隱藏層為LSTM核心層,構(gòu)成網(wǎng)絡(luò)訓(xùn)練模型核心,實現(xiàn)網(wǎng)絡(luò)訓(xùn)練及結(jié)果預(yù)測。
步驟5:網(wǎng)絡(luò)訓(xùn)練層通過對訓(xùn)練過程中的模型輸出和實際數(shù)據(jù)計算損失模型loss,并采用adam優(yōu)化網(wǎng)絡(luò)算法優(yōu)化權(quán)重矩陣,完成模型參數(shù)的訓(xùn)練。
步驟6:超參優(yōu)化層初始化粒子群,并使用PSO優(yōu)化算法迭代訓(xùn)練獲取全局最優(yōu)超參數(shù)。
步驟7:輸出層通過訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)對測試數(shù)據(jù)集進行預(yù)測,同時通過高斯正態(tài)分布計算預(yù)測值的閾值,通過比較真實數(shù)據(jù)是否在該范圍內(nèi)以檢測該時刻監(jiān)控指標(biāo)數(shù)據(jù)是否存在異常。
圖4 整體方案設(shè)計
本文監(jiān)控私有云監(jiān)控指標(biāo)其周期粒度一般為30 s或者1 min,考慮到短周期時間序列的波動性大,易造成毛刺等現(xiàn)在,同時為了統(tǒng)一周期粒度指標(biāo),對數(shù)據(jù)先進行平滑處理,將周期重置為3 min,單周期值取該周期范圍內(nèi)子周期的平均值。同時時間序列通常可以被分解為趨勢、周期及殘差3個變量,如經(jīng)典分解法可將時間序列分解為周期成分、趨勢成分和殘差,其計算方式如公式(8):
y(t)=S(t)+T(t)+R(t)
(8)
式中,S(t)為周期成分(seasonal component),T(t)為趨勢成分(trend-cycle component),R(t)為殘差成分(remainder component)。
但在本文中的監(jiān)控指標(biāo)的時間序列除了會被上述因素影響之外,還會受到季節(jié)、月度變化等因素的影響,為此本文采用X11算法以去除月份和季節(jié)因素,在獲得的趨勢周期成分中,在使用經(jīng)典分解法即公式(8)進而獲取到精確的周期數(shù)據(jù)和趨勢數(shù)據(jù),其中X11算法基本公式如式(9):
Yt=CtStItPtDt
(9)
式中,Yt是原始序列,Ct是趨勢周期成分,St是季節(jié)成分,It是先驗月因子,Pt是工作日因子,Dt是不規(guī)則成分。
通過結(jié)合X11分解法和經(jīng)典分解法獲取到精確的周期和趨勢數(shù)據(jù)。X11分解法(X11 decomposition)可以獲得完整數(shù)據(jù)的所有趨勢成分,對于假期、季節(jié)等已知的影響因素都有著更好的處理結(jié)果。
傳統(tǒng)的LSTM模型雖然可以對中長時間序列進行預(yù)測,但是由于其遺忘門的存在,在對大規(guī)模數(shù)據(jù)進行訓(xùn)練時,會遺忘部分重要信息,造成模型訓(xùn)練效果出現(xiàn)退化現(xiàn)象。而卷積神經(jīng)網(wǎng)絡(luò)CNN通過其卷積層可以挖掘歷史數(shù)據(jù)中更深層次的特征信息。因此通過CNN網(wǎng)絡(luò)先進行特征信息學(xué)習(xí)后再傳入LSTM網(wǎng)絡(luò)進行時間序列學(xué)習(xí)將使模型對未來時間數(shù)據(jù)的數(shù)據(jù)更精準(zhǔn)。
網(wǎng)絡(luò)訓(xùn)練和預(yù)測的核心是隱藏層,通過訓(xùn)練獲取隱藏層矩陣參數(shù),并以該模型對數(shù)據(jù)進行預(yù)測。經(jīng)過2.2小結(jié)預(yù)處理后得到處理后的周期和趨勢時間序列分別為S(t)和T(t)。此處以周期序列S(t)為例,設(shè)S(t)={s1,s2,…,sn},在卷積層采用z-score對特征值的訓(xùn)練集進行歸一化處理,將其映射為均值為0,方差為1的標(biāo)準(zhǔn)序列,以此消除特征單位及尺度等影響,其計算方式如公式(10),完成歸一化的數(shù)據(jù)表示為
(10)
式中,x為實際值,μ為均值,σ為標(biāo)準(zhǔn)差,z為歸一化結(jié)果。
初始訓(xùn)練模型采用64單元的LSTM層,時間步長為12,預(yù)測長度為10。同時為防止過擬合的發(fā)生,采用EarlyStop和Dropout技術(shù),其中早停法(EarlyStop)通過在模型驗證集上表現(xiàn)開始下降時停止訓(xùn)練避免過擬合,隨機丟棄層(Dropout)通過一定概率的讓部分神經(jīng)元不參加模型訓(xùn)練以減少過擬合現(xiàn)象。損失模型(loss)采用均方誤差(MSE,mean-square error)進行計算,并以該損失函數(shù)最小為目標(biāo),給定初始的超參數(shù),并使用Adam優(yōu)化算法對隱藏層的網(wǎng)絡(luò)權(quán)重進行更新,進而獲得訓(xùn)練模型并對測試集進行預(yù)測。
LSTM常見超參數(shù)包括學(xué)習(xí)率η、迭代訓(xùn)練次數(shù)C、分割窗口長度L、神經(jīng)元個數(shù)N、狀態(tài)向量大小Sstate等。其中學(xué)習(xí)率η絕對目標(biāo)函數(shù)的收斂能力,合適的學(xué)習(xí)率可以其在合適時間內(nèi)收斂到局部最小值,反之學(xué)習(xí)率過大可能會造成模型震蕩導(dǎo)致無法收斂,過小則學(xué)習(xí)效果欠佳,易造成模型訓(xùn)練用時增加,本文學(xué)習(xí)率的設(shè)置范圍為[0.01,0.001]。訓(xùn)練次數(shù)C表示本文需要進行圖3中網(wǎng)絡(luò)訓(xùn)練層Adam優(yōu)化網(wǎng)絡(luò)權(quán)重參數(shù)的次數(shù),訓(xùn)練次數(shù)過小無法得到最優(yōu)網(wǎng)絡(luò)權(quán)重參數(shù),過多會增加訓(xùn)練時長,浪費計算機計算資源,對實時檢測的時效性有一定影響[15]。
本文將基于PSO對4個關(guān)鍵超參數(shù)(學(xué)習(xí)率η、迭代訓(xùn)練次數(shù)C、分割窗口長度L、神經(jīng)元個數(shù)N)進行選優(yōu),將這4個超參數(shù)作為PSO粒子,通過更新粒子的速度和位置獲取每個粒子全局最優(yōu)值,LSTM-PSO模型流程如圖5所示。
圖5 LSTM-PSO預(yù)測模型流程圖
在圖4的基礎(chǔ)上,將LSTM模型訓(xùn)練過程置于PSO模型內(nèi),對于關(guān)鍵的超參數(shù)先設(shè)置經(jīng)驗值進行模型訓(xùn)練,然后根據(jù)表1中超參數(shù)取值范圍通過計算粒子適應(yīng)度更新粒子迭代訓(xùn)練獲取最優(yōu)解。如表1為本文設(shè)置超參數(shù)取值范圍。
表1 超參數(shù)取值范圍
PSO通過適應(yīng)度來評價解的好壞,本文中適應(yīng)度函數(shù)通過設(shè)置真實值和預(yù)測值的平均百分比誤差(MAPE,mean absolute percentage error)的最小值來實現(xiàn),公式如(11)和(12):
(11)
F(x)=min(M)
(12)
式(11)中,n表示預(yù)測時間序列的監(jiān)控項個數(shù),Pact表示監(jiān)控項的真實值,Ppre表示監(jiān)控預(yù)測值,M表示MAPE,式(12)中F表示適應(yīng)度。
高斯正態(tài)分布模型計算簡單,且運算速度快,在進行故障實時檢測中更快速、準(zhǔn)確。通過對樣本值的均差和方差來計算整體概率分布,設(shè)隨機變量服從一個位置參數(shù)、尺度參數(shù)為的概率分布,且其概率密度函數(shù)為式(13),則該隨機變量為正態(tài)隨機變量,且符合正態(tài)分布[16]。
(13)
本文進行預(yù)測的趨勢周期模型符合正態(tài)分布。正態(tài)分布進行閾值計算求得閾值上限和閾值下限,在本文中必須當(dāng)趨勢周期實際值超過閾值時,將其判定為出現(xiàn)故障。異常檢測的實際原理就是小概率事件一般不會發(fā)生,當(dāng)出現(xiàn)時即視為出現(xiàn)故障[17]。
在私有云環(huán)境中,按照固定時間采集到監(jiān)控項指標(biāo)數(shù)據(jù)作為時間序列,其中監(jiān)控項指標(biāo)包括CPU、內(nèi)存等基本監(jiān)控指標(biāo)、電源開斷、物理服務(wù)器風(fēng)扇轉(zhuǎn)速等物理指標(biāo)以及應(yīng)用服務(wù)狀態(tài)、端口狀態(tài)等監(jiān)控指標(biāo)。本文主要以已搭建私有云內(nèi)某虛擬主機CPU、內(nèi)存、磁盤3種監(jiān)控指標(biāo)作為時間序列進行數(shù)據(jù)分析和模型對比,每條指標(biāo)選取1年的數(shù)據(jù),初始周期統(tǒng)一取3 min,將前3個月數(shù)據(jù)作為訓(xùn)練集,后9個月數(shù)據(jù)作為測試集。
而在上述指標(biāo)中呈現(xiàn)的故障類型也存在不同的形式,通常包括點異常、集合異常以及峰值異常,如圖6所示。其中點異??梢栽跈z測期間單獨處理而無需考慮時間關(guān)系,所以最好處理,通常簡單閾值設(shè)定的方法即可處理。峰值異常則取決于其相鄰數(shù)據(jù)點的值,因此需要檢測局部信息,而集合異常是由于一系列數(shù)據(jù)點同時表現(xiàn)出異常而產(chǎn)生的,所以需要對時間序列進行處理,本文采用的CNN-LSTM-PSO模型對此有著很好的檢測效果。
圖6 私有云監(jiān)控指標(biāo)故障類型
同時為對模型預(yù)測結(jié)果進行比較,本文采用標(biāo)準(zhǔn)差(SD, standarddeviation)來反映實際值與預(yù)測值的離散程度[18],模型監(jiān)控指標(biāo)的預(yù)測值和實際值分別進行均方根誤差(RMSE,rootmeansquareerror)、平均絕對誤差(MAE,mean absolute error)和平均百分比誤差(MAPE)的計算對預(yù)測結(jié)果的精確度進行比較,這3個值越低,表示誤差越小,精度越高。其中RMSE、MAE計算方式如公式(14)、(15),MAPE如公式(11):
(14)
(15)
式中,yact表示第i個樣點監(jiān)控項的實際值,ypre表示第i個樣點監(jiān)控項的預(yù)測值。
故障檢測的能力則使用精度(precision)、召回率(recall)和F1分?jǐn)?shù)來評估,精度越高表示檢測準(zhǔn)確率越高,召回率越高表示漏檢故障可能性越低,F(xiàn)1越高表示整體效果越好,計算方式如公式(16)~(18)所示:
(16)
(17)
(18)
式中,TP(truepositive)表示正確檢測出的異常數(shù),F(xiàn)P(false positive)表示正常數(shù)據(jù)被檢測為故障的數(shù)量,F(xiàn)N(false negative)表示異常數(shù)據(jù)被檢測為正常的數(shù)量。
本文將會從以下幾個時間序列模型和所提出的CNN-LSTM-PSO模型進行實驗對比。
1)自回歸移動平均(ARIMA,autoregressive integrated moving average model)模型基于時間序列的趨勢變化、周期性和隨機干擾實現(xiàn)對平穩(wěn)時間序列的預(yù)測[19]。模型表示為ARIMA(p,d,q,其中p為自回歸項數(shù),d為差分項數(shù),q為移動平均項數(shù)[20]。本文基于ARIMA模型,并結(jié)合網(wǎng)格搜索法對ARIMA模型的3個參數(shù)進行調(diào)優(yōu),從而實現(xiàn)對監(jiān)控指標(biāo)的時間序列預(yù)測。
2)Holt-Winters指數(shù)平滑不同于常見的時間序列分解法,其基本思想是通過加權(quán)平均移動法來實現(xiàn)時間序列預(yù)測[21]。Holt-Winters可以在捕捉周期分量和趨勢分量的同時直接進一步捕捉到季節(jié)分量,以表示序列數(shù)據(jù)的局部特征變化,其原理是通過將時間序列上遠(yuǎn)近時刻的數(shù)據(jù)進行權(quán)重劃分,其中較近時刻給予較大權(quán)值,較遠(yuǎn)時刻給予較小的權(quán)值從而同時兼顧所有時刻,實現(xiàn)時間序列的預(yù)測[22]。
3)將本文第一節(jié)提到的RNN模型以及單獨使用LSTM模型的預(yù)測進行效果比對。
4)采用論文[5]的模型,將GRU和LSTM組合構(gòu)建GRU-LSTM模型進行模型訓(xùn)練和預(yù)測。該模型先使用GRU網(wǎng)絡(luò)提取監(jiān)控指標(biāo)的輸入變量特征,構(gòu)成高維映射空間時序性特征向量,然后將結(jié)果輸入到LSTM網(wǎng)絡(luò)進行訓(xùn)練。
本文使用計算機配置如下:處理器為Intel(R) Core(TM) i7-8750H,CPU頻率為2.2 GHz和2.21 Hz;內(nèi)存為32 GB;操作系統(tǒng)為Windows11(64位);程序設(shè)計語言位Python3.7,采用pandas、keras、states等程序包。
為直觀體現(xiàn)本文模型的預(yù)測效果,以監(jiān)控指標(biāo)CPU使用率作為預(yù)測數(shù)據(jù),選取數(shù)據(jù)的間隔時間作為橫坐標(biāo),CPU使用率作為縱坐標(biāo)。圖7、圖8分別為本文設(shè)計模型CNN-LSTM-PSO和GRU-LSTM模型對CPU指標(biāo)進行預(yù)測的結(jié)果,可以看到兩種模型都可以大致預(yù)測到數(shù)據(jù)的走向,但本文預(yù)測擬合效果更好,精度更高,而GRU-LSTM在線性上升或者下降部分效果較好,但在谷峰值位置處明顯有部分?jǐn)?shù)據(jù)預(yù)測效果不佳,不如本文模型。由此可看到CNN結(jié)合LSTM的模型對極端峰、谷值都有著更好的擬合效果。且在抖動頻繁的時間點,CNN-LSTM-PSO模型的預(yù)測結(jié)果更接近真實值,這也證明了通過PSO實現(xiàn)超參選擇在一定程度上提高了模型的精確度。
圖7 CNN-LSTM-PSO模型預(yù)測效果
圖8 GRU-LSTM模型預(yù)測效果
為進一步說明CNN-LSTM-PSO模型預(yù)測性能,將其分別與ARIMA、Holt-Winters、RNN、LSTM以及GRU-LSTM五種模型進行對比,并以RMSE、MAE以及MAPE作為參考指標(biāo),同時計算模型訓(xùn)練和預(yù)測的耗時,結(jié)果如表2所示。
表2 ARIMA、Holt-Winters、RNN、LSTM、GRU-LSTM及本文模型預(yù)測效果對比結(jié)果
從表2可以看出,RNN和LSTM神經(jīng)網(wǎng)絡(luò)模型誤差都比較大,預(yù)測準(zhǔn)確度最不理想,Holt-Winters預(yù)測效果略有提升,但是其耗時過長,ARIMA模型耗時最短,但是其預(yù)測效果較差,論文[5]中所提的GRU-LSTM模型在可控耗時情況下其預(yù)測效果也較好,但是相比于本文的CNN-LSTM-PSO模型在預(yù)測效果上還有一定差距,其中對于監(jiān)控指標(biāo)波動處的預(yù)測效果差距更大。并且本文模型在訓(xùn)練和預(yù)測的總耗時上雖比ARIMA和LSTM模型略高,但相比于Holt-Winter、RNN和GRU-LSTM都要略快一些。可以看出,本文提出的CNN-LSTM-PSO在模型性能上有著較好的優(yōu)化。最后本文通過高斯正態(tài)分布進行閾值選定。當(dāng)實際值超過圖中陰影部分上下閾值時,即判定此時出現(xiàn)故障。
本文通過精度、召回率和F1值來比較本文設(shè)計模型的故障檢測效果,如表3為內(nèi)存使用率的性能比較結(jié)果。由上文預(yù)測效果可以分析出單RNN模型和LSTM模型效果較差,此處將不在進行比較。
表3 ARIMA、Holt-Winters、GRU-LSTM及本文模型故障檢測效果對比結(jié)果
結(jié)果表明,相對于本文提出的模型,ARIMA、Holt-Winters模型的精度、召回率和F1值都有所欠缺,整體效果較差。而GRU-LSTM模型和本文模型召喚率都較好,但是本文模型精確率更優(yōu),因此F1值也最好??梢钥闯?,本文提出的CNN-LSTM-PSO模型在故障檢測效果上有著明顯的優(yōu)勢。
在進行超參選優(yōu)時,LSTM網(wǎng)絡(luò)的超參數(shù)范圍根據(jù)表格1中的范圍進行設(shè)置,同時設(shè)置種子群規(guī)模seed為30,最大迭代次數(shù)40。尋優(yōu)主要通過2.4節(jié)中提高的LSTM預(yù)測模型的參數(shù)得結(jié)果,包括適應(yīng)度F(x)和超參數(shù)學(xué)習(xí)率η、迭代訓(xùn)練次數(shù)C、分割窗口長度L、神經(jīng)元個數(shù)N的變化趨勢,詳細(xì)結(jié)果如如圖9所示。
圖9 PSO優(yōu)化結(jié)果曲線圖
通過PSO對LSTM網(wǎng)絡(luò)的超參數(shù)進行選優(yōu),當(dāng)?shù)螖?shù)達到19時適應(yīng)度最優(yōu),且迭代次數(shù)最少,如圖9(a)所示,此時3個超參數(shù)都達到最優(yōu)效果。此時通過圖9(b)、9(c)、9(d)可以看出學(xué)習(xí)效率為0.007 6,分割窗口長度為652,神經(jīng)元個數(shù)為369。通過對超參數(shù)變化曲線圖分析可以發(fā)現(xiàn)超參數(shù)都有兩個峰值,在迭代次數(shù)為19和迭代次數(shù)為27分別有一個高峰值,但是迭代次數(shù)在19時效果更好。
針對私有云故障檢測的問題,本文提出了CNN-LSTM-PSO模型對關(guān)鍵監(jiān)控指標(biāo)故障的檢測方法,采用X11分解法和經(jīng)典分解算法可以獲取時間序列的周期成分和趨勢成分,同時使用CNN-LSTM模型可以對長時間序列預(yù)測有更好的擬合效果,利用PSO對LSTM模型網(wǎng)絡(luò)的超參數(shù)進行選優(yōu)工作,在避免簡單人為確定超參數(shù)導(dǎo)致無法取得全局最優(yōu)的同時,將超參選優(yōu)的時間控制在確定時間內(nèi),保障模型預(yù)測的實時性。采用高斯正態(tài)分布確定閾值大小,最終實現(xiàn)了私有云的故障檢測工作。
測試結(jié)果表明,相比較其他時間訓(xùn)練模型,本文提出的CNN-LSTM-PSO模型能夠有效提高預(yù)測的精確度和準(zhǔn)確性,同時訓(xùn)練及預(yù)測耗時在可控范圍之內(nèi),在對私有云的故障檢測中有著較好效果。