陳 倩,戴躍偉,劉光杰
(南京信息工程大學電子與信息工程學院, 南京 210044)
隨著互聯網的快速發展,網絡服務的單一節點技術日益復雜,系統規模逐漸擴張,使得網絡服務系統的運維更加困難。面對監控數據量龐大、指標類別繁多的運維場景,智能運維(artificial intelligence for IT operations,AIOps)[1]將人工智能與傳統運維相結合,形成了全新的技術領域。為保證網絡服務系統的安全,需實時監控大量關鍵性能指標(key performance indicator,KPI)以了解各系統組件的運行狀態。其中,關鍵性能指標的異常檢測是智能運維技術的研究熱點,通過各類異常檢測方法對復雜KPI時序數據進行有效的數據挖掘分析,能夠快速發現異常,從而達到規避故障,及時止損的目的。
目前,KPI異常檢測方法主要分為基于統計預測的檢測方法和基于機器學習的檢測方法。基于統計預測的KPI異常檢測方法假設KPI序列服從某種概率分布,為每條KPI選擇合適的模型,根據分布的不同來判斷是否有異常。文獻[2]提出了一種基于自回歸移動平均模型(autoregressive moving average mode,ARIMA)的異常檢測方法,用于檢測網絡服務中可能發生的故障。通過ARIMA模型預測KPI指標的未來趨勢,并對明顯超出實際值的指標進行異常報警。包括上述方法在內的基于統計預測的方法需對KPI預先假設,且無法學習非線性關系,容易產生大量的誤報。
隨著課程改革的深入,我六年的小學語文已經“畢業”,2008年汶川大地震后的教育重建,讓我更加關注“人”,從發展兒童的角度,將閱讀的主要精力轉向教育學、心理學特別是腦科學等領域,下面我僅舉閱讀教育學的例子。
基于機器學習的KPI異常檢測方法又分為有監督機器學習方法和無監督機器學習方法。通過有監督的機器學習方法在一定程度上能夠提升對KPI異常檢測的建模階次。文獻[3]提出了一種自動異常檢測框架EGADS,該框架使用多個傳統異常檢測模型對KPI進行特征提取并使用標簽訓練異常分類器判斷異常,取得了較為理想的效果。文獻[4]提出了一種基于隨機森林算法的異常檢測系統Opprentice,用工具對KPI進行標注并使用不同的檢測器衡量指標的異常程度。包括上述方法在內的有監督學習方法,在模型適應性方面仍存在不足,需對具體場景針對性訓練,不可避免的需要高成本的人工標注來構造訓練數據集。基于無監督的機器學習方法可以在沒有人工標注的數據上進行模型訓練。文獻[5]提出了一種基于時間序列聚類的方法,首先提取每類KPI序列的基線,采用SBD算法作為距離度量,并根據基線的相似性利用DBSCAN算法將KPI聚類,接著為每個簇訓練異常檢測模型。文獻[6]使用PCA(principal components analysis)對序列進行特征提取,并基于One-Class SVM(support vector machine)算法進行聚類分析和無監督的訓練,實現了KPI序列的異常檢測。基于機器學習的聚類方法能夠對較小的KPI訓練數據集進行較為快速的收斂,但是所訓練的模型保守型較強,對于數量龐大的KPI訓練集無法保證聚類收斂,難以取得較好的檢測結果。
近年來,深度學習在KPI異常檢測領域得到了廣泛應用。作為深度生成模型之一的變分自編碼器(variational auto-encoder,VAE)是當前深度生成模型極具競爭力的研究方向。An等[7]在2015年證明了變分自編碼器在無監督異常檢測中的可行性,之后變分自編碼器在網絡入侵檢測等領域得到了成功應用。文獻[8]提出了一種基于變分自編碼器的無監督異常檢測模型donut,編碼器提取KPI序列中有代表性的特征,解碼器根據特征重構序列,計算重構序列與原始序列的誤差判斷序列中的異常,該模型充分利用了深度生成模型對KPI序列深層次特征的表征能力。但是KPI作為一種時間序列數據,僅用變分自編碼器進行異常檢測無法較好體現時間相關的隱含特征。
針對現有方法對KPI檢測不精確,難以提取數據中的有效特征,且未充分考慮KPI的時間相關性的問題,提出了一種基于變分自編碼器和門控循環單元網絡的KPI異常檢測方法。利用變分自編碼器能夠提取KPI深層次特征的能力結合門控循環單元網絡復雜度小、學習能力快和能夠更好的處理時序數據的優勢,實現了對運維中關鍵性能指標的精確檢測。
1.1.1KPI基本概念
配電網自動化系統提升可感知性主要指充分利用配電網自動化技術運用功能設計過程中,保障自動化系統在運行過程中操作便利,并可提供精確的供電信息,系統能較快地被感知及維護,及時規避應用中的隱藏性漏洞,進而全面增強自動化系統的應用效率。
為確保服務質量和可靠性,需持續監控KPI以了解服務器或應用程序的運行狀態。KPI是一種由(時間戳,值)鍵值對組成的時間序列,形式上可以表示為X={x1,x2,…,xn},xi是對應于時間戳T={1,2,…,n}中第i個時間戳的值。KPI包括頁面訪問流量、在線用戶數、設備內存利用率和網頁響應時間等,可以從簡單網絡管理協議(SNMP)、系統日志、網絡跟蹤、網絡訪問日志和其他數據源獲得。與傳統的時間序列相比,KPI包含的信息量更大,可以反映更多應用與服務的變化。
1.1.2KPI異常檢測基本概念
隨著公司規模的擴大,對技術人才、硬件設備、項目費用及周轉資金的需求會越來越高,在這方面會有較大的投資。
對于八達嶺老虎致害案件,我將從中華人民共和國侵權責任法角度來對于動物園在此案件中的責任判定問題進行論述。
Eqφ(z|x)[logpθ(x|z)]-
DKL[qφ(z|x)‖pθ(z)]=
以VAE為基礎設計了一個VAE-GRU的KPI異常檢測模型,引入變分自編碼器和門控循環單元網絡,變分自編碼器充分考慮到KPI序列的隱藏特征,門控循環單元網絡利用提取到的特征進行時序數據的預測。該模型使深度生成模型較強的表征學習能力和門控循環單元網絡的時序建模能力相結合,把KPI異常檢測問題轉化為一個無監督學習問題。本文模型的整體框架如圖1所示。

圖1 基于VAE-GRU的異常檢測方法架構
重置門:rt=sigmoid(Wr·[ht-1,xt])

圖2 KPI異常檢測流程框圖
為了避免KPI指標數據中不同值之間的明顯差異對實驗結果造成影響,訓練之前應該先對原始數據進行標準化處理,本文采用z-score標準化方法[9]處理數據,計算方法為:
(1)
L(θ,φ;x)
全局Moran's I用來檢驗觀測對象在空間是否存在集聚現象,但不能看出區域間是如何集聚的,因此,采用局域空間相關指數來判斷局部范圍內分塊集聚的具體情況。公式如下:
由于VAE模型不是一個序列模型,如果直接用VAE模型在原始數據點上進行訓練來學習內部表示的話,每個數據樣本將會被視為獨立的,這種方法忽略了時間序列數據中固有的重要時間信息。因此我們提出采用滑動窗口[10]的形式訓練數據,將時間相關性引入到模型中。在關鍵績效指標上應用長度為l的滑動窗口,例如wt=[xt-l+1,…,xt]表示在t時刻結束的窗口,將整個時間序列分割成連續的短序列,此時KPI指標序列可表示為Wt=[wt-(m-1)×l,wt-(m-2)×l,…,wt],m表示用于GRU預測的不重疊窗口個數。
這場討論受到了租界當局、軍警和衛道士們的圍攻,《民國日報·覺悟》的主編邵力子先生受到處罰,魏金枝寄去的文章忽然不登出來了,他寫信去追問,邵力子回信中表示很尷尬,勸他不要再討論這個問題,免得他受罰。這場戀愛的爭論就此終結。魏金枝很不滿意,就寫了一篇新詩《大風歌》,“想將一股大風,把一切阻礙人世間的障礙一氣吹得精光。”可惜這詩篇目前還沒有找到。
例如,在晶狀體移植手術中,通常采取PMMA作為移植材料,但這一人工晶狀體若與眼角膜上皮細胞接觸,將造成角膜的永久性損傷。而通過低溫等離子技術中的沉積方法,能夠將親水性的單體如N-乙烯基吡咯烷酮等沉積到PMMA 的表面,從而降低角膜細胞的損傷。通過動物實驗發現,利用低溫等離子沉積技術處理后的PMMA進行晶狀體移植,最低可以將復合表面的細胞損傷控制在10%以下。
變分自編碼器是一種重要的生成模型,通過將深度學習和概率統計技術緊密的結合,能夠提取出KPI指標數據更深層次的特征。變分自編碼器主要由編碼器、解碼器以及隱藏層組成。其基本結構如圖3所示。

圖3 變分自編碼器基本結構

死體可燃物含水率(Y)與降水(X1)、氣溫(X2)、相對濕度(X3)、連旱天數(X4)、蒸發量(X6)之間的數學模型為:
(2)
根據Jensen不等式[12],式(2)可改寫為:
早在中本聰提出比特幣之前,BFT算法已經存在,1999年LISKOU B等提出了實用拜占庭容錯算法。該算法達成共識需要“請求、預準備、準備、確認、回應”5個步驟。其中“預準備、準備、確認”3個步驟用于保障一致性。該算法雖然擁有1/3的容錯性,但并不能防范女巫攻擊,因此不能用于公有鏈類型貨幣中。實用拜占庭容錯算法(PBFT)是傳統一致性算法的改進,算法十分高效,在不需要貨幣體系的許可鏈或者私有鏈中較為常用。目前,IBM創建的超級賬本就是使用了該算法作為共識機制。

KPI異常檢測是指通過分析KPI曲線,發現其中突然出現的抖動、下降、尖峰等不遵循正常模式的數據,若出現異常通常表明互聯網服務的軟硬件中存在潛在故障,如服務器故障、訪問用戶急劇減少、訪問延遲增大等。及時準確地發現KPI中的異常,可為后面的故障分析和修復節省時間,避免帶來更大的損失,保證了互聯網公司能夠為用戶提供高效可靠的網絡服務。
水分管理:水分管理的關鍵時期包括新梢迅速抽長期和果實膨大期。貴州季節性干旱較嚴重,注意及時澆水。在梅雨季或降雨量大的時候,注意及時排水。
式中:μ為x的均值;σ為x的標準差;x是原始數據;x′為標準化后的值。
使用經VAE產生的前m-1個低維嵌入作為GRU的輸入來訓練模型,經GRU預測得到后m-1個嵌入:
(3)
其中L(θ,φ;x)為對數似然函數logpθ(x)的變分下界(evidence lower bound,ELBO),若要對數似然函數最大,就要最大化變分下界。因此變分自編碼器的優化目標就是最大化變分下界函數L(θ,φ;x),定義為:
L(θ,φ;x)=Eqφ(z|x)logpθ(x|z)-
DKL[qφ(z|x)‖pθ(z)]
(4)
VAE經編碼得到輸入數據概率分布對應的均值μ和標準差σ,由于直接采樣法對μ和σ均不可導,使得用梯度下降的方法更新權重難以實現,所以引入重參數技巧,VAE在編碼網絡上增加了高斯噪聲進行約束,使生成的隱變量z服從高斯分布,z的表達式為:
z=μ+ε·σ
(5)
式中ε是符合標準正態分布的隨機數。
由于異常檢測要求實時性,需要進行異常檢測的運維數據數量龐大種類較多,大多數時序數據都是單變量或者維度低,所以特征的構建就顯得格外重要。傳統的特征提取方法如PCA、局部線性嵌入算法(locally linear embedding,LLE)、多維標度分析(multidimensional scaling,MDS)等存在表征能力低、計算量大、對輸入數據有局限性等問題。自編碼器(auto-encoder,AE)是深度學習中的一種重要模型,主要用于對數據進行非線性降維特征提取。變分自編碼器是AE的變體,通過變分推理學習輸入數據的分布特征,具有較強的特征提取能力,適合運維數據異常檢測需求。

重癥肌無力患者免疫治療前后AIRE、Tfr/Tfh比值與病情的相關性 ………… 王圣元,等(8):933
門控循環單元(gated recurrent unit,GRU)[13]作為循環神經網絡的(recurrent neural network,RNN)的一種,在設備故障診斷[14]、目標識別[15]等多個領域廣泛應用。GRU結構如圖4所示,GRU和LSTM都更好的保留了時間跨度較長的序列信息,避免了長期依賴問題。但是和LSTM相比,GRU結構更加簡單,相比之下更容易訓練數據,很大程度上能夠提高模型訓練速度。GRU引入更新門zt和重置門rt替代LSTM中的輸入門、遺忘門和輸出門。重置門用來控制忽略前一時刻的狀態信息程度,值越小說明忽略的信息越多,更新門用來決定前一時刻狀態信息有多少將保留到當前狀態中,值越大說明前一時刻保留的信息越多。

圖4 門控循環單元基本結構
GRU的計算步驟如下:
步驟1重置門和更新門的輸入與當前時刻和前一時刻的隱藏狀態有關,用sigmoid函數計算輸出,表示為:
更新門:zt=sigmoid(Wz·[ht-1,xt])
(6)
圖2為KPI異常檢測流程。先對KPI數據集進行標準化,再利用滑動窗口將標準化后的KPI數據分割成連續的短窗口序列,將短窗口序列輸入變分自編碼器模型,編碼器對KPI數據進行特征提取,接著建立門控循環單元網絡對提取到的特征進行預測,最后輸入解碼器得到重構窗口序列,將重構窗口序列與原始窗口序列對比,計算出的重構誤差即為異常檢測分數。如果重構誤差大于給定閾值,則輸入序列為異常序列,反之,輸入序列為正常序列。
(7)
其中,W為權重參數。
步驟2將當前時刻重置門的輸出和前一時刻隱藏狀態相乘,重置門中元素的值接近1,則保留前一時刻狀態信息,若接近0,則忽略前一時刻信息,使用tanh激活函數計算候選隱藏狀態:
(8)

(9)
GRU作為一種常見的預測模型,可以長時間保存序列信息,且結構簡單,參數較少,訓練速度比LSTM更快,更不容易產生過擬合。考慮到KPI數據的特性,相比其他神經網絡,GRU更適合用來預測KPI數據。
這些豐富的比賽不僅能鍛煉學生的膽量,而且能提高學生的學習興趣,在玩樂中提高朗讀水平,在閱讀中加大識字量,提高書寫質量。
(10)
VAE模型對經過GRU預測得到的后m-1個窗口數據進行解碼,得到重構序列,如式(11)所示。通過對比重構序列和原始序列計算重構誤差,即異常檢測分數來標記KPI指標數據的異常行為,異常檢測分數f的定義如式(12)所示:
(11)
(12)
設定一個閾值d,當異常檢測分數f大于閾值d時,將當前時間t判定為異常。為避免閾值選擇問題,列舉所有可能的閾值,獲得相應的綜合評價指標F1分數,并使用最佳F1分數作為度量,表明在給定最佳閾值情況下可能的最佳性能。在實際操作中,運維人員可以根據知識和經驗來決定閾值。
實驗中使用2個來自異常檢測基準數據(NAB)的帶有異常標記的公開數據集,數據均為有序且帶時間戳的單值指標。實驗數據集分別是亞馬遜網絡服務的CPU使用率和亞馬遜東海岸數據中心服務器的CPU使用率,在這些數據集上已經成功進行了一些異常檢測的研究[16]。在Windows 10操作系統上采用Python 3.6.11軟件,整個框架使用Tensorflow實現。由于滑動窗口過短不利于對KPI序列的特征提取,過長可能會造成數據冗余,故分別取值24、48、144,發現當l=48時,準確率最高。用于GRU預測的窗口數m設置為12。VAE和GRU的Batch Size 都設置為32,學習率分別設置為0.000 4和0.000 2,分別選取Relu和Tanh作為激活函數。由于Adam優化器在訓練過程中收斂速度快、調參容易,所以使用Adam優化器更新模型參數。為了實現無監督的訓練模型,將KPI序列劃分為訓練集和測試集,使用不含異常的連續序列作為訓練集,其余含有異常的序列作為測試集,訓練集和測試集的劃分情況如圖 5所示。亞馬遜網絡服務的CPU使用率共18 050個樣本點,訓練集為正常序列,經劃分,訓練集共有15 500個樣本,剩余含有異常的2 550個樣本作為測試集。亞馬遜東海岸數據中心服務器的CPU使用率共4 032個樣本,劃分后訓練集共有2 000個樣本,剩余含有異常的2 032個樣本作為測試集。

圖5 訓練集和測試集的劃分情況
異常檢測器檢測異常的能力通常由準確率(Accuracy)、精度(Precision)、召回率(Recall)和F1值這4個直觀的指標來評估,F1值為精度和召回率的調和平均數,其計算式分別見式(13)—(16)。其中TP(True Positive)表示異常檢測模型正確檢測出的異常數量,FP(False Positive)表示正常數據被檢測模型判定為異常的數量,FN(False Negative)表示異常數據被檢測模型判定為正常的數量,TN(True Negative)表示異常檢測模型正確檢測出的正常數據數量。
(13)
(14)
(15)
(16)
3.3.1性能比較結果
使用訓練集對變分自編碼和門控循環單元訓練之后,分別用2個數據的測試集對VAE-GRU異常檢測模型進行評估。為驗證異常檢測模型的實用性和有效性,將新模型同單獨使用VAE模型[8]和GRU模型[18]進行對比。不同方法對亞馬遜網絡服務的CPU使用率的性能指標如表1所示,亞馬遜東海岸數據中心服務器中CPU使用率的性能指標如表2所示。

表1 不同方法對亞馬遜網絡服務的CPU使用率的性能指標

表2 不同方法對亞馬遜東海岸數據中心服務器中的CPU使用率的性能指標
表1和表2表明,相比提出的異常檢測方法,單獨使用VAE模型和GRU模型檢測異常時,2個模型在準確率、精度、召回率、F1值都有所欠缺。VAE模型在2個數據集上都有著很好的召回率,但是精確度不高,在亞馬遜網絡服務的CPU使用率上的精度為0.686,在亞馬遜東海岸數據中心服務器中的CPU使用率上精度為0.554,表明VAE模型在對2個數據集檢測的過程中將很多正常數據誤判為異常數據。GRU模型在2個數據集上都有很高的精度,然而召回率較低,在亞馬遜網絡服務的CPU使用率上的召回率為0.429,在亞馬遜東海岸數據中心服務器中的CPU使用率上的召回率為0.421,表明GRU模型在檢測過程中遺漏了很多異常。而新提出的VAE-GRU模型在2個數據集上都有最高的召回率,分別達到了0.971和0.954,也獲得了較好的精度。F1值最高的也是新模型,說明其整體效果比單獨使用VAE模型和GRU模型好。
3.3.2異常檢測結果的可視化對比
本文中提出的異常檢測模型、VAE模型和GRU模型對亞馬遜網絡服務的CPU使用率的異常檢測可視化結果如圖6所示。異常檢測模型、VAE模型和GRU模型對亞馬遜東海岸數據中心服務器中的CPU使用率的異常檢測結果如圖7所示。藍線代表原始KPI序列,紅色虛線代表真實異常,綠色短線代表檢測到的異常,淺藍色窗口代表檢測到的異常窗口。
我國獸醫管理體制存在一些亟待解決的問題,隨著獸醫管理體制改革的推進,使我國在重大動物疫病的防控能力得到明顯加強。農業部將加強與有關部門的溝通協調,加大對地方的督促檢查力度,爭取盡早把獸醫管理體制改革工作落實到位。并提出“建設現代農業基地,大力發展現代畜牧業”,加快現代畜牧業發展,促進社會主義新農村建設的口號。此文筆者結合自己工作實踐,來淺談一下我國獸醫管理體制改革方面的問題!

圖6 3種模型的異常檢測結果

圖7 3種模型的異常檢測效果
如圖6(b)和圖7(b)所示,基于VAE模型對KPI序列進行異常檢測時,能夠檢測到所有異常點,因此VAE模型的召回率很高;模型檢測出KPI序列中大量的假陽性,這是因為VAE不是一個序列模型,無法處理與時間相關的異常,所以單獨使用VAE模型進行異常檢測往往會忽略時間序列中固有的重要時間信息,限制了模型的檢測效果,導致精確度不高。如圖6(c)和圖7(c)所示,使用GRU模型進行異常檢測時,模型檢測出少量的假陽性,因此GRU模型的精確度較高,但模型遺漏了KPI序列中真實的異常,這是因為單獨使用GRU模型進行異常檢測時,由于缺乏KPI序列更深層次的有效特征導致檢測效果不佳。如圖6(a)和圖7(a)所示,新提出的VAE-GRU異常檢測模型相比VAE模型和GRU模型在2個數據集上都有較好的表現,VAE模型能夠自動學習原始數據中較好的特征,GRU作為時間序列預測模型可使預測誤差盡可能小,2種方法結合使得本文模型的整體性能優于單獨使用VAE模型和GRU模型。
提出了一種基于變分自編碼器結合門控循環單元的KPI異常檢測方法。與以往的KPI異常檢測算法相比,不僅考慮時間序列中的時間相關性,而且有效挖掘了數據更深層次的特征。研究數據來自同一類關鍵性能指標,主要集中于單個關鍵性能指標的異常檢測,但實際運維場景中,用于多種關鍵性能指標的異常檢測器更有用,因此下一步將在本研究基礎之上對多種關鍵性能指標展開研究。