譚宇寧 黨偉超 潘理虎 白尚旺
(太原科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 山西 太原 030024)
隨著互聯(lián)網(wǎng)技術(shù)的日益成熟,當(dāng)前軟件數(shù)量不斷增多,功能結(jié)構(gòu)日趨復(fù)雜,對(duì)其更便利、更可靠的需求使得軟件維護(hù)的難度也在不斷增強(qiáng)。然而長(zhǎng)時(shí)間持續(xù)運(yùn)行的軟件系統(tǒng)因老化現(xiàn)象的存在,可靠性和可用性受到嚴(yán)重威脅和制約,易造成無(wú)法估量的損失。
軟件老化是指軟件在長(zhǎng)期不間斷地運(yùn)行若干時(shí)間后系統(tǒng)的性能持續(xù)下降、占用的資源不斷增加、錯(cuò)誤不斷累積,最終導(dǎo)致軟件失效或系統(tǒng)宕機(jī)的現(xiàn)象[1]。為盡可能減少甚至避免老化損失、提高軟件的可靠性和可用性,Huang等[2]提出一種主動(dòng)性的容錯(cuò)策略——軟件再生技術(shù),通過(guò)間歇或定期中止系統(tǒng)運(yùn)行,清除內(nèi)部狀態(tài)以及運(yùn)行環(huán)境,使之恢復(fù)正常,從而避免因軟件老化引起突發(fā)性失效。
盡管通過(guò)抗衰操作可消除軟件老化帶來(lái)的不良影響,然而何時(shí)實(shí)施抗衰是一個(gè)值得探究的問(wèn)題[3]。再生過(guò)于頻繁易導(dǎo)致停機(jī)時(shí)間增長(zhǎng),損失進(jìn)一步擴(kuò)大;再生頻率過(guò)低則無(wú)法及時(shí)解決老化問(wèn)題。如果可以準(zhǔn)確地對(duì)軟件老化趨勢(shì)作出預(yù)測(cè),在系統(tǒng)失效前及時(shí)發(fā)現(xiàn)老化現(xiàn)象并采取合理的軟件再生策略,就能盡可能降低因?qū)嵤┸浖偕斐傻膿p失,有效避免因停機(jī)所造成不良影響,提高系統(tǒng)的可靠性。因此,準(zhǔn)確地對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè)至關(guān)重要。
目前對(duì)于軟件老化趨勢(shì)的預(yù)測(cè)主要是根據(jù)老化性能參數(shù)信息,對(duì)系統(tǒng)的資源消耗情況進(jìn)行分析預(yù)測(cè)。常用的建模方法可分為傳統(tǒng)的基于數(shù)學(xué)建模和基于機(jī)器學(xué)習(xí)的兩大類預(yù)測(cè)方法,包括回歸分析[4]、時(shí)間序列法[5-6]以及BP神經(jīng)網(wǎng)絡(luò)[7-8]等。其中傳統(tǒng)的回歸分析法和基于時(shí)間序列的預(yù)測(cè)方法目前已經(jīng)成熟,但相對(duì)來(lái)說(shuō)建模形式單一,難以捕捉老化性能參數(shù)存在的隱藏規(guī)律,無(wú)法滿足軟件老化數(shù)據(jù)突變和多依賴的非線性要求;而基于機(jī)器學(xué)習(xí)的預(yù)測(cè)技術(shù)在解決復(fù)雜的非線性問(wèn)題時(shí)有較高的解決能力,預(yù)測(cè)更加準(zhǔn)確。然而當(dāng)前大多數(shù)預(yù)測(cè)模型所使用的神經(jīng)網(wǎng)絡(luò)層數(shù)淺,難以提取更深層次的特征,而且在網(wǎng)絡(luò)構(gòu)建過(guò)程中未充分考慮前后時(shí)刻老化數(shù)據(jù)間的相互影響,忽略了老化數(shù)據(jù)間因時(shí)序關(guān)聯(lián)而存在的長(zhǎng)期依賴問(wèn)題,致使模型預(yù)測(cè)精度較低,很難達(dá)到理想的預(yù)測(cè)效果。
循環(huán)神經(jīng)網(wǎng)絡(luò)模型(Recurrent Neural Network,RNN)是一種具有循環(huán)結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),通過(guò)引入時(shí)間維度,增加時(shí)間狀態(tài)屬性,不僅能自動(dòng)獲取原始數(shù)據(jù)更多的波動(dòng)以及規(guī)律性特征,而且能有效地克服傳統(tǒng)神經(jīng)網(wǎng)絡(luò)對(duì)序列信息進(jìn)行處理時(shí)的局限。其中長(zhǎng)短時(shí)記憶(Long Short-term memory, LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)作為一種特殊的RNN,通過(guò)引入門(mén)結(jié)構(gòu),能有效學(xué)習(xí)時(shí)序數(shù)據(jù)間的長(zhǎng)期依賴關(guān)系,并解決傳統(tǒng)RNN易產(chǎn)生梯度爆炸或彌散的問(wèn)題,在各領(lǐng)域已得到廣泛應(yīng)用[9]。然而,隨著輸入序列的增長(zhǎng),各節(jié)點(diǎn)信息在遠(yuǎn)距離的傳遞過(guò)程中仍會(huì)造成損耗,而且由于時(shí)間維度上不同時(shí)刻的時(shí)序特征重要程度不同,對(duì)最終序列數(shù)據(jù)的影響程度也不同,單一的LSTM易忽略重要特征對(duì)輸出結(jié)果的影響[10]。
注意力機(jī)制[11]是對(duì)人類視覺(jué)分析的一種模擬,通過(guò)對(duì)同一物體分配不同注意力的方式,增加對(duì)特定輸入部分的關(guān)注,從而快速獲取重要信息。不同時(shí)間的老化序列數(shù)據(jù)中的特征重要程度存在差異,對(duì)最終老化趨勢(shì)會(huì)有不同的影響程度。
基于上述分析,根據(jù)老化數(shù)據(jù)的時(shí)序特性,本文提出并設(shè)計(jì)了一種基于自注意力機(jī)制的長(zhǎng)短時(shí)記憶單元(Self-Attention-LSTM, SATLST)循環(huán)神經(jīng)網(wǎng)絡(luò)軟件老化趨勢(shì)預(yù)測(cè)模型。該模型通過(guò)LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)相互連接,對(duì)過(guò)去時(shí)刻的老化數(shù)據(jù)建立依賴、產(chǎn)生記憶從而挖掘老化數(shù)據(jù)更多的規(guī)律特征。同時(shí)在LSTM隱層引入注意力機(jī)制,通過(guò)對(duì)不同時(shí)刻的老化數(shù)據(jù)分配不同的注意力系數(shù),更加全面地對(duì)局部老化信息特征的重要程度進(jìn)行區(qū)分學(xué)習(xí),并且增強(qiáng)對(duì)局部老化信息的關(guān)注度,從而有效提取更加豐富的老化序列特征,提高Web系統(tǒng)老化趨勢(shì)預(yù)測(cè)的準(zhǔn)確度。
圖1 按照時(shí)序展開(kāi)的RNN結(jié)構(gòu)圖
相比于傳統(tǒng)神經(jīng)網(wǎng)絡(luò),RNN不僅通過(guò)層與層間的連接進(jìn)行信息傳遞,而且通過(guò)引入環(huán)狀結(jié)構(gòu),使得不同時(shí)間維度上的老化數(shù)據(jù)建立了聯(lián)系,能有效捕捉老化數(shù)據(jù)間的依賴關(guān)系,在處理具有時(shí)序特性的老化數(shù)據(jù)時(shí)有明顯優(yōu)勢(shì),但也存在自身問(wèn)題。在實(shí)際計(jì)算中,RNN能有效利用短時(shí)間內(nèi)的老化數(shù)據(jù)進(jìn)行學(xué)習(xí),但因老化過(guò)程緩慢,涉及到的大量數(shù)據(jù)因時(shí)間跨度有限,越遠(yuǎn)的時(shí)間點(diǎn),梯度回傳的老化信息就會(huì)越少,RNN的學(xué)習(xí)能力就會(huì)變?nèi)酰创嬖谔荻葟浬⒌膯?wèn)題。為解決該問(wèn)題,LSTM在其結(jié)構(gòu)基礎(chǔ)上增加了一個(gè)用來(lái)記錄傳遞信息的細(xì)胞狀態(tài),并通過(guò)三個(gè)基于Sigmoid函數(shù)的門(mén)結(jié)構(gòu)對(duì)老化信息保留或取舍的程度進(jìn)行判斷,通過(guò)線性積累,使得網(wǎng)絡(luò)模型能夠較長(zhǎng)時(shí)間保存并傳遞信息[13],從結(jié)構(gòu)上克服了RNN長(zhǎng)期依賴的局限。LSTM具體單元結(jié)構(gòu)如圖2所示。
圖2 LSTM單元結(jié)構(gòu)圖
ft=σ(Wf·ht-1+Wf·xt+bf)
(1)
it=σ(Wi·ht-1+Wi·xt+bi)
(2)
(3)
(4)
ot=σ(Wo·ht-1+Wo·xt+bo)
(5)
ht=ot⊙tanh(ct)
(6)
式中:ft、it、ot分別表示遺忘門(mén)、輸入門(mén)、輸出門(mén)的結(jié)算結(jié)果;Wf、Wi、Wo分別為遺忘門(mén)、輸入門(mén)、輸出門(mén)的權(quán)重矩陣;bf、bi、bo分別為遺忘門(mén)、輸入門(mén)、輸出門(mén)的偏置項(xiàng);xt為t時(shí)刻輸入的單元狀態(tài);Wc為輸入單元狀態(tài)權(quán)重矩陣;bc為輸入單元狀態(tài)偏置項(xiàng);tanh(·)為激活函數(shù);⊙表示hadamard乘積。
由于長(zhǎng)時(shí)間老化序列數(shù)據(jù)在輸入LSTM網(wǎng)絡(luò)時(shí)會(huì)分為若干短子序列,而不同的短子序列所包含的特征對(duì)老化趨勢(shì)的影響程度存在差異,若對(duì)不同時(shí)間輸入的老化信息分配不同的權(quán)重,就可有效提高網(wǎng)絡(luò)的預(yù)測(cè)效果。
注意力機(jī)制就是對(duì)人類視覺(jué)分析的一種模擬,通過(guò)對(duì)同一物體分配不同注意力的方式,增加對(duì)特定輸入部分的關(guān)注,從而快速獲取想要的信息。這種重點(diǎn)關(guān)注局部注意力的特性,極大地提高了獲取信息的速度和能力。從本質(zhì)上來(lái)說(shuō),注意力機(jī)制是對(duì)輸入信息進(jìn)行加權(quán)求和的過(guò)程,具體結(jié)構(gòu)如圖3所示。
圖3 注意力機(jī)制結(jié)構(gòu)
首先將i時(shí)刻的老化序列信息Xi與j時(shí)刻的老化信息Yj進(jìn)行對(duì)比,通過(guò)計(jì)算F(Xi,Yj)函數(shù),得到期望輸出yi與輸入變量xi的相似度,然后經(jīng)過(guò)Softmax函數(shù)歸一化處理得到一個(gè)稱為權(quán)重的相似數(shù)值。該值越大表明該段老化序列信息對(duì)最終輸出的影響越大,反之則影響很小。然后根據(jù)計(jì)算得到的相似度,對(duì)所有輸入的老化信息進(jìn)行加權(quán)求和并得到最終輸出。這種設(shè)計(jì)能更好地關(guān)注對(duì)最終結(jié)果有影響力的老化數(shù)據(jù),從而提高模型的預(yù)測(cè)精度。
由于F的實(shí)現(xiàn)方式不同,注意力模型也不同。其中加性注意力和乘性注意力主要是對(duì)(Xi,Yj)加權(quán)求和以及按權(quán)相乘進(jìn)行計(jì)算,而自注意力(Self-attention)是注意力機(jī)制的改進(jìn),通過(guò)激勵(lì)函數(shù)為tanh和Softmax的兩層全連接網(wǎng)絡(luò)對(duì)注意力權(quán)重進(jìn)行計(jì)算。其減少了對(duì)外部信息的依賴,只關(guān)注輸入數(shù)據(jù)本身所具有的特征,通過(guò)自動(dòng)找尋并賦予數(shù)據(jù)以不同的權(quán)重系數(shù),更擅長(zhǎng)捕捉數(shù)據(jù)內(nèi)部相關(guān)性[15]。因此,本文采用自注意力的方法,對(duì)LSTM老化預(yù)測(cè)模型進(jìn)行改進(jìn)。具體計(jì)算公式如下:
f(xi,y)=wTσ(W1·xi+W2·y)
(7)
(8)
該方法將計(jì)算得到的相似性分?jǐn)?shù)通過(guò)Softmax函數(shù)映射到(0,1)區(qū)間并設(shè)為權(quán)重,加權(quán)求和得到最終輸出。
結(jié)合自注意力機(jī)制后的LSTM資源消耗預(yù)測(cè)模型由輸入層、LSTM層、自注意力層以及輸出層四大部分組成,具體結(jié)構(gòu)如圖4所示。
圖4 SATLSTM老化預(yù)測(cè)模型結(jié)構(gòu)
輸入層負(fù)責(zé)輸入各時(shí)間點(diǎn)對(duì)應(yīng)的老化信息,并對(duì)原始老化數(shù)據(jù)清洗后進(jìn)行處理、劃分;LSTM層主要將老化資源數(shù)據(jù)以循環(huán)結(jié)構(gòu)的方式進(jìn)行連接,并深入挖掘老化性能參數(shù)存在的隱藏規(guī)律;自注意力層為每個(gè)輸入的老化節(jié)點(diǎn)數(shù)據(jù)分配一個(gè)0-1區(qū)間的注意力系數(shù);輸出層負(fù)責(zé)輸出老化數(shù)據(jù)最終預(yù)測(cè)結(jié)果。
(1) 網(wǎng)絡(luò)訓(xùn)練。定義老化資源損耗數(shù)據(jù)f={f1,f2,…,fN},將其劃分為測(cè)試集ftrain={f1,f2,…,fm}和訓(xùn)練集ftest={f1,f2,…,fn},其中m (9) 為滿足網(wǎng)絡(luò)輸入要求,將測(cè)試集Xtrain按照滑動(dòng)窗口的大小分割為N個(gè)長(zhǎng)度為time_step(s)的老化序列,則分割后的模型輸入為: (10) 對(duì)應(yīng)理論輸出如下: (11) 將輸入矩陣X={X1,X2,…,Xs}首先輸入LSTM層,則t時(shí)刻xt經(jīng)過(guò)LSTM隱含層得到映射ht,即: ht=f1(xt,ht-1) (12) 根據(jù)式(1)-式(6)計(jì)算遺忘門(mén)ft、輸入門(mén)it、以及輸出門(mén)ot各值,經(jīng)過(guò)隱藏層輸出結(jié)果可表示為: (13) 式中:CP-1和HP-1分別表示上一個(gè)LSTM細(xì)胞的狀態(tài)以及隱含層的輸出。 (14) (15) 將LSTM層的輸出和注意力層的輸出進(jìn)行融合得到模型的輸出C。 (16) 經(jīng)過(guò)自注意力層輸出結(jié)果可表示如下: (17) 將均方誤差作為誤差計(jì)算公式,則損失函數(shù)計(jì)算公式如下: (18) Pf=SATLSTM(Yf)={pm-s+2,pm-s+3,…,pm+1} (19) 式中:m+1時(shí)刻的預(yù)測(cè)值為pm+1。然后將該值與Yf最后的s-1個(gè)數(shù)據(jù)點(diǎn)進(jìn)行合并得到新的數(shù)據(jù): (20) 將Yf+1輸入SATLSTM網(wǎng)絡(luò)后得到m+2時(shí)刻的預(yù)測(cè)值為pm+2,并以此類推得到預(yù)測(cè)序pte={pm+1,pm+2,…,pn}。 最后對(duì)其進(jìn)行反標(biāo)準(zhǔn)化處理后得到最終老化預(yù)測(cè)序列: (21) 研究表明,軟件系統(tǒng)內(nèi)存的泄漏易引起內(nèi)存耗盡。作為重要的老化誘因之一,內(nèi)存使用情況是評(píng)估軟件是否發(fā)生老化的一個(gè)關(guān)鍵指標(biāo)。因此,使用內(nèi)存對(duì)Web系統(tǒng)老化現(xiàn)象進(jìn)行預(yù)測(cè):通過(guò)監(jiān)測(cè)軟件系統(tǒng)的運(yùn)行狀況,根據(jù)采集到的內(nèi)存老化數(shù)據(jù),建立一個(gè)基于SATLSTM的Web內(nèi)存老化預(yù)測(cè)模型,以此來(lái)預(yù)測(cè)Web系統(tǒng)老化趨勢(shì)。 由于軟件老化是一個(gè)錯(cuò)誤不斷累積的過(guò)程,一個(gè)Web系統(tǒng)需要耗費(fèi)大量時(shí)間才能觀察到系統(tǒng)故障。當(dāng)前絕大多數(shù)的老化實(shí)驗(yàn)只是簡(jiǎn)單識(shí)別老化效應(yīng),很難準(zhǔn)確把握軟件老化的整體趨勢(shì)[16]。因此針對(duì)軟件老化的特性,本文根據(jù)Matias等[17]提出的系統(tǒng)化方法,將工業(yè)領(lǐng)域已成熟應(yīng)用的加速測(cè)試?yán)碚撘氲杰浖I(lǐng)域。 3.1.1Web軟件老化加速壽命實(shí)驗(yàn) 為研究因內(nèi)存泄漏而導(dǎo)致應(yīng)用程序故障的老化效應(yīng),本文以一個(gè)典型的Web應(yīng)用服務(wù)器為研究對(duì)象,搭建了一個(gè)引入內(nèi)存泄漏的軟件老化測(cè)試實(shí)驗(yàn)平臺(tái)。該平臺(tái)由一個(gè)Web服務(wù)器、一個(gè)數(shù)據(jù)庫(kù)服務(wù)器以及一組模擬客戶端組成,具體環(huán)境配置如表1所示。 表1 實(shí)驗(yàn)環(huán)境 服務(wù)器端實(shí)現(xiàn)了一個(gè)符合TPC-W基準(zhǔn)測(cè)試規(guī)范的多層電子商務(wù)網(wǎng)站系統(tǒng)。該系統(tǒng)模擬了一個(gè)在線售書(shū)網(wǎng)站,包括主頁(yè)、暢銷頁(yè)面、新書(shū)頁(yè)面、搜索頁(yè)面、購(gòu)物車和訂單狀態(tài)頁(yè)面等14種不同類型的網(wǎng)頁(yè),并規(guī)定了一系列模擬真實(shí)電子商務(wù)環(huán)境下顧客的訪問(wèn)規(guī)則??蛻舳藙t是依照TPC-W規(guī)范開(kāi)發(fā)的一系列模擬瀏覽器(Emulated Browser,EB) ,以會(huì)話(Session)為單位與服務(wù)器端建立邏輯請(qǐng)求,按照上述規(guī)則對(duì)服務(wù)器進(jìn)行訪問(wèn)。每個(gè)EB能產(chǎn)生三類不同的工作負(fù)載:Browsing,Shopping,Ordering。因Shopping行為出現(xiàn)的次數(shù)介于Browsing和Ordering間,因此本實(shí)驗(yàn)客戶端主要模擬Shopping這種類型,以隨機(jī)生成的概率對(duì)不同頁(yè)面進(jìn)行訪問(wèn)。 3.1.2內(nèi)存泄漏注入 為產(chǎn)生軟件老化現(xiàn)象,修改服務(wù)器端商品查詢請(qǐng)求的TPC-Wsearch_request_servlet頁(yè)面,為其注入內(nèi)存泄漏代碼。因?yàn)镴ava虛擬機(jī)(Java Virtual Machine,JVM)本身存在垃圾回收機(jī)制,當(dāng)內(nèi)存分配空間不足時(shí),所有未被引用的對(duì)象均會(huì)被其回收,而且所占用的內(nèi)存資源也會(huì)同時(shí)被釋放以便新對(duì)象使用。為對(duì)內(nèi)存泄漏現(xiàn)象進(jìn)行模擬,在TPC-W_search_request_servlet中增加一個(gè)HeapLeak類,并保持整個(gè)生命周期對(duì)該類HeapLeak對(duì)象OOMObject的引用,使其在程序運(yùn)行期間不會(huì)被垃圾回收器回收。因Apache自身提供了一定的抗衰機(jī)制,為加速軟件老化,修改JVM堆內(nèi)存的配置(表2),使實(shí)驗(yàn)在受控環(huán)境下進(jìn)行操作。由于Java堆存放的是對(duì)象實(shí)例,所以當(dāng)創(chuàng)建的對(duì)象實(shí)例數(shù)量達(dá)到最大堆容量限制后會(huì)造成堆溢出。 表2 JVM堆內(nèi)存配置描述 運(yùn)行客戶端,每隔1 s采集一次JVM內(nèi)存使用量,實(shí)驗(yàn)持續(xù)14 400 s,共4個(gè)小時(shí),采集到樣本14 400個(gè),每30 s取一次均值,不同注入強(qiáng)度下得到的4組數(shù)據(jù)如圖5所示。 圖5 內(nèi)存數(shù)據(jù)圖 預(yù)測(cè)模型的性能可從主觀和客觀兩個(gè)角度進(jìn)行評(píng)估。主觀上采用圖文形式,通過(guò)人工方式觀察預(yù)測(cè)數(shù)據(jù)與真實(shí)值的擬合程度;客觀上采用科學(xué)的統(tǒng)一標(biāo)準(zhǔn),使用常用的評(píng)價(jià)方法,以數(shù)值形式準(zhǔn)確刻畫(huà)預(yù)測(cè)結(jié)果。本文使用平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Squared Error,RMSE)兩個(gè)評(píng)價(jià)指標(biāo)客觀描述模型的預(yù)測(cè)精度,具體計(jì)算公式如下: (22) (23) 式中:n為Web老化資源參數(shù)的樣本數(shù)目;pt為老化資源參數(shù)的預(yù)測(cè)值;yt為老化資源參數(shù)的真實(shí)值或觀測(cè)值。MAE和RMSE越小,模型預(yù)測(cè)能力越好。 本文將67%的老化數(shù)據(jù)作為訓(xùn)練集,其余數(shù)據(jù)作為測(cè)試集進(jìn)行建模預(yù)測(cè),即使用反映真實(shí)時(shí)間近2.6個(gè)小時(shí)的前9 650個(gè)數(shù)據(jù)對(duì)未來(lái)近1.4個(gè)小時(shí)的4 750個(gè)數(shù)據(jù)進(jìn)行預(yù)測(cè)。在Jetbrains PyCharm集成開(kāi)發(fā)環(huán)境下,使用Python 3.6作為編程語(yǔ)言,anaconda作為解釋器,使用Keras框架搭建并訓(xùn)練老化預(yù)測(cè)模型,并將預(yù)測(cè)結(jié)果用 matplotlib 實(shí)現(xiàn)可視化。其中Keras框架作為開(kāi)源Python包,以TensorFlow或Theano為后端,可靈活快速地搭建深度神經(jīng)網(wǎng)絡(luò)并選取參數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練。訓(xùn)練參數(shù)如表3所示。 表3 SATLSTM老化預(yù)測(cè)模型訓(xùn)練參數(shù) 建立一個(gè)含30個(gè)隱藏神經(jīng)元的SATLSTM老化資源消耗預(yù)測(cè)模型,設(shè)置迭代次數(shù)epoch=20,batch=10,time steps=10,lr=0.001,損失函數(shù)為MSE。由于深度神經(jīng)網(wǎng)絡(luò)含有多個(gè)網(wǎng)絡(luò)層以及大量參數(shù)。為防止模型發(fā)生過(guò)擬合現(xiàn)象,采用Dropout對(duì)數(shù)據(jù)進(jìn)行正則化處理[18],即在每輪權(quán)重更新時(shí)隨機(jī)選擇隱去一些節(jié)點(diǎn),從而限制模型單元之間的協(xié)同更新。該模型使用的Dropout為0.5,即含有Dropout的網(wǎng)絡(luò)層在訓(xùn)練過(guò)程中,會(huì)有50%的節(jié)點(diǎn)被拋棄。為確定該模型最適合的優(yōu)化器參數(shù),采用控制變量的方式分別對(duì)3種激活函數(shù)(Sigmoid,Tanh,Relu)和3種自適應(yīng)優(yōu)化學(xué)習(xí)算法(Adam,RMSprop,Adagrad)進(jìn)行對(duì)比實(shí)驗(yàn)。選30次作為迭代訓(xùn)練周期,實(shí)驗(yàn)結(jié)果如圖6所示。 圖6 不同優(yōu)化算法均方根誤差對(duì)比 由圖6可知,不同的優(yōu)化算法收斂速度和收斂效果不同。對(duì)于3種激活函數(shù)來(lái)說(shuō),相比于Sigmoid函數(shù),Relu和Tanh函數(shù)均方根誤差相對(duì)較小,其中Relu函數(shù)收斂效果更優(yōu)。對(duì)于不同的自適應(yīng)優(yōu)化學(xué)習(xí)算法,在激活函數(shù)相同的前提下,RMSprop學(xué)習(xí)算法均方根誤差最大,Adam和Adagrad學(xué)習(xí)算法效果相對(duì)較好,當(dāng)?shù)?0次時(shí),基本都達(dá)到了較穩(wěn)定的收斂狀態(tài)。其中Adam幾次迭代計(jì)算得到的均方根誤差最小,說(shuō)明對(duì)于SATLSTM老化預(yù)測(cè)模型來(lái)說(shuō),RMSprop算法性能最差,Adam算法性能最好。因此采用Relu函數(shù)作為L(zhǎng)STM層的激活函數(shù),Adam作為自適應(yīng)優(yōu)化學(xué)習(xí)算法對(duì)預(yù)測(cè)模型進(jìn)行訓(xùn)練。 為驗(yàn)證SATLSTM老化預(yù)測(cè)模型的優(yōu)劣,將該模型按照上述參數(shù)對(duì)4組數(shù)據(jù)進(jìn)行實(shí)驗(yàn),預(yù)測(cè)結(jié)果如圖7所示。其中實(shí)線表示真實(shí)值,虛線表示預(yù)測(cè)值。 圖7 SATLSTM預(yù)測(cè)結(jié)果 圖7從整體上反映了SATLSTM的預(yù)測(cè)能力。由圖7可知,各組SATLSTM老化預(yù)測(cè)模型測(cè)試值與真實(shí)值接近,預(yù)測(cè)趨勢(shì)與實(shí)際資源消耗趨勢(shì)基本一致,對(duì)于出現(xiàn)較大波動(dòng)的時(shí)間點(diǎn)也有較好的擬合,說(shuō)明SATLSTM能有效地對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè)。 為進(jìn)一步驗(yàn)證SATLSTM模型的預(yù)測(cè)能力,將其與主流的預(yù)測(cè)算法ARIMA模型以及BP神經(jīng)網(wǎng)絡(luò)進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如圖8、圖9所示。 圖8 ARIMA預(yù)測(cè)結(jié)果 圖9 BP預(yù)測(cè)結(jié)果 由圖8可知,對(duì)于像老化數(shù)據(jù)這種信息豐富且波動(dòng)復(fù)雜的數(shù)據(jù),ARIMA模型在短時(shí)間內(nèi)盡管能較準(zhǔn)確地描述短期資源損耗情況的細(xì)節(jié)波動(dòng)情況,但對(duì)于長(zhǎng)期趨勢(shì)的刻畫(huà)存在滯后性,尤其當(dāng)資源老化現(xiàn)象明顯時(shí),預(yù)估值低于真實(shí)數(shù)據(jù)。由圖9可知,相較于ARIMA模型,使用BP算法建立的模型與真實(shí)數(shù)據(jù)更接近且較準(zhǔn)確地描述了老化的過(guò)程,但可以明顯看出,BP預(yù)測(cè)模型訓(xùn)練集上表現(xiàn)良好,但測(cè)試集的預(yù)測(cè)準(zhǔn)確度不高,說(shuō)明樣本的泛化能力有待提高。 將圖7與圖8、圖9對(duì)比可得,SATLSTM老化預(yù)測(cè)模型整體上表現(xiàn)良好,無(wú)論是趨勢(shì)還是細(xì)節(jié)的刻畫(huà),與真實(shí)數(shù)據(jù)相比,擬合程度更好。 將4組不同預(yù)測(cè)模型的評(píng)價(jià)指標(biāo)進(jìn)行對(duì)比。由表4可知,相比于其他預(yù)測(cè)模型,傳統(tǒng)時(shí)間序列模型ARIMA預(yù)測(cè)精度不高,存在明顯的滯后現(xiàn)象,其評(píng)價(jià)指標(biāo)RMSE和MAE均大于其他模型。BP神經(jīng)網(wǎng)絡(luò)雖然預(yù)測(cè)精度得到了提高,但準(zhǔn)確度低于循環(huán)神經(jīng)網(wǎng)絡(luò),這是因?yàn)楫?dāng)數(shù)據(jù)集規(guī)模大且結(jié)構(gòu)復(fù)雜時(shí),傳統(tǒng)的淺層神經(jīng)網(wǎng)絡(luò)已無(wú)法獲取更多更深層次的規(guī)律。若增加神經(jīng)元的個(gè)數(shù)并加深網(wǎng)絡(luò)結(jié)構(gòu),又面臨網(wǎng)絡(luò)訓(xùn)練難的問(wèn)題,側(cè)面反映了深度學(xué)習(xí)領(lǐng)域中的循環(huán)神經(jīng)網(wǎng)絡(luò)RNN以及LSTM對(duì)于時(shí)序數(shù)據(jù)優(yōu)越的處理能力,其中改進(jìn)后的SATLSTM模型預(yù)測(cè)精度明顯高于其他模型。 表4 不同預(yù)測(cè)算法評(píng)價(jià)指標(biāo)對(duì)比 針對(duì)當(dāng)前老化趨勢(shì)預(yù)測(cè)方法未考慮老化數(shù)據(jù)的依賴關(guān)系以及準(zhǔn)確率低的問(wèn)題,本文以深度學(xué)習(xí)的循環(huán)神經(jīng)網(wǎng)絡(luò)LSTM為基礎(chǔ),結(jié)合老化數(shù)據(jù)突變和多依賴的特點(diǎn),對(duì)Web系統(tǒng)內(nèi)存資源的消耗情況進(jìn)行建模。針對(duì)LSTM網(wǎng)絡(luò)對(duì)遠(yuǎn)距離信息利用率低且前后老化信息對(duì)目標(biāo)輸出影響程度不同的問(wèn)題,在傳統(tǒng)LSTM網(wǎng)絡(luò)的結(jié)構(gòu)上,結(jié)合自注意力機(jī)制,進(jìn)一步提出并建立了一個(gè)基于SATLST的軟件老化趨勢(shì)預(yù)測(cè)模型。實(shí)驗(yàn)結(jié)果表明:SATLSTM預(yù)測(cè)模型與Web服務(wù)器資源老化趨勢(shì)一致,與傳統(tǒng)的預(yù)測(cè)模型ARIMA以及BP神經(jīng)網(wǎng)絡(luò)相比預(yù)測(cè)度高、泛化能力好、誤差較小,能準(zhǔn)確地對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè)。3 實(shí) 驗(yàn)
3.1 實(shí)驗(yàn)環(huán)境
3.2 評(píng)價(jià)指標(biāo)
3.3 參數(shù)設(shè)置與優(yōu)化
3.4 實(shí)驗(yàn)結(jié)果分析
4 結(jié) 語(yǔ)