本文做者:張宇欣,中國科學院計算技術研究所博士生,研究方向爲異常檢測和深度學習。
本文對 異常檢測 (Anomaly detection) 領域進行了一個較爲全面的概述,主要介紹異常檢測的問題定義、研究挑戰、應用領域,以及主要研究方法。算法
什麼是異常檢測
不一樣於常規模式下的問題和任務,異常檢測針對的是少數、不可預測或不肯定、罕見的事件,它具備獨特的複雜性,使得通常的機器學習和深度學習技術無效。安全
異常檢測面臨的挑戰:網絡
- 未知性:異常與許多未知因素有關,例如,具備未知的突發行爲、數據結構和分佈的實例。它們直到真正發生時才爲人所知,好比恐怖襲擊、詐騙和網絡入侵等應用;
- 異常類的異構性: 異常是不規則的,一類異常可能表現出與另外一類異常徹底不一樣的異常特徵。例如,在視頻監控中,搶劫、交通事故和盜竊等異常事件在視覺上有很大差別;
- 類別不均衡:異常一般是罕見的數據實例,而正常實例一般佔數據的絕大部分。所以,收集大量標了標籤的異常實例是困難的,甚至是不可能的。這致使在大多數應用程序中沒法得到大規模的標記數據。
異常的種類:數據結構
- 點異常(point anomalies)指的是少數個體實例是異常的,大多數個體實例是正常的,例如正常人與病人的健康指標;
- 條件異常(conditional anomalies),又稱上下文異常,指的是在特定情境下個體實例是異常的,在其餘情境下都是正常的,例如在特定時間下的溫度忽然上升或降低,在特定場景中的快速信用卡交易;
- 羣體異常(group anomalies)指的是在羣體集合中的個體實例出現異常的狀況,而該個體實例自身可能不是異常,例如社交網絡中虛假帳號造成的集合做爲羣體異常子集,但子集中的個體節點可能與真實帳號同樣正常。
異常檢測數據集分爲三種:dom
- 統計型數據static data(文本、網絡流)
- 序列型數據sequential data(sensor data )
- 空間型數據spatial data(圖像、視頻)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
異常檢測的應用領域 [1] :機器學習
- 入侵檢測(Intrusion detection):經過從計算機網絡或計算機系統中的若干關鍵點收集信息並對其執行分析,從中發覺網絡或系統中能不能有違反安全策略的行爲和遭到襲擊的跡象,並對此作出適當反應的流程。最廣泛的兩種入侵檢測系統包括基於主機的入侵檢測系統(HIDS)、網絡入侵檢測系統(NIDS)。
- 故障檢測(Fraud detection):主要是監控系統,在故障發生時能夠識別,而且準確指出故障的種類以及出現位置。主要應用領域包括銀行欺詐、移動蜂窩網絡故障、保險欺詐、醫療欺詐。
- 惡意軟件檢測(Malware Detection)
- 醫療異常檢測(Medical Anomaly Detection):經過X光片、核磁共振、CT等醫學圖像檢測疾病或量化異常,也能夠經過EEG、ECG等時序信號進行疾病檢測或異常預警。
- 深度學習用於社交網絡中的異常檢測(Deep learning for Anomaly detection in Social Networks)
- 日誌異常檢測(Log Anomaly Detection)
- 物聯網大數據異常檢測(Internet of things (IoT) Big Data Anomaly Detection):經過監控數據流信息檢測異常設備和系統行爲。
- 工業異常檢測(Industrial Anomalies Detection)
- 時間序列中的異常檢測(Anomaly Detection in TimeSeries)
- 視頻監控(Video Surveillance):檢測視頻中的異常場景。
基於標籤的可得到性劃分異常檢測:ide
- 有監督異常檢測:在訓練集中的正常實例和異常實例都有標籤,這類方法的缺點在於數據標籤難以得到或數據不均衡(正常樣本數量遠大於異常樣本數量)。
- 半監督異常檢測:在訓練集中只有單一類別(正常實例)的實例,沒有異常實例參與訓練,目前不少異常檢測研究都集中在半監督方法上,有不少聲稱是無監督異常檢測方法的研究其實也是半監督的,對其解釋的是該異常檢測是無監督異常檢測,學習特徵的方式是無監督的,可是評價方式使用了半監督的方法,所以對於無監督與半監督的界定感受沒有那麼規範。
- 無監督異常檢測:在訓練集中既有正常實例也可能存在異常實例,但假設數據的比例是正常實例遠大於異常實例,模型訓練過程當中沒有標籤進行校訂。
- 弱監督異常檢測:該類我研究的少,不是特別瞭解,主要是針對異常實例不徹底、粗粒度標籤、部分實例標籤錯誤等狀況進行算法設計。
基於傳統方法的異常檢測模型
- 基於重構的方法:假設異常點是不可被壓縮的或不能從低維映射空間有效地被重構的。常見的方法有PCA、Robust PCA、random projection等降維方法 [4,5] 。
- 聚類分析方法:經過聚類能夠建立數據的模型,而異常點的存在能夠扭曲、破壞該模型。常見的方法有Gaussian Mixture Models、 k-means、 multivariate Gaussian Models [6,7,8]。
- 一類分類方法:對正常數據創建區分性邊界,異常點被劃分到邊界外。常見的方法有OC-SVM [9,10]。
基於深度學習的異常檢測模型
關於異常檢測方法有不少綜述,這裏列舉一些我看過的 [2,3,12,19] 。函數
Deep One Class
該類方法研究的不是特別多,由於本人主要研究的是正常和異常都有多種類別的狀況。簡單介紹一下該類的典型方法:Deep SVDD [11] 、OC-NN [20]。學習
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
目標函數:測試
是神經網絡的權重,異常分數由
決定,若是
,則
爲異常,反之正常。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
目標函數:
根據輸出層來斷定正常、異常值,,
爲正常實例,反之異常。
Deep Clustering
採用深度學習的聚類方法通常是用神經網絡對輸入數據進行編碼,而後認爲最後的編碼序列能夠表明神經網絡的不少特徵,而後咱們對編碼序列進行聚類就能夠達成聚類的目的。該類方法被用於異常檢測的包括:CAE-l2 cluster [15] 、DAE-DBC [18]。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
CAE-l2 cluster:在autoencoder中間加入了L2標準化以及k-means。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
DAE-DBC:先利用autoencoder降維,而後經過聚類方法判別異常值。
AutoEncoder
一個通用的自動編碼器由編碼器和解碼器組成,編碼器將原始數據映射到低維特徵空間,而解碼器試圖從投影的低維空間恢復數據。這兩種網絡的參數經過重構損失函數來學習。爲了使總體重構偏差最小化,保留的信息必須儘量與輸入實例(如正常實例)相關。
將自動編碼器用於異常檢測是基於正常實例比異常實例能從壓縮的特徵空間更好地被重構這一假設。 判別方式是計算重構偏差,若是
,則
爲異常,反之正常,
是須要定義的閾值。這裏說一下閾值的計算方法有不少,能夠經過訓練集結果的正態分佈計算,或者計算訓練集結果的min-max標準化等等。
典型案例:稀疏自動編碼器(sparse AE)、去噪自動編碼器(denoising AE)、收縮自動編碼器(contractive AE)、魯邦自動編碼器(Robust Deep AE)等。這類方法太多了,在這裏就不舉例了,基本原理很簡單。
該類方法的優勢是可以經過非線性方法捕捉複雜特徵,試圖找到正常實例的一種通用模式,缺點是如何選擇正確的壓縮程度,以及如何解決「過擬合」的問題(網絡擬合的太好以致於異常實例也「潛伏」在低維特徵空間中)。爲了解決這個缺點,有研究者使用正則化或者記憶矩陣等等方法。
Generative Models
這種方法一般旨在學習生成網絡G的潛在特徵空間,使潛在空間可以很好地捕捉到給定數據背後的常態。
將生成模型用於異常檢測是基於在生成網絡的潛在特徵空間中正常實例比異常實例可以更準確地被產生這一假設。 實際實例和生成實例之間的殘差被定義爲異常分數。
典型案例:AnoGAN、GANomaly、Wasserstein GAN、 Cycle GAN、VAE等。
該類方法的關鍵問題是如何設計合適的生成器和目標函數。
Predictability Modeling
基於預測模型的異常檢測方法經過使用時間窗內的歷史實例預測當前實例來學習特徵表示,這些特徵表示可以捕捉時間或序列的依賴關係,正常實例一般可以保持良好的依賴關係,能夠很好地被預測,而異常實例一般會違反這些依賴關係,使得不可預測。
將預測模型用於異常檢測是基於在與時間相關的序列中,正常實例比異常實例更容易被預測這一假設。 預測序列與實際序列之間的殘差被定義爲異常分數。
典型案例:自迴歸模型(Autoregressive)、ConvLSTM預測模型、Slow Feature Analysis(SFA)等。
也有一些結合的重構和預測的異常檢測模型,例如Composite LSTM [13] 、Composite ConvLSTM [14] 。
該類方法在工控數據集、視頻異常監控比較經常使用,有利於處理時間序列數據。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
基於遷移學習的異常檢測方法
遷移學習中數據遷移和特徵遷移可以被用於異常檢測,基於數據遷移:經過Data Augmentation生成合成數據擴大訓練集數量,從而更好地進行正常實例的表徵學習。基於特徵遷移:representation transfer,從相關問題中提取一些表徵層來提升異常檢測模型精度。
基於Deep Metric learning的異常檢測方法
經過度量學習的方法可以讓同類樣本之間的距離變小,異類樣本之間的距離變大,在異常檢測方法中能夠將數據映射到meric空間中,從而更好地分離異常值,並減小維度災難。目前的方法有:SCDML [17]、ADDML [16]等 。
SCDML : 爲了提取更多的判別特徵來優化聚類模型,在第一階段使用Siamese網絡,度量學習的損失函數爲對比損失( contrastive loss)。在第二階段使用k近鄰標籤更新策略,將未標記數據動態轉換爲有標記數據,充分發揮未標記數據的貢獻。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
ADDML:該方法經過最小化類似度偏差將數據映射到低維空間,目的是在度量空間中讓類似的實例更近。在測試階段,利用實例到中心的距離計算異常分數。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
參考
- [1] Chalapathy R, Chawla S. Deep learning for anomaly detection: A survey[J]. arXiv preprint arXiv:1901.03407, 2019.
- [2] Pang G, Shen C, Cao L, et al. Deep Learning for Anomaly Detection: A Review[J]. arXiv preprint arXiv:2007.02500, 2020.
- [3] Kiran B R, Thomas D M, Parakkal R. An overview of deep learning based methods for unsupervised and semi-supervised anomaly detection in videos[J]. Journal of Imaging, 2018, 4(2): 36.
- [4] Günter S, Schraudolph N N, Vishwanathan S V N. Fast iterative kernel principal component analysis[J]. Journal of Machine Learning Research, 2007, 8(Aug): 1893-1918.
- [5] Huber P J. Robust statistics[M]. John Wiley & Sons, 2004.
- [6] Zimek A, Schubert E, Kriegel H P. A survey on unsupervised outlier detection in high‐dimensional numerical data[J]. Statistical Analysis and Data Mining: The ASA Data Science Journal, 2012, 5(5): 363-387.
- [7] HubKim J S, Scott C D. Robust kernel density estimation[J]. The Journal of Machine Learning Research, 2012, 13(1): 2529-2565.
- [8] Xiong L, Póczos B, Schneider J G. Group anomaly detection using flexible genre models[C]//Advances in neural information processing systems. 2011: 1071-1079.
- [9] Chen Y, Zhou X S, Huang T S. One-class SVM for learning in image retrieval[C]//Proceedings 2001 International Conference on Image Processing (Cat. No. 01CH37205). IEEE, 2001, 1: 34-37.
- [10] Williams G, Baxter R, He H, et al. A comparative study of RNN for outlier detection in data mining[C]//2002 IEEE International Conference on Data Mining, 2002. Proceedings. IEEE, 2002: 709-712.
- [11] Ruff L, Vandermeulen R, Goernitz N, et al. Deep one-class classification[C]//International conference on machine learning. 2018: 4393-4402.
- [12] https://sites.google.com/view/kdd2020deepeye/home
- [13] Srivastava N, Mansimov E, Salakhudinov R. Unsupervised learning of video representations using lstms[C]//International conference on machine learning. 2015: 843-852.
- [14] Medel J R, Savakis A. Anomaly detection in video using predictive convolutional long short-term memory networks[J]. arXiv preprint arXiv:1612.00390, 2016.
- [15] Aytekin C, Ni X, Cricri F, et al. Clustering and unsupervised anomaly detection with l 2 normalized deep auto-encoder representations[C]//2018 International Joint Conference on Neural Networks (IJCNN). IEEE, 2018: 1-6.
- [16] Yilmaz S F, Kozat S S. Unsupervised Anomaly Detection via Deep Metric Learning with End-to-End Optimization[J]. arXiv preprint arXiv:2005.05865, 2020.
- [17] Li X, Yin H, Zhou K, et al. Semi-supervised clustering with deep metric learning and graph embedding[J]. World Wide Web, 2020, 23(2): 781-798.
- [18] Amarbayasgalan T, Jargalsaikhan B, Ryu K H. Unsupervised novelty detection using deep autoencoders with density based clustering[J]. Applied Sciences, 2018, 8(9): 1468.
- [19] Ruff, L., Kauffmann, J., Vandermeulen, R.A., Montavon, G., Samek, W., Kloft, M., Dietterich, T.G., & Muller, K. (2020). A Unifying Review of Deep and Shallow Anomaly Detection.
- [20] Chalapathy R, Menon A K, Chawla S. Anomaly detection using one-class neural networks[J]. arXiv preprint arXiv:1802.06360, 2018.