導航:首頁 > 網路問題 > 深度神經網路異常檢測

深度神經網路異常檢測

發布時間:2022-10-01 20:54:06

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

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

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

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

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

本教程將涵蓋以下主題:

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

神經網路異常檢測方法

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


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

⑶ 演算法太多挑花眼

演算法太多挑花眼?教你如何選擇正確的機器學習演算法
機器學習演算法雖多,卻沒有什麼普適的解決方案。決策樹、隨機森林、樸素貝葉斯、深度網路等等等等,是不是有時候覺得挑花了眼呢?福利來啦~本文將教你慧眼識精,快速挑選出滿意的演算法!
機器學習既是一門科學,也是一種藝術。縱觀各類機器學習演算法,並沒有一種普適的解決方案或方法。事實上,有幾個因素會影響你對機器學習演算法的選擇。
有些問題是非常特別的,需要用一種特定的解決方法。例如,如果你對推薦系統有所了解,你會發現它是一類很常用的機器學習演算法,用來解決一類非常特殊的問題。而其它的一些問題則非常開放,可能需要一種試錯方法(例如:強化學習)。監督學習、分類、回歸等問題都是非常開放的,可以被用於異常檢測或建立更加廣泛的預測模型。
此外,我們在選擇機器學習演算法時所做出的一些決定與演算法的優化或技術層面關系並不大,而更多地與業務決策相關。下面,讓我們一起來看看有哪些因素能幫你縮小機器學習演算法的選擇范圍。
數據科學過程
在你開始研究不同的機器學習演算法前,你需要對自己擁有的數據、面對的問題及相關約束有清晰的了解。
理解你的數據
當我們決定使用哪種演算法時,我們所擁有的數據的類型和形態起著關鍵性的作用。有些演算法可以利用較小的樣本集合工作,而另一些演算法則需要海量的樣本。特定的演算法對特定類型的數據起作用。例如,樸素貝葉斯演算法對處理待分類的輸入特別有效,但是對於缺失值則一點都不敏感。
因此,你需要做到:
了解你的數據
1. 查看總結統計和數據可視化的結
百分比可以幫助你識別大多數數據的范圍
平均數和中位數可以描述集中趨勢
相關系數可以指出強的關聯性
2. 數據可視化
箱形圖可以識別出異常值
密度圖和直方圖可以顯示出數據的散布情況
散點圖可以描述二元關
數據清洗
1. 處理缺失值。缺失的數據對於某些模型的影響比對其它模型更大。即使是對於那些被用於處理缺失數據的模型來說,它們也可能對缺失數據很敏感(某些變數的缺失數據可能導致預測性能變差)
2. 選擇處理異常值的方法
異常值在多維數據中十分常見。
有些模型對異常值的敏感性比其它模型要低。通常而言,樹模型對於異常值的存在不太敏感。然而回歸模型、或者任何試圖使用方程的模型都會受到異常值的嚴重影響。
異常值可能是糟糕的數據收集造成的,也可能是合理的極值。
3. 數據需要被聚合嗎?
數據增強
1. 特徵工程是從原始數據中產生能夠被用於建模的數據的過程,可以起到以下幾種作用:
使模型更容易被解釋(如數據分箱(binning))
捕獲更復雜的關系(如神經網路)
減少數據冗餘並降低數據維度(如主成分分析(PCA))
重新縮放變數(如標准化或歸一化)
2. 不同的模型可能有不同的特徵工程的要求。有的模型有內置的特徵工程。
對問題進行分類
下一步是對問題進行分類。這是一個需要分兩步實現的過程。
1. 根據輸入分類:
如果你擁有的是帶標簽的數據,那麼這就是一個監督學習問題。
如果你擁有的是未標注過的數據,並且希望從中找到有用的結構,那麼這就是一個無監督學習問題。
如果你想要通過與環境的交互來優化一個目標函數,那麼這就是一個強化學習問題。
2. 根據輸出分類:
如果模型的輸出是一個(連續的)數字,那麼這就是一個回歸問題。
如果模型的輸出是一個類別,那麼這就是一個分類問題。
如果模型的輸出是一組用輸入數據劃分出的簇,那麼這就是一個聚類問題。
你想發現一個異常點嗎?此時你面對的就是一個異常檢測問題。
理解你要滿足的約束條
你需要考慮你能夠存儲數據的容量有多大?這取決於系統的存儲容量,你可能無法存儲若干 GB 大小的分類、回歸模型或者若干 GB 的用於聚類分析的數據。例如,在嵌入式系統中,你就會面臨這種情況。
對預測過程的速度是否有要求?在實時應用中,很顯然,盡快得出預測結果是十分重要的。例如,在自動駕駛問題中,應用必須盡可能快地對道路標志進行分類,以免發生交通事故。
對學習過程的速度是否有要求?在某些情況下,快速訓練模型是十分必要的:有時,你需要使用不同的數據集快速地實時更新你的模型。
尋找可用的演算法
當對自己的任務環境有了一個清晰的認識後,你就可以使用你所掌握的工具確定適用於待解決的問題並切實可行的演算法。一些影響你選擇模型的因素如下:
模型是否滿足業務目標
模型需要多少數據預處理工作
模型有多准確
模型的可解釋性如何
模型運行的速度有多快:構造模型需要多久?模型做出預測需要多長時間?
模型的可伸縮性如何
模型的復雜度是一個影響演算法選擇的重要標准。一般來說,一個更復雜的模型具備下列特徵:
它依賴於更多的特徵進行學習和預測(例如,使用十個而不是兩個特徵來預測目標)
它依賴於更復雜的特徵工程(例如,使用多項式特徵、交互特徵或主成分)
它有更大的計算開銷(例如,需要一個由 100 棵決策樹組成的隨機森林,而不是一棵單獨的決策樹)
除此之外,同樣的機器學習演算法可以基於參數的個數和某些超參數的選擇而變得更加復雜。例如:
回歸模型可以擁有更多的特徵,或者多項式項和交互項。
決策樹可以擁有更大或更小的深度。
將相同的演算法變得更加復雜增加了發生過擬合的幾率。

常用的機器學習演算法
線性回歸
這可能是機器學習中最簡單的演算法。例如,當你想要計算一些連續值,而不是將輸出分類時,可以使用回歸演算法。因此,當你需要預測一個正在運行的過程未來的值時,你可以使用回歸演算法。然而,當特徵冗餘,即如果存在多重共線性(multicollinearity)時,線性回歸就不太穩定。
在下列情況下可以考慮使用線性回歸:
從一個地方移動到另一個地方所需的時間
預測下個月某種產品的銷售情況
血液中的酒精含量對協調能力的影響
預測每個月禮品卡的銷售情況,並改善年收入的估算
Logistic 回歸
Logistic 回歸執行二進制分類,因此輸出二值標簽。它將特徵的線性組合作為輸入,並且對其應用非線性函數(sigmoid),因此它是一個非常小的神經網路的實例。
logistic回歸提供了許多方法對你的模型進行正則化處理,因此正如在樸素貝葉斯演算法中那樣,你不必擔心你的特徵是否相關。該模型還有一個很好的概率化的解釋。不像在決策樹或者支持向量機中那樣,你可以很容易地更新你的模型以獲取新的數據。如果你想要使用一個概率化的框架,或者你希望在未來能夠快速地將更多的訓練數據融合到你的模型中,你可以使用 logistic 回歸演算法。logistic 回歸還可以幫助你理解預測結果背後起作用的因素,它不完全是一個黑盒方法。
在下列情況下可以考慮使用 logistic 回歸演算法:
預測客戶流失
信用評分和欺詐檢測
評價市場營銷活動的效果
決策樹
決策樹很少被單獨使用,但是不同的決策樹可以組合成非常高效的演算法,例如隨機森林或梯度提升樹演算法。
決策樹很容易處理特徵交互,並且決策樹是一種非參數模型,所以你不必擔心異常值或者數據是否是線性可分的。決策樹演算法的一個缺點是,它們不支持在線學習,因此當你要使用新的樣本時,你不得不重新構建決策樹。決策樹的另一個缺點是,它很容易發生過擬合,而這就是像隨機森林(或提升樹)這樣的集成學習方法能夠派上用場的地方。決策樹也需要大量的內存空間(擁有的特徵越多,你的決策樹可能會越深、越大)
決策樹能夠很好地幫助你在諸多行動路徑中做出選擇:
做出投資決策
預測客戶流失
找出可能拖欠銀行貸款的人
在「建造」和「購買」兩種選擇間進行抉擇
銷售主管的資質審核
K-均值
有時,你完全沒有數據的標簽信息,並且你的目的是根據對象的特徵來為其打上標簽。這種問題被稱為聚類任務。聚類演算法可以在這種情況下被使用:例如,當你有一大群用戶,你希望根據他們共有的一些屬性將其劃分到一些特定的組中。
如果在你的問題聲明中有這樣的問題:例如,找出一群個體的組織形式,或將某些東西分組,或找出特定的組。這時,你就應該使用聚類演算法。
該方法最大的缺點是,K-均值演算法需要提前知道你的數據會有多少簇,因此這可能需要進行大量的試驗去「猜測」我們最終定義的簇的最佳個數——K。
主成分分析(PCA)
主成分分析能夠對數據進行降維。有時,你擁有各種各樣的特徵,這些特徵之間的相關性可能很高,而模型如果使用如此大量的數據可能會產生過擬合現象。這時,你可以使用主成分分析(PCA)技術。
主成分分析(PCA)能夠起作用的關鍵因素是:除了低維的樣本表徵,它還提供了各種變數的一種同步的低維表徵。同步的樣本和變數的表徵提供了一種能夠可視化地找到能夠表示一組樣本的特徵的變數的方法。
支持向量機
支持向量機(SVM)是一種在模式識別和分類問題中被廣泛應用的監督機器學習技術——當你的數據恰好有兩類時。
支持向量機准確率高,對於防止過擬合很好的理論保障。當你使用一個合適的核函數時,即使你的數據在基(低維)特徵空間中是線性不可分的,他們也可以很好地工作。支持向量機在文本分類問題中非常流行,在該問題中,輸入是一個維度非常高的空間是很正常的。然而,SVM 是一種內存密集型演算法,它很難被解釋,並且對其進行調優十分困難。
在下列現實世界的應用中,你可以使用支持向量機:
發現患有糖尿病等常見疾病的人
手寫字元識別
文本分類——將文章按照話題分類
股票市場價格預測
樸素貝葉斯
這是一種基於貝葉斯定理的分類技術,它很容易構建,非常適用於大規模數據集。除了結構簡單,據說樸素貝葉斯的表現甚至比一些復雜得多的分類方法更好。當 CPU 和內存資源有限時,樸素貝葉斯演算法也是一個很好的選項。
樸素貝葉斯非常簡單,你僅僅是在做大量的計數工作。如果樸素貝葉斯的條件獨立假設確實成立,樸素貝葉斯分類器的收斂速度會比 logistic 回歸這樣的判別模型更快,因此需要的訓練數據更少。即使樸素貝葉斯的假設不成立,樸素貝葉斯分類器往往也能很好地完成任務。如果你想使用一種快速的、簡單的、性能也不錯的模型,樸素貝葉斯是一個很好的選擇。這種演算法最大的缺點就是它不能學習到特徵之間的相互作用。
在下列真實世界的應用中,你可以使用樸素貝葉斯:
情感分析和文本分類
類似於 Netflix、Amazon 這樣的推薦系統
識別垃圾郵件
人臉識別
隨機森林
隨機森林是一種決策樹的集成方法。它能夠同時解決具有大規模數據集的回歸問題和分類問題,還有助於從數以千計的輸入變數中找出最重要的變數。隨機森林具有很強的可伸縮性,它適用於任何維數的數據,並且通常具有相當不錯的性能。此外,還有一些遺傳演算法,它們可以在具有最少的關於數據本身的知識的情況下,很好地擴展到任何維度和任何數據上,其中最簡單的實現就是微生物遺傳演算法。然而,隨機森林學習的速度可能會很慢(取決於參數設置),並且這種方法不能迭代地改進生成模型。
在下列現實世界的應用中,你可以使用隨機森林:
預測高危患者
預測零件在生產中的故障
預測拖欠貸款的人
神經網路
神經網路中包含著神經元之間連接的權重。這些權重是平衡的,逐次對數據點進行學習。當所有的權重都被訓練好後,如果需要對新給定的數據點進行回歸,神經網路可以被用於預測分類結果或一個具體數值。利用神經網路,可以對特別復雜的模型進行訓練,並且將其作為一種黑盒方法加以利用,而在訓練模型之前,我們無需進行不可預測的復雜特徵工程。通過與「深度方法」相結合,甚至可以採用更加不可預測的模型去實現新任務。例如,最近人們已經通過深度神經網路大大提升了物體識別任務的結果。深度學習還被應用於特徵提取這樣的非監督學習任務,也可以在人為干預更少的情況下,從原始圖像或語音中提取特徵。
另一方面,神經網路很難被解釋清楚,其參數設置也復雜地讓人難以置信。此外,神經網路演算法也都是資源密集型和內存密集型的。
SCIKIT 參考手冊
Scikit learning 為大家提供了一個非常深入的、解釋地很清楚的流程圖,它能夠幫助你選擇正確的演算法。我認為此圖十分方便。

結論
一般來說,你可以根據上面介紹的要點來篩選出一些演算法,但是要想在一開始就知道哪種方法最好是很難的。你最好多迭代幾次選擇演算法的過程。將你的數據輸入給那些你確定的潛在優秀機器學習演算法,通過並行或串列的方式運行這些演算法,最終評估演算法性能,從而選擇出最佳的演算法。
在最後,我想告訴你:為現實生活中的問題找到正確的解決方案,通常不僅僅是一個應用數學方法的問題。這要求我們對業務需求、規則和制度、相關利益者的關注點有所了解,並且具備大量的專業知識。在解決一個機器學習問題的同時,能夠結合並平衡這些問題是至關重要的,那些能做到這一點的人可以創造最大的價值。

⑷ 聚眾監測識別系統帶來哪些在線功能上的實現

聚眾監測識別系統基於智能視頻分析,自動對視頻圖像信息進行分析識別,無需人工干預,能對監控區域進行實時檢測,若檢測到異常人員聚集時,立即觸發報警,有效的協助管理人員工作,並最大限度地降低誤報和漏報現象,減少人力監管的成本。
1.告警精確度高
智能視頻分析系統內置智能演算法,能排除氣候與環境因素的干擾,有效彌補人工監控的不足,減少視頻監控系統整體的誤報率和漏報率。
2.實時識別報警
基於智能視頻分析和深度學習神經網路技術,對監控區域內的人員異常聚集行為進行識別,報警信息可顯示在監控客戶端界面,也可將報警信息推送到移動端。
3.全天候運行穩定可靠
智能視頻監控系統可對監控畫面進行7×24不間斷的分析,大大提高了視頻資源的利用率,減少人工監控的工作強度。
4.告警存儲功能
對監控區域內的人員異常聚集行為實時識別預警,並將報警信息存儲到伺服器資料庫中,包括時間、地點、快照、視頻等。

⑸ 什麼是BP神經網路

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

⑹ 綜述:廣義的分布外檢測(異常檢測、開集識別、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】。

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

引言

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

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演算法則要表現得更好。

總結

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

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

⑻ 吳恩達 卷積神經網路 CNN

應用計算機視覺時要面臨的一個挑戰是數據的輸入可能會非常大。例如一張 1000x1000x3 的圖片,神經網路輸入層的維度將高達三百萬,使得網路權重 W 非常龐大。這樣會造成兩個後果:

神經網路結構復雜,數據量相對較少,容易出現過擬合;
所需內存和計算量巨大。
因此,一般的神經網路很難處理蘊含著大量數據的圖像。解決這一問題的方法就是使用卷積神經網路

我們之前提到過,神經網路由淺層到深層,分別可以檢測出圖片的邊緣特徵、局部特徵(例如眼睛、鼻子等),到最後面的一層就可以根據前面檢測的特徵來識別整體面部輪廓。這些工作都是依託卷積神經網路來實現的。

卷積運算(Convolutional Operation)是卷積神經網路最基本的組成部分。我們以邊緣檢測為例,來解釋卷積是怎樣運算的。

圖片最常做的邊緣檢測有兩類:垂直邊緣(Vertical Edges)檢測和水平邊緣(Horizontal Edges)檢測。

比如檢測一張6x6像素的灰度圖片的vertical edge,設計一個3x3的矩陣(稱之為filter或kernel),讓原始圖片和filter矩陣做卷積運算(convolution),得到一個4x4的圖片。 具體的做法是,將filter矩陣貼到原始矩陣上(從左到右從上到下),依次可以貼出4x4種情況。 讓原始矩陣與filter重合的部分做element wise的乘積運算再求和 ,所得的值作為4x4矩陣對應元素的值。如下圖是第一個元素的計算方法,以此類推。

可以看到,卷積運算的求解過程是從左到右,由上到下,每次在原始圖片矩陣中取與濾波器同等大小的一部分,每一部分中的值與濾波器中的值對應相乘後求和,將結果組成一個矩陣。

下圖對應一個垂直邊緣檢測的例子:

如果將最右邊的矩陣當作圖像,那麼中間一段亮一些的區域對應最左邊的圖像中間的垂直邊緣。

下圖3x3濾波器,通常稱為垂直 索伯濾波器 (Sobel filter):

看看用它來處理知名的Lena照片會得到什麼:

現在可以解釋卷積操作的用處了:用輸出圖像中更亮的像素表示原始圖像中存在的邊緣。

你能看出為什麼邊緣檢測圖像可能比原始圖像更有用嗎?

回想一下MNIST手寫數字分類問題。在MNIST上訓練的CNN可以找到某個特定的數字。比如發現數字1,可以通過使用邊緣檢測發現圖像上兩個突出的垂直邊緣。

通常,卷積有助於我們找到特定的局部圖像特徵(如邊緣),用在後面的網路中。

假設輸入圖片的大小為 n×n,而濾波器的大小為 f×f,則卷積後的輸出圖片大小為 (n−f+1)×(n−f+1)。

這樣就有兩個問題:

為了解決這些問題,可以在進行卷積操作前,對原始圖片在邊界上進行填充(Padding),以增加矩陣的大小。通常將 0 作為填充值。

設每個方向擴展像素點數量為 p,則填充後原始圖片的大小為 (n+2p)×(n+2p),濾波器大小保持 f×f不變,則輸出圖片大小為 (n+2p−f+1)×(n+2p−f+1)。

因此,在進行卷積運算時,我們有兩種選擇:

在計算機視覺領域,f通常為奇數。原因包括 Same 卷積中 p=(f−1)/ 2 能得到自然數結果,並且濾波器有一個便於表示其所在位置的中心點。

卷積過程中,有時需要通過填充來避免信息損失,有時也需要通過設置 步長(Stride) 來壓縮一部分信息。

步長表示濾波器在原始圖片的水平方向和垂直方向上每次移動的距離。之前,步長被默認為 1。而如果我們設置步長為 2,則卷積過程如下圖所示:

設步長為 s,填充長度為p, 輸入圖片大小為n x n, 濾波器大小為f x f, 則卷積後圖片的尺寸為:

注意公式中有一個向下取整的符號,用於處理商不為整數的情況。向下取整反映著當取原始矩陣的圖示藍框完全包括在圖像內部時,才對它進行運算。

如果我們想要對三通道的 RGB 圖片進行卷積運算,那麼其對應的濾波器組也同樣是三通道的。過程是將每個單通道(R,G,B)與對應的濾波器進行卷積運算求和,然後再將三個通道的和相加,將 27 個乘積的和作為輸出圖片的一個像素值。

如果想同時檢測垂直和水平邊緣,或者更多的邊緣檢測,可以增加更多的濾波器組。例如設置第一個濾波器組實現垂直邊緣檢測,第二個濾波器組實現水平邊緣檢測。設輸入圖片的尺寸為 n×n×nc(nc為通道數),濾波器尺寸為 f×f×nc,則卷積後的輸出圖片尺寸為 (n−f+1)×(n−f+1)×n′c,n′c為濾波器組的個數。

與之前的卷積過程相比較,卷積神經網路的單層結構多了激活函數和偏移量;而與標准神經網路相比,濾波器的數值對應著權重 W[l],卷積運算對應著 W[l]與 A[l−1]的乘積運算,所選的激活函數變為 ReLU。

對於一個 3x3x3 的濾波器,包括偏移量 b(27+1)在內共有 28 個參數。不論輸入的圖片有多大,用這一個濾波器來提取特徵時,參數始終都是 28 個,固定不變。即選定濾波器組後,參數的數目與輸入圖片的尺寸無關。因此,卷積神經網路的參數相較於標准神經網路來說要少得多。這是 CNN 的優點之一。

圖像中的相鄰像素傾向於具有相似的值,因此通常卷積層相鄰的輸出像素也具有相似的值。這意味著,卷積層輸出中包含的大部分信息都是冗餘的。如果我們使用邊緣檢測濾波器並在某個位置找到強邊緣,那麼我們也可能會在距離這個像素1個偏移的位置找到相對較強的邊緣。但是它們都一樣是邊緣,我們並沒有找到任何新東西。池化層解決了這個問題。這個網路層所做的就是通過減小輸入的大小降低輸出值的數量。池化一般通過簡單的最大值、最小值或平均值操作完成。以下是池大小為2的最大池層的示例:

在計算神經網路的層數時,通常只統計具有權重和參數的層,因此池化層通常和之前的卷積層共同計為一層。

圖中的 FC3 和 FC4 為全連接層,與標準的神經網路結構一致。

個人推薦 一個直觀感受卷積神經網路的網站 。

相比標准神經網路,對於大量的輸入數據,卷積過程有效地減少了 CNN 的參數數量,原因有以下兩點:

-參數共享(Parameter sharing):特徵檢測如果適用於圖片的某個區域,那麼它也可能適用於圖片的其他區域。即在卷積過程中,不管輸入有多大,一個特徵探測器(濾波器)就能對整個輸入的某一特徵進行探測。

-稀疏連接(Sparsity of connections):在每一層中,由於濾波器的尺寸限制,輸入和輸出之間的連接是稀疏的,每個輸出值只取決於輸入在局部的一小部分值。

池化過程則在卷積後很好地聚合了特徵,通過降維來減少運算量。

由於 CNN 參數數量較小,所需的訓練樣本就相對較少,因此在一定程度上不容易發生過擬合現象。並且 CNN 比較擅長捕捉區域位置偏移。即進行物體檢測時,不太受物體在圖片中位置的影響,增加檢測的准確性和系統的健壯性。

在神經網路可以收斂的前提下,隨著網路深度增加,網路的表現先是逐漸增加至飽和,然後迅速下降

需要注意,網路退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網路也比稍淺層的網路的訓練錯誤更高,如下圖所示。

這一點並不符合常理:如果存在某個 K層網路是當前F的最優的網路,我們構造更深的網路。那麼K之後的層數可以擬合成恆等映射,就可以取得和F一直的結果。如果K不是最佳層數,那麼我們比K深,可以訓練出的一定會不差於K的。總而言之,與淺層網路相比,更深的網路的表現不應該更差。因此,一個合理的猜測就是, 對神經網路來說,恆等映射並不容易擬合。

也許我們可以對網路單元進行一定的改造,來改善退化問題?這也就引出了殘差網路的基本思路

既然神經網路不容易擬合一個恆等映射,那麼一種思路就是構造天然的恆等映射。

實驗表明,殘差網路 很好地解決了深度神經網路的退化問題 ,並在ImageNet和CIFAR-10等圖像任務上取得了非常好的結果,同等層數的前提下殘差網路也 收斂得更快 。這使得前饋神經網路可以採用更深的設計。除此之外, 去除個別神經網路層,殘差網路的表現不會受到顯著影響 ,這與傳統的前饋神經網路大相徑庭。

2018年的一篇論文,The Shattered Gradients Problem: If resnets are the answer, then what is the question,指出了一個新的觀點,盡管殘差網路提出是為了解決梯度彌散和網路退化的問題, 它解決的實際上是梯度破碎問題

作者通過可視化的小型實驗(構建和訓練一個神經網路發現,在淺層神經網路中,梯度呈現為棕色雜訊(brown noise),深層神經網路的梯度呈現為白雜訊。在標准前饋神經網路中,隨著深度增加, 神經元梯度的相關性(corelation)按指數級減少 (1 / 2^L) ;同時, 梯度的空間結構也隨著深度增加被逐漸消除 。這也就是梯度破碎現象。

梯度破碎為什麼是一個問題呢?這是因為許多優化方法假設梯度在相鄰點上是相似的,破碎的梯度會大大減小這類優化方法的有效性。另外,如果梯度表現得像白雜訊,那麼某個神經元對網路輸出的影響將會很不穩定。

相較標准前饋網路, 殘差網路中梯度相關性減少的速度從指數級下降到亞線性級 ) (1 / sqrt(L)) ,深度殘差網路中,神經元梯度介於棕色雜訊與白雜訊之間(參見上圖中的c,d,e);殘差連接可以 極大地保留梯度的空間結構 。殘差結構緩解了梯度破碎問題。

1x1 卷積指濾波器的尺寸為 1。當通道數為 1 時,1x1 卷積意味著卷積操作等同於乘積操作。
而當通道數更多時,1x1 卷積的作用實際上類似全連接層的神經網路結構,從而降低(或升高,取決於濾波器組數)數據的維度。

池化能壓縮數據的高度(nH)及寬度(nW),而 1×1 卷積能壓縮數據的通道數(nC)。在如下圖所示的例子中,用 filters個大小為 1×1×32 的濾波器進行卷積,就能使原先數據包含的 32個通道壓縮為 filters 個。

在這之前,網路大都是這樣子的:

也就是卷積層和池化層的順序連接。這樣的話,要想提高精度,增加網路深度和寬度是一個有效途徑,但也面臨著參數量過多、過擬合等問題。(當然,改改超參數也可以提高性能)

有沒有可能在同一層就可以提取不同(稀疏或不稀疏)的特徵呢(使用不同尺寸的卷積核)?於是,2014年,在其他人都還在一味的增加網路深度時(比如vgg),GoogleNet就率先提出了卷積核的並行合並(也稱Bottleneck Layer),如下圖。

和卷積層、池化層順序連接的結構(如VGG網路)相比,這樣的結構主要有以下改進:

按照這樣的結構來增加網路的深度,雖然可以提升性能,但是還面臨計算量大(參數多)的問題。為改善這種現象,GooLeNet借鑒Network-in-Network的思想,使用1x1的卷積核實現降維操作(也間接增加了網路的深度),以此來減小網路的參數量(這里就不對兩種結構的參數量進行定量比較了),如圖所示。

最後實現的inception v1網路是上圖結構的順序連接

由於卷積這門課的其他內容和計算機視覺關系比較密切。對我理解推薦系統幫助不大。所以這個系列就到這里。吳恩達的課還是很好的,作業和課和測驗我都認真做啦。

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

人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,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給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。

閱讀全文

與深度神經網路異常檢測相關的資料

熱點內容
天城軟體在電腦網路異常 瀏覽:509
網路世界會有哪些不安全因素 瀏覽:773
隱藏wifi找不到網路怎麼回事 瀏覽:326
怎麼找到哪個網路是自己的 瀏覽:919
網路測速27mb是多少 瀏覽:234
計算機網路傳輸介質排行 瀏覽:709
小天才沒網路怎麼設置流量 瀏覽:214
網路營銷產品定價策略 瀏覽:665
智慧機頂盒網路怎麼設置 瀏覽:61
蘋果無手機卡無法連接網路 瀏覽:425
天津ip網路中心軟體 瀏覽:151
螢石雲怎麼配置雙頻網路 瀏覽:289
有哪些網路視頻平台 瀏覽:502
2g網路接入點怎麼設置快 瀏覽:416
做網路銷售的出路在哪裡 瀏覽:162
太倉網路營銷廣告 瀏覽:658
手機網路功能怎麼關閉 瀏覽:290
網路直播大屏幕手機是什麼 瀏覽:481
安廣網路手機客戶端 瀏覽:461
蚌埠快手網路推廣哪裡靠譜 瀏覽:672

友情鏈接