當前位置:首頁 » 電腦故障 » 基於神經網路的異常檢測實戰
擴展閱讀
用電腦做簡歷要網路嗎 2025-06-23 09:30:52
蘋果平板同花順軟體 2025-06-23 09:21:17

基於神經網路的異常檢測實戰

發布時間: 2022-08-04 06:28:39

A. 什麼是BP神經網路

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

B. 寫一篇3千字左右的異常入侵檢測方法的小論文

2: 入侵檢測系統(IDS)概念

1980年,James P.Anderson 第一次系統闡述了入侵檢測的概念,並將入侵行為分為外部滲透、內部滲透和不法行為三種,還提出了利用審計數據監視入侵活動的思想[1]。即其之後,1986年Dorothy E.Denning提出實時異常檢測的概念[2]並建立了第一個實時入侵檢測模型,命名為入侵檢測專家系統(IDES),1990年,L.T.Heberlein等設計出監視網路數據流的入侵檢測系統,NSM(Network Security Monitor)。自此之後,入侵檢測系統才真正發展起來。
Anderson將入侵嘗試或威脅定義為:潛在的、有預謀的、未經授權的訪問信息、操作信息、致使系統不可靠或無法使用的企圖。而入侵檢測的定義為[4]:發現非授權使用計算機的個體(如「黑客」)或計算機系統的合法用戶濫用其訪問系統的權利以及企圖實施上述行為的個體。執行入侵檢測任務的程序即是入侵檢測系統。入侵檢測系統也可以定義為:檢測企圖破壞計算機資源的完整性,真實性和可用性的行為的軟體。
入侵檢測系統執行的主要任務包括[3]:監視、分析用戶及系統活動;審計系統構造和弱點;識別、反映已知進攻的活動模式,向相關人士報警;統計分析異常行為模式;評估重要系統和數據文件的完整性;審計、跟蹤管理操作系統,識別用戶違反安全策略的行為。入侵檢測一般分為三個步驟:信息收集、數據分析、響應。
入侵檢測的目的:(1)識別入侵者;(2)識別入侵行為;(3)檢測和監視以實施的入侵行為;(4)為對抗入侵提供信息,阻止入侵的發生和事態的擴大;

3: 入侵檢測系統模型

美國斯坦福國際研究所(SRI)的D.E.Denning於1986年首次提出一種入侵檢測模型[2],該模型的檢測方法就是建立用戶正常行為的描述模型,並以此同當前用戶活動的審計記錄進行比較,如果有較大偏差,則表示有異常活動發生。這是一種基於統計的檢測方法。隨著技術的發展,後來人們又提出了基於規則的檢測方法。結合這兩種方法的優點,人們設計出很多入侵檢測的模型。通用入侵檢測構架(Common Intrusion Detection Framework簡稱CIDF)組織,試圖將現有的入侵檢測系統標准化,CIDF闡述了一個入侵檢測系統的通用模型(一般稱為CIDF模型)。它將一個入侵檢測系統分為以下四個組件:
事件產生器(Event Generators)
事件分析器(Event analyzers)
響應單元(Response units)
事件資料庫(Event databases)
它將需要分析的數據通稱為事件,事件可以是基於網路的數據包也可以是基於主機的系統日誌中的信息。事件產生器的目的是從整個計算機環境中獲得事件,並向系統其它部分提供此事件。事件分析器分析得到的事件並產生分析結果。響應單元則是對分析結果做出反應的功能單元,它可以做出切斷連接、修改文件屬性等強烈反應。事件資料庫是存放各種中間和最終數據的地方的通稱,它可以是復雜的資料庫也可以是簡單的文本文件。

4: 入侵檢測系統的分類

現有的IDS的分類,大都基於信息源和分析方法。為了體現對IDS從布局、採集、分析、響應等各個層次及系統性研究方面的問題,在這里採用五類標准:控制策略、同步技術、信息源、分析方法、響應方式。
按照控制策略分類
控制策略描述了IDS的各元素是如何控制的,以及IDS的輸入和輸出是如何管理的。按照控制策略IDS可以劃分為,集中式IDS、部分分布式IDS和全部分布式IDS。在集中式IDS中,一個中央節點控制系統中所有的監視、檢測和報告。在部分分布式IDS中,監控和探測是由本地的一個控制點控制,層次似的將報告發向一個或多個中心站。在全分布式IDS中,監控和探測是使用一種叫「代理」的方法,代理進行分析並做出響應決策。
按照同步技術分類
同步技術是指被監控的事件以及對這些事件的分析在同一時間進行。按照同步技術劃分,IDS劃分為間隔批任務處理型IDS和實時連續性IDS。在間隔批任務處理型IDS中,信息源是以文件的形式傳給分析器,一次只處理特定時間段內產生的信息,並在入侵發生時將結果反饋給用戶。很多早期的基於主機的IDS都採用這種方案。在實時連續型IDS中,事件一發生,信息源就傳給分析引擎,並且立刻得到處理和反映。實時IDS是基於網路IDS首選的方案。
按照信息源分類
按照信息源分類是目前最通用的劃分方法,它分為基於主機的IDS、基於網路的IDS和分布式IDS。基於主機的IDS通過分析來自單個的計算機系統的系統審計蹤跡和系統日誌來檢測攻擊。基於主機的IDS是在關鍵的網段或交換部位通過捕獲並分析網路數據包來檢測攻擊。分布式IDS,能夠同時分析來自主機系統日誌和網路數據流,系統由多個部件組成,採用分布式結構。
按照分析方法分類
按照分析方法IDS劃分為濫用檢測型IDS和異常檢測型IDS。濫用檢測型的IDS中,首先建立一個對過去各種入侵方法和系統缺陷知識的資料庫,當收集到的信息與庫中的原型相符合時則報警。任何不符合特定條件的活動將會被認為合法,因此這樣的系統虛警率很低。異常檢測型IDS是建立在如下假設的基礎之上的,即任何一種入侵行為都能由於其偏離正常或者所期望的系統和用戶活動規律而被檢測出來。所以它需要一個記錄合法活動的資料庫,由於庫的有限性使得虛警率比較高。
按照響應方式分類
按照響應方式IDS劃分為主動響應IDS和被動響應IDS。當特定的入侵被檢測到時,主動IDS會採用以下三種響應:收集輔助信息;改變環境以堵住導致入侵發生的漏洞;對攻擊者採取行動(這是一種不被推薦的做法,因為行為有點過激)。被動響應IDS則是將信息提供給系統用戶,依靠管理員在這一信息的基礎上採取進一步的行動。

5: IDS的評價標准

目前的入侵檢測技術發展迅速,應用的技術也很廣泛,如何來評價IDS的優缺點就顯得非常重要。評價IDS的優劣主要有這樣幾個方面[5]:(1)准確性。准確性是指IDS不會標記環境中的一個合法行為為異常或入侵。(2)性能。IDS的性能是指處理審計事件的速度。對一個實時IDS來說,必須要求性能良好。(3)完整性。完整性是指IDS能檢測出所有的攻擊。(4)故障容錯(fault tolerance)。當被保護系統遭到攻擊和毀壞時,能迅速恢復系統原有的數據和功能。(5)自身抵抗攻擊能力。這一點很重要,尤其是「拒絕服務」攻擊。因為多數對目標系統的攻擊都是採用首先用「拒絕服務」攻擊摧毀IDS,再實施對系統的攻擊。(6)及時性(Timeliness)。一個IDS必須盡快地執行和傳送它的分析結果,以便在系統造成嚴重危害之前能及時做出反應,阻止攻擊者破壞審計數據或IDS本身。
除了上述幾個主要方面,還應該考慮以下幾個方面:(1)IDS運行時,額外的計算機資源的開銷;(2)誤警報率/漏警報率的程度;(3)適應性和擴展性;(4)靈活性;(5)管理的開銷;(6)是否便於使用和配置。

6: IDS的發展趨

隨著入侵檢測技術的發展,成型的產品已陸續應用到實踐中。入侵檢測系統的典型代表是ISS(國際互聯網安全系統公司)公司的RealSecure。目前較為著名的商用入侵檢測產品還有:NAI公司的CyberCop Monitor、Axent公司的NetProwler、CISCO公司的Netranger、CA公司的Sessionwall-3等。國內的該類產品較少,但發展很快,已有總參北方所、中科網威、啟明星辰等公司推出產品。
人們在完善原有技術的基礎上,又在研究新的檢測方法,如數據融合技術,主動的自主代理方法,智能技術以及免疫學原理的應用等。其主要的發展方向可概括為:
(1)大規模分布式入侵檢測。傳統的入侵檢測技術一般只局限於單一的主機或網路框架,顯然不能適應大規模網路的監測,不同的入侵檢測系統之間也不能協同工作。因此,必須發展大規模的分布式入侵檢測技術。
(2)寬頻高速網路的實時入侵檢測技術。大量高速網路的不斷涌現,各種寬頻接入手段層出不窮,如何實現高速網路下的實時入侵檢測成為一個現實的問題。
(3)入侵檢測的數據融合技術。目前的IDS還存在著很多缺陷。首先,目前的技術還不能對付訓練有素的黑客的復雜的攻擊。其次,系統的虛警率太高。最後,系統對大量的數據處理,非但無助於解決問題,還降低了處理能力。數據融合技術是解決這一系列問題的好方法。
(4)與網路安全技術相結合。結合防火牆,病毒防護以及電子商務技術,提供完整的網路安全保障。

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

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

D. 求一個「基於小波神經網路的模擬電路故障診斷模擬程序」

智能網路管理系統分析與系統設計
4.1需求分析
隨著網路技術的不斷發展,5G時代的來臨,網路設備數量的迅增導致網路管理難度的增大,系統管理人員的工作壓力繁重,特別是目前大量的基於Web環境的各個業務系統對企業的網路提出了更高的要求,除了要保證網路的安全性、穩定性、保密性、可靠性外,還要確保網路速度、服務質量、使用方便等各個因素。網路管理系統面臨網路設備運行環境是否安全、設備運行是否平穩、設備故障能否快速發現並解決等問題。本文採用B/S架構可以更大程度上跨平台使用此系統,結合web技術和人工智慧技術根據實際情況實現具有故障診斷的智能網路管理系統,在一定程度上實現傳統網路管理系統的自動化。圖4.1為系統模塊用例圖:

4.1.1功能需求
(1)從用例圖中可以看到,本系統分為兩種角色,超級管理員和普通用戶。超級管理員擁有最高許可權,可以對普通用戶進行添加、修改、刪除操作,用戶管理本質就是通過賦予用戶角色對系統操作許可權不同,使得用戶角色分工不同更加網路管理工作更加細致和明確。同時,超級管理員可以升級普通用戶為超級管理員也可以根據人員不同賦予不同的許可權。(2)用戶可以在系統中添加和刪除網路設備,在實際企業當中網路設備資源數量眾多,針對設備資源進行有針對性行的管理可以滿足企業日益增加的設備需求。用戶可以通過在系統中填寫設備詳情添加相應網路設備;選取相應設備填寫對應標簽、地址、流量類型可以掌握設備埠流量流入流出情況和連接狀態以及查看設備信息;選取某設備埠,輸入修改後的ip地址、子網掩碼、登錄密碼、特權密碼等可以通過telnet協議對設備埠進行配置;如果某設備已經損壞或者不再需要時,可以點擊刪除按鈕對設備進行刪除;可以查看個人詳細信息對個人信息進行修改。(3)網路故障是是網路管理系統中的重要模塊,網路可以平穩運行是評價網路管理系統的重要指標。網路虛擬環境下,復雜的資源關系以及各資源之間的互相干擾,一旦某個介面發生故障,故障數據隱藏在底層網路可能會蔓延到整個網路,導致整個網路無法運行,這樣無疑給網路恢復帶來了更大困難,增加了企業成本。本系統故障模塊針對乙太網中的介面故障,在現有智能故障診斷技術中,BP神經網路具有良好的非線性能力和自學習和自適應能力,因此,本系統故障模塊引入BP神經網路,採集介面故障數據經過BP神經網路訓練可以實現對目標介面進行故障診斷,並判斷故障類型。同時用戶可以查看歷史告警記錄表對故障信息進行統計。
4.1.2非功能性需求
系統應具有實用性,能夠滿足實際業務需求,各個功能模塊業務可以高效正確的運轉。要求設計簡單、架構和層次設計清晰,便於維護和擴展具有一定的可靠性和易用性。系統安全是網路管理系統的必要條件之一,防止sql注入等安全問題出現,對前後端數據傳輸進行驗證防止前端傳輸不安全數據到後台伺服器當中。在監控模塊中系統可以對設備數據進行實時監控並展示,應具有實時性。
4.2系統總體架構設計
本文研究利用Django、Vue等開發技術,並結合人工智慧網路故障智能診斷技術設計並實現了智能網路網路管理系統。系統總體架構分為視圖層、應用服務層和設備層三層。系統的設計總體架構如圖所示:
1)視圖層使用前端相關技術如Vue, ECharts開發系統界麵包括界面的布局與美化、用戶交互設計等。
2)應用伺服器層包括Web伺服器和NMS兩部分。Web伺服器可以處理瀏覽器的請求並返回相應。在此系統中接收前端傳來的數據請求,經過後台程序解析處理完成對應操作。NMS是網路管理工程當中的核心,通過代理向設備發送指令,管理被管設備,可以通過oid查詢MIB庫保存對應項獲取目標設備網路數據。
3)在網路設備層,被管設備代理是網路上被管設備代理的集合,主要工作是採集數據和分析數據。系統首先服務層通過Telnet協議連接網路設備,通過SNMP協議實現對網路設備運行狀態的監控,將採集到的數據進行計算處理之後存儲到Mysql資料庫中。
4)Mysql資料庫是系統開發功能模塊的基礎,用於存儲用戶數據、網路運行數據以及故障數據等。用戶通過對資料庫進行新增、查詢、更新、刪除操作對系統數據進行管理。
4.3系統主要功能模塊設計
本系統分為用戶管理、配置管理、設備監控管理、故障診斷四個功能模塊,下面將對這四個模塊的設計進行詳細說明。
4.3.1系統功能模塊
1)用戶管理:系統管理員使用該模塊可以完成查看、添加、修改和刪除系統全體用戶賬號的管理操作以及用戶登錄功能,該模塊的設計類似於RBAC(基於角色的訪問控制),不同的管理員擁有不同的系統操作許可權。
2)配置管理:通過web界面對設備進行相關配置即命令下發,管理員可以通過該模塊遠程連接目標設備並且對設備埠進行ip和子網掩碼修改以及置。
3)設備監控管理:對通訊設備介面進行實時流量監控,返回數據便於管理員及時查看設備運行狀態查看資源並且統計流量數據。
4)故障診斷:及時發現通訊網路介面中發生的故障,並判斷故障類型便於管理員及時處理故障,以免造成更大損失。
4.3.2用戶管理模塊設計
用戶管理模塊是管理系統中較基礎同時也是非常重要的一個模塊,主要負責對該系統用戶進行統一有效管控,用戶管理模塊活動圖如圖4.4所示:
1)用戶登錄:系統部署在伺服器之後,Django框架可以使用命令創建一個超級管理員。超級管理員和普通用戶可以通過用戶名和密碼登錄到該系統當中。
2)用戶添加:超級管理員擁有該系統的最高許可權,可以添加普通用戶無需注冊,添加信息主要包括,用戶名、密碼、頭像、郵箱等信息,普通用戶可以根據超級管理員分配的許可權參與管理系統。
3)用戶刪除:超級管理員界面可以刪除當前普通用戶角色,刪除之後原普通用戶用戶名好密碼作廢。
4)用戶信息修改:超級管理員和普通用戶都可以對自己信息進行修改包括密碼、個人資料,超級管理員可以賦予普通用戶許可權等。
4.3.3配置管理模塊設計
網路設備配置模塊主要用於對設備參數進行設置和修改和對設備進行添加和刪除,從而對設備進行管理。該系統主要針對設備埠ip地址和子網掩碼進行修改,配置管理結構示意圖如下:
1)設備參數配置:首先在被管設備開啟埠並配置Telnet協議,同時設置登錄名和登錄密碼以及特權密碼,用戶在瀏覽器通過表單填寫相關目標設備信息,通過HTTP協議傳輸給伺服器,服務將前端傳過來的信息解析成設備可以識別的指令,代替管理員在終端直接對設備的操作,自動下發對應指令到設備上完成配置。
2)設備添加:用戶可以添加某個設備,並給予相應標識,網路設備列表當中就會出現當前所有設備,設備信息也會存儲在資料庫當中。
3)設備刪除:當某一項設備不再使用管理員可以在瀏覽器的設備列表當中將其刪除。
4.3.4設備監控模塊
設備監控模塊主要監控設備運行狀態以及資源消耗情況,存儲到Mysql資料庫當中,通過前端組件以圖表的格式將其可視化,可以讓管理員更加直觀的觀測到網路設備的運行狀態。設備監控模塊結構示意圖如下:展示設備是否在線,以及展示當前運行設備列表,通過SNMP協議可以判斷目標設備是否在線,如果在線前端提示目標設備當前正在運行,否在提示當前設備不在運行或者未正確安裝SNMP協議,因為監控模塊主要通過SNMP協議訪問設備獲取MIB變數得到目標值並測試其連通性。
1)實時展示目標設備埠流量流入和流出情況,管理員在前端添加監控目標,通過SNMP協議和目標設備通信,如果當前設備在線也就是伺服器可以通過SNMP和目標設備通信,伺服器查詢目標設備的MIB對象,找到請求的數據,將返回的網路數據存入資料庫,前端利用Echarts進行繪圖,為了更加直觀,流量圖採用曲線圖的方式展示時間段內某埠流入或者流出網路總流量,單位按照每秒總傳輸量來計算。此外,管理員可以切換目標設備查看。
4.3.5故障診斷模塊
故障診斷模塊就是協助管理員及時發現並處理網路設備突發的故障,本模塊引入了BP神經網路故障診斷技術,目的是高效快速的判斷網路設備介面故障類型。基於BP神經網路的網路故障診斷流程示意圖如圖4.6所示:
故障發現及時與否對網路設備能否持續提供服務至關重要。通過SNMP協議主動輪詢和非同步警告可以獲取到設備發生的故障信息,伺服器獲取到網路狀態故障信息後,經過分析,如果可以直接判斷故障類型,則直接發送到前端界面,這類故障類型一般具有較明顯的特徵。如果某介面發生故障不可以直接判斷其故障類型則通過基於BP神經網路的故障診斷模型進行判斷,將獲取到的介面相關數據自動進行預處理後作為故障診斷模型的輸入數據,故障診斷模型會輸出相應結果對應相應故障可視化到前端提示管理員,管理員可以通過前端查看故障信息進行修復。4.4資料庫設計
4.4.1系統E-R圖
系統資料庫包含多個實體,實體之間具體包含一對多和對多對的關系。系統E-R圖如圖4.8所示:

4.4.2資料庫表結構設計
根據需求分析的結果資料庫表設計如下:
(1)用戶表用於記錄用戶相關信息,其中用戶ID(userId)作為用戶表的主鍵自增。
(1)設備監控表,存儲監控的目標設備信息。
4.5 本章小結
本章節主要內容:首先對基於用例圖進行系統需求分析,對系統整體總結構進行了設計,其次根據需求設計了系統整體功能模塊圖,接著針對各個功能模塊結合活動圖進行詳述,最後對整個系統的資料庫表設計進行了簡要概述。

E. 入侵檢測技術基礎的異常檢測技術

●概率統計異常檢測
原理:每一個輪廓保存記錄主體當前行為,並定時將當前輪廓與歷史輪廓合並形成統計輪廓(更新),通過比較當前輪廓與統計輪廓來判定異常行為。
優點:可應用成熟的概率統計理論
缺點:①由於用戶行為的復雜性,要想准確地匹配一個用戶的歷史行為非常困難,容易造成系統誤報和漏報;
②定義入侵閾值比較困難,閾值高則誤報率提高,閾值低則漏報率增高。
●神經網路異常檢測
原理:對下一事件的預測錯誤率在一定程度上反映了用戶行為的異常程度。
優點:①更好地表達了變數間的非線性關系,能更好地處理原始數據的隨機特徵,即不需要對這些數據做任何統計假設,並且能自動學習和更新;②有較好的抗干擾能力
缺點:網路拓撲結構以及各元素的權重很難確定

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

神經網路異常檢測方法

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


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

G. 用機器學習檢測異常點擊流

用機器學習檢測異常點擊流
本文內容是我學習ML時做的一個練手項目,描述應用機器學習的一般步驟。該項目的目標是從點擊流數據中找出惡意用戶的請求。點擊流數據長下圖這樣子,包括請求時間、IP、平台等特徵:

該項目從開始做到階段性完成,大致可分為兩個階段:演算法選擇和工程優化。演算法選擇階段挑選合適的ML模型,嘗試了神經網路、高斯分布、Isolation Forest等三個模型。由於點擊流數據本身的特性,導致神經網路和高斯分布並不適用於該場景,最終選擇了Isolation Forest。工程優化階段,最初使用單機訓練模型和預測結果,但隨著數據量的增加,最初的單機系統出現了性能瓶頸;然後開始優化性能,嘗試了分布化訓練,最終通過單機非同步化達到了性能要求。
1 演算法選擇
1.1 神經網路
剛開始沒經驗,受TensorFlow熱潮影響,先嘗試了神經網路。選用的神經網路是MLP(Multilayer Perceptron,多層感知器),一種全連接的多層網路。MLP是有監督學習,需要帶標簽的樣本,這里「帶標簽」的意思是樣本數據標注了哪些用戶請求是惡意的、哪些是正常的。但後台並沒有現成帶標簽的惡意用戶樣本數據。後來通過安全側的一些數據「間接」給用戶請求打上了標簽,然後選擇IP、平台、版本號、操作碼等數據作為MLP的輸入數據。結果當然是失敗,想了下原因有兩個:
1, 樣本的標簽質量非常差,用這些樣本訓練出來的模型性能當然也很差;
2, 輸入的特徵不足以刻畫惡意用戶。
數據的質量問題目前很難解決,所以只能棄用MLP。
1.2 高斯分布
然後嘗試其他模型。通過搜索發現,有一類ML模型專門用於異常檢測,找到了Andrew Ng介紹的基於高斯分布的異常檢測演算法:高斯分布如下圖所示:

這個演算法的思想比較簡單:與大部分樣本不一致的樣本就是異常;通過概率密度量化「不一致」。具體做法是:選擇符合高斯分布或能轉換為高斯分布的特徵,利用收集到的數據對高斯分布做參數估計,把概率密度函數值小於某個閾值的點判定為異常。
所謂的參數估計是指,給定分布數據,求分布的參數。對高斯分布來說,就是求μ和σ。用極大似然估計可以得到高斯分布參數的解析解:

得到高斯分布參數後,用下式計算概率密度:

X表示一個特徵輸入。若有多個特徵x0、x1、…、xn,一種簡單的處理方法是將其結果連乘起來即可:f(x) = f(x0)f(x1)…f(xn)。
然後選定一個閾值ε,把f(x) < ε的樣本判定為異常。ε值需根據實際情況動態調整,默認可設定ε = f(μ- 3σ)。
把這個模型初步應用於點擊流異常檢測時,效果還不錯,但在進一步實施過程中碰到一個棘手問題:樣本中最重要的一個特徵是操作碼,當前操作碼在微信後台的取值范圍是[101,1000],每個操作碼的請求次數是模型的基礎輸入,對900個特徵計算概率密度再相乘,非常容易導致結果下溢出,以致無法計算出精度合適的概率密度值。這個現象被稱為維度災難(Dimension Disaster)。
解決維度災難的一個常見做法是降維,降維的手段有多種,這里不展開討論了。在點擊流分析的實踐中,降維的效果並不好,主要原因有兩個:
1, 正常用戶和惡意用戶的訪問模式並不固定,導致很難分解出有效的特徵矩陣或特徵向量;
2, 降維的本質是有損壓縮,有損壓縮必定導致信息丟失。但在本例中每一維的信息都是關鍵信息,有損壓縮會極大破壞樣本的有效性。
高斯分布模型的維度災難在本例中較難解決,只能再嘗試其他模型了
1.3 Isolation Forest
Isolation Forest,可翻譯為孤異森林,該演算法的基本思想是:隨機選擇樣本的一個特徵,再隨機選擇該特徵取值范圍中的一個值,對樣本集做拆分,迭代該過程,生成一顆Isolation Tree;樹上葉子節點離根節點越近,其異常值越高。迭代生成多顆Isolation Tree,生成Isolation Forest,預測時,融合多顆樹的結果形成最終預測結果。Isolation Forest的基礎結構有點類似經典的隨機森林(Random Forest)。
這個異常檢測模型有效利用了異常樣本「量少」和「與正常樣本表現不一樣」的兩個特點,不依賴概率密度因此不會導致高維輸入的下溢出問題。提取少量點擊流樣本測試,它在900維輸入的情況下也表現良好,最終選擇它作為系統的模型。
2 工程優化
工程實現經歷了單機訓練、分布式訓練、單機非同步化訓練3個方案,下面內容介紹實現過程中碰到的問題和解決方法。
2.1 單機訓練
整個系統主要包括收集數據、訓練模型、預測異常、上報結果四個部分。
2.1.1 收集數據
剛開始嘗試該模型時,是通過手工方式從mmstreamstorage獲取樣本的:
1,通過logid 11357,得到手工登錄成功用戶的uin和登錄時間;
2,利用mmstreamstorage提供的介面,得到用戶登錄後10分鍾的點擊流;
但這樣做有兩個缺點:
1,上述步驟1是離線手工操作的,需要做成自動化;
2,mmstreamstorage的介面性能較差,只能提供2萬/min的查詢性能,上海IDC登錄的峰值有9萬/min。
改進辦法是復用點擊流上報模塊mmstreamstorage,增加一個旁路數據的邏輯:
1,手工登錄時在presence中記錄手工登錄時間,mmstreamstorage基於該時間旁路一份數據給mmguardstore。由於mmstreamstorage每次只能提供單挑點擊流數據,所以需要在mmguardstore中緩存;
2,mmguardstore做完數據清洗和特徵提取,然後把樣本數據落地,最後利用crontab定期將該數據同步到Hadoop集群中。
最終的數據收集模塊結構圖如下所示:

點擊流數據提供了IP、平台、版本號、操作碼等特徵,經過多次試驗,選定用戶手工登錄後一段時間內操作碼的訪問次數作為模型的輸入。
上面我們提到過點擊流的操作碼有900個有效取值,所以一個顯然的處理方法是,在mmguardstore中把用戶的點擊流數據轉化為一個900維的向量,key是cgi id,value是對應cgi的訪問次數。該向量刻畫了用戶的行為,可稱為行為特徵向量。
2.1.2 訓練模型
初起為了控制不確定性,只輸入1萬/分鍾的樣本給模型訓練和預測。系統的工作流程是先從Hadoop載入上一分鍾的樣本數據,然後用數據訓練Isolation Forest模型,最後用訓練好的模型做異常檢測,並將檢測結果同步到tdw。
在1萬/分鍾輸入下取得較好的檢測結果後,開始導入全量數據,全量數據數據的峰值為20萬/分鍾左右。出現的第一個問題是,一分鍾內無法完成載入數據、訓練模型、預測結果,單載入數據就耗時10分鍾左右。這里先解釋下為什麼有「一分鍾」的時間周期限制,主要原因有兩個:
1, 想盡快獲取檢測結果;
2, 由於點擊流異常檢測場景的特殊性,模型性能有時效性,需要經常用最新數據訓練新的模型。
解決性能問題的第一步是要知道性能瓶頸在哪裡,抽樣發現主要是載入數據和訓練模型耗時較多,預測異常和上報結果的耗時並沒有隨數據量的增加而快速上漲。
載入數據的耗時主要消耗在網路通信上:樣本文件太大了,導致系統從Hadoop同步樣本數據時碰到網路帶寬瓶頸。但由於樣本是文本類數據,對數據先壓縮再傳輸可極大減少通信量,這里的耗時比較容易優化。
訓練模型的耗時增加源於輸入數據量的增加。下圖是1萬樣本/min的輸入下,系統個階段的耗時:

其中:
載入程序: 2s
載入數據: 6s
訓練模型:11s
分類異常: 2s
保存結果: 4s
單輪總耗時:25s
需處理全量數據時,按線性關系換算,「訓練模型」耗時為:11s * 24 = 264s,約為4.4分鍾,單機下無法在1分鍾內完成計算。
最先想到的優化訓練模型耗時的辦法是分布式訓練。
2.2 分布式訓練
由於scikit-learn只提供單機版的Isolation Forest實現,所以只能自己實現它的分布式版本。了解了下目前最常用的分布式訓練方法是參數伺服器(Parameter Server,PS)模式,其想法比較簡單:訓練模型並行跑在多機上,訓練結果在PS合並。示意圖如下所示:

分布式訓練對演算法有一定要求,而Isolation Forest正好適用於分布式訓練。
然後嘗試在TensorFlow上實現Isolation Forest的分布式訓練版本。選擇TensorFlow的原因有主要兩個:
1, TensorFlow已經實現了一個分布式訓練框架;
2, TensorFlow的tf.contrib.learn包已經實現的Random Forest可作參考(Isolation Forest在結構上與Random Forest類似),只需對Isolation Forest定製一個Operation即可。
寫完代碼測試時,發現了個巨坑的問題:TenforFlow內部的序列化操作非常頻繁、性能十分差。構造了110個測試樣本,scikit-learn耗時只有0.340秒,29萬次函數調用;而TensorFlow耗時達207.831秒,有2.48億次函數調用。
TensorFlow性能抽樣:

Scikit-learn性能抽樣:

從TensorFlow的性能抽樣數據可以看到,耗時排前排的函數都不是實現Isolation Forest演算法的函數,其原因應該與TensorFlow基於Graph、Session的實現方式有關。感覺這里坑比較深,遂放棄填坑。
也了解了下基於Spark的spark-sklearn,該項目暫時還未支持Isolation Forest,也因為坑太深,一時半會搞不定而放棄了。
2.3 單機非同步化訓練
沒搞定分布式訓練,只能回到單機場景再想辦法。單機優化有兩個著力點:優化演算法實現和優化系統結構。
首先看了下scikit-learn中Isoaltion Forest的實現,底層專門用Cython優化了,再加上Joblib庫的多CPU並行,演算法實現上的優化空間已經很小了,只能從系統結構上想辦法。
系統結構上的優化有兩個利器:並行化和非同步化。之前的單機模型,載入數據、訓練模型、預測異常、上報結果在單進程中串列執行,由此想到的辦法是啟動4個工作進程分別處理相應的四個任務:非同步訓練模型、預測異常和上報結果,並行載入數據。工作進程之間用隊列通信,隊列的一個優勢是容易實現流量控制。
寫完代碼測試,卻發現YARD環境中的Python HDFS庫在多進程並發下直接拋異常。嘗試多個方法發現這個問題較難解決,暫時只能想辦法規避。經測試發現,直接從Hadoop同步所有壓縮過的樣本數據只需2秒左右,由此想到規避方法是:先單進程同步所有樣本數據,再多進程並發解壓、載入和預測。
按上述想法修改代碼測試,效果較好,處理所有樣本只需20秒左右,達到了1分鍾處理完所有樣本的要求。然後提交YARD作業線上跑,處理所有樣本耗時卻達到200~400秒:

咨詢YARD側同學,得知YARD對提交的離線作業有CPU配額的硬限制,分時段配額如下表:
00:00~09:00 80%
09:00~19:00 50%
19:00~23:00 15%
23:00~24:00 50%
晚高峰時段的配額只有15%。
與YARD側同學溝通,他們答應後續會支持scikit-learn庫的在線服務。目前通過手工方式在一台有scikit-learn的mmguardstore機器上運行在線服務,晚高峰時段處理全量數據耗時為20秒左右。
最終的系統結構圖如下圖所示:

模型訓練進程定期訓練最新的模型,並把模型通過隊列傳給預測進程。預測進程每分鍾運行一次,檢查模型隊列上是否有新模型可使用,然後載入數據、檢測異常,將檢測結果通過上報隊列傳給上報進程。上報進程block在上報隊列上,一旦發現有新數據,就根據數據類型執行上報監控、上報tdw等操作。
2.4 評估性能
安全側將異常用戶分為以下幾類:盜號、LBS/加好友、養號、欺詐、外掛/多開等。由於這些分類的異常打擊是由不同同學負責,不便於對Isolation Forest的分類結果做評估,因此需要在Isolation Forest的基礎上,再加一個分類器,標記「異常樣本」的小類。利用操作碼實現了該分類器。
接入全量數據後,每天准實時分析1億量級的樣本,檢測出500萬左右的異常,精確分類出15萬左右的惡意請求。惡意請求的uin、類型、發生時間通過tdw中轉給安全側。安全側通過線下人工分析和線上打擊,從結果看檢測效果較好。
2.5 持續優化
再回過頭觀察點擊流數據,我們使用的Isolation Forest模型只利用了操作碼的統計數據。可以明顯看到,點擊流是一個具備時間序列信息的時序數據。而自然語言處理(Natural LanguageProcessing,NLP)領域已經積累了非常多的處理時序數據的理論和實戰經驗,如LSTM、word2vec等模型。後續期望能引入NLP的相關工具挖掘出更多惡意用戶。

H. 基於神經網路的故障診斷

神經網路的是我的畢業論文的一部分
4.人工神經網路
人的思維有邏輯性和直觀性兩種不同的基本方式。邏輯性的思維是指根據邏輯規則進行推理的過程;它先將信息化成概念,並用符號表示,然後,根據符號運算按串列模式進行邏輯推理。這一過程可以寫成串列的指令,讓計算機執行。然而,直觀性的思維是將分布式存儲的信息綜合起來,結果是忽然間產生想法或解決問題的辦法。這種思維方式的根本之點在於以下兩點:1.信息是通過神經元上的興奮模式分布在網路上;2.信息處理是通過神經元之間同時相互作用的動態過程來完成的。
人工神經網路就是模擬人思維的第二種方式。這是一個非線性動力學系統,其特色在於信息的分布式存儲和並行協同處理。雖然單個神經元的結構極其簡單,功能有限,但大量神經元構成的網路系統所能實現的行為卻是極其豐富多彩的。
4.1人工神經網路學習的原理
人工神經網路首先要以一定的學習准則進行學習,然後才能工作。現以人工神經網路對手寫「A」、「B」兩個字母的識別為例進行說明,規定當「A」輸入網路時,應該輸出「1」,而當輸入為「B」時,輸出為「0」。
所以網路學習的准則應該是:如果網路做出錯誤的判決,則通過網路的學習,應使得網路減少下次犯同樣錯誤的可能性。首先,給網路的各連接權值賦予(0,1)區間內的隨機值,將「A」所對應的圖像模式輸入給網路,網路將輸入模式加權求和、與門限比較、再進行非線性運算,得到網路的輸出。在此情況下,網路輸出為「1」和「0」的概率各為50%,也就是說是完全隨機的。這時如果輸出為「1」(結果正確),則使連接權值增大,以便使網路再次遇到「A」模式輸入時,仍然能做出正確的判斷。
如果輸出為「0」(即結果錯誤),則把網路連接權值朝著減小綜合輸入加權值的方向調整,其目的在於使網路下次再遇到「A」模式輸入時,減小犯同樣錯誤的可能性。如此操作調整,當給網路輪番輸入若干個手寫字母「A」、「B」後,經過網路按以上學習方法進行若干次學習後,網路判斷的正確率將大大提高。這說明網路對這兩個模式的學習已經獲得了成功,它已將這兩個模式分布地記憶在網路的各個連接權值上。當網路再次遇到其中任何一個模式時,能夠做出迅速、准確的判斷和識別。一般說來,網路中所含的神經元個數越多,則它能記憶、識別的模式也就越多。
4.2人工神經網路的優缺點
人工神經網路由於模擬了大腦神經元的組織方式而具有了人腦功能的一些基本特徵,為人工智慧的研究開辟了新的途徑,神經網路具有的優點在於:
(1)並行分布性處理
因為人工神經網路中的神經元排列並不是雜亂無章的,往往是分層或以一種有規律的序列排列,信號可以同時到達一批神經元的輸入端,這種結構非常適合並行計算。同時如果將每一個神經元看作是一個小的處理單元,則整個系統可以是一個分布式計算系統,這樣就避免了以往的「匹配沖突」,「組合爆炸」和「無窮遞歸」等題,推理速度快。
(2)可學習性
一個相對很小的人工神經網路可存儲大量的專家知識,並且能根據學習演算法,或者利用樣本指導系統來模擬現實環境(稱為有教師學習),或者對輸入進行自適應學習(稱為無教師學習),不斷地自動學習,完善知識的存儲。
(3)魯棒性和容錯性
由於採用大量的神經元及其相互連接,具有聯想記憶與聯想映射能力,可以增強專家系統的容錯能力,人工神經網路中少量的神經元發生失效或錯誤,不會對系統整體功能帶來嚴重的影響。而且克服了傳統專家系統中存在的「知識窄台階」問題。
(4)泛化能力
人工神經網路是一類大規模的非線形系統,這就提供了系統自組織和協同的潛力。它能充分逼近復雜的非線形關系。當輸入發生較小變化,其輸出能夠與原輸入產生的輸出保持相當小的差距。
(5)具有統一的內部知識表示形式,任何知識規則都可以通過對範例的學習存儲於同一個神經網路的各連接權值中,便於知識庫的組織管理,通用性強。
雖然人工神經網路有很多優點,但基於其固有的內在機理,人工神經網路也不可避免的存在自己的弱點:
(1)最嚴重的問題是沒能力來解釋自己的推理過程和推理依據。
(2)神經網路不能向用戶提出必要的詢問,而且當數據不充分的時候,神經網路就無法進行工作。
(3)神經網路把一切問題的特徵都變為數字,把一切推理都變為數值計算,其結果勢必是丟失信息。
(4)神經網路的理論和學習演算法還有待於進一步完善和提高。
4.3神經網路的發展趨勢及在柴油機故障診斷中的可行性
神經網路為現代復雜大系統的狀態監測和故障診斷提供了全新的理論方法和技術實現手段。神經網路專家系統是一類新的知識表達體系,與傳統專家系統的高層邏輯模型不同,它是一種低層數值模型,信息處理是通過大量的簡單處理元件(結點) 之間的相互作用而進行的。由於它的分布式信息保持方式,為專家系統知識的獲取與表達以及推理提供了全新的方式。它將邏輯推理與數值運算相結合,利用神經網路的學習功能、聯想記憶功能、分布式並行信息處理功能,解決診斷系統中的不確定性知識表示、獲取和並行推理等問題。通過對經驗樣本的學習,將專家知識以權值和閾值的形式存儲在網路中,並且利用網路的信息保持性來完成不精確診斷推理,較好地模擬了專家憑經驗、直覺而不是復雜的計算的推理過程。
但是,該技術是一個多學科知識交叉應用的領域,是一個不十分成熟的學科。一方面,裝備的故障相當復雜;另一方面,人工神經網路本身尚有諸多不足之處:
(1)受限於腦科學的已有研究成果。由於生理實驗的困難性,目前對於人腦思維與記憶機制的認識還很膚淺。
(2)尚未建立起完整成熟的理論體系。目前已提出了眾多的人工神經網路模型,歸納起來,這些模型一般都是一個由結點及其互連構成的有向拓撲網,結點間互連強度所構成的矩陣,可通過某種學習策略建立起來。但僅這一共性,不足以構成一個完整的體系。這些學習策略大多是各行其是而無法統一於一個完整的框架之中。
(3)帶有濃厚的策略色彩。這是在沒有統一的基礎理論支持下,為解決某些應用,而誘發出的自然結果。
(4)與傳統計算技術的介面不成熟。人工神經網路技術決不能全面替代傳統計算技術,而只能在某些方面與之互補,從而需要進一步解決與傳統計算技術的介面問題,才能獲得自身的發展。
雖然人工神經網路目前存在諸多不足,但是神經網路和傳統專家系統相結合的智能故障診斷技術仍將是以後研究與應用的熱點。它最大限度地發揮兩者的優勢。神經網路擅長數值計算,適合進行淺層次的經驗推理;專家系統的特點是符號推理,適合進行深層次的邏輯推理。智能系統以並行工作方式運行,既擴大了狀態監測和故障診斷的范圍,又可滿足狀態監測和故障診斷的實時性要求。既強調符號推理,又注重數值計算,因此能適應當前故障診斷系統的基本特徵和發展趨勢。隨著人工神經網路的不斷發展與完善,它將在智能故障診斷中得到廣泛的應用。
根據神經網路上述的各類優缺點,目前有將神經網路與傳統的專家系統結合起來的研究傾向,建造所謂的神經網路專家系統。理論分析與使用實踐表明,神經網路專家系統較好地結合了兩者的優點而得到更廣泛的研究和應用。
離心式製冷壓縮機的構造和工作原理與離心式鼓風機極為相似。但它的工作原理與活塞式壓縮機有根本的區別,它不是利用汽缸容積減小的方式來提高汽體的壓力,而是依靠動能的變化來提高汽體壓力。離心式壓縮機具有帶葉片的工作輪,當工作輪轉動時,葉片就帶動汽體運動或者使汽體得到動能,然後使部分動能轉化為壓力能從而提高汽體的壓力。這種壓縮機由於它工作時不斷地將製冷劑蒸汽吸入,又不斷地沿半徑方向被甩出去,所以稱這種型式的壓縮機為離心式壓縮機。其中根據壓縮機中安裝的工作輪數量的多少,分為單級式和多級式。如果只有一個工作輪,就稱為單級離心式壓縮機,如果是由幾個工作輪串聯而組成,就稱為多級離心式壓縮機。在空調中,由於壓力增高較少,所以一般都是採用單級,其它方面所用的離心式製冷壓縮機大都是多級的。單級離心式製冷壓縮機的構造主要由工作輪、擴壓器和蝸殼等所組成。 壓縮機工作時製冷劑蒸汽由吸汽口軸向進入吸汽室,並在吸汽室的導流作用引導由蒸發器(或中間冷卻器)來的製冷劑蒸汽均勻地進入高速旋轉的工作輪3(工作輪也稱葉輪,它是離心式製冷壓縮機的重要部件,因為只有通過工作輪才能將能量傳給汽體)。汽體在葉片作用下,一邊跟著工作輪作高速旋轉,一邊由於受離心力的作用,在葉片槽道中作擴壓流動,從而使汽體的壓力和速度都得到提高。由工作輪出來的汽體再進入截面積逐漸擴大的擴壓器4(因為汽體從工作輪流出時具有較高的流速,擴壓器便把動能部分地轉化為壓力能,從而提高汽體的壓力)。汽體流過擴壓器時速度減小,而壓力則進一步提高。經擴壓器後汽體匯集到蝸殼中,再經排氣口引導至中間冷卻器或冷凝器中。

二、離心式製冷壓縮機的特點與特性

離心式製冷壓縮機與活塞式製冷壓縮機相比較,具有下列優點:

(1)單機製冷量大,在製冷量相同時它的體積小,佔地面積少,重量較活塞式輕5~8倍。

(2)由於它沒有汽閥活塞環等易損部件,又沒有曲柄連桿機構,因而工作可靠、運轉平穩、噪音小、操作簡單、維護費用低。

(3)工作輪和機殼之間沒有摩擦,無需潤滑。故製冷劑蒸汽與潤滑油不接觸,從而提高了蒸發器和冷凝器的傳熱性能。

(4)能經濟方便的調節製冷量且調節的范圍較大。

(5)對製冷劑的適應性差,一台結構一定的離心式製冷壓縮機只能適應一種製冷劑。

(6)由於適宜採用分子量比較大的製冷劑,故只適用於大製冷量,一般都在25~30萬大卡/時以上。如製冷量太少,則要求流量小,流道窄,從而使流動阻力大,效率低。但近年來經過不斷改進,用於空調的離心式製冷壓縮機,單機製冷量可以小到10萬大卡/時左右。

製冷與冷凝溫度、蒸發溫度的關系。

由物理學可知,回轉體的動量矩的變化等於外力矩,則

T=m(C2UR2-C1UR1)

兩邊都乘以角速度ω,得

Tω=m(C2UωR2-C1UωR1)

也就是說主軸上的外加功率N為:

N=m(U2C2U-U1C1U)

上式兩邊同除以m則得葉輪給予單位質量製冷劑蒸汽的功即葉輪的理論能量頭。 U2 C2

ω2 C2U R1 R2 ω1 C1 U1 C2r β 離心式製冷壓縮機的特性是指理論能量頭與流量之間變化關系,也可以表示成製冷

W=U2C2U-U1C1U≈U2C2U

(因為進口C1U≈0)

又C2U=U2-C2rctgβ C2r=Vυ1/(A2υ2)

故有

W= U22(1-

Vυ1

ctgβ)

A2υ2U2

式中:V—葉輪吸入蒸汽的容積流量(m3/s)

υ1υ2 ——分別為葉輪入口和出口處的蒸汽比容(m3/kg)

A2、U2—葉輪外緣出口面積(m2)與圓周速度(m/s)

β—葉片安裝角

由上式可見,理論能量頭W與壓縮機結構、轉速、冷凝溫度、蒸發溫度及葉輪吸入蒸汽容積流量有關。對於結構一定、轉速一定的壓縮機來說,U2、A2、β皆為常量,則理論能量頭W僅與流量V、蒸發溫度、冷凝溫度有關。

按照離心式製冷壓縮機的特性,宜採用分子量比較大的製冷劑,目前離心式製冷機所用的製冷劑有F—11、F—12、F—22、F—113和F—114等。我國目前在空調用離心式壓縮機中應用得最廣泛的是F—11和F—12,且通常是在蒸發溫度不太低和大製冷量的情況下,選用離心式製冷壓縮機。此外,在石油化學工業中離心式的製冷壓縮機則採用丙烯、乙烯作為製冷劑,只有製冷量特別大的離心式壓縮機才用氨作為製冷劑。

三、離心式製冷壓縮機的調節

離心式製冷壓縮機和其它製冷設備共同構成一個能量供給與消耗的統一系統。製冷機組在運行時,只有當通過壓縮機的製冷劑的流量與通過設備的流量相等時,以及壓縮機所產生的能量頭與製冷設備的阻力相適應時,製冷系統的工況才能保持穩定。但是製冷機的負荷總是隨外界條件與用戶對冷量的使用情況而變化的,因此為了適應用戶對冷負荷變化的需要和安全經濟運行,就需要根據外界的變化對製冷機組進行調節,離心式製冷機組製冷量的調節有:1°改變壓縮機的轉速;2°採用可轉動的進口導葉;3°改變冷凝器的進水量;4°進汽節流等幾種方式,其中最常用的是轉動進口導葉調節和進汽節流兩種調節方法。所謂轉動進口導葉調節,就是轉動壓縮機進口處的導流葉片以使進入到葉輪去的汽體產生旋繞,從而使工作輪加給汽體的動能發生變化來調節製冷量。所謂進汽節流調節,就是在壓縮機前的進汽管道上安裝一個調節閥,如要改變壓縮機的工況時,就調節閥門的大小,通過節流使壓縮機進口的壓力降低,從而實現調節製冷量。離心式壓縮機製冷量的調節最經濟有效的方法就是改變進口導葉角度,以改變蒸汽進入葉輪的速度方向(C1U)和流量V。但流量V必須控制在穩定工作范圍內,以免效率下降。

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

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