国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學(xué)習(xí)的無監(jiān)督KPI異常檢測

2020-12-02 05:12:44張圣林林瀟霏孫永謙張玉志裴丹
關(guān)鍵詞:機(jī)器監(jiān)督算法

張圣林,林瀟霏,孫永謙*,張玉志,裴丹

1. 南開大學(xué),軟件學(xué)院,天津 300350

2. 清華大學(xué),計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084

引 言

隨著互聯(lián)網(wǎng)的高速發(fā)展與普及,基于互聯(lián)網(wǎng)的應(yīng)用服務(wù)已經(jīng)深入到人類社會生產(chǎn)生活的各個方面,包括通信、資訊、娛樂、學(xué)習(xí)、本地生活、金融、購物、出行、醫(yī)療、教育等。智能運(yùn)維是保證互聯(lián)網(wǎng)服務(wù)的用戶體驗(yàn)、性能、穩(wěn)定和安全的重要技術(shù)體系。其中,關(guān)鍵性能指標(biāo)(Key Performance Indicator, KPI)異常檢測是互聯(lián)網(wǎng)智能運(yùn)維的一個核心技術(shù)。大部分智能運(yùn)維的關(guān)鍵技術(shù),包括故障根因分析、異常定位、變更評估、異常事件關(guān)聯(lián)關(guān)系挖掘、異常報警聚合、快速止損、故障預(yù)測、熱點(diǎn)預(yù)測等,高度依賴 KPI 異常檢測的結(jié)果。

目前,學(xué)術(shù)界已經(jīng)提出一系列KPI 異常檢測方法。這些方法包括基于統(tǒng)計(jì)概率的方法、基于有監(jiān)督機(jī)器學(xué)習(xí)的方法、基于無監(jiān)督機(jī)器學(xué)習(xí)的方法。由于基于統(tǒng)計(jì)概率的KPI 異常檢測方法需要為每一個KPI 序列調(diào)整最優(yōu)參數(shù),耗費(fèi)大量人力資源,因此逐漸退出歷史舞臺。基于有監(jiān)督機(jī)器學(xué)習(xí)的KPI異常檢測方法需要大量的異常標(biāo)注來訓(xùn)練模型,同樣耗費(fèi)大量人力資源,因此難以應(yīng)用于大規(guī)模互聯(lián)網(wǎng)服務(wù)場景?;跓o監(jiān)督機(jī)器學(xué)習(xí)的KPI 異常檢測算法,既不需要逐個KPI 序列調(diào)參,也不需要標(biāo)注異常數(shù)據(jù),已經(jīng)成為KPI 異常檢測的未來發(fā)展趨勢。此外,由于深度生成模型能夠準(zhǔn)確捕獲復(fù)雜的KPI數(shù)據(jù)特征,因此近年來受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。

本文重點(diǎn)介紹三種基于深度生成模型的無監(jiān)督KPI 異常檢測算法——Donut,Bagel,Buzz,并在理論和實(shí)驗(yàn)兩個方面分析它們的性能。

1 背景

1.1 KPI 基本概念

為了保證向千萬級甚至上億級用戶提供可靠、高效的服務(wù),互聯(lián)網(wǎng)服務(wù)的運(yùn)維人員通常會持續(xù)地監(jiān)測服務(wù)和底層機(jī)器的KPI。一個典型的 KPI 案例是某服務(wù)在單位時間內(nèi)被訪問的次數(shù)—— PV(Page Views)。PV 會直接影響Web 服務(wù)供應(yīng)商的廣告收益和市場份額[1]。其它典型的KPI 類型還包括單位時間交易量(應(yīng)用于銀行、互聯(lián)網(wǎng)金融、證券、電商、團(tuán)購、移動出行等行業(yè))、當(dāng)前在線用戶數(shù)(應(yīng)用于電商、網(wǎng)絡(luò)游戲、無線接入網(wǎng)絡(luò),移動出行應(yīng)用等)、Web 主頁首屏?xí)r間、移動應(yīng)用加載時間、軟件報錯數(shù)、服務(wù)器CPU 使用率、容器內(nèi)存使用率、網(wǎng)絡(luò)吞吐率等。

根據(jù)服務(wù)類型和數(shù)據(jù)特征,可以將KPI 分成兩種類型:

(1)周期性服務(wù)KPI

服務(wù)和業(yè)務(wù)層面的KPI,如網(wǎng)絡(luò)吞吐量、頁面瀏覽量、在線用戶數(shù)量等,往往具有周期性,且其噪聲服從高斯分布。

(2)非周期性機(jī)器KPI

服務(wù)底層機(jī)器的KPI,如服務(wù)器每秒處理的I/O請求數(shù)量、容器內(nèi)存使用率等,往往不具有周期性。它們的噪聲不服從高斯分布,雖然短時間內(nèi)劇烈抖動,但是長時間內(nèi)又有一定的趨勢性。因此,這類KPI 的分布十分復(fù)雜,較難建模。

1.2 KPI 異常基本概念

當(dāng) KPI 呈現(xiàn)出異常(如突增、突降、抖動)時,往往意味著與其相關(guān)的應(yīng)用可能發(fā)生了故障[2-5],如網(wǎng)絡(luò)故障、服務(wù)器故障、配置錯誤、缺陷版本上線、網(wǎng)絡(luò)過載、服務(wù)器過載、外部攻擊等。圖1展示了某搜索引擎一周內(nèi)的PV 數(shù)據(jù),其中標(biāo)紅圈標(biāo)識的兩個部分為異常。

對于周期性服務(wù)KPI,KPI 異常指的是KPI 數(shù)據(jù)不遵循周期性模式,即KPI 數(shù)值的大小發(fā)生了明顯變化使得數(shù)據(jù)整體不再呈現(xiàn)周期性。對于非周期性機(jī)器KPI,KPI 異常指的是KPI 數(shù)值的大小、變化等特征發(fā)生了明顯改變。

圖1 KPI 異常示例:某搜索引擎PV 發(fā)生異常Fig.1 An example of anomalous KPI: the PV of a search engine become anomalous

1.3 KPI 異常檢測基本概念

為了保障互聯(lián)網(wǎng)公司能提供可用、高效的服務(wù),公司必須實(shí)時監(jiān)測這些服務(wù)的KPI,及時發(fā)現(xiàn)KPI中的異常,為后續(xù)的故障診斷和修復(fù)贏得寶貴的時間,盡可能地減少故障帶來的損失。同時,那些持續(xù)時間較短的KPI 抖動也必須被準(zhǔn)確檢測出來,從而快速找出導(dǎo)致抖動的根本原因,消除小抖動累積成劇烈變化的隱患,避免發(fā)生更大的損失。

自動KPI 異常檢測指的是異常檢測算法根據(jù)歷史數(shù)據(jù)判斷實(shí)時數(shù)據(jù)的異常分?jǐn)?shù),并基于閾值判斷該異常分?jǐn)?shù)是否為異常[6]。異常檢測問題的關(guān)鍵在于正確地捕獲“正常數(shù)據(jù)的模式”,并通過觀測實(shí)時數(shù)據(jù)與正常數(shù)據(jù)之間的差異程度判斷KPI 是否發(fā)生了異常。如圖2所示,這些異常檢測算法一般包括以下兩個步驟:

(1)對于單個KPI 數(shù)據(jù)點(diǎn)或者一段連續(xù)KPI 數(shù)據(jù),使用異常檢測算法計(jì)算異常分?jǐn)?shù),該分?jǐn)?shù)表征其異常程度。

(2)當(dāng)異常分?jǐn)?shù)大于某個閾值時,將其標(biāo)注為異常。

自動KPI 異常檢測不僅提高了異常檢測的效率,而且減輕了運(yùn)維人員的工作量,對于保障大型互聯(lián)網(wǎng)服務(wù)的服務(wù)質(zhì)量具有重要意義。

圖2 異常檢測算法步驟Fig.2 Anomaly detection algorithm steps

2 相關(guān)工作

本節(jié)簡要回顧了KPI 異常檢測的三個主要方向:基于統(tǒng)計(jì)概率的方法,基于有監(jiān)督機(jī)器學(xué)習(xí)的方法,基于無監(jiān)督機(jī)器學(xué)習(xí)的方法。

在過去的幾十年中,研究人員將許多傳統(tǒng)的統(tǒng)計(jì)概率方法用于KPI 異常檢測[5,7-24]。這些方法對KPI 進(jìn)行了一些簡單的假設(shè),因此運(yùn)維人員必須為每條KPI 選擇合適的算法,并為每個KPI 序列調(diào)整最優(yōu)參數(shù)。即便如此,這些異常檢測模型的性能普遍較差。例如,文獻(xiàn)[2]使用WoW(周-周)方法檢測搜索響應(yīng)時間中的異常,但KPI 的周期性可能不僅存在以周為單位的周期性,而且存在以天為單位的周期性、假期周期性等。此外,即使將這些統(tǒng)計(jì)概率方法進(jìn)行簡單集成,如多數(shù)表決[17]、歸一化[25]等,并不能取得好的異常檢測性能[5]。

為了自動組合上述異常檢測算法,一些研究如EDGAS[12]、Opprentice[5]等使用有監(jiān)督機(jī)器學(xué)習(xí)方法進(jìn)行異常檢測。這些方法的原理簡單明了:由于簡單組合統(tǒng)計(jì)概率方法是不夠的,因此可以使用歷史數(shù)據(jù)學(xué)習(xí)統(tǒng)計(jì)概率方法的最佳組合。這些方法首先使用統(tǒng)計(jì)概率方法計(jì)算特征,然后使用用戶反饋(通常是異常標(biāo)注)訓(xùn)練有監(jiān)督機(jī)器學(xué)習(xí)分類器(例如隨機(jī)森林)。這些監(jiān)督方法具有優(yōu)異的性能。例如,實(shí)驗(yàn)表明Opprentice 優(yōu)于所有傳統(tǒng)的統(tǒng)計(jì)概率方法。圖3展示了 Opprentice 利用有監(jiān)督機(jī)器學(xué)習(xí)進(jìn)行KPI異常檢測的主要思想:首先通過歷史數(shù)據(jù)產(chǎn)生訓(xùn)練集以訓(xùn)練分類模型,同時使用一系列基于統(tǒng)計(jì)概率的異常檢測方法檢測數(shù)據(jù)異常并得到各個方法計(jì)算的異常程度,然后將異常標(biāo)注和異常程度數(shù)據(jù)組成訓(xùn)練集。機(jī)器學(xué)習(xí)算法據(jù)此在特征空間中構(gòu)建分類模型。因此,這些分類模型可以檢測實(shí)時數(shù)據(jù)中的異常。例如,圖3中的“?”所標(biāo)示的數(shù)據(jù)會被判定為異常。

但是,有監(jiān)督機(jī)器學(xué)習(xí)算法過度依賴異常標(biāo)注,而獲得足夠多的異常標(biāo)注往往耗費(fèi)大量的人力物力資源。此外,由于這些方法集成了多種基于統(tǒng)計(jì)概率的算法,因此其訓(xùn)練和檢測開銷很大。所以,這些方法難以應(yīng)用于大規(guī)模互聯(lián)網(wǎng)服務(wù)。

基于無監(jiān)督機(jī)器學(xué)習(xí)的異常檢測方法(不局限于KPI 異常檢測),如one-class SVM[14,16],GMM[19],VAE[6,25-26]和 VRNN[14]等,使用機(jī)器學(xué)習(xí)方法學(xué)習(xí)數(shù)據(jù)的正常模式,并判定未遵循正常模式的點(diǎn)為異常。這些方法可以分為兩種類型:基于無監(jiān)督分類器的算法和基于深度生成模

型的算法。基于無監(jiān)督分類器的算法或者直接把KPI 數(shù)據(jù)以滑動窗口形式輸入到無監(jiān)督分類器中(outlier detector),或者通過傳統(tǒng)的統(tǒng)計(jì)概率方法提取KPI 數(shù)據(jù)的特征,然后將特征輸入到無監(jiān)督分類器進(jìn)行分類。常用的無監(jiān)督分類器有one-class SVM[14,16], isolation forest[30]等。由于深度生成模型能夠更加充分地捕獲KPI 數(shù)據(jù)的復(fù)雜特征,因此基于深度生成模型的KPI 異常檢測方法具有更高的準(zhǔn)確性。所以,本文重點(diǎn)介紹三種基于深度生成模型的無監(jiān)督KPI 異常檢測模型——Donut[6]、Bagel[27]和Buzz[28]。

3 基于深度生成模型的無監(jiān)督KPI 異常檢測

3.1 基于深度生成模型的KPI 異常檢測方法概述

圖3 Opprentice 設(shè)計(jì)框架Fig.3 The Framework of Opprentice

深度生成模型指的是使用深度學(xué)習(xí)技術(shù)的生成模型,它通常包括多個神經(jīng)網(wǎng)絡(luò)。例如,在生成對抗網(wǎng)絡(luò)(GAN[31])中有兩個子網(wǎng)絡(luò):生成網(wǎng)絡(luò)和分類網(wǎng)絡(luò)。相反,對于深度貝葉斯網(wǎng)絡(luò)(Deep Bayesian network)和深度馬爾科夫隨機(jī)場(Deep Markov random field)等深度概率模型[32],單一的神經(jīng)網(wǎng)絡(luò)即可導(dǎo)出隨機(jī)變量之間的概率分布并構(gòu)建整個概率模型。

Donut 是第一個將深度生成模型應(yīng)用于KPI 異常檢測的無監(jiān)督模型。它是在 VAE[29](Variational Auto-encoder)的基礎(chǔ)上實(shí)現(xiàn)的。Donut 在 VAE 基礎(chǔ)上提出了M-ELBO、MCMC 迭代和缺失值填零等創(chuàng)新點(diǎn),在周期性 KPI 上具有優(yōu)異的性能。由于Donut將時間序列視為滑動窗口,不處理時間信息,所以當(dāng)異常檢測依賴時間信息時 Donut 的性能欠佳。為了解決這一問題,學(xué)者們提出了另一個無監(jiān)督深度生成模型——Bagel 以彌補(bǔ) Donut 在時間信息處理上的缺陷。Bagel 同樣也是針對周期性 KPI 的無監(jiān)督異常檢測方法。它使用了 CVAE[33-34](Conditional Variational Auto-Encoder)作為基礎(chǔ)模型,引入了時間信息,因此在部分依賴時間信息的KPI 異常檢測上取得了比 Donut 更好的性能。為了檢測非周期性機(jī)器 KPI 中的異常,學(xué)者們提出了第三種基于深度生成模型的 KPI 異常檢測方法——Buzz。Buzz 基于分區(qū)的思想,將 WGAN[35]和VAE 進(jìn)行了結(jié)合。它通過生成對抗訓(xùn)練優(yōu)化了一個變種 VAE 的似然證據(jù)下界。

3.2 Donut

Donut 是首個采用 VAE 進(jìn)行 KPI 異常檢測的模型,可以處理周期性服務(wù)KPI。VAE 是最簡單的深度貝葉斯網(wǎng)絡(luò)之一,主要刻畫了觀測變量(observed variable)和隱變量(latent variable)之間的關(guān)系,其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。

為了在 VAE 中處理 KPI 時序數(shù)據(jù),Donut 采用滑動窗口[2(1]sliding window)對 KPI 序列進(jìn)行預(yù)處理:對于每一個時刻 t,子序列被當(dāng)做該時刻數(shù)據(jù)的向量。

圖4 Donut 的網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 The network structure of Donut

隱變量z被指定了一個先驗(yàn)分布(prior,通常是多維高斯分布N(0,1))。在z的基礎(chǔ)上,x被假設(shè)為服從概率分布;這一概率分布是通過一個神經(jīng)網(wǎng)絡(luò)(其可學(xué)習(xí)參數(shù)為)導(dǎo)出的,網(wǎng)絡(luò)的具體形式和實(shí)際任務(wù)相關(guān)。的后驗(yàn)分布沒有解析解,但是在訓(xùn)練和測試中都是必須的,因此變分推理方法在模型中被采用:使用另一個獨(dú)立的神經(jīng)網(wǎng)絡(luò),擬合這個潛在的后驗(yàn)概率,這個近似的后驗(yàn)概率被記作。一般來說,可以被假設(shè)為服從高斯分布,其中和分別表示分布的期望和方差,通過得到。

當(dāng)然,由于 VAE 模型結(jié)構(gòu)的因素,每個維的W 滑動窗口會產(chǎn)生所有 W 個重建概率,但每個窗口只取最后一個時刻的重建概率,其他時刻的重建概率均被忽略。

Donut 論文中所研究的 KPI 數(shù)據(jù)是等時間間隔的監(jiān)控?cái)?shù)據(jù)。在真實(shí)的場景中,會不可避免地在采集或存儲的過程中丟失部分?jǐn)?shù)據(jù)——這種點(diǎn)稱為“缺失點(diǎn)”。由于滑動窗口要求在每個時刻t 得到一個定長的窗口,即缺失點(diǎn)必須被填補(bǔ)一個數(shù)值以構(gòu)成完整的窗口。Donut 在缺失點(diǎn)處填補(bǔ)了0,而非通過一些現(xiàn)有的算法[16]填補(bǔ)這些缺失點(diǎn),這是因?yàn)?VAE本身就是一個生成模型,它自身就能產(chǎn)生數(shù)據(jù)、填補(bǔ)空缺。使用任何比 VAE 更弱的算法來填補(bǔ)缺失點(diǎn)會降低 VAE 模型的性能。

上文已經(jīng)提到過,數(shù)據(jù)中的異常點(diǎn)和缺失點(diǎn)會影響后續(xù)點(diǎn)的檢測。事實(shí)上,這些異常點(diǎn)和缺失點(diǎn)也會影響模型的訓(xùn)練,畢竟 VAE 需要學(xué)習(xí)正常的數(shù)據(jù)模式,異常點(diǎn)和缺失點(diǎn)的存在會讓 VAE 學(xué)習(xí)到錯誤的模式。Donut 分別提出了不同的方法來降低這些點(diǎn)在訓(xùn)練和測試時影響。

Donut 主要有三個創(chuàng)新點(diǎn),即 M-ELBO(Modified ELBO),缺失值注入,蒙特卡洛馬爾可夫鏈填補(bǔ)(Monte Carlo Markov Chain Missing Data Imputation,下稱為 MCMC 填補(bǔ)),其整體過程如圖5 所示。

在訓(xùn)練的時候 Donut 并沒有把帶有異常點(diǎn)和確實(shí)點(diǎn)的窗口完全拋棄,在樸素VAE 基礎(chǔ)上,Donut 修改了 VAE 的 ELBO(Evidence Lower Bound Objective,證據(jù)下界):

圖5 Donut 設(shè)計(jì)框架Fig.5 The design architecture of Donut

在Donut 的實(shí)驗(yàn)中,M-ELBO 是其優(yōu)于樸素VAE模型的重要因素。原理大致如下:在訓(xùn)練時包含帶有異常點(diǎn)和缺失點(diǎn)的數(shù)據(jù),并且使用 M-ELBO,會迫使VAE 在含有部分異常的情況下,也能識別出隸屬的正常模式是什么,并且在未發(fā)生異常的時刻還原出正常模式的數(shù)據(jù)。因此,M-ELBO 這一技術(shù)能加強(qiáng)VAE 處理異常和缺失數(shù)據(jù)的能力。然而訓(xùn)練數(shù)據(jù)中只有不到 1% 的異常和缺失點(diǎn);而當(dāng)標(biāo)注不存在、完全無監(jiān)督訓(xùn)練時,異常點(diǎn)更是不可知的。為了能使 M-ELBO 起更大作用,Donut 在訓(xùn)練時人工地添加了缺失點(diǎn):在每一遍(epoch)使用訓(xùn)練數(shù)據(jù)之前,Donut 都隨機(jī)地填充1%的正常數(shù)據(jù)為0,并標(biāo)記為“缺失”。注意在深度學(xué)習(xí)中,訓(xùn)練數(shù)據(jù)通常會使用很多遍(Donut 的所有實(shí)驗(yàn)中都使用了250 遍訓(xùn)練數(shù)據(jù)),而 Donut 在每一遍隨機(jī)填充的缺失點(diǎn)都是不一樣的。產(chǎn)生缺失數(shù)據(jù)可以被看做一種特殊的數(shù)據(jù)增廣(Data Augmentation),這種手段在深度學(xué)習(xí)中被廣泛用于訓(xùn)練、提升模型效果[37]。事實(shí)上,如果能進(jìn)一步地在訓(xùn)練集中隨機(jī)產(chǎn)生異常數(shù)據(jù),理論上會取得更好的訓(xùn)練效果。然而產(chǎn)生合適異常數(shù)據(jù)是一件比較困難的任務(wù),因此 Donut 中并沒有做出這方面的嘗試。在測試時,為了進(jìn)一步地減少缺失點(diǎn)帶來的影響,Donut 使用了 MCMC 填補(bǔ)技術(shù)[38]。這是一種利用已經(jīng)訓(xùn)練好的深度貝葉斯模型進(jìn)行數(shù)據(jù)填補(bǔ)的技術(shù),即輸入經(jīng)過模型多次重建(論文設(shè)置為十次),將最終的重建樣本作為異常檢測的輸入。該方法的目的是填補(bǔ)輸入中的缺失值,方法充分利用 VAE 模型對數(shù)據(jù)的擬合能力,而非訴諸于弱于VAE 算法的其他模型(如[36])。如圖6所示,滑動窗口被分解為,其中為非缺失點(diǎn),是缺失點(diǎn),輸入經(jīng)過模型重建后從轉(zhuǎn)為,即重建樣本,將作為下一次 MCMC迭代的輸入,或作為迭代結(jié)束后異常檢測時的輸入。

3.3 Bagel

Bagel 沿用了Donut 的三個創(chuàng)新點(diǎn)——M-ELBO、缺失值注入、MCMC 填補(bǔ)。但是,Bagel 不再使用變分編碼器(VAE)作為模型的基礎(chǔ),而是使用條件變分編碼器(CVAE)。CVAE 的原理與VAE 類似,同屬于深度貝葉斯網(wǎng)絡(luò)。CVAE 主要刻畫了觀測變量x與額外信息y和隱變量z之間的關(guān)系。隱變量同樣被指定了一個先驗(yàn)分布(prior,通常是多維單位高斯分布N(0,1)。在z的基礎(chǔ)上,x被假設(shè)為服從概率分布為可學(xué)習(xí)參數(shù),可通過訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)導(dǎo)出。在CVAE 中,的后驗(yàn)分布通過使用另一個獨(dú)立的神經(jīng)網(wǎng)絡(luò)來擬合,擬合得到的近似后驗(yàn)概率被記作下面的式子為 Bagel 的變分下界:

圖6 MCMC 填補(bǔ)技術(shù)Fig.6 MCMC Imputation

Bagel 同Donut 一樣適用于處理周期性KPI,不同之處在于Bagel 在滑動窗口上額外添加了時間信息,對于Donut 可以處理的KPI 數(shù)據(jù),Bagel 有同等的處理能力,對于更依賴時間信息的KPI 異常檢測,Bagel 具有比Donut 更強(qiáng)的處理能力。Bagel 整體結(jié)構(gòu)如圖7 所示。Bagel 的整體結(jié)構(gòu)與Donut 相似,但Bagel 比Donut 多了一個Dropout 層,其原因是由于時間信息的one-hot 編碼比KPI 要簡單的多。具體而言,如果同時處理時間信息與KPI 數(shù)據(jù)會出現(xiàn)過擬合現(xiàn)象,所以為了防止時間信息的過擬合,Bagel 添加了Dropout 層,對額外信息y 做了Dropout 處理。

在Bagel 中,在滑動窗口添加時間信息的onehot 編碼,選取的時間信息為星期,小時和分鐘,如表1所示。模型不考慮年份、月份等信息是因?yàn)橹芷谛訩PI 曲線的周期跨度通常小于一個月,考慮年月等信息意義不大。時間的one-hot 編碼即將數(shù)字轉(zhuǎn)位二進(jìn)制形式,由于星期數(shù)最多為7,小時數(shù)最多為24,分鐘數(shù)最多可為59,所以星期數(shù)選取7 位表示。例如,用one-hot 編碼表示星期二,則七位的第二位設(shè)置為1,其余為0,小時數(shù)選取24 位表示,分鐘數(shù)選取60 位表示。

圖7 Bagel 模型整體結(jié)構(gòu)Fig.7 Overall structure of Bagel

表1 Bagel 時間信息編碼示例Table 1 An example of time information coding of Bagel

3.4 Buzz

Donut 和Bagel 針對的是周期性服務(wù)KPI 的異常檢測問題,但它們對非周期性機(jī)器KPI 的表現(xiàn)欠佳。這是因?yàn)閂AE 難以捕獲非周期性機(jī)器KPI 表現(xiàn)出來的非高斯的噪聲和復(fù)雜的數(shù)據(jù)分布。如圖8所示,非周期性機(jī)器KPI 數(shù)據(jù)頻繁抖動,同時在長時間范圍內(nèi)具有一定的趨勢性。具體而言,不同的非周期性機(jī)器KPI 數(shù)據(jù)有不同的局部模式和全局模式。Buzz 專注于非周期性機(jī)器KPI 的異常檢測問題。

圖8 非周期性機(jī)器KPI 示例Fig.8 An example of non-seasonal machine KPI

Buzz 模型分為三個網(wǎng)絡(luò),分別是變分網(wǎng)絡(luò)、生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò),如圖9所示。變分網(wǎng)絡(luò)和生成網(wǎng)絡(luò)分別負(fù)責(zé)編碼和解壓重建,判別網(wǎng)絡(luò)負(fù)責(zé)判斷數(shù)據(jù)為生成數(shù)據(jù)還是原始數(shù)據(jù),以此促進(jìn)變分網(wǎng)絡(luò)和生成網(wǎng)絡(luò)的優(yōu)化。如圖所示,對于變分網(wǎng)絡(luò),模型先將窗口重塑為二維,然后進(jìn)入卷積層,通過線性變化和SoftPlus 得到和,進(jìn)而得到變分網(wǎng)絡(luò)的表示。對于生成網(wǎng)絡(luò),可以理解為變分網(wǎng)絡(luò)的逆過程,隱藏變量z 先進(jìn)入全連接層,再經(jīng)過反卷積,然后重塑為1 維,再重塑為W 維,得到重建變量y。判別網(wǎng)絡(luò)同樣使用反卷積層來接收重塑為二維的滑動窗口,隨后數(shù)據(jù)進(jìn)入全連接層得到判別結(jié)果。如圖10所示,Buzz 的主要流程和Donut 類似,不同之處主要在于Buzz 的訓(xùn)練方式。Buzz 沿用了Donut 的創(chuàng)新點(diǎn):MCMC 處理和缺失值填0。

圖9 Buzz 的網(wǎng)絡(luò)結(jié)構(gòu)Fig.9 The network structure of Buzz

Buzz 有幾個核心思想:(1)為了對復(fù)雜KPI進(jìn)行建模使用了分區(qū)劃分的思想。Buzz 將數(shù)據(jù)空間劃分為數(shù)個子空間(分區(qū)),然后在每個子空間內(nèi)計(jì)算某個距離指標(biāo)。(2)當(dāng)計(jì)算距離指標(biāo)時,Buzz使用Wasserstein 距離來度量生成分布和數(shù)據(jù)分布之間的距離(之后稱作分布距離)。(3)Buzz 提出了訓(xùn)練目標(biāo)的原始形式和對偶形式,并將Buzz 模型轉(zhuǎn)化為貝葉斯網(wǎng)絡(luò)。Buzz 實(shí)際上通過生成對抗訓(xùn)練優(yōu)化了一個變種VAE 的似然證據(jù)下界。(4)Buzz將VAE 作為一個生成模型來生成樣本,并使用另一個神經(jīng)網(wǎng)絡(luò)作為判別器來區(qū)分生成樣本和真實(shí)樣本。(5)為了保證生成對抗訓(xùn)練的穩(wěn)定性,Buzz 使用了梯度懲罰方法,它是一種對WGAN(Wasserstein Generative Adversarial Network Wasserstein 生成對抗網(wǎng)絡(luò)[35])的改進(jìn)策略。(6)異常檢測通過貝葉斯推導(dǎo)來實(shí)現(xiàn)。

Wasserstein 距離能夠準(zhǔn)確地在WGAN 中度量概率分布之間的距離。此外,Buzz 將數(shù)據(jù)空間劃分為很多個小區(qū)域,然后在每個小區(qū)域上計(jì)算分布距離。每個小區(qū)域上的分布距離通過對抗訓(xùn)練方法獲得,最后把每個小區(qū)域上計(jì)算得到的值進(jìn)行平均以得到整體距離。分區(qū)扮演了連接WGAN 損失函數(shù)和VAE 的橋梁。

3.5 三個方法優(yōu)缺點(diǎn)比較

由表2可以發(fā)現(xiàn),三個方法都需要大量的訓(xùn)練數(shù)據(jù)。由于三個方法都是無監(jiān)督學(xué)習(xí)模型,因此它們都不需要異常標(biāo)注。Buzz 可以處理Donut 和Bagel無法處理的非周期性機(jī)器KPI。但是,它需要更高的訓(xùn)練開銷。Bagel 的優(yōu)勢在于添加了時間信息,對部分依賴時間信息的異常具有更好的性能。

圖10 Buzz 設(shè)計(jì)框架Fig.10 The architecture of Buzz

表2 三個模型優(yōu)缺點(diǎn)比較Table 2 Comparison of advantages and disadvantages of the three models

4 實(shí)驗(yàn)評估

4.1 數(shù)據(jù)集

2018年筆者籌辦了首屆AIOps 挑戰(zhàn)賽[40],并收集了來自百度、搜狗、騰訊和Ebay 的KPI 數(shù)據(jù)。運(yùn)維人員已經(jīng)仔細(xì)地標(biāo)注了該數(shù)據(jù)集中的每一個KPI序列。因此,本文使用該數(shù)據(jù)集測試Donut、Bagel和Buzz 的性能。表3列出了數(shù)據(jù)集的詳細(xì)信息。

表3 數(shù)據(jù)集詳細(xì)信息Table 3 The detailed information of the dataset

4.2 評估標(biāo)準(zhǔn)

所有算法都會為每個KPI 數(shù)據(jù)點(diǎn)計(jì)算一個異常分?jǐn)?shù)。可以選擇一個閾值來進(jìn)行決策:如果某個數(shù)據(jù)點(diǎn)的分?jǐn)?shù)大于閾值,則將其判斷為異常。這樣,異常檢測問題就轉(zhuǎn)換為分類問題,并且可以計(jì)算每個閾值的精度和召回率,進(jìn)而計(jì)算F-Score——精度和召回率的協(xié)調(diào)平均值。本文進(jìn)一步枚舉所有閾值對應(yīng)的F-Score,并計(jì)算每種算法的最佳F-Score。

在KPI 異常檢測問題中,KPI 序列中的異常往往是連續(xù)的異常片段。運(yùn)維人員通常只關(guān)心異常片段開始的時間[11]。因此,如果異常檢測算法在異常開始后以足夠快的速度(即在最大允許延遲之前)做出判斷,則認(rèn)為其成功檢測到整個異常片段。警報延遲是該異常片段中第一個異常點(diǎn)與第一個檢測點(diǎn)之間的時間差。如果異常檢測算法未在最大允許延遲之前發(fā)出任何警報,則即使異常檢測算法能夠檢測出異常,本文也認(rèn)為算法未能成功檢測出異常片段。

圖11 展示了警報延遲為一分鐘(一格)的異常檢測結(jié)果。第一行是人工確認(rèn)后的異常標(biāo)注,第二行是算法得到的異常分?jǐn)?shù),第三行顯示了閾值為0.5時的異常檢測結(jié)果,第四行是根據(jù)警報延遲修正后的異常檢測結(jié)果。對于第一個KPI 異常片段,異常檢測算法在最長延遲警報內(nèi)發(fā)現(xiàn)了異常(加粗斜體部分),則本文認(rèn)為算法成功檢測了整個異常片段。對于第二個KPI 異常片段,雖然異常檢測算法在該片段最后兩分鐘檢測到了異常,但是由于該檢測結(jié)果超過了警報延遲,所以本文認(rèn)為異常檢測算法未能成功檢測到該異常片段。

KPI 異常檢測通過設(shè)定閾值來評估KPI 曲線上每個點(diǎn)的異常分?jǐn)?shù),即問題可以轉(zhuǎn)化為二分類問題,分為異常和正常兩類。對于該類問題,比較常用的評價指標(biāo)有精度(Precision)、召回率(Recall)以及精度與召回率的調(diào)和平均(F1Score)。計(jì)算公式如下:

其中,true positive (TP)表示成功檢測出的異常點(diǎn)的數(shù)量,false positive (FP)表示正常點(diǎn)被模型判斷為異常點(diǎn)的數(shù)量,false negative (FN)表示異常點(diǎn)被模型判斷為正常點(diǎn)的數(shù)量。Donut 論文提出了Best-Fscore,即設(shè)定多個閾值,比較每個閾值對應(yīng)的F1Score,然后選取最高的 F1Score 作為模型在該曲線上的F1Score。Bagel 和Buzz 沿用了這種評估方式。

圖11 修正后的異常檢測結(jié)果Fig.11 The modified anomaly detection results

4.3 三個方法的實(shí)驗(yàn)對比

本文使用10-fold 方法分別測試Donut、Bagel和Buzz 的準(zhǔn)確性。三個方法在整個數(shù)據(jù)集的最佳precision、recall 和F-score 如表4所示。可以看出,捕獲了時間信息的Bagel 取得了比Donut 更好的準(zhǔn)確性。這是因?yàn)锽agel 在滑動窗口添加了時間信息的one-hot 編碼。此外,雖然Buzz 能夠檢測非周期性機(jī)器KPI 中的異常,但是它在周期性服務(wù)KPI 中的表現(xiàn)欠佳,導(dǎo)致其整體的F-Score 低于Donut 和Bagel。

表4 三個方法準(zhǔn)確性比較Table 4 Comparison of result of the three methods

在處理非周期性機(jī)器KPI 時,Buzz 能夠取得比Donut 和Bagel 有更好的準(zhǔn)確性。例如,圖12 展示了Donut、Bagel 和Buzz 在一個非周期性機(jī)器KPI上的precision recall curve (PRC)。在PRC 曲線中,越靠近右上角,表示性能越好。可以看出,Buzz 具有最好的準(zhǔn)確性。這是因?yàn)椋簽榱藢?fù)雜KPI 進(jìn)行建模,Buzz 使用了分區(qū)劃分的思想。它將數(shù)據(jù)空間劃分為數(shù)個子空間(分區(qū)),然后在每個子空間內(nèi)計(jì)算某個距離指標(biāo)。

圖12 三種算法在一個非周期性機(jī)器KPI 上的PRC 曲線Fig.12 The PRC of the three methods on a non-seasonal machine KPI

5 總結(jié)

當(dāng)前,學(xué)者們已經(jīng)提出了一系列基于深度生成模型的無監(jiān)督KPI 異常檢測框架。其中,Donut、Bagel 和Buzz 是三個典型的方法。Donut 作為最早提出的面向KPI 異常檢測的深度生成模型,采用基于VAE 的無監(jiān)督學(xué)習(xí)架構(gòu),在周期性服務(wù)KPI 上表現(xiàn)優(yōu)異。Bagel 使用CVAE 替換Donut 中的VAE,將時間信息編碼進(jìn)模型,對于時間敏感的KPI 具有更好的異常檢測性能。由于非周期性機(jī)器KPI 通常表現(xiàn)出非高斯噪聲和復(fù)雜數(shù)據(jù)分布,因此Buzz 有效結(jié)合了WGAN 和分區(qū)思想,提高了非周期性機(jī)器KPI的異常檢測準(zhǔn)確性。

利益沖突聲明

所有作者聲明不存在利益沖突關(guān)系。

猜你喜歡
機(jī)器監(jiān)督算法
機(jī)器狗
機(jī)器狗
突出“四個注重” 預(yù)算監(jiān)督顯實(shí)效
基于MapReduce的改進(jìn)Eclat算法
Travellng thg World Full—time for Rree
進(jìn)位加法的兩種算法
未來機(jī)器城
電影(2018年8期)2018-09-21 08:00:06
監(jiān)督見成效 舊貌換新顏
夯實(shí)監(jiān)督之基
一種改進(jìn)的整周模糊度去相關(guān)算法
始兴县| 民丰县| 满洲里市| 东宁县| 房产| 凯里市| 樟树市| 韶关市| 镇康县| 莎车县| 休宁县| 靖江市| 奉贤区| 北宁市| 临海市| 嵊泗县| 二连浩特市| 梧州市| 瓮安县| 乐昌市| 隆安县| 武城县| 闽侯县| 额尔古纳市| 泊头市| 大化| 蓝山县| 孝感市| 西盟| 丰县| 祁东县| 岢岚县| 寿光市| 镇坪县| 闽清县| 五华县| 融水| 岢岚县| 景宁| 托克逊县| 东港市|