本篇文章是對論文 Deep Learning for Anomaly Detection: A Review 的精讀,一共會分為三次來講,如果你也是深度學習或者異常檢測未入門的同學,這篇文章也許會很适合你哦,那我們現在開始吧!目錄
論文簡介
發表資訊
作者資訊
論文摘要
文章結構
第一章:Introduction
異常檢測(Anomaly Detection)
深度異常檢測(Deep Anomaly Detection)
⭐️小結
第二章:Complexities and Challenges
Complexties
1.Unknownness
2. Heterogeneous anomaly classes.
3.Rarity and class imbalance
4.Diverse types of anomaly
🌸補充知識:異常類别
Challenges
1.Low anomaly detection recall rate
2.Anomaly detection in high-dimensional
3.Data-efficient learning of normality/abnormality
🌸補充知識:全/半/無/弱監督
4.Noise-resilient anomaly detection.
5.Detection of complex anomalies.
6.Anomaly explanation
🌸補充知識:端到端
⭐️小結
第三章:Addressing the challenges
Preliminaries
🌸補充學習:深度神經網絡
🌸補充學習:激活函數
總結
論文簡介
發表資訊
論文連結:https://dl.acm.org/doi/10.1145/3439950
ACM Computing Surveys, Vol. 54, No. 2, Article 38. Publication date: March 2021.
作者資訊
Guansong Pang 論文清單:dblp: Guansong Pang
Chunhua Shen 論文清單: https://dblp.uni-trier.de/pid/56/1673.html
兩人從2019年至今分别發表了十餘篇與Anomaly Detection相關的論文
論文摘要
Anomaly detection, a.k.a. outlier detection or novelty detection, has been a lasting yet active research area in various research communities for several decades. There are still some unique problem complexities and challenges that require advanced approaches. In recent years, deep learning enabled anomaly detection, i.e., deep anomaly detection, has emerged as a critical direction. This article surveys the research of deep anomaly detection with a comprehensive taxonomy, covering advancements in 3 high-level categories and 11 fine-grained categories of the methods. We review their key intuitions, objective functions, underlying assumptions, advantages, and disadvantages and discuss how they address the aforementioned challenges. We further discuss a set of possible future opportunities and new perspectives on addressing the challenges.
文章結構
對着這個文章結構圖,我們簡單了解一下這篇文章講了些什麼内容。一共是8章。
第一章 introduction 簡單介紹了什麼是異常檢測,以及什麼是深度異常檢測
第二章 problem and challenges 主要介紹了異常檢測中存在的4個複雜性問題,随後講了由于這些問題存在給深度異常檢測帶來了哪些挑戰,一共介紹了6個挑戰。這一部分也是本次論文分享的重點
第三章 addressing the challenges with deep anomaly detection 在這個章節中作者介紹了一些神經網絡的預備知識,引入了層次分類法,從模組化角度将深度異常檢測方法分為三個主要類别。
第四,五,六章 是分别詳細介紹三個類别第七章講了算法與資料集,最後一章是總結以及讨論未來的機會
總體來說:講述了目前深層檢測方法的形成,目标函數,基本假設,以及他們在解決異常檢測中一些挑戰上的弱點與優點,幫助我們更好的去了解為什麼需要深度異常檢測。本次的主要是對前三章的學習成果進行一個分享
第一章:Introduction
異常檢測(Anomaly Detection)
- Anomaly Detection,又名outlier detection or novelty detection
- 指的是檢測與大多數資料執行個體明顯偏離的資料執行個體的過程。
在網上看到一個比較有意思的圖檔,通過這張圖檔想強調的是,對于什麼是異常取決于訓練集。如果你給的訓練集隻有雷丘,那麼比卡丘就是“異常”;相反,如果你給的訓練集是比卡丘,那雷丘就是“異常”
異常檢測:「無監督或者弱監督下的非平衡資料多分類問題,并要求一定的解釋性」
這是在其他論文中看到的一句總結,最開始的時候看不太懂,學習了前兩章之後,回頭來看這句話覺得總結得很精辟
深度異常檢測(Deep Anomaly Detection)
- 用于異常檢測的深度學習,簡稱深度異常檢測(Deep Anomaly Detection)
- 旨在通過神經網絡來學習特征表示或 anomaly scores("異常點",指不平衡資料中較少的那一部分) ,以便進行異常檢測。
- 目前已經引入了大量深度異常檢測方法,在解決各種現實應用中的具有挑戰的檢測問題方面,表現出比傳統異常檢測明顯更好的性能。
⭐️小結
這一小節我們就快速地過一下,重點是第二章,第一節中提到的衆多概念在後面也會詳細解釋
第二章:Complexities and Challenges
在這個章節中作者讨論了異常檢測背後的一些獨特的問題的複雜性以及由此産生的大量未解決的挑戰
Complexties
一共介紹了異常檢測的四個複雜問題,我把他們總結為【未知】,【差異】,【稀少】,以及【多類】。前三個複雜點比較好了解是以就不贅述了,第四個部分會展開來分享
1.Unknownness
- 【未知】
異常與許多未知因素有關,例如,具有未知且突發性質的行為(新的恐怖襲擊、欺詐和網絡入侵)
它們在實際發生之前一直是未知的。
2. Heterogeneous anomaly classes.
- 【差異】:異構的異常類
異常是不規則的,一類異常可能表現出與另一類異常完全不同的異常特征。
比如視訊監控中,搶劫、交通事故、入室盜竊等異常事件在視覺上差别很大。
3.Rarity and class imbalance
- 【稀少】:稀有和類不平衡
正常執行個體占絕大部分而異常的執行個體通常是罕見的,異常執行個體的歸類通常比正常執行個體的歸類要難很多,這也加劇了類不平衡問題
知識點補充:類别不平衡問題:一類資料的總數遠小于另一類資料(負)的總數的問題
這裡作者想要論述的是,異常資料的總數遠遠小于正常資料的數量
4.Diverse types of anomaly
- 【多類】:不同種類的異常
作者在此處沒有對這三種類型進行詳細的論述,但是後文中還會繼續提到這些概念,是以參考了論文Anomaly detection: A survey 做了一個大概的了解
🌸補充知識:異常類别
1)Point anomaly
- 點異常:
- 如果單個資料執行個體相對于其餘資料可以被認為是異常的,那麼該執行個體被稱為點異常
圖檔來源于參考文獻[28]-Anomaly detection: A survey
點o1和o2以及區域o3中的點位于正常區域N1N2的邊界之外,他們是點異常
舉例: 對于【個人的信用卡交易金額】這個資料集來說,金額非常高的那一次交易便是一個點異常。
2)Conditional anomalies
- 條件異常:
- 如果資料執行個體在特定的上下文/條件中是異常的,但是在其他條件下不是,那麼它被稱為條件異常
圖檔來源于參考文獻[28]-Anomaly detection: A survey
時間t1的溫度與時間t2的溫度相同,但是發生在不同的上下文中,是以t2是條件異常,而t1不是異常
3)Group anomalies
- 集合異常:
- 如果相關資料執行個體的集合相對于整個資料集是異常的,則稱之為集合異常。
- 集合異常中的單個資料執行個體本身可能不是異常,但是它們作為一個集合一起出現是異常的
圖檔來源于參考文獻[28]-Anomaly detection: A survey
上圖是一個顯示人體心電圖輸出的例子,紅色标注的區域表示異常,因為相同的低值存在異常長的時間。但是對于該低值本身而言,它并不是異常值。
Challenges
上一小節描述的各種複雜性問題(【未知】,【差異】,【稀少】,【多類】)為異常檢測帶來了很多挑戰,下圖中描述的六點是由這些複雜性問題引起的挑戰。接下來會先展開介紹這六個挑戰。
1.Low anomaly detection recall rate
- 異常檢測召回率低:
- 因為異常很難識别,是以許多正常情況被錯誤地報告為異常,而真正複雜的異常卻容易被遺漏。
- 雖然多年來已經 引入了很多的異常檢測方法,但是目前最先進的方法,比如說無監督的方法在真實資料集上仍然經常導緻高誤報。如何減少誤報和提高檢測召回率是最重要也是最困難的挑戰之一。
無監督異常檢測在後文會補充介紹
2.Anomaly detection in high-dimensional
and/or not-independent data.
- 高緯度或非獨立資料集中的異常檢測
- 異常通常在低維空間中表現出明顯的異常特征,但在高維空間中變得隐藏且不引人注意。
- 很難從可能互相依賴的執行個體中檢測異常,例如通過時間、空間、基于圖形和其 他互相依賴關系。
3.Data-efficient learning of normality/abnormality
- 正常/異常的資料高效學習:
- 全監督異常檢測,收集大規模标記異常資料很困難
- 無監督異常檢測,很大程度上依賴于對異常分布的假設。
- 半監督異常檢測,更加适用,因為收集标記的正常資料和一小部分标記的異常資料往往并不難
- 弱監督異常檢測,适用于有一部分異常類的标簽,但是類标簽是不完整,或者不準确的場景
- 挑戰:
- 如何用少量的标記異常資料表達正常情況或非正常情況
- 如何訓練一個根據已有的少量的标記異常檢測出新異常的模型
上文中提到了全/半/弱/無監督等,在這裡先做補充學習,然後再來看這段話才比較好了解
參考:https://blog.csdn.net/limiyudianzi/article/details/78921450
🌸補充知識:全/半/無/弱監督
1)全監督學習(supervised learning):
- 概念:已知資料和這些資料一一對應的标簽,訓練一個智能算法,将新的輸入資料映射到标簽的過程。
- 說明:監督學習是最常見的學習問題之一,就是人們口中常說的分類問題。
- 舉例:比如已知一些圖檔是貓,一些圖檔不是貓,那麼訓練一個算法,當一個新的圖檔輸入算法的時候算法告訴我們這張圖檔是不是貓。
2)無監督學習(unsupervised learning):
- 概念:已知資料不知道任何标簽,按照一定的偏好,訓練一個智能算法,将所有的資料映射到多個不同标簽的過程。
- 說明:相對于有監督學習,無監督學習是一類比較困難的問題,所謂的按照一定的偏好,是比如高于某個高度,等人們認為屬于一類的事物應具有的一些特點。
- 舉例:貓和長頸鹿混雜在一起,算法會測量高度,發現動物們主要集中在兩個高度,一類動物身高30厘米左右,另一類動物身高兩米左右,那麼算法按照就近原則,高的那一類會被标記為長頸鹿,矮的那一類被标記為貓。
3)半監督學習(semi supervised learning) :
- 概念:已知資料和部分資料一一對應的标簽,有一部分資料的标簽未知,訓練一個智能算法,學習已知标簽和未知标簽的資料,将輸入資料映射到标簽的過程。
- 說明:半監督通常是應用于資料的标注非常困難的場景
- 舉例:比如說醫院的檢查結果,醫生也需要一段時間來判斷健康與否,可能隻有幾組資料知道是健康還是非健康,其他的隻有資料不知道是不是健康。
4)弱監督學習(weakly supervised learning):
- 概念:已知資料和這些資料一一對應的弱标簽,訓練一個智能算法,将輸入資料映射到一組更強的标簽的過程。
- 說明:标簽的強弱指的是标簽蘊含的資訊量的多少
- 舉例:比如相對于分割的标簽來說,分類的标簽就是弱标簽,如果我們知道一幅圖,告訴你圖上有一隻貓,然後需要你把貓在哪裡,貓和背景的分界在哪裡找出來,那麼這就是一個已知弱标簽,去學習強标簽的弱監督學習問題。
另外,還有一個在上文中沒有提到的強化學習也很重要
5)強化學習(reinforcement learning):
- 概念:智能算法在沒有人為指導的情況下,通過不斷的試錯來提升任務性能的過程。
- 說明:“試錯”需要有一個衡量标準
- 舉例:棋類遊戲中,我們并不知道棋手下一步棋是對是錯,不知道哪步棋是制勝的關鍵,但是我們知道結果是輸還是赢,如果算法這樣走最後的結果是勝利,那麼算法就學習記憶,如果按照那樣走最後輸了,那麼算法就學習以後不這樣走。
4.Noise-resilient anomaly detection.
- 抗噪聲異常檢測:
- 噪聲的數量可能與資料集顯著不同,并且噪聲執行個體可能不規則地分布在資料空間中
- 許多弱/半監督異常檢測方法前提是标記的訓練資料是幹淨的, 當存在大量噪聲時,這些檢測方法會變得很脆弱。
- 這裡的噪聲可能是錯誤标記的資料,也可能是未标記的異常。
5.Detection of complex anomalies.
- 複雜異常的檢測:
- 點異常➡️集合異常:現有的檢測方法多針對點異常,一個主要挑戰是将條件/集合異常的概念合并到異常模型中
- 單源異常➡️多源異常:一些異常隻有在考慮兩個或更多資料源時才能被檢測到,比如,音頻、圖像。
6.Anomaly explanation
- 異常解釋:
- 即一個資料為什麼會被識别為異常
- 對于複雜的模型,從特定的檢測方法中導出異常解釋是一個未解決的問題
- 在許多安全關鍵領域,如果異常檢測模型直接用作黑盒模型,可能會有一些主要風險。
- 舉例:犯罪檢測系統中,資料集合中被标記為犯罪的異常資料很少,這就會導緻檢測算法會傾向于對資料集内部那些同樣數量很少的行為檢測為異常,或者傾向于将數量較多的資料檢測為非異常。
到這裡,上文已經講述了異常檢測存在的四個複雜性問題,以及由這些問題帶來的六點挑戰,接下來作者表明了深度學習的方法相較于傳統的檢測方法而言能更好的應對這些挑戰。
- 深度方法
- 能夠實作整個異常檢測管道的端到端優化,能夠學習專門為異常檢測定制的表達式。
- 大大提高标記資料的使用率, 減少在完全監督中對大規模标記資料的需求
- 提供了将異常檢測和解釋統一到單一架構中的選項,對特定模型發現的異常做出更真實的解釋。
- 擅長從不同類型的資料中學習複雜的結構和關系。
🌸補充知識:端到端
end-to-end
參考:什麼是 end-to-end 神經網絡? - 知乎
- 端到端指的是輸入是原始資料,輸出是最後的結果
- 之前,輸入端并不是直接的原始資料,而是在原始資料中提取的特征
舉例:這一點在圖像問題上尤為突出,因為圖像像素數太多,資料次元高,會産生次元災難,是以原來一個思路是手工提取圖像的一些關鍵特征,這實際就是就一個降維的過程。
那麼問題來了,特征怎麼提?特征提取的好壞異常關鍵,甚至比學習算法還重要
舉例:對一系列人的資料分類,分類結果是性别,如果你提取的特征是頭發的顔色,無論分類算法如何,分類效果都不會好,如果你提取的特征是頭發的長短,這個特征就會好很多,但是還是會有錯誤,如果你提取了一個超強特征,比如染色體的資料,那你的分類基本就不會錯了。
- 這就意味着,特征需要足夠的經驗去設計,這在資料量越來越大的情況下也越來越困難。
- 于是就出現了端到端網絡,特征可以自己去學習,是以特征提取這一步也就融入到算法當中,不需要人來幹預了。
⭐️小結
在第二章中我們了解了異常檢測面臨的四個複雜性問題,可以總結為:
【未知】【異常】【稀少】和【多類】
以及帶來的六個挑戰,可以總結六個關鍵詞:
【召回率】【高緯度】【無監督】【噪聲】【集合/條件】【解釋】
第三章:Addressing the challenges
With deep anomaly detection
Preliminaries
第一部分主要是介紹深度神經網絡的基礎知識
這一段在論文中講得比較簡單,對我這種完全沒有深度學習基礎的同學來說比較晦澀,是以接下來這一部分也是先做補充學習,之後再來看論文中的論述就會好了解很多
🌸補充學習:深度神經網絡
神經網絡基于感覺機的擴充,首先來簡單了解感覺機
感覺機的模型,它是一個有若幹輸入和一個輸出的模型,輸出和輸入之間學習到一個線性關系,得到中間輸出結果:
接着是一個神經元激活函數:
進而得到我們想要的輸出結果1或者-1。這個模型隻能用于二進制分類,且無法學習比較複雜的非線性模型,是以在工業界無法使用。而神經網絡則在感覺機的模型上做了擴充,總結下主要有三點:
1)加入了隐藏層,隐藏層可以有多層,增強模型的表達能力,如下圖執行個體,當然增加了這麼多隐藏層模型的複雜度也增加了好多。
2)輸出層的神經元也可以不止一個輸出,可以有多個輸出,這樣模型可以靈活的應用于分類回歸,以及其他的機器學習領域比如降維和聚類等。多個神經元輸出的輸出層對應的一個執行個體如下圖,輸出層現在有4個神經元了。
3) 對激活函數做擴充,感覺機的激活函數是𝑠𝑖𝑔𝑛(𝑧)雖然簡單但是處理能力有限,是以神經網絡中一般使用的其他的激活函數,比如Sigmoid函數,即:
還有後來出現的tanx, softmax,和ReLU等。通過使用不同的激活函數,神經網絡的表達能力進一步增強。
對于各種常用的激活函數,在論文中也有提到,自然又産生了一個疑問,激活函數到底是什麼?在這裡先按下不表,學習完深度神經網絡的大緻概念之後再來解決這個問題。
到這裡,我們了解了神經網絡基于感覺機的擴充,而DNN可以了解為有很多隐藏層的神經網絡。
從DNN按不同層的位置劃分,DNN内部的神經網絡層可以分為三類,輸入層,隐藏層和輸出層。第i層的任意一個神經元一定與第i+1層的任意一個神經元相連。雖然DNN看起來很複雜,但是從小的局部模型來說,還是和感覺機一樣,即一個線性關系加上一個激活函數。
🌸補充學習:激活函數
參考:https://zhuanlan.zhihu.com/p/25279356
激活函數是用來加入非線性因素的,解決線性模型所不能解決的問題。
舉個例子,在下圖中想要将三角形和圓形分開,如果隻用線性關系是不可能的,但是加入了激活函數之後,引入非線性的要素,通過訓練就能将兩者很好地區分開
另一種說法:激活函數是對各個路徑的輸入求和之後進一步增強的函數
可以看到常用的幾個激活函數确實是有增強效果,個人覺得這個說法也有道理。
做好這兩個補充學習之後,我們再來看作者寫的這段話,就很好了解了
Deep neural networks leverage complex compositions of linear/non-linear functions that can be represented by a computational graph to learn expressive representations
深度神經網絡利用 可由計算圖表示的 線性/非線性函數 的複雜組合 來學習表達表示
Two basic building blocks of deep learning are activation functions and layers. Activation functions determine the output of computational graph nodes (i.e., neurons in neural networks) given some inputs.
深度學習的兩個基本構件是激活函數和層。給定一些輸入,激活函數決定計神經網絡中的神經元的輸出。
They can be linear or non-linear functions. Some popular activation functions include linear, sigmoid, tanh, Rectified Linear Unit (ReLU) and its variants.
它們可以是線性或非線性函數。一些流行的激活函數包括線性、sigmoid、tanh、整流線性單元(ReLU)及其變體。
A layer in neural networks refers to a set of neurons stacked in some forms.
神經網絡中的一層指的是以某種形式堆疊的一組神經元。
Commonly used layers include fully connected, convolutional and pooling, and recurrent layers. These layers can be leveraged to build different popular neural networks.
常用的層包括全連接配接層、卷積層和池層以及循環層。這些層可以用來建構不同的流行神經網絡(MLP,CNN,RNN,LSTM)。
fixme:接下來作者做了這樣一段描述,看了很多遍着實沒有看懂😂,我猜想應該是前置的知識沒有儲備好導緻的,所有這一段話在後面學好了之後再和大家分享。
總結
😄😋今天的論文分享到這裡就結束啦✿✿ヽ(°▽°)ノ✿,接下來做一個簡單的總結:
首先對作者以及整個文章的基本結構做了一個介紹,在第一章中,作者簡單介紹了異常檢測以及深度異常檢測。第二章講了四個關于異常檢測的複雜性難題,此處我們補充學習了三種類型的異常,接着講了由這些複雜性問題帶來的六個挑戰,這一部分補充學習了全/半/無/弱監督以及端到端的概念。第三章主要講了用深度異常檢測的方法去解決以上提到的六個挑戰,先學習了預備知識(深度神經網絡),随後會将目前存在的異常檢測模型分為三類分别讨論,這一部分會在下次的論文分享中一起學習,同時下次也會解決這次存留的疑問。
論文原文:https://download.csdn.net/download/qq_39328436/20223367
本篇論文分享ppt:https://download.csdn.net/download/qq_39328436/20223377
我開始讀研啦,以後會經常以這樣的形式精讀深度學習,神經網絡,異常檢測等方向的論文,如果這篇文章有幫助到你的話,麻煩👍❤️⭐️