導航:首頁 > 網路問題 > 基於圖神經網路的異常檢測

基於圖神經網路的異常檢測

發布時間:2022-09-09 07:30:08

異常檢測有哪些主要的分析方法

1. 概率統計方法
在基於異常檢測技術的IDS中應用最早也是最多的一種方法。
首先要對系統或用戶的行為按照一定的時間間隔進行采樣,樣本的內容包括每個會話的登錄、退出情況,CPU和內存的佔用情況,硬碟等存儲介質的使用情況等。
將每次採集到的樣本進行計算,得出一系列的參數變數對這些行為進行描述,從而產生行為輪廓,將每次采樣後得到的行為輪廓與已有輪廓進行合並,最終得到系統和用戶的正常行為輪廓。IDS通過將當前採集到的行為輪廓與正常行為輪廓相比較,來檢測是否存在網路入侵行為。
2. 預測模式生成法
假設條件是事件序列不是隨機的而是遵循可辨別的模式。這種檢測方法的特點是考慮了事件的序列及其相互聯系,利用時間規則識別用戶行為正常模式的特徵。通過歸納學習產生這些規則集,並能動態地修改系統中的這些規則,使之具有較高的預測性、准確性。如果規則在大部分時間是正確的,並能夠成功地運用預測所觀察到的數據,那麼規則就具有高可信度。
3. 神經網路方法
基本思想是用一系列信息單元(命令)訓練神經單元,這樣在給定一組輸入後、就可能預測出輸出。與統計理論相比,神經網路更好地表達了變數間的非線性關系,並且能自動學習並更新。實驗表明UNIX系統管理員的行為幾乎全是可以預測的,對於一般用戶,不可預測的行為也只佔了很少的一部分。

⑵ 大數據科學家需要掌握的幾種異常值檢測方法

引言

異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。

1、異常值檢測研究背景

2、異常值檢測方法原理

3、異常值檢測應用實踐

異常值檢測研究背景

異常值,故名思議就是不同於正常值的值。 在數學上,可以用離群點來表述,這樣便可以將異常值檢測問題轉化為數學問題來求解。

異常值檢測在很多場景都有廣泛的應用,比如:

1、流量監測

互聯網上某些伺服器的訪問量,可能具有周期性或趨勢性:一般情況下都是相對平穩的,但是當受到某些黑客攻擊後,其訪問量可能發生顯著的變化,及早發現這些異常變化對企業而言有著很好的預防告警作用。

2、金融風控

正常賬戶中,用戶的轉賬行為一般屬於低頻事件,但在某些金融詐騙案中,一些嫌犯的賬戶就可能會出現高頻的轉賬行為,異常檢測系統如果能發現這些異常行為,及時採取相關措施,則會規避不少損失。

3、機器故障檢測

一個運行中的流水線,可能會裝有不同的感測器用來監測運行中的機器,這些感測器數據就反應了機器運行的狀態,這些實時的監測數據具有數據量大、維度廣的特點,用人工盯著看的話成本會非常高,高效的自動異常檢測演算法將能很好地解決這一問題。

異常值檢測方法原理

本文主要將異常值檢測方法分為兩大類:一類是基於統計的異常值檢測,另一類是基於模型的異常值檢測。

基於統計的方法  

基於模型的方法

1、基於統計的異常值檢測方法

常見的基於統計的異常值檢測方法有以下2種,一種是基於3σ法則,一種是基於箱體圖。

3σ法則  

箱體圖

3σ法則是指在樣本服從正態分布時,一般可認為小於μ-3σ或者大於μ+3σ的樣本值為異常樣本,其中μ為樣本均值,σ為樣本標准差。在實際使用中,我們雖然不知道樣本的真實分布,但只要真實分布與正太分布相差不是太大,該經驗法則在大部分情況下便是適用的。

箱體圖也是一種比較常見的異常值檢測方法,一般取所有樣本的25%分位點Q1和75%分位點Q3,兩者之間的距離為箱體的長度IQR,可認為小於Q1-1.5IQR或者大於Q3+1.5IQR的樣本值為異常樣本。

基於統計的異常檢測往往具有計算簡單、有堅實的統計學基礎等特點,但缺點也非常明顯,例如需要大量的樣本數據進行統計,難以對高維樣本數據進行異常值檢測等。

2、基於模型的異常值檢測

通常可將異常值檢測看作是一個二分類問題,即將所有樣本分為正常樣本和異常樣本,但這和常規的二分類問題又有所區別,常規的二分類一般要求正負樣本是均衡的,如果正負樣本不均勻的話,訓練結果往往會不太好。但在異常值檢測問題中,往往面臨著正(正常值)負(異常值)樣本不均勻的問題,異常值通常比正常值要少得多,因此需要對常規的二分類模型做一些改進。

基於模型的異常值檢測一般可分為有監督模型異常值檢測和無監督模型異常值檢測,比較典型的有監督模型如oneclassSVM、基於神經網路的自編碼器等。 oneclassSVM就是在經典的SVM基礎上改進而來,它用一個超球面替代了超平面,超球面以內的值為正常值,超球面以外的值為異常值。

經典的SVM  

1

 基於模型的方法

2

基於神經網路的自編碼器結構如下圖所示。

自編碼器(AE)

將正常樣本用於模型訓練,輸入與輸出之間的損失函數可採用常見的均方誤差,因此檢測過程中,當正常樣本輸入時,均方誤差會較小,當異常樣本輸入時,均方誤差會較大,設置合適的閾值便可將異常樣本檢測出來。但該方法也有缺點,就是對於訓練樣本比較相近的正常樣本判別較好,但若正常樣本與訓練樣本相差較大,則可能會導致模型誤判。

無監督模型的異常值檢測是異常值檢測中的主流方法,因為異常值的標注成本往往較高,另外異常值的產生往往無法預料,因此有些異常值可能在過去的樣本中根本沒有出現過, 這將導致某些異常樣本無法標注,這也是有監督模型的局限性所在。 較為常見的無監督異常值檢測模型有密度聚類(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一種典型的無監督聚類方法,對某些類型的異常值檢測也能起到不錯的效果。該演算法原理網上資料較多,本文不作詳細介紹。

IF演算法最早由南京大學人工智慧學院院長周志華的團隊提出,是一種非常高效的異常值檢測方法,該方法不需要對樣本數據做任何先驗的假設,只需基於這樣一個事實——異常值只是少數,並且它們具有與正常值非常不同的屬性值。與隨機森林由大量決策樹組成一樣,IsolationForest也由大量的樹組成。IsolationForest中的樹叫isolation tree,簡稱iTree。iTree樹和決策樹不太一樣,其構建過程也比決策樹簡單,因為其中就是一個完全隨機的過程。

假設數據集有N條數據,構建一顆iTree時,從N條數據中均勻抽樣(一般是無放回抽樣)出n個樣本出來,作為這顆樹的訓練樣本。

在樣本中,隨機選一個特徵,並在這個特徵的所有值范圍內(最小值與最大值之間)隨機選一個值,對樣本進行二叉劃分,將樣本中小於該值的劃分到節點的左邊,大於等於該值的劃分到節點的右邊。

這樣得到了一個分裂條件和左、右兩邊的數據集,然後分別在左右兩邊的數據集上重復上面的過程,直至達到終止條件。 終止條件有兩個,一個是數據本身不可再分(只包括一個樣本,或者全部樣本相同),另外一個是樹的高度達到log2(n)。 不同於決策樹,iTree在演算法裡面已經限制了樹的高度。不限制雖然也可行,但出於效率考慮,演算法一般要求高度達到log2(n)深度即可。

把所有的iTree樹構建好了,就可以對測試數據進行預測了。預測的過程就是把測試數據在iTree樹上沿對應的條件分支往下走,直到達到葉子節點,並記錄這過程中經過的路徑長度h(x),即從根節點,穿過中間的節點,最後到達葉子節點,所走過的邊的數量(path length)。最後,將h(x)帶入公式,其中E(.)表示計算期望,c(n)表示當樣本數量為n時,路徑長度的平均值,從而便可計算出每條待測數據的異常分數s(Anomaly Score)。異常分數s具有如下性質:

1)如果分數s越接近1,則該樣本是異常值的可能性越高;

2)如果分數s越接近0,則該樣本是正常值的可能性越高;

RCF演算法與IF演算法思想上是比較類似的,前者可以看成是在IF演算法上做了一些改進。針對IF演算法中沒有考慮到的時間序列因素,RCF演算法考慮了該因素,並且在數據樣本采樣策略上作出了一些改進,使得異常值檢測相對IF演算法變得更加准確和高效,並能更好地應用於流式數據檢測。

IF演算法

RCF演算法

上圖展示了IF演算法和RCF演算法對於異常值檢測的異同。我們可以看出原始數據中有兩個突變異常數據值,對於後一個較大的突變異常值,IF演算法和RCF演算法都檢測了出來,但對於前一個較小的突變異常值,IF演算法沒有檢測出來,而RCF演算法依然檢測了出來,這意味著RCF有更好的異常值檢測性能。

異常值檢測應用實踐

理論還需結合實踐,下面我們將以某應用從2016.08.16至2019.09.21的日活變化情況為例,對異常值檢測的實際應用場景予以介紹:

從上圖中可以看出該應用的日活存在著一些顯著的異常值(比如紅色圓圈部分),這些異常值可能由於活動促銷或者更新迭代出現bug導致日活出現了比較明顯的波動。下面分別用基於統計的方法和基於模型的方法對該日活序列數據進行異常值檢測。

基於3σ法則(基於統計)

RCF演算法(基於模型)

從圖中可以看出,對於較大的突變異常值,3σ法則和RCF演算法都能較好地檢測出來, 但對於較小的突變異常值,RCF演算法則要表現得更好。

總結

上文為大家講解了異常值檢測的方法原理以及應用實踐。綜合來看,異常值檢測演算法多種多樣 ,每一種都有自己的優缺點和適用范圍,很難直接判斷哪一種異常檢測演算法是最佳的, 具體在實戰中,我們需要根據自身業務的特點,比如對計算量的要求、對異常值的容忍度等,選擇合適的異常值檢測演算法。

接下來,個推也會結合自身實踐,在大數據異常檢測方面不斷深耕,繼續優化演算法模型在不同業務場景中的性能,持續為開發者們分享前沿的理念與最新的實踐方案。

⑶ 神經網路異常檢測方法和機器學習異常檢測方法對於入侵檢測的應用

神經網路異常檢測方法

神經網路入侵檢測方法是通過訓練神經網路連續的信息單元來進行異常檢測,信息單元指的是命令。網路的輸入為用戶當前輸入的命令和已執行過的W個命令;用戶執行過的命令被神經網路用來預測用戶輸入的下一個命令,如下圖。若神經網路被訓練成預測用戶輸入命令的序列集合,則神經網路就構成用戶的輪郭框架。當用這個神經網路預測不出某用戶正確的後繼命令,即在某種程度上表明了用戶行為與其輪廓框架的偏離,這時表明有異常事件發生,以此就能作異常入侵檢測。


上面式子用來分類識別,檢測異常序列。實驗結果表明這種方法檢測迅速,而且誤警率底。然而,此方法對於用戶動態行為變化以及單獨異常檢測還有待改善。復雜的相似度量和先驗知識加入到檢測中可能會提高系統的准確性,但需要做進一步工作。

⑷ IDS的分類

(1)按入侵檢測的手段、IDS的入侵檢測模型可分為基於網路和基於主機兩種。
1)基於主機模型
也稱基於系統的模型,它是通過分析系統的審計數據來發現可疑的活動,如內存和文件的變化等。其輸入數據主要來源於系統的審計日誌,一般只能檢測該主機上發生的入侵。
這種模型有以下優點:
一是性能價格比高:在主機數量較少的情況下,這種方法的性能價格比可能更高。
二是更加細致:這種方法可以很容易地監測一些活動,如對敏感文件、目錄、程序或埠的存取,而這些活動很難在基於協議的線索中發現。
三是視野集中:一旦入侵者得到了一個主機用戶名和口令,基於主機的代理是最有可能區分正常的活動和非法的活動的。
四是易於用戶剪裁:每一個主機有其自己的代理,當然用戶剪裁更方便了。
五是較少的主機:基於主機的方法有時不需要增加專門的硬體平台。
六是對網路流量不敏感:用代理的方式一般不會因為網路流量的增加而丟掉對網路行為的監視。
2)基於網路的模型
即通過連接在網路上的站點捕獲網上的包,並分析其是否具有已知的攻擊模式,以此來判別是否為入侵者。當該模型發現某些可疑的現象時也一樣會產生告警,並會向一個中心管理站點發出「告警」信號
基於網路的檢測有以下優點:
一是偵測速度快:基於網路的監測器通常能在微秒或秒級發現問題。而大多數基於主機的產品則要依靠對最近幾分鍾內審計記錄的 分析。
二是隱蔽性好:一個網路上的監測器不像一個主機那樣顯眼和易被存取,因而也不那麼容易遭受攻擊。由於不是主機,因此一個基於網路的監視器不用去響應ping,不允許別人存取其本地存儲器,不能讓別人運行程序,而且不讓多個用戶使用它。
三是視野更寬:基於網路的方法甚至可以作用在網路的邊緣上,即攻擊者還沒能接入網路時就被制止。
四是較少的監測器:由於使用一個監測器就可以保護一個共享的網段,所以你不需要很多的監測器。相反地,如果基於主機,則在每個主機上都需要一個代理,這樣的話,花費昂貴,而且難於管理。但是,如果在一個交換環境下,每個主機就得配一個監測器,因為每個主機都在自己的網段上。
五是占資源少:在被保護的設備上不用佔用任何資源。
這兩種模型具有互補性,基於網路的模型能夠客觀地反映網路活動,特別是能夠監視到主機系統審計的盲區;而基於主機的模型能夠更加精確地監視主機中的各種活動。基於網路的模型受交換網的限制,只能監控同一監控點的主機,而基於主機模型裝有IDS的監控主機可以對同一監控點內的所有主機進行監控。
(2)按入侵檢測的技術基礎可分為兩類:一種基於標志的入侵檢測(signature-based),另一種是基於異常情況的入侵檢測(anomaly-based)。
對於基於標識的檢測技術來說,首先要定義違背安全策略的事件的特徵,如網路數據包的某些頭信息。檢測主要判別這類特徵是否在所收集到的數據中出現,這有些類似殺毒軟體的工作原理。
而基於異常的檢測技術則是先定義一組系統「正常」情況的數值,如CPU利用率、內存利用率、文件校驗和等(這類數據可以人為定義,也可以通過觀察系統、並用統計的辦法得出),然後將系統運行時的數值與所定義的「正常」情況比較,得出是否有被攻擊的跡象。這種檢測方式的核心在於如何精確定義所謂的「正常」情況。
往往兩種檢測方法所得出的結論會有非常大的差異。基於標志的檢測技術的核心是維護一個知識庫。對於已知的攻擊,它可以詳細、准確的報告出攻擊類型,但是對未知攻擊卻效果有限,而且知識庫必須不斷更新。基於異常的檢測技術則無法准確判別出攻擊的手法,但它可以(至少在理論上可以)判別更廣范、甚至未發覺的攻擊。如果條件允許,兩者結合的檢測會達到更好的效果。
(3) 按輸入入侵檢測系統的數據的來源來分,可以分為三類:
1) 基於主機的入侵檢測系統:其輸入數據來源於系統的審計日誌,一般只能檢測該主機上發生的入侵;
2) 基於網路的入侵檢測系統:其輸入數據來源於網路的信息流,能夠檢測該網段上發生的網路入侵;
3) 採用上述兩種數據來源的分布式入侵檢測系統:它能夠同時分析來源於系統的審計日誌和來源於網路的信息流,這種系統一般由多個部件組成。
(4)按入侵檢測所採用的技術方法又可將其細分為下面四種方法:
一是基於用戶行為概率統計模型的入侵檢測方法:
這種入侵檢測方法是在對用戶歷史行為建模或在早期的證據或模型的基礎上,實時檢測用戶對系統的使用情況,根據系統內部保存的用戶行為概率統計模型進行檢測,當發現有可疑的用戶行為發生時,立即保持跟蹤並監測、記錄該用戶的行為。系統要根據每個用戶以前的歷史行為,生成每個用戶的歷史行為記錄庫,當用戶改變他們的行為習慣時,這種異常就會被檢測出來。
二是基於神經網路的入侵檢測方法:
這種方法是利用神經網路技術來進行入侵檢測。這種方法對用戶行為具有學習和自適應功能,能夠根據實際檢測到的信息有效地加以處理並做出是否有入侵行為的判斷。但該方法還不成熟,目前還沒有出現較為完善的產品。
三是基於專家系統的入侵檢測技術:
該技術根據安全專家對可疑行為的分析經驗來形成一套推理規則,然後在此基礎上建立相應的專家系統,由此專家系統自動進行對所涉及的入侵行為進行分析。該系統可以隨著經驗的積累而不斷自我學習,並進行規則的擴充和修正。
四是基於模型推理的入侵檢測技術:
該技術根據入侵者在進行入侵時所執行的某些行為程序的特徵,建立一種入侵行為模型,根據這種行為模型所代表的入侵行為特徵來判斷用戶執行的操作是否是屬於入侵行為。當然這種方法也是建立在對當前已知的入侵行為程序的基礎之上的,對未知的入侵方法所執行的行為程序的模型識別需要進一步的學習和擴展。
以上幾種方法每一種都不能保證能准確地檢測出變化多端的入侵行為。因此在網路安全防護中要充分衡量各種方法的利弊,綜合運用這些方法才能有效地檢測出入侵者的非法行為。

⑸ BP神經網路的原理的BP什麼意思

原文鏈接:http://tecdat.cn/?p=19936

在本教程中,您將學習如何在R語言中創建神經網路模型。

神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。

該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。

本教程將涵蓋以下主題:

⑹ 什麼是BP神經網路

BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。

⑺ 人工神經網路概念梳理與實例演示

人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,siri、Google Now等智能助手,推薦引擎——亞馬遜網站用於推薦商品的推薦引擎,Google和Facebook使用的廣告排名系統。最近,深度學習的一些進步將機器學習帶入公眾視野:AlphaGo 打敗圍棋大師李世石事件以及一些圖片識別和機器翻譯等新產品的出現。
在這部分中,我們將介紹一些強大並被普遍使用的機器學習技術。這當然包括一些深度學習以及一些滿足現代業務需求傳統方法。讀完這一系列的文章之後,你就掌握了必要的知識,便可以將具體的機器學習實驗應用到你所在的領域當中。
隨著深層神經網路的精度的提高,語音和圖像識別技術的應用吸引了大眾的注意力,關於AI和深度學習的研究也變得更加普遍了。但是怎麼能夠讓它進一步擴大影響力,更受歡迎仍然是一個問題。這篇文章的主要內容是:簡述前饋神經網路和遞歸神經網路、怎樣搭建一個遞歸神經網路對時間系列數據進行異常檢測。為了讓我們的討論更加具體化,我們將演示一下怎麼用Deeplearning4j搭建神經網路。
一、什麼是神經網路?
人工神經網路演算法的最初構思是模仿生物神經元。但是這個類比很不可靠。人工神經網路的每一個特徵都是對生物神經元的一種折射:每一個節點與激活閾值、觸發的連接。
連接人工神經元系統建立起來之後,我們就能夠對這些系統進行訓練,從而讓他們學習到數據中的一些模式,學到之後就能執行回歸、分類、聚類、預測等功能。
人工神經網路可以看作是計算節點的集合。數據通過這些節點進入神經網路的輸入層,再通過神經網路的隱藏層直到關於數據的一個結論或者結果出現,這個過程才會停止。神經網路產出的結果會跟預期的結果進行比較,神經網路得出的結果與正確結果的不同點會被用來更正神經網路節點的激活閾值。隨著這個過程的不斷重復,神經網路的輸出結果就會無限靠近預期結果。
二、訓練過程
在搭建一個神經網路系統之前,你必須先了解訓練的過程以及網路輸出結果是怎麼產生的。然而我們並不想過度深入的了解這些方程式,下面是一個簡短的介紹。
網路的輸入節點收到一個數值數組(或許是叫做張量多維度數組)就代表輸入數據。例如, 圖像中的每個像素可以表示為一個標量,然後將像素傳遞給一個節點。輸入數據將會與神經網路的參數相乘,這個輸入數據被擴大還是減小取決於它的重要性,換句話說,取決於這個像素就不會影響神經網路關於整個輸入數據的結論。
起初這些參數都是隨機的,也就是說神經網路在建立初期根本就不了解數據的結構。每個節點的激活函數決定了每個輸入節點的輸出結果。所以每個節點是否能夠被激活取決於它是否接受到足夠的刺激強度,即是否輸入數據和參數的結果超出了激活閾值的界限。
在所謂的密集或完全連接層中,每個節點的輸出值都會傳遞給後續層的節點,在通過所有隱藏層後最終到達輸出層,也就是產生輸入結果的地方。在輸出層, 神經網路得到的最終結論將會跟預期結論進行比較(例如,圖片中的這些像素代表一隻貓還是狗?)。神經網路猜測的結果與正確結果的計算誤差都會被納入到一個測試集中,神經網路又會利用這些計算誤差來不斷更新參數,以此來改變圖片中不同像素的重要程度。整個過程的目的就是降低輸出結果與預期結果的誤差,正確地標注出這個圖像到底是不是一條狗。
深度學習是一個復雜的過程,由於大量的矩陣系數需要被修改所以它就涉及到矩陣代數、衍生品、概率和密集的硬體使用問題,但是用戶不需要全部了解這些復雜性。
但是,你也應該知道一些基本參數,這將幫助你理解神經網路函數。這其中包括激活函數、優化演算法和目標函數(也稱為損失、成本或誤差函數)。
激活函數決定了信號是否以及在多大程度上應該被發送到連接節點。階梯函數是最常用的激活函數, 如果其輸入小於某個閾值就是0,如果其輸入大於閾值就是1。節點都會通過階梯激活函數向連接節點發送一個0或1。優化演算法決定了神經網路怎麼樣學習,以及測試完誤差後,權重怎麼樣被更准確地調整。最常見的優化演算法是隨機梯度下降法。最後, 成本函數常用來衡量誤差,通過對比一個給定訓練樣本中得出的結果與預期結果的不同來評定神經網路的執行效果。
Keras、Deeplearning4j 等開源框架讓創建神經網路變得簡單。創建神經網路結構時,需要考慮的是怎樣將你的數據類型匹配到一個已知的被解決的問題,並且根據你的實際需求來修改現有結構。
三、神經網路的類型以及應用
神經網路已經被了解和應用了數十年了,但是最近的一些技術趨勢才使得深度神經網路變得更加高效。
GPUs使得矩陣操作速度更快;分布式計算結構讓計算能力大大增強;多個超參數的組合也讓迭代的速度提升。所有這些都讓訓練的速度大大加快,迅速找到適合的結構。
隨著更大數據集的產生,類似於ImageNet 的大型高質量的標簽數據集應運而生。機器學習演算法訓練的數據越大,那麼它的准確性就會越高。
最後,隨著我們理解能力以及神經網路演算法的不斷提升,神經網路的准確性在語音識別、機器翻譯以及一些機器感知和面向目標的一些任務等方面不斷刷新記錄。
盡管神經網路架構非常的大,但是主要用到的神經網路種類也就是下面的幾種。
3.1前饋神經網路
前饋神經網路包括一個輸入層、一個輸出層以及一個或多個的隱藏層。前饋神經網路可以做出很好的通用逼近器,並且能夠被用來創建通用模型。
這種類型的神經網路可用於分類和回歸。例如,當使用前饋網路進行分類時,輸出層神經元的個數等於類的數量。從概念上講, 激活了的輸出神經元決定了神經網路所預測的類。更准確地說, 每個輸出神經元返回一個記錄與分類相匹配的概率數,其中概率最高的分類將被選為模型的輸出分類。
前饋神經網路的優勢是簡單易用,與其他類型的神經網路相比更簡單,並且有一大堆的應用實例。
3.2卷積神經網路
卷積神經網路和前饋神經網路是非常相似的,至少是數據的傳輸方式類似。他們結構大致上是模仿了視覺皮層。卷積神經網路通過許多的過濾器。這些過濾器主要集中在一個圖像子集、補丁、圖塊的特徵識別上。每一個過濾器都在尋找不同模式的視覺數據,例如,有的可能是找水平線,有的是找對角線,有的是找垂直的。這些線條都被看作是特徵,當過濾器經過圖像時,他們就會構造出特徵圖譜來定位各類線是出現在圖像的哪些地方。圖像中的不同物體,像貓、747s、榨汁機等都會有不同的圖像特徵,這些圖像特徵就能使圖像完成分類。卷積神經網路在圖像識別和語音識別方面是非常的有效的。
卷積神經網路與前饋神經網路在圖像識別方面的異同比較。雖然這兩種網路類型都能夠進行圖像識別,但是方式卻不同。卷積神經網路是通過識別圖像的重疊部分,然後學習識別不同部分的特徵進行訓練;然而,前饋神經網路是在整張圖片上進行訓練。前饋神經網路總是在圖片的某一特殊部分或者方向進行訓練,所以當圖片的特徵出現在其他地方時就不會被識別到,然而卷積神經網路卻能夠很好的避免這一點。
卷積神經網路主要是用於圖像、視頻、語音、聲音識別以及無人駕駛的任務。盡管這篇文章主要是討論遞歸神經網路的,但是卷積神經網路在圖像識別方面也是非常有效的,所以很有必要了解。
3.3遞歸神經網路
與前饋神經網路不同的是,遞歸神經網路的隱藏層的節點里有內部記憶存儲功能,隨著輸入數據的改變而內部記憶內容不斷被更新。遞歸神經網路的結論都是基於當前的輸入和之前存儲的數據而得出的。遞歸神經網路能夠充分利用這種內部記憶存儲狀態處理任意序列的數據,例如時間序列。
遞歸神經網路經常用於手寫識別、語音識別、日誌分析、欺詐檢測和網路安全。
遞歸神經網路是處理時間維度數據集的最好方法,它可以處理以下數據:網路日誌和伺服器活動、硬體或者是醫療設備的感測器數據、金融交易、電話記錄。想要追蹤數據在不同階段的依賴和關聯關系需要你了解當前和之前的一些數據狀態。盡管我們通過前饋神經網路也可以獲取事件,隨著時間的推移移動到另外一個事件,這將使我們限制在對事件的依賴中,所以這種方式很不靈活。
追蹤在時間維度上有長期依賴的數據的更好方法是用內存來儲存重要事件,以使近期事件能夠被理解和分類。遞歸神經網路最好的一點就是在它的隱藏層裡面有「內存」可以學習到時間依賴特徵的重要性。
接下來我們將討論遞歸神經網路在字元生成器和網路異常檢測中的應用。遞歸神經網路可以檢測出不同時間段的依賴特徵的能力使得它可以進行時間序列數據的異常檢測。
遞歸神經網路的應用
網路上有很多使用RNNs生成文本的例子,遞歸神經網路經過語料庫的訓練之後,只要輸入一個字元,就可以預測下一個字元。下面讓我們通過一些實用例子發現更多RNNs的特徵。
應用一、RNNs用於字元生成
遞歸神經網路經過訓練之後可以把英文字元當做成一系列的時間依賴事件。經過訓練後它會學習到一個字元經常跟著另外一個字元(「e」經常跟在「h」後面,像在「the、he、she」中)。由於它能預測下一個字元是什麼,所以它能有效地減少文本的輸入錯誤。
Java是個很有趣的例子,因為它的結構包括很多嵌套結構,有一個開的圓括弧必然後面就會有一個閉的,花括弧也是同理。他們之間的依賴關系並不會在位置上表現的很明顯,因為多個事件之間的關系不是靠所在位置的距離確定的。但是就算是不明確告訴遞歸神經網路Java中各個事件的依賴關系,它也能自己學習了解到。
在異常檢測當中,我們要求神經網路能夠檢測出數據中相似、隱藏的或許是並不明顯的模式。就像是一個字元生成器在充分地了解數據的結構後就會生成一個數據的擬像,遞歸神經網路的異常檢測就是在其充分了解數據結構後來判斷輸入的數據是不是正常。
字元生成的例子表明遞歸神經網路有在不同時間范圍內學習到時間依賴關系的能力,它的這種能力還可以用來檢測網路活動日誌的異常。
異常檢測能夠使文本中的語法錯誤浮出水面,這是因為我們所寫的東西是由語法結構所決定的。同理,網路行為也是有結構的,它也有一個能夠被學習的可預測模式。經過在正常網路活動中訓練的遞歸神經網路可以監測到入侵行為,因為這些入侵行為的出現就像是一個句子沒有標點符號一樣異常。
應用二、一個網路異常檢測項目的示例
假設我們想要了解的網路異常檢測就是能夠得到硬體故障、應用程序失敗、以及入侵的一些信息。
模型將會向我們展示什麼呢?
隨著大量的網路活動日誌被輸入到遞歸神經網路中去,神經網路就能學習到正常的網路活動應該是什麼樣子的。當這個被訓練的網路被輸入新的數據時,它就能偶判斷出哪些是正常的活動,哪些是被期待的,哪些是異常的。
訓練一個神經網路來識別預期行為是有好處的,因為異常數據不多,或者是不能夠准確的將異常行為進行分類。我們在正常的數據里進行訓練,它就能夠在未來的某個時間點提醒我們非正常活動的出現。
說句題外話,訓練的神經網路並不一定非得識別到特定事情發生的特定時間點(例如,它不知道那個特殊的日子就是周日),但是它一定會發現一些值得我們注意的一些更明顯的時間模式和一些可能並不明顯的事件之間的聯系。
我們將概述一下怎麼用 Deeplearning4j(一個在JVM上被廣泛應用的深度學習開源資料庫)來解決這個問題。Deeplearning4j在模型開發過程中提供了很多有用的工具:DataVec是一款為ETL(提取-轉化-載入)任務准備模型訓練數據的集成工具。正如Sqoop為Hadoop載入數據,DataVec將數據進行清洗、預處理、規范化與標准化之後將數據載入到神經網路。這跟Trifacta』s Wrangler也相似,只不過它更關注二進制數據。
開始階段
第一階段包括典型的大數據任務和ETL:我們需要收集、移動、儲存、准備、規范化、矢量話日誌。時間跨度的長短是必須被規定好的。數據的轉化需要花費一些功夫,這是由於JSON日誌、文本日誌、還有一些非連續標注模式都必須被識別並且轉化為數值數組。DataVec能夠幫助進行轉化和規范化數據。在開發機器學習訓練模型時,數據需要分為訓練集和測試集。
訓練神經網路
神經網路的初始訓練需要在訓練數據集中進行。
在第一次訓練的時候,你需要調整一些超參數以使模型能夠實現在數據中學習。這個過程需要控制在合理的時間內。關於超參數我們將在之後進行討論。在模型訓練的過程中,你應該以降低錯誤為目標。
但是這可能會出現神經網路模型過度擬合的風險。有過度擬合現象出現的模型往往會在訓練集中的很高的分數,但是在遇到新的數據時就會得出錯誤結論。用機器學習的語言來說就是它不夠通用化。Deeplearning4J提供正則化的工具和「過早停止」來避免訓練過程中的過度擬合。
神經網路的訓練是最花費時間和耗費硬體的一步。在GPUs上訓練能夠有效的減少訓練時間,尤其是做圖像識別的時候。但是額外的硬體設施就帶來多餘的花銷,所以你的深度學習的框架必須能夠有效的利用硬體設施。Azure和亞馬遜等雲服務提供了基於GPU的實例,神經網路還可以在異構集群上進行訓練。
創建模型
Deeplearning4J提供ModelSerializer來保存訓練模型。訓練模型可以被保存或者是在之後的訓練中被使用或更新。
在執行異常檢測的過程中,日誌文件的格式需要與訓練模型一致,基於神經網路的輸出結果,你將會得到是否當前的活動符合正常網路行為預期的結論。
代碼示例
遞歸神經網路的結構應該是這樣子的:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(
.seed(123)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
.weightInit(WeightInit.XAVIER)
.updater(Updater.NESTEROVS).momentum(0.9)
.learningRate(0.005)
.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
.(0.5)
.list()
.layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())
.layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)
.activation("softmax").nIn(10).nOut(numLabelClasses).build())
.pretrain(false).backprop(true).build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
下面解釋一下幾行重要的代碼:
.seed(123)
隨機設置一個種子值對神經網路的權值進行初始化,以此獲得一個有復驗性的結果。系數通常都是被隨機的初始化的,以使我們在調整其他超參數時仍獲得一致的結果。我們需要設定一個種子值,讓我們在調整和測試的時候能夠用這個隨機的權值。
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
決定使用哪個最優演算法(在這個例子中是隨機梯度下降法)來調整權值以提高誤差分數。你可能不需要對這個進行修改。
.learningRate(0.005)
當我們使用隨機梯度下降法的時候,誤差梯度就被計算出來了。在我們試圖將誤差值減到最小的過程中,權值也隨之變化。SGD給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。

⑻ 綜述:廣義的分布外檢測(異常檢測、開集識別、OOD檢測)

Generalized Out-of-Distribution Detection: A Survey Jingkang Yang, Kaiyang Zhou, Yixuan Li, and Ziwei Liu https://github.com/Jingkang50/OODSurvey

分布外(Out-Of-Distribution,OOD)檢測對確保機器學習系統的可靠性和安全性至關重要。例如,在自動駕駛中,當遇到它從未見過、無法給出安全決策的非常規情形或物體,我們需要駕駛系統發出警告並且將控制權交給人類。自2017年被提出起,這個問題越來越受研究者關注,各種解決方案層出不窮,大致包括:基於分類的、基於密度的、基於重構的、基於距離的方法。與此同時,其他幾個問題在動機和方法上與分布外檢測緊密相關,這些問題包括:異常檢測(Anomaly Detection,AD)、新類檢測(Novelty Detection)、開集識別(Open Set Recognition,OSR)和離群檢測(Outlier Detection,OD)。盡管他們各自定義和問題設定不同,這些問題經常使讀者和實踐者感到困惑,這導致有些現有工作誤用了這些術語。實際上,AD、ND、OSR、OOD、OD這五個問題能夠統一在廣義的分布外檢測框架下,都可以視作分布外檢測的特例或子任務,並且能夠輕易地被區分。這篇綜述通過總結最新的技術發展對這五個問題做了深入的回顧,並以該領域的開放挑戰和潛在的研究方向作結。

可信的視覺識別系統不僅僅在已知的情境下能給出精確預測,還應該能檢測到未知的樣本並且丟棄或將它們交給用戶來做安全地處理。

比如,一個訓練良好的食物分類器應該丟棄像用戶自拍照之類的非食物圖片,而不是胡亂判定其屬於某已知的食物類別。在安全要求極高的應用中,比如無人駕駛,系統應該在它碰到不尋常的、未在訓練中見到的情形或物體時發出警告並將控制權交給司機。

大多數現有機器學習模型都基於封閉世界假設(the closed-world assumption)來訓練,即測試集和訓練集獨立同分布,或者說兩者來源於同一分布(in-distribution)。然而,當模型被部署在開放世界場景(open-world scenario)中,測試樣本的分布可以是取自不同於訓練集分布的分布的(out of distribution),因而需要被謹慎處理。分布的變化可能是語義漂移(比如,OOD樣本取自別的類別)、協變數漂移(也稱輸入漂移,比如OOD樣本取自其他領域??)。

只考慮語義漂移和協變數漂移兩類漂移。

異常檢測目的在於在測試階段檢測異常的樣本,「異常」指的是偏離預定義的「正常」。這種偏離可能是協變數漂移或是語義漂移導致的。異常檢測可以分為兩個子任務:

與異常檢測的區別 :1) 動機上,新類檢測中並不像異常檢測把沒見過的「新」樣本看做錯誤的或是有害的,而是將珍視這些新樣本為後續模型的學習資源;2)新類檢測首要關注的是語義漂移;3)新類檢測中,沒有限制ID樣本屬於單個類,在訓練集中可以有多個類別的樣本。

新類檢測目的在於檢測出不屬於任何訓練類別的測試樣本。檢測到的新奇樣本通常預備用於未來程序的構建,比如特異性更強的分析、當前模型的增量學習等。依據訓練類別數量的差異,新類檢測分為:

OSR需要一個多類別分類器來同時1)精確地分類 訓練類別的 測試樣本(ID);2)識別出測試樣本中 不屬於訓練類別 的樣本(OOD)。

OSR = multi-class ND

需要模型拒絕標簽遷移的樣本以保證預測可靠性和安全性

分布外檢測目的在於檢測測試樣本

當某個樣本顯著區別於其他的樣本時,認為它是「離群」的。在異常檢測、新類檢測、開集識別、分布外檢測的問題設定中,都存在這訓練-測試的流程,要挑出測試中出現的不屬於訓練分布的樣本。

而離群檢測無「訓練分布」、「測試分布」,而是直接挑出所有可見樣本中顯著區別於其他的那些樣本。

給定同構的ID數據,最直接的方法是1)基於密度的方法,這些方法估計ID的密度,拒絕那些偏離估計的OOD的測試樣本。其他的方法包括:2)依靠圖片重構的質量來識別異常樣本,3)直接學習一個決策邊界來區分ID和OOD樣本,4)基於距離的方法,5)基於元學習的方法

基於密度的方法嘗試去建模正常數據(ID數據)的分布,這種做法基於一個實踐假設:異常的測試樣本在估計的密度模型下游較低的概率值,而正常樣本概率值較高。

參數密度估計假設ID樣本的密度能夠被表示為某種定義好的分布。一種方法是在訓練數據上擬合一個多變數高斯分布,並且度量測試樣本與訓練樣本的期望之間的馬氏距離(協方差距離,計算兩個未知樣本集的相似度的方法。與歐氏距離不同的是它考慮到各種特性之間的聯系)。其他的工作採用了更復雜的假設,認為訓練分布是混合的高斯分布或是泊松分布等。

非參數密度估計考慮了更貼合實際的情形:預定義的分布不能夠建模真實分布。可以簡單地用直方圖對訓練分布進行建模。核密度估計(KDE)進一步使用核函數作為離散直方圖的連續替代版,它可以靈活地使用點權重和帶寬去控制估計的分布。

雖然經典的密度估計方法在很多任務上獲得了很好的AD性能,但它們更適合低維任務。
對於計算機視覺任務中的高維數據,這些方法的計算性和可伸縮性受到影響。為緩解維數災難,有些方法通過特徵工程降維[277],[278]。

通過由潛在嵌入重建出輸入,自編碼器能學到無標簽數據的高效表達。變分自編碼器將輸入的圖片編碼為服從高斯分布的潛在向量。習得的潛在嵌入可被視為輸入的低維表示。傳統密度估計方法可以應用在這些深度表示之上。

生成對抗網路由一個生成網路和一個判別網路構成,兩者在零和博弈中相互競爭。典型地,生成網路學習從潛在空間到所研究數據分布的映射,而判別網路試圖分辨生成器生成的數據和真實數據。然而,不同於基於自編碼器/變分自編碼器的範式,少了一個編碼器使得GAN難以直接為一張輸入圖片找到相應的嵌入。針對這個問題,ADGAN [90] 對一個給定的樣本,在潛在空間搜索一個好的表示。如果找不到這樣的表示,這個樣本被認為是異常的。該方法計算代價極高。

規范化的流描述了一個概率分布經過一系列可逆映射的轉化過程。通過重復施加變數變化的規則,初始的密度「流」過了一系列可逆映射。因此,使用規范化的流的方法能夠直接估計輸入空間的可能性。基於流的方法有優雅的數學表示,但是它們同樣僅對低維特徵敏感。若不進行降維,基於流的方法計算代價高。

除通過生成式模型獲取可視化嵌入外,一些方法主要通過擴充模型容量來增加提取到的特徵的表示能力,這或許可以讓正常(ID)能被更精確地特徵化為密度估計。這些策略包括數據增強,對抗訓練,蒸餾,損失函數增強,使用淺表/局部特徵。

基於能量的方法使用一個標量能量評分來表述變數概率密度,這個標量採用非標准化的負對數概率,

然而,和標準的深度學習模型相比,訓練基於能量的方法代價昂貴,因為馬爾可夫鏈蒙特卡羅法(MCMC,在概率空間,通過隨機采樣估算興趣參數的後驗分布)采樣和估計需要積分運算。

為解決這個難題,研究者提出了評分匹配方法和隨機梯度之類的方法來支持高效訓練。

現有工作也探索了使用頻域分析方法做異常檢測。人類通過圖片的低頻信息來理解圖片,而CNN更多依賴高頻信息來做決策。人們提出了CNN核平滑和譜引導的數據增強之類的方法去抑制高頻分量的影響。還有一些工作發現,對低頻分量的對抗攻擊也很難被檢測到,因此提出

基於頻率的方法專注於感官異常檢測(尤其是檢測對抗樣本),或許不適用於語義異常檢測。

基於重構的方法的核心在於在ID數據上訓練得到的編解碼器(encoder-decoder)框架通常對ID和OOD樣本返回不同的效果。

模型表現的差異可以被用作異常檢測的指標。模型表現的差異可以用特徵空間的差異或是重構誤差來度量。

系數重構假定每個正常樣本都能被有限個基礎函數精確重構,而異常數據的重構開銷則更大,因此生成了稠密表示。稀疏表示的典型技巧包括基於L1正則的核PCA和低階嵌入網路。

重構誤差方法依賴於以下假設:在正常數據上訓練得到的重構模型在輸入為正常測試樣本時會輸出更高質量的結果。深度重構模型(包括自編碼器AE、變分自編碼器VAE、生成對抗網路GAN和U-Net等)都能夠被用作這類方法的backbone。

除去這種結合AE/VAE和重構誤差這種標准做法,其他方法使用了更加精細的策略,比如通過memorized normality重構,調整模型架構、部分/有條件的重構。

在半監督設定下的異常檢測中,CoRA分別在ID樣本和OOD樣本上訓練,得到兩個自編碼器。這兩個自編碼器的重構誤差被用作異常檢測的指標。

GAN中的判別器本質上是 通過計算重構誤差 實現異常檢測。更進一步,GAN的變種,比如去雜訊的GAN和類別-條件GAN通過 增加重構難度 獲得了更好的性能。有些方法 利用重構圖片在下游任務中的表現來進一步放大異常樣本的重構誤差 。集成也能夠優化模型性能。

異常檢測、單類別的新類檢測通常被形式化為無監督學習問題,將所有的ID樣本看做一類。

【283】做了完全有監督的異常檢測

半監督的異常檢測中,模型訓練時用到了無標簽數據。

PU學習針對這個問題被提出

自監督方法3.3.3

單個類別分類直接學到一個決策邊界

未完成

共性:ID樣本的類別(訓練類別)為多個。

差異:開集識別還需要精確地給ID樣本分類,而新類檢測只需得到區分ID/OOD的二分類器。

由於開集識別和多類別新類檢測的訓練類別為多個,大多數方法都是基於分類的。其餘方法包括基於ID原型的以及基於重構的。極少數模型是基於密度的。

為了解決

開集識別和多類新類檢測都關注ID樣本包含多個類別的情形。分類問題中,一般採用獨熱編碼來編碼類別信息。然而,獨熱編碼忽略了類別間的內在聯系。舉例來說,「狗」-「貓」,「狗」-「車」之間有相同的距離顯然不合情理。有些工作考慮這一點,嘗試利用新類的標簽空間上的信息來解決這個新類檢測問題。重分配大的語義空間,形成已知類別的層次化分類

基於標簽組織重設,自上而下的分類策略和分組softmax訓練被證實有效。應一組工作使用詞向量嵌入來自動地構建標簽空間。【169】中稀疏獨熱標簽被幾組產生自不同NLP模型的稠密詞向量替代,形成了多個回歸頭來做魯棒的訓練。

測試時,標簽(同所有不同頭給出的嵌入向量距離最小的標簽被作為預測結果輸出,

如果這個最小距離超出閾值,這個樣本被分類為「新」。近期工作進一步採用語言-圖片預訓練模型輸出的特徵來更好地檢測新類,圖片編碼空間中也包含來自標簽空間的豐富特徵。)

基於距離的開集識別方法需要「原型」來實現class-conditional。維持ID樣本的分類性能。

基於類別的聚類和原型(prototyping)操作在分類器提取到的視覺特徵上進行。

OOD樣本能夠通過計算樣本與聚類之間的距離而被識別。

有些方法還引入了對比學習來為已知類別學到更加緊密的聚類,從而拉遠ID和OOD樣本之間的距離。

CROSR【177】通過拼接分類器和用於距離計算的重構模型給出的可視化嵌入來在拓展的特徵空間中得到強化的特徵。除了使用分類器給出的特徵,GMVAE【178】使用重構VAE來提取特徵,將訓練集的嵌入建模為一個多中心的混合高斯分布以便後續基於距離的操作。使用最近鄰的分類器也適用於開集識別問題。通過存儲訓練樣本,最近鄰距離比值被用於在測試中識別未知樣本。

基於重構的方法希望ID和OOD樣本被重構時表現不同。這種差異能夠在潛在特徵空間或重構圖片的像素空間中被捕捉到。

通過將已知類別的圖片轉化為稀疏表示,開集樣本由於相對稠密能被識別出。用於稀疏編碼的技巧包括:疏密指數(sparsity concentration index)【180】和核虛空間方法(kernel null space method)【181,182】。

通過固定在ID樣本訓練得到的多分類視覺編碼器來維持在ID樣本上的分類性能,C2AE訓練一個以表情按向量為條件的解碼器,使用極值理論估計重構後的圖片來區分未知類別。後續的工作使用條件高斯分布,使得不同潛在特徵逼近類內(class-wise)高斯模型,以達到在分類已知類別樣本的同時能拒絕未知類別樣本。其他方法生成反事實(counterfactual)圖片來幫助模型更關注語義。對抗防禦【186】也以這種思路去增強模型魯棒性。

後處理檢測的方法優點在於無需修改訓練程序和目標就可以輕易應用。這一點對現實生產環境中的OOD檢測方法很重要。早期的ODIN是一個使用temperature scaling和輸入擾動來放大ID/OOD差別的後處理方法。該方法中,一個足夠大的temperature有很強的平滑作用,能夠將softmax值轉換到logit空間(),從而有效區分ID和OOD樣本。注意這種方式與信心校準不同,它採用了更溫和的T

而校準更關注表達ID樣本真實的正確概率

ODIN的評分最大化了ID和OOD樣本之間的差異,可能從預測信心的角度看不再有意義。

基於這個見解,近期【189】提出使用能量分值來做OOD檢測,該方法不需要超參數並且性能與ODIN相當甚至更好。能量函數將logit輸出通過便捷的 logsumexp 運算符映射為標量。能量值相對低的測試樣本被認為是ID的,反之為OOD。

【55】進一步提出了聯合能量值(JointEnergy score)

為OOD檢測定製的基於信心的方法能夠通過設計信心估計分支和類別數據增強(結合leaving-out留一策略、對抗訓練、更強的數據增強、不確定性建模、利用理想深度的特徵)來實現。

特別地,為了增強對協變數偏移的敏感性,一些方法關注神經網路中間層的隱藏表示。泛化的ODIN通過使用DeConf-C作為訓練目標來擴展ODIN,選擇ID數據上的擾動尺度作為超參。

由於ODIN需要模型訓練過程,它未被歸類到後處理方法。

為了得到質量更優的隱藏層特徵以便進行密度估計,分層的 Mahalanobis距離、 Gram Matrix等技巧被引入。

OOD檢測的另一分支利用收集到的OOD樣本集(離群樣本集),在訓練中幫助模型學到ID和OOD的差異。

總的來說,採用離群點暴露的OOD檢測能達到明顯更優的性能。然而,其性能受給定OOD樣本和真實OOD樣本間相關性強弱影響明顯,如何將OOD由已經暴露的OOD泛化到更廣泛的OOD還需進一步探索。

離群點暴露方法依賴於OOD訓練數據可獲取這一強假設,該條件在實際可能不成立。在OOD數據不可獲取時,一些方法嘗試去合成OOD樣本從而讓ID和OOD可區分。現有工作利用GAN來生成OOD訓練樣本並使模型輸出均勻(uniform 正態???)的預測,從而在低密度區域生成邊界樣本,或者類似地,生成高置信度的OOD樣本。

現有的OOD檢測方法主要依賴輸出或特徵空間來給出OOD評分,而忽視了梯度空間的信息。ODIN【188】首次探索了使用梯度信息檢測OOD。ODIN使用經過預處理的輸入,其預處理為施加由輸入梯度得來的細微擾動。ODIN擾動的目標在於增強模型對預測標簽的信心從而增加任何給定輸入的softmax值。最終,可以找到能使ID和OOD輸入的softmax評分差異更大的擾動,從而使得它們更能被區分,使得OOD檢測性能更好。ODIN僅隱式地通過擾動來利用梯度。GradNorm則使用梯度向量的范數,從softmax輸出和正態概率分布的KL散度反向傳播。

貝葉斯模型是一類統計模型,應用貝葉斯法則來推測模型中所有的不確定性。其中,最有代表性的是貝葉斯神經網路,該方法通過馬爾可夫鏈蒙特卡洛方法、拉普拉斯方法、變分推斷來構成模型的認知不確定性,從模型的後驗分布中采樣。它們最明顯的缺陷在於預測不精確,計算代價高使得它們難以用於實際。近期工作嘗試了幾種less principled(理論性較弱??)的近似,包括 MC-dropout [224] 和深度融合 [225],299] 用於更快、更好地估計不確定性。這些方法在OOD不確定性估計上不太有競爭力。更進一步的探索需要在保留貝葉斯原理的優勢的同時,採用自然梯度變分推理,從而能夠採用實用且可負擔的現代深度學習訓練。狄利克雷先驗網路Dirichlet Prior Network (DPN) 也在OOD檢測中被運用,使用對模型不確定性、數據不確定性以及分布不確定性三個不同來源的不確定性進行不確定性建模,出現了一系列工作 [227], [228], [229]。

近期工作推進了更貼近實際應用的大規模OOD檢測。研究的兩個方向是:將OOD檢測擴展到大的語義空間、利用大型的預訓練模型。例如,【168】指出,在基於CIFAR benchmark數據得到的方法在語義空間更大的benchmark ImageNet上並不奏效,這強調了在大型真實設定下評估OOD檢測的必要性。為解決上述挑戰,MOS的關鍵理念是將大的語義空間解構為有相似概念的更小的群組,這簡化了已知和未知數據之間的決策邊界。強有力的預訓練模型在各種任務、模態都達到了驚人的性能。同期的工作 [171], [230], [231] 證實預訓練過的transformer在特定的困難的OOD任務上性能顯著改善。

OOD檢測領域中,基於密度的方法用一些概率模型顯式地建模分布內數據,並將低密度區域的測試數據標記為OOD。即使OOD檢測在分布內數據為多類別的情形下和異常檢測不同,3.1.2節中的密度估計方法能夠通過將分布內數據統一成一個整體而直接適用於OOD檢測。當分布內含多個類別時,class-conditional高斯分布能夠顯式地建模分布內數據,因而分布外樣本能夠根據輸出的預測概率而被識別【207】。基於流的方法 [92], [232], [233], [234]也可被用於概率建模。直接估計OOD概率似乎是一種自然的解決方法,也有一些方法 [235], [236], [237] 通過給OOD樣本輸出更高的概率預測值來實現OOD檢測。【238】嘗試使用likelihood ratio來解決這個問題。【239】發現,對輸入復雜度,概率值存在明顯偏差,提出了一種基於概率值比例的方法來削減輸入復雜度的影響。近期的方法轉而使用新的評分,例如likelihood regret【240】或是集成多個密度模型【236】。整體上,生成式模型的訓練和優化難度幾乎是不可接受的,它們的性能也往往落後於基於分類的方法(3.3)

基於距離的方法基本理念在於,測試中OOD樣本應當相對遠離分布內類別的中心(centroid)或原型(prototype)。【207】使用相對所有類別中心的最小Mahalanobis距離來檢測。一個後續工作【241】將圖片分為前景和背景,再計算這兩個空間間的Mahalanobis距離比例。一些工作使用測試樣本特徵和類別特徵間的餘弦相似度來確定OOD樣本【242】、【243】。被訓練特徵的的第一奇異向量一維的子空間

更進一步,其他工作利用了徑向基函數核距離(distance with radial basis function kernel)、輸入的嵌入向量到類別中心的歐拉距離。

OOD檢測領域自出現以來發展迅速,其解決方案從基於分類的、基於密度的、再到基於距離的。在多類別設定下,典型的OOD檢測是開集識別問題(第4節),在類別空間Y中精確分類分布內的測試樣本,並且丟棄語義不被Y所支持的分布外樣本。然而,OOD檢測包含了更廣泛的學習任務(比如,多標簽分類)和解法(比如,密度估計和離群點暴露)。一些方法放寬了開集檢測的限制條件,並且達到了更強的性能。

離群檢測需要所有樣本可見,其目標是檢測出那些顯著偏離大多數的分布的樣本。離群檢測方法通常是轉導式的,而不是歸納式的。 [13], [14], [15], [16]綜述主要回顧了數據挖掘領域的離群檢測方法。以下主要回顧離群檢測方法,尤其是為計算機視覺設計的使用深度神經網路的方法。即使深度學習方法極少能直接解決離群檢測問題,數據清洗程序(從開集臟數據學習的先決條件)和開集半監督學習的方法也在解決離群檢測問題。

離群檢測模型的基本理念是將整個數據集建模為一個高斯分布,將偏離均值超過三杯標准差的樣本標記為離群【300】【301】。其他帶參數的概率方法利用Mahalanobis距離[266] 和高斯混合模型 [302]來建模數據密度。和「三倍標准偏離」規則類似,四分位距也可通過構建傳統的無參數概率模型來檢測離群樣本【247】。為了魯棒和簡化,局部離群因子(local outlier factor)方法【248】藉助給定點的鄰居和它自身局部可達性的比值,去估計給定點的密度。RANSAC【252】迭代地估計數學模型的參數來擬合數據並且找到對估計貢獻較少的樣本作為離群點。

總體上,經典的異常檢測的密度方法比如,核密度估計(3.1節),也可應用於離群檢測。即便這些方法由於圖片數據維度太高而應用困難,也可以通過降維方法【253,254】和基於最近鄰的密度方法(3.1節)來緩解。

檢測離群的一個簡易方法是計數某特定半徑內的鄰居數量,或者度量第k近鄰居的距離【303,304】。以下主要介紹基於聚類的方法和基於圖的方法。

DBSCAN【255】依照基於距離的密度來積聚樣本構成聚類。處在主要聚類之外的樣本被識別為離群樣本。後續工作通過考慮聚類標簽的信心改良了聚類的方式【256】。

另一類方法利用數據點之間的關系,並構造鄰域圖[305], [306](或其變體[307]),利用圖的屬性和圖挖掘技巧來找到異常的樣本【257,258】,比如圖聚類[259], [260]、圖分割【308】、使用圖神經網路的標簽傳播【261】。

⑼ 信也科技發布的大規模動態圖數據集DGraph有什麼用

一方面可以作為驗證相關圖模型性能的標准數據,另一方面也可用於開展用戶畫像、網路分析等研究工作。為服務圖神經網路、圖挖掘、異常檢測等方向的研究人員提供真實場景的大規模數據。

閱讀全文

與基於圖神經網路的異常檢測相關的資料

熱點內容
電腦以前連接的網路 瀏覽:484
破解移動網路電視機頂盒第三軟體 瀏覽:541
增強數字網路安全意識 瀏覽:356
oppor11為什麼不能切換網路 瀏覽:787
手機瀏覽器網路異常 瀏覽:506
判斷網路運營商是哪個 瀏覽:521
蘋果手機轉數據一定要網路嗎 瀏覽:942
怎樣改vivo手機的網路 瀏覽:726
網路連接哪裡調出來 瀏覽:231
卡1不能設置首選網路類型 瀏覽:304
計算機網路要考什麼證 瀏覽:627
管理本地網路共享的app 瀏覽:617
網路機頂盒和電信機頂盒哪個好用嗎 瀏覽:235
怎麼知道電腦網路的連接是多少 瀏覽:148
計算機網路謝希仁視頻教程 瀏覽:843
積木教學法適合計算機網路學習嗎 瀏覽:85
電腦網路卡槽連接不上 瀏覽:982
無線網速最快的網路 瀏覽:152
徐州網路營銷ai智能營銷怎麼樣 瀏覽:37
在哪裡能看網路電影 瀏覽:882

友情鏈接