基于VAE的無監(jiān)督異常檢測技術(shù)

姓名:王嘉堃 學號:19011210108 轉(zhuǎn)載自:https://www.cnblogs.com/bonelee/p/9848559.html

前言

????在智能運維領(lǐng)域中铐望,由于缺少異常樣本冈涧,有監(jiān)督方法的使用場景受限茂附。因此,如何利用無監(jiān)督方法對海量KPI進行異常檢測是我們在智能運維領(lǐng)域探索的方向之一督弓。最近學習了清華裴丹團隊發(fā)表在WWW 2018會議上提出利用VAE模型進行周期性KPI無監(jiān)督異常檢測的論文:《Unsupervised Anomaly Detection via Variational Auto-Encoder for Seasonal KPIs in Web Applications 》[1](以下簡稱為Dount)营曼。基于Dount論文的學習愚隧,本文將介紹如何使用Keras庫蒂阱,實現(xiàn)基于VAE模型的周期性KPI異常檢測方法,包括其思路狂塘、原理與代碼實現(xiàn)录煤,幫助大家理解這個方法。

背景介紹:

在AI in All的時代荞胡,工業(yè)界中的運維領(lǐng)域提出了:智能運維(AIOps, Artificial Intelligence for IT Operations)這個概念妈踊,即采用機器學習、數(shù)據(jù)挖掘或深度學習等方法泪漂,來解決KPI異常檢測廊营、故障根因分析、容量預測等運維領(lǐng)域中的關(guān)鍵問題萝勤。

其中KPI異常檢測是在運維領(lǐng)域中非常重要的一個環(huán)節(jié)露筒。KPI(key performance indicators)指的是對服務(wù)、系統(tǒng)等運維對象的監(jiān)控指標(如延遲纵刘、吞吐量等)邀窃。其存儲的形式是按其發(fā)生的時間先后順序排列而成的數(shù)列,也就是我們通常所說的時間序列假哎。從運維的角度來看瞬捕,存在多種不同類型的KPI,周期性KPI是其中一種典型的KPI舵抹,其特點表現(xiàn)為具有周期性肪虎,如下圖:

????要進行KPI異常檢測,首先我們要定義一下什么是異常惧蛹。如上圖所示扇救,我們將KPI的異常點定義為超過期望值一定范圍的點,而在期望值的小范圍內(nèi)波動的點我們將其認為是噪聲香嗓。對周期性KPI的異常檢測在工業(yè)界和學術(shù)界已有不少探索迅腔,本文將介紹基于深度學習模型VAE的無監(jiān)督周期性KPI異常檢測方法。

正文:

AutoEncoder

因為VAE跟AutoEncoder在網(wǎng)絡(luò)整體結(jié)構(gòu)上相似靠娱,都分為Encoder和Decoder模型沧烈,那么在了解VAE之前,我們先了解什么是AutoEncoder模型像云。

AutoEncoder的意思是自編碼器锌雀,這個模型主要由兩個部分組成:encoder和decoder蚂夕,可以把它理解為兩個函數(shù):z = encoder(x), x = decoder(z)。在AutoEncoder模型的思想中腋逆,我們期望能夠利用encoder模型婿牍,將我們的輸入X轉(zhuǎn)換到一個對應的z,利用decoder模型惩歉,我們能夠?qū)還原為原來的x等脂,可以把AutoEncoder理解為有損的壓縮與解壓。

AutoEncoder模型有什么用呢柬泽?有兩個主要功能:

降噪

將高緯的特征轉(zhuǎn)為低緯度的特征(從X到z)慎菲。

要實現(xiàn)一個AutoEncoder其實非常簡單(其實就是單個隱藏層的神經(jīng)網(wǎng)絡(luò)),有接觸過深度學習的人應該都可以理解:

input=Input(shape=(seq_len,))encoded=Dense(encoding_dim,activation='relu')(input)decoded=Dense(seq_len)(encoded)autoencoder=Model(input,decoded)

????我們先來考慮一下能否用AutoEncoder進行KPI異常檢測锨并,以及它有什么缺點露该。因為AutoEncoder具有降噪的功能,那它理論上也有過濾異常點的能力第煮,因此我們可以考慮是否可以用AutoEncoder對原始輸入進行重構(gòu)解幼,將重構(gòu)后的結(jié)果與原始輸入進行對比,在某些點上相差特別大的話包警,我們可以認為原始輸入在這個時間點上是一個異常點撵摆。

????下面是一個簡單的實驗結(jié)果展示,我們訓練了一個輸入層X的維度設(shè)置為180(1分鐘1個點害晦,3小時數(shù)據(jù))特铝,Z的維度設(shè)置為5(可以理解為原始輸入降維后表達),輸出成X的維度設(shè)置為180的AutoEncoder模型壹瘟,并且測試集的數(shù)據(jù)進行重構(gòu)(滑動窗口形式鲫剿,每次重構(gòu)后只記錄最后一個點,然后窗口滑動到下一個時間點)稻轨,能夠得到以下結(jié)果:


基于AutoEncoder的周期性KPI異常檢測:

????上面提到灵莲,AutoEncoder具有降噪功能炫七,那它怎么降噪呢夫凸?這里簡單舉一個例子:假設(shè)我們現(xiàn)在訓練出來的模型可以得到這樣的映射關(guān)系[1, 2](X)->[1](z)->[1 ,2]X_r, 其中[1, 2]表示二維向量, [1]表示一維向量朦蕴,X_r表示重構(gòu)后的X蔚舀。這個例子表示了一個理想的AutoEncoder模型,它能將[1,2]降維到[1], 并且能從[1]重構(gòu)為[1,2]芝雪。接下來灰羽,假設(shè)我們的輸入為[1, 2.1]午笛,其中第二維度的0.1表示一個噪聲李丰,將其輸入到encoder部分后得到的Z為[1]苦锨,并且重構(gòu)后得到的X_r是[1, 2], 這也就達到了一個對原始輸入去噪的作用。

????而我們的當前的目標是進行KPI異常檢測,從上圖可以看到逆屡,一些肉眼可見的異常在重構(gòu)后被去除掉了(類似降噪了),通過對比與原始輸入的差距踱讨,我們可以判斷是否為異常魏蔗。

????然而,AutoEncoder模型本身沒有什么多少正則化手段痹筛,容易過擬合莺治,當訓練數(shù)據(jù)存在較多異常點的時候,可能模型的效果就不會特別好帚稠,而我們要做的是無監(jiān)督異常檢測(要是有l(wèi)abel的話就用有監(jiān)督模型了)谣旁,因此我們的場景是訓練的時候允許數(shù)據(jù)存在少量異常值的,但當異常值占比較大的話滋早,AutoEncoder可能會過擬合(學習到異常模式)榄审。

Variational AutoEncoder(VAE)

????接下來介紹一些VAE模型,如果不需要對VAE有比較清楚的了解杆麸,也可以直接跳過這部分內(nèi)容搁进。

????對于VAE模型的基本思想,下面內(nèi)容主要引用自我覺得講得比較清楚的一篇知乎文章昔头,并根據(jù)我的理解將文中一些地方進行修改饼问,保留核心部分,這里假設(shè)讀者知道判別模型與生成模型的相關(guān)概念揭斧。

原文地址:https://zhuanlan.zhihu.com/p/27865705

VAE 跟傳統(tǒng) AutoEncoder關(guān)系并不大莱革,只是思想及架構(gòu)上也有 Encoder 和 Decoder 兩個結(jié)構(gòu)而已。VAE 理論涉及到的主要背景知識包括:隱變量(Latent Variable Models)讹开、變分推理(Variational Inference)盅视、Reparameterization Trick 等等。

????首先萧吠,先定義問題:我們希望學習出一個生成模型左冬,能產(chǎn)生訓練樣本中沒有,但與訓練集相似的數(shù)據(jù)纸型。換一種說法拇砰,對于樣本空間 X,當以 p(x)抽取數(shù)據(jù)時狰腌,我們希望以較高概率抽取到與訓練樣本近似的數(shù)據(jù)除破。對于手寫數(shù)字的場景,則表現(xiàn)為生成像手寫數(shù)字的圖像琼腔。對于數(shù)據(jù) x的產(chǎn)生瑰枫,我們假設(shè)它受一些隱含因素的影響,即隱變量(Latent Variables),寫作 z光坝,并且假設(shè)p(z)服從標準正態(tài)分布 N(0,I)尸诽。則原來對 p(x)建模轉(zhuǎn)為對 p(x,z) 進行建模,同時有

接下來我們可以開始解決最大化 p(x)的問題盯另,如果我們知道 p(z) 的分布性含,我們就可以利用采樣來計算積分,即


?我們發(fā)現(xiàn)當p(x|z)=0時鸳惯,對估計 p(x) 沒有幫助商蕴,所以其實我們只需要采樣那些對 p(x)有貢獻的 z。此時芝发,可以反過來求 p(z|x)绪商,然而p(z|x)是intractable的,VAE中利用Variational Inference辅鲸,引入 q(z|x)分布來近似p(z|x)格郁。

最終,可以得到需要優(yōu)化的目標 ELBO(Evidence Lower Bound)瓢湃,此處其定義為


其中理张,第一項是我們希望最大化的目標p(x);第二項是在數(shù)據(jù) x下真實分布 p 與假想分布 q 的距離绵患,當 q的選擇合理時此項會接近為0雾叭。但公式中仍然含有intractable的?p(z|x),于是將其化簡后得到


?于是落蝙,對于某個樣本xi织狐,其損失函數(shù)可以表示為每次輸入為一個xi,


?q(z|xi)意味著在樣本 xi下隱變量 z的分布筏勒,對應于AutoEncoder中的Encoder部分移迫;?

p(xi|z)意味著將隱變量 z恢復成 xi,對應著 Decoder管行。于是厨埋,VAE 的結(jié)構(gòu)可以表示為

????但是,上面這種方式需要在前向傳播時進行采樣捐顷,而這種采樣操作是無法進行后向反饋梯度的荡陷。于是,作者提出一種“Reparameterization Trick”:將對

采樣的操作移到輸入層進行迅涮。于是就有了下面的VAE最終形式

我們再結(jié)合兩個圖梳理一下VAE的過程废赞。

下圖展示了一個具有3個隱變量的 VAE 結(jié)構(gòu)示意圖。

基于VAE的周期性KPI異常檢測

上面介紹了VAE的原理叮姑,看起來很復雜唉地,其實最終VAE也實現(xiàn)了跟AutoEncoder類似的作用,輸入一個序列,得到一個隱變量(從隱變量的分布中采樣得到)耘沼,然后將隱變量重構(gòu)成原始輸入极颓。不同的是,VAE學習到的是隱變量的分布(允許隱變量存在一定的噪聲和隨機性)群嗤,因此可以具有類似正則化防止過擬合的作用讼昆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市骚烧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闰围,老刑警劉巖赃绊,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羡榴,居然都是意外死亡碧查,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門校仑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忠售,“玉大人,你說我怎么就攤上這事迄沫〉狙铮” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵羊瘩,是天一觀的道長泰佳。 經(jīng)常有香客問我,道長尘吗,這世上最難降的妖魔是什么逝她? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮睬捶,結(jié)果婚禮上黔宛,老公的妹妹穿的比我還像新娘。我一直安慰自己擒贸,他們只是感情好臀晃,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酗宋,像睡著了一般积仗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜕猫,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天寂曹,我揣著相機與錄音,去河邊找鬼。 笑死隆圆,一個胖子當著我的面吹牛漱挚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渺氧,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼旨涝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侣背?” 一聲冷哼從身側(cè)響起白华,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贩耐,沒想到半個月后弧腥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡潮太,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年管搪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铡买。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡更鲁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奇钞,到底是詐尸還是另有隱情澡为,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布景埃,位于F島的核電站缀壤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏纠亚。R本人自食惡果不足惜塘慕,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒂胞。 院中可真熱鬧图呢,春花似錦、人聲如沸骗随。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸿染。三九已至指蚜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涨椒,已是汗流浹背摊鸡。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工绽媒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人免猾。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓是辕,卻偏偏與公主長得像猎提,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疙教,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354