1 ?背景 在螞蟻集團(tuán)智能監(jiān)控領(lǐng)域,時序異常檢測是極重要一環(huán),異常檢測落地中,業(yè)務(wù)方參考業(yè)界標(biāo)準(zhǔn)輸出 Metrics 指標(biāo)數(shù)據(jù),監(jiān)控不同業(yè)務(wù)、應(yīng)用、接口、集群的各項指標(biāo),包含 Metrics 指標(biāo)(總量、失敗量、耗時等)和系統(tǒng)服務(wù)指標(biāo)(CPU、MEM、DISK、JVM、IO 等)。早期的時序異常檢測是由 SRE 結(jié)合長期運(yùn)維經(jīng)驗通過配置專家規(guī)則來完成,隨著 AI 技術(shù)的普及,異常檢測逐步 AI 化,在現(xiàn)實場景中,AI 算法常常面臨如下挑戰(zhàn):
每日不同時段,業(yè)務(wù)時序曲線呈現(xiàn)不同的局部均值/方差特性; 特殊日期如大型節(jié)假日、大促日,時序數(shù)據(jù)與日常差異巨大,甚至與往年同期也存在不小差異; 每日或間隔幾日固定時間段中隨機(jī)時刻發(fā)生的偏定時事件; 海量監(jiān)控業(yè)務(wù),很難針對單獨(dú)指標(biāo)一一建模; 下圖是一組耗時指標(biāo)時序數(shù)據(jù),按分鐘采樣,存在明顯日周期性,在每日不同時段,均值/方差差異明顯;憑專家經(jīng)驗按時間段強(qiáng)行設(shè)置閾值,難度大準(zhǔn)確度低;使用回歸模型擬合數(shù)據(jù)分布,精度高,但難以泛用到其他指標(biāo)。圖1 耗時時序曲線本文基于 CNN 神經(jīng)網(wǎng)絡(luò)方向進(jìn)行了一些探索,在保證檢測準(zhǔn)確率與召回率的同時,也能保證
模型有較好的泛用性 。
二 ?算法調(diào)研 下圖整理出部分時序數(shù)據(jù)異常檢測涉及算法,這里不一一詳述,有興趣自行查詢相關(guān)算法原理。圖2 異常檢測相關(guān)算法從是否依賴標(biāo)注訓(xùn)練樣本的角度看,算法主要分為有監(jiān)督和無監(jiān)督兩個方向(半監(jiān)督這里就不介紹了)。無監(jiān)督算法免去了標(biāo)注樣本耗費(fèi)的大量人力,適合冷啟動,但最終還需算法開發(fā)人員持續(xù)調(diào)參去尋找最優(yōu)分類決策平面,在調(diào)參過程中還需兼顧不同監(jiān)控業(yè)務(wù)的自身特點(diǎn);有監(jiān)督算法則相反,但往往模型可解釋性較差,日常運(yùn)維中用戶會經(jīng)常詢問:為啥告警/為啥沒告警,運(yùn)維人員這時可能會風(fēng)中凌亂,同時不同業(yè)務(wù) owner 對異常評判的標(biāo)準(zhǔn)是存在差異的,如果不能在
異常評判的標(biāo)準(zhǔn) 上達(dá)成一致,使用有監(jiān)督算法往往需為不同的評判標(biāo)準(zhǔn)維護(hù)多套樣本集。CNN 的卷積層在提取異常波形特征上有明顯的優(yōu)勢,復(fù)雜度合適的全連接層理論上也可擬合出所有的非線性關(guān)系;還有一點(diǎn),網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計是一件靈活的工作,算法工程師有較大的發(fā)揮空間,而非僅僅涉及調(diào)參。
三 ?算法原理 此章從特征工程,樣本增強(qiáng),神經(jīng)網(wǎng)絡(luò)設(shè)計三部分介紹基于 CNN 模型方案,還是以耗時指標(biāo)為例進(jìn)行說明。
?特征工程 不同樣本的均值/方差/趨勢差異明顯,需要將原始時序數(shù)據(jù)映射到統(tǒng)一量綱的空間。模型原始輸入為5組輸入通道:
當(dāng)日數(shù)據(jù):前 n 分鐘到當(dāng)前預(yù)測時間點(diǎn)時序數(shù)據(jù); 同比數(shù)據(jù)(前1天):1天前當(dāng)前時刻為參考點(diǎn),前 n 分鐘到后 m 分鐘內(nèi)時序數(shù)據(jù); 同比數(shù)據(jù)(前2天):2天前當(dāng)前時刻為參考點(diǎn),前 n 分鐘到后 m 分鐘內(nèi)時序數(shù)據(jù); 同比數(shù)據(jù)(前7天):7天前當(dāng)前時刻為參考點(diǎn),前 n 分鐘到后 m 分鐘內(nèi)時序數(shù)據(jù); 同比數(shù)據(jù)(前14天):14天前當(dāng)前時刻為參考點(diǎn),前 n 分鐘到后 m 分鐘內(nèi)時序數(shù)據(jù); 同比數(shù)據(jù)時段選擇前 n 分鐘到后 m 分鐘,是因為某些周期性事件并非在一個固定時間點(diǎn)發(fā)生,而是在一個固定時間段中隨機(jī)取值。在作者實踐中 n=60,m=30。主要解決問題:
消除了不同日期時序數(shù)據(jù)水位差異帶來的影響; 消除了不同日期時序數(shù)據(jù)抖動幅度差異帶來的影響; 消除了不同指標(biāo)的值域范圍差異帶來的影響; 整個數(shù)據(jù)處理流程按如下幾環(huán)節(jié)順序進(jìn)行。
方差標(biāo)準(zhǔn)化 方差體現(xiàn)了時序數(shù)據(jù)在統(tǒng)計時段內(nèi)的抖動劇烈程度,在真實樣本中,當(dāng)日方差與往期同比時段方差可能存在較大差異,如果不做標(biāo)準(zhǔn)化處理,會導(dǎo)致抖動劇烈的時序數(shù)據(jù)很容易產(chǎn)生誤報。圖3 處理前后對比
去均值 均值體現(xiàn)了時序數(shù)據(jù)在統(tǒng)計時段內(nèi)水位,在真實樣本中,當(dāng)日均值與往期同比時段均值是不相等的,需要對齊水位。對每組輸入通道中時序數(shù)據(jù)取中位數(shù),以中位數(shù)為0點(diǎn)進(jìn)行平移,注意是中位數(shù)不是統(tǒng)計均值。圖4 處理前后對比關(guān)于為何使用中位數(shù),而不使用統(tǒng)計均值,使用均值會出現(xiàn)下圖所示問題,沒達(dá)到對齊效果。圖5 中位數(shù)和統(tǒng)計均值差異
提取趨勢基線 滑動平均,滾動窗口提取參考時段內(nèi)的趨勢基線,需要對窗口內(nèi)數(shù)據(jù)集進(jìn)行一定比率的去噪。圖6 提取趨勢基線
去趨勢 做個簡單的映射操作,真實值-趨勢基線值,提取出去趨勢后的殘差時序。圖7 去趨勢
標(biāo)準(zhǔn)化 對殘差時序做一個標(biāo)準(zhǔn)化操作。圖8 標(biāo)準(zhǔn)化
數(shù)據(jù)截取 通過上述幾個步驟,將當(dāng)日與往期共5個通道時序數(shù)據(jù)映射到了新的空間;在進(jìn)行異常檢測時,由于只需檢測當(dāng)前時刻是否異常,所以送入神經(jīng)網(wǎng)絡(luò)的當(dāng)日時序輸入只需截取最近 c 分鐘即可,在作者實踐中,c=7。
? 數(shù)據(jù)增強(qiáng) 模型訓(xùn)練前,可以做適量的數(shù)據(jù)增強(qiáng),不僅能提升模型泛用性,還能在訓(xùn)練收斂過程中更容易提取到異常波形特征,對準(zhǔn)確/召回率有比較大的提升。數(shù)據(jù)增強(qiáng)在特征工程之后。
交換往期參考日輸入通道的數(shù)據(jù),如下例中就交換了 y7 和 y14 通道的輸入; 圖9 交換通道輸入
修改異常樣本當(dāng)前時刻值,隨機(jī)設(shè)置到指定閾值之下,把一個異常樣本變成一個正常樣本; 圖10 修改當(dāng)前時刻值
修改異常樣本中當(dāng)日輸入通道的向量,向量整體做大尺度負(fù)向平移,把一個異常樣本變成一個正常樣本; 圖11 修改當(dāng)天輸入向量
模擬周期事件,隨機(jī)抽取幾個往期通道,在輸入時序中生成與今日異常波形相似的數(shù)據(jù); 圖12 模擬周期事件
? 神經(jīng)網(wǎng)絡(luò)設(shè)計 相比于復(fù)雜的圖像識別,異常波形的圖像特征要簡單的多,在滿足準(zhǔn)召率的前提下,盡可能用更少的隱層,更少的參數(shù)去解決問題,模型結(jié)構(gòu)中有2個關(guān)鍵點(diǎn):
每個輸入通道共享相同卷積層 ,因為每個通道需提取的波形特征是一致的,共享卷積層可以節(jié)約計算性能; MaxPool 層實質(zhì)對每個通道做的是一個取向量最大元素操作,所以不管 Input 層輸入向量長度如何變化,MaxPool 層輸出數(shù)據(jù)結(jié)構(gòu)都是固定的,所以在模型做預(yù)測時,輸入通道是可靈活輸入不同的長度時序數(shù)據(jù); 模型 Keras 定義代碼:模型結(jié)構(gòu)打印,表格中各 Layer 詳細(xì)定義可以參考模型 Keras 定義代碼,整個網(wǎng)絡(luò)結(jié)構(gòu)較簡潔,這里不再詳述各層定義,訓(xùn)練使用 loss為binary_crossentropy,模型輸出為一個標(biāo)量 y,y > 0.5 為正,閾值可自行設(shè)置去控制模型對異常檢測的敏感度。圖13 網(wǎng)絡(luò)結(jié)構(gòu)
四 ?效果評估 ? 標(biāo)注樣本集評估結(jié)果 訓(xùn)練樣本集規(guī)模10000+,大部分樣本為數(shù)據(jù)增強(qiáng)生成,原始標(biāo)注樣本1000+,正負(fù)樣本比例約1:2。當(dāng)前在訓(xùn)練樣本集上準(zhǔn)確率可達(dá) 98.9%,因為打標(biāo)數(shù)據(jù)中有一些模棱兩可的標(biāo)注數(shù)據(jù),不同的業(yè)務(wù)人員判斷很難達(dá)到統(tǒng)一,通過提高模型復(fù)雜度去強(qiáng)行擬合訓(xùn)練樣本集,這樣可能會影響模型的泛用性。
? 實測結(jié)果與分析 最近一期評審數(shù)據(jù):準(zhǔn)確78%,召回96%,誤報主要原因分析:
部分業(yè)務(wù)人員判定持續(xù)時間較短的毛刺為誤報,但訓(xùn)練樣本集中是存在這種毛刺異常標(biāo)注,可以添加一條簡單的后置規(guī)則對異常持續(xù)時長進(jìn)行過濾; 在當(dāng)日原始輸入為1小時左右的時長跨度中,異常波形較明顯,但拉長時軸,在更長的時間跨度下看漲跌幅度正常;可以通過給原始輸入更久時序數(shù)據(jù)減少此類誤報,或者基于歷史數(shù)據(jù)離線統(tǒng)計出一些合適的最小漲跌閾值進(jìn)行過濾; 小數(shù)據(jù)/稀疏數(shù)據(jù)模型表現(xiàn)較差; 周期性差,當(dāng)日走勢和歷史差異極大; 一些發(fā)現(xiàn)的異常,紅色為異常點(diǎn)。圖14 檢測的異常
五 ?當(dāng)前面臨的一些問題和思考 監(jiān)控指標(biāo)自帶業(yè)務(wù)屬性,異常標(biāo)準(zhǔn)定義很難達(dá)到統(tǒng)一,業(yè)務(wù)人員 A 認(rèn)可的異常在業(yè)務(wù)人員 B 眼中是正常現(xiàn)象,這意味著使用有監(jiān)督方案需要維護(hù)多份訓(xùn)練集,這在實際操作中是不現(xiàn)實的;
算法性能問題,面臨海量監(jiān)控業(yè)務(wù),訓(xùn)練和實時檢測計算資源是否吃得消,本文的方案在實時檢測會產(chǎn)生大量時序數(shù)據(jù)查詢請求,需要平臺強(qiáng)力支持;
在實際探索中,我們發(fā)現(xiàn)單一的算法解決不了所有問題,不同算法都有其優(yōu)勢及不足,都有其契合及尷尬的場景,合適的方法才是最好的方法;
? 作者介紹 王睿,花名汴南,螞蟻集團(tuán)技術(shù)專家,一直從事 AIOps 算法相關(guān)研究工作。目前是螞蟻集團(tuán)智能監(jiān)控團(tuán)隊算法組負(fù)責(zé)人。
六 ?關(guān)于我們 歡迎來到「螞蟻智能運(yùn)維」的世界。本公眾號由螞蟻集團(tuán)技術(shù)風(fēng)險中臺團(tuán)隊出品,面向關(guān)注智能運(yùn)維、技術(shù)風(fēng)險等技術(shù)的同學(xué),將不定期與大家分享云原生時代下螞蟻集團(tuán)在智能運(yùn)維的架構(gòu)設(shè)計與創(chuàng)新方面的思考與實踐。
螞蟻技術(shù)風(fēng)險中臺團(tuán)隊,負(fù)責(zé)螞蟻集團(tuán)的技術(shù)風(fēng)險底座平臺建設(shè),包括智能監(jiān)控、資金核對、性能容量、全鏈路壓測以及風(fēng)險數(shù)據(jù)基礎(chǔ)設(shè)施等平臺和業(yè)務(wù)能力建設(shè),解決世界級的分布式處理難題,識別和解決潛在的技術(shù)風(fēng)險,參與螞蟻雙十一等大型活動,通過平臺能力保障整體螞蟻系統(tǒng)在極限請求量下的高可用和資金安全。
關(guān)于「智能運(yùn)維」有任何想要交流、討論的話題,歡迎留言告訴我們。
PS:技術(shù)風(fēng)險中臺正在招聘技術(shù)專家,歡迎加入我們,有興趣聯(lián)系 techrisk-platform-hire@list.alibaba-inc.com
??
歡迎 支持關(guān)注「智能運(yùn)維」的你~ * 點(diǎn)下右下角“
在看 ”* 到公眾號對話框發(fā)送“
智能監(jiān)控 ”,試試手氣~* 本期互動獎品“
螞蟻毛絨公仔 ”
總結(jié)
以上是生活随笔 為你收集整理的cnn 一维时序数据_蚂蚁集团智能监控的时序异常检测:基于 CNN 神经网络的异常检测... 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。