王易東 王彬


摘要:深度學習應用在日志異常檢測領域中,取得了較好的準確率。日志異常檢測對實時性的要求很高,這對異常檢測模型的運行速度提出了巨大挑戰,目前基于循環神經網絡的檢測算因其固有的循環結構導致并行計算難以實現,這極大限制了模型的計算速度。為提高日志異常檢測效率,設計了基于切片GRU日志異常檢測模型,提出了一種基于最小質因數切片的日志異常檢測算法。構建的切片GRU模型主要對隱藏層做了改進,輸入序列在進入隱藏層之前進行了切片,每一層的GRU塊按照切片數量進行分組,組與組之間并行計算,層與層之間串行計算,多個隱藏層共同處理輸入序列,切片GRU模型的這種層次結構加快了模型的運行速度,在不影響檢測精度的前提下,算法在不同長度的日志序列上均有不效率提升,且輸入序列越長,提升的幅度越大。
關鍵詞:日志異常檢測;深度學習;循環神經網絡;GRU網絡;切片算法
中圖分類號:TP319? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)19-0059-02
1 引言
日志異常檢測可以看作一種自然語言序列預測任務,通過對比預測值與實際值來判定異常。循環神經網絡(recurrent neural network ,RNN)通過一個循環結構,將上一種狀態的輸出作為當前的輸入,從而追蹤歷史,做出預測,可以用于自然語言序列預測任務。由于梯度消失/梯度爆炸的問題,傳統RNN在實際中很難處理長期依賴,而長短期記憶網絡(Long Short-Term Memory,LSTM)和門控循環單元(Gated Recurrent Unit,GRU)則解決了這個問題,可以從語料中學習到長期依賴關系。Du M[1]等將系統日志建模為自然語言序列,提出了一種基于LSTM的深度神經網絡模型——DeepLog,在多個大型數據集上取得了較高的檢測精度。
然而日志異常檢測對實時性的要求很高,這對異常檢測模型的運行速度提出了巨大挑戰。LSTM和GRU作為 RNN的變種,其固有的循環結構導致并行計算難以實現,切片循環神經網絡[2](Sliced Recurrent Neural Networks,SRNN)從結構上對RNN進行改進,通過將輸入序列切分為多個子序列實現并行計算。本文參照Du M等[1]提出的Deeplog模型構造日志異常檢測模型,用GRU網絡替換Deeplog中的LSTM,將SRNN的思路應用到日志異常檢測模型中,提出了一種基于最小質因數切片的日志異常檢測算法,基于該算法改進異常檢測模型,并結合日志序列的特點,調整模型參數,本文的最后將改進后的切片模型與原始GRU模型做對比,從性能和速度兩方面來評價模型的提升。
2 基于GRU的日志異常檢測模型介紹
在系統日志中,所有相似日志條目中的公共常量消息叫作log key,可以用來表示日志消息類型。N元語法(N-gram)是NLP領域中一種常用的概率語言模型,可以通過極大似然估計從長度為N的已知log key序列中計算出下一個log key出現的條件概率。本文基于N-gram語言模型,參考了文獻[1]中的設計思路,構建了一種基于GRU的日志異常檢測模型。
模型總體上可分為輸入層(input layer)、嵌入層(embedding layer)、隱藏層(hidden layer)和輸出層(output layer),信息沿各層依次傳遞。圖1給出了基于GRU的日志異常檢測模型的結構示意圖,該模型的運算速度相比于DeepLog約提升了16.7%,同時該模型也是本文切片GRU日志異常檢測模型的基礎,結合下文中的切片算法,可以進一步大幅提高日志異常檢測效率。
3 基于最小切片因子的切片算法
相比于標準GRU模型,本文構建的切片GRU模型主要對隱藏層做了改進。改進模型與原模型的不同之處在于:輸入序列在進入隱藏層之前進行了切片[3],每一層的GRU塊按照切片數量進行分組,組與組之間并行計算,層與層之間串行計算,多個隱藏層共同處理輸入序列,切片GRU模型的這種層次結構[4]加快了模型的運行速度。
本文對文獻[2]中的切片方法做了改進,提出一種基于最小切片因子切片算法,和文獻[2]中的方法相比,本文算法細化了切片過程,改進了切片方式,具有更強的合理性。算法的核心思想是對輸入序列進行多次切片,每次切片數都等于切片序列(子序列)的最小切片因子,直到最小子序列的長度也等于最小切片因子為止。最小切片因子的取值為2、3、5,對于長度等于最小切片因子的序列,無法通過切片加快其計算速度。
假設模型的輸入是一個長度為n的log key序列X={[x1,x2,…xh}],若n是最小切片因子的倍數,直接對序列進行切片,得到[m1m1∈{2,3,5}]個子序列;若不是,則在序列最后加入一個元素后再切片,該元素僅用來輔助切片,不參與序列中記憶傳遞。
4 實驗及結果分析
為評估切片算法的速度與性能,本節在大型日志數據集上進行了對比實驗,實驗環境實驗環境在個人筆記本上配置,處理器為Intel Core i7-6700HQ(2.60GHz),NVIDIA GeForce GTX 965M GPU(2GB),16GB RAM(2133MHz),操作系統為Ubuntu 16.04(64位)。GRU網絡的搭建和訓練基于深度學習框架keras,tensorflow作為后端,編程環境為Python3.6.5。對比實驗分別從速度和精度兩方面對切片模型的優越性進行驗證。
首先驗證切片模型的速度提升,選取包含11175629條數據的亞馬遜大型HDFS日志[5]作為實驗數據集,其中前1%日志數據中的正常會話作為訓練集訓練模型,整個數據集用來測試模型性能。對比實驗共分為3組,分別選取長度(h)為6、9、12的log key序列作為輸入,對比兩個模型的運行速度、檢測精度。
表1給出了不同輸入長度下兩種模型的運行速度對比,從表中可以看出,不同序列長度下的切片GRU模型相較于原模型的速度提升均達到了切片模型速度提升的預期值。觀察長度為6和12的序列在不同切片方式下的運行速度,發現不同結構下檢測每條日志花費的時間相當,從而證明了序列的不同切片方式并不會影響模型的運算速度。對比不同序列長度下的性能提升幅度,可以看到序列長度越長,切片GRU模型相較于原模型速度提升越大。
5 結語
當前基于深度學習的日志異常檢測領域中,涉及提升運算速度的研究相對較少,且大都通過改進循環單元來提升速度,提升幅度較低。本文研究基于并行計算的思想,提出了切片GRU模型,使用分解質因數的思想對GRU模型的輸入序列進行切片,多次切片形成了多個隱藏層,每個隱藏層中的切片序列之間并行計算,各隱藏層之間串行計算。在大型日志數據集上進行的切片GRU模型與普通GRU模型的對比實驗表明,切片算法對GRU模型的異常檢測效率提升顯著,在處理較長輸入序列時提升尤為明顯。本文研究為今后相關工作提供了算法參考和模型構建基準,具有一定理論指導意義。
參考文獻:
[1] Du M, Li F, Zheng G, et al. Deeplog: Anomaly detection and diagnosis from system logs through deep learning[C].Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security.ACM,2017:1285-1298.
[2] Yu Z, Liu G.Sliced Recurrent Neural Networks[J].2018.
[3] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J].arXiv preprint arXiv,2016.
[4] Yang Z,Yang D,Dyer C,et al.Hierarchical attention networks for document classification[C].Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies.2016:1480-1489.
[5] Xu W,Huang L,Fox A,et al.Detecting large-scale system problems by mining console logs[C]. Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles.ACM,2009: 117-132.
【通聯編輯:朱寶貴】