① 人工神經網路目標檢測識別演算法分類
1、基於區域建議的目標檢測和識別演算法
2、基於回歸的目標檢測和識別演算法
3、基於收索的目標檢測和識別演算法
② 異常檢測有哪些主要的分析方法
1. 概率統計方法
在基於異常檢測技術的IDS中應用最早也是最多的一種方法。
首先要對系統或用戶的行為按照一定的時間間隔進行采樣,樣本的內容包括每個會話的登錄、退出情況,CPU和內存的佔用情況,硬碟等存儲介質的使用情況等。
將每次採集到的樣本進行計算,得出一系列的參數變數對這些行為進行描述,從而產生行為輪廓,將每次采樣後得到的行為輪廓與已有輪廓進行合並,最終得到系統和用戶的正常行為輪廓。IDS通過將當前採集到的行為輪廓與正常行為輪廓相比較,來檢測是否存在網路入侵行為。
2. 預測模式生成法
假設條件是事件序列不是隨機的而是遵循可辨別的模式。這種檢測方法的特點是考慮了事件的序列及其相互聯系,利用時間規則識別用戶行為正常模式的特徵。通過歸納學習產生這些規則集,並能動態地修改系統中的這些規則,使之具有較高的預測性、准確性。如果規則在大部分時間是正確的,並能夠成功地運用預測所觀察到的數據,那麼規則就具有高可信度。
3. 神經網路方法
基本思想是用一系列信息單元(命令)訓練神經單元,這樣在給定一組輸入後、就可能預測出輸出。與統計理論相比,神經網路更好地表達了變數間的非線性關系,並且能自動學習並更新。實驗表明UNIX系統管理員的行為幾乎全是可以預測的,對於一般用戶,不可預測的行為也只佔了很少的一部分。
③ 什麼是BP神經網路
BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。
④ 人工智慧演算法簡介
人工智慧的三大基石—演算法、數據和計算能力,演算法作為其中之一,是非常重要的,那麼人工智慧都會涉及哪些演算法呢?不同演算法適用於哪些場景呢?
一、按照模型訓練方式不同可以分為監督學習(Supervised Learning),無監督學習(Unsupervised Learning)、半監督學習(Semi-supervised Learning)和強化學習(Reinforcement Learning)四大類。
常見的監督學習演算法包含以下幾類:
(1)人工神經網路(Artificial Neural Network)類:反向傳播(Backpropagation)、波爾茲曼機(Boltzmann Machine)、卷積神經網路(Convolutional Neural Network)、Hopfield網路(hopfield Network)、多層感知器(Multilyer Perceptron)、徑向基函數網路(Radial Basis Function Network,RBFN)、受限波爾茲曼機(Restricted Boltzmann Machine)、回歸神經網路(Recurrent Neural Network,RNN)、自組織映射(Self-organizing Map,SOM)、尖峰神經網路(Spiking Neural Network)等。
(2)貝葉斯類(Bayesin):樸素貝葉斯(Naive Bayes)、高斯貝葉斯(Gaussian Naive Bayes)、多項樸素貝葉斯(Multinomial Naive Bayes)、平均-依賴性評估(Averaged One-Dependence Estimators,AODE)
貝葉斯信念網路(Bayesian Belief Network,BBN)、貝葉斯網路(Bayesian Network,BN)等。
(3)決策樹(Decision Tree)類:分類和回歸樹(Classification and Regression Tree,CART)、迭代Dichotomiser3(Iterative Dichotomiser 3, ID3),C4.5演算法(C4.5 Algorithm)、C5.0演算法(C5.0 Algorithm)、卡方自動交互檢測(Chi-squared Automatic Interaction Detection,CHAID)、決策殘端(Decision Stump)、ID3演算法(ID3 Algorithm)、隨機森林(Random Forest)、SLIQ(Supervised Learning in Quest)等。
(4)線性分類器(Linear Classifier)類:Fisher的線性判別(Fisher』s Linear Discriminant)
線性回歸(Linear Regression)、邏輯回歸(Logistic Regression)、多項邏輯回歸(Multionmial Logistic Regression)、樸素貝葉斯分類器(Naive Bayes Classifier)、感知(Perception)、支持向量機(Support Vector Machine)等。
常見的無監督學習類演算法包括:
(1) 人工神經網路(Artificial Neural Network)類:生成對抗網路(Generative Adversarial Networks,GAN),前饋神經網路(Feedforward Neural Network)、邏輯學習機(Logic Learning Machine)、自組織映射(Self-organizing Map)等。
(2) 關聯規則學習(Association Rule Learning)類:先驗演算法(Apriori Algorithm)、Eclat演算法(Eclat Algorithm)、FP-Growth演算法等。
(3)分層聚類演算法(Hierarchical Clustering):單連鎖聚類(Single-linkage Clustering),概念聚類(Conceptual Clustering)等。
(4)聚類分析(Cluster analysis):BIRCH演算法、DBSCAN演算法,期望最大化(Expectation-maximization,EM)、模糊聚類(Fuzzy Clustering)、K-means演算法、K均值聚類(K-means Clustering)、K-medians聚類、均值漂移演算法(Mean-shift)、OPTICS演算法等。
(5)異常檢測(Anomaly detection)類:K最鄰近(K-nearest Neighbor,KNN)演算法,局部異常因子演算法(Local Outlier Factor,LOF)等。
常見的半監督學習類演算法包含:生成模型(Generative Models)、低密度分離(Low-density Separation)、基於圖形的方法(Graph-based Methods)、聯合訓練(Co-training)等。
常見的強化學習類演算法包含:Q學習(Q-learning)、狀態-行動-獎勵-狀態-行動(State-Action-Reward-State-Action,SARSA)、DQN(Deep Q Network)、策略梯度演算法(Policy Gradients)、基於模型強化學習(Model Based RL)、時序差分學習(Temporal Different Learning)等。
常見的深度學習類演算法包含:深度信念網路(Deep Belief Machines)、深度卷積神經網路(Deep Convolutional Neural Networks)、深度遞歸神經網路(Deep Recurrent Neural Network)、分層時間記憶(Hierarchical Temporal Memory,HTM)、深度波爾茲曼機(Deep Boltzmann Machine,DBM)、棧式自動編碼器(Stacked Autoencoder)、生成對抗網路(Generative Adversarial Networks)等。
二、按照解決任務的不同來分類,粗略可以分為二分類演算法(Two-class Classification)、多分類演算法(Multi-class Classification)、回歸演算法(Regression)、聚類演算法(Clustering)和異常檢測(Anomaly Detection)五種。
1.二分類(Two-class Classification)
(1)二分類支持向量機(Two-class SVM):適用於數據特徵較多、線性模型的場景。
(2)二分類平均感知器(Two-class Average Perceptron):適用於訓練時間短、線性模型的場景。
(3)二分類邏輯回歸(Two-class Logistic Regression):適用於訓練時間短、線性模型的場景。
(4)二分類貝葉斯點機(Two-class Bayes Point Machine):適用於訓練時間短、線性模型的場景。(5)二分類決策森林(Two-class Decision Forest):適用於訓練時間短、精準的場景。
(6)二分類提升決策樹(Two-class Boosted Decision Tree):適用於訓練時間短、精準度高、內存佔用量大的場景
(7)二分類決策叢林(Two-class Decision Jungle):適用於訓練時間短、精確度高、內存佔用量小的場景。
(8)二分類局部深度支持向量機(Two-class Locally Deep SVM):適用於數據特徵較多的場景。
(9)二分類神經網路(Two-class Neural Network):適用於精準度高、訓練時間較長的場景。
解決多分類問題通常適用三種解決方案:第一種,從數據集和適用方法入手,利用二分類器解決多分類問題;第二種,直接使用具備多分類能力的多分類器;第三種,將二分類器改進成為多分類器今兒解決多分類問題。
常用的演算法:
(1)多分類邏輯回歸(Multiclass Logistic Regression):適用訓練時間短、線性模型的場景。
(2)多分類神經網路(Multiclass Neural Network):適用於精準度高、訓練時間較長的場景。
(3)多分類決策森林(Multiclass Decision Forest):適用於精準度高,訓練時間短的場景。
(4)多分類決策叢林(Multiclass Decision Jungle):適用於精準度高,內存佔用較小的場景。
(5)「一對多」多分類(One-vs-all Multiclass):取決於二分類器效果。
回歸
回歸問題通常被用來預測具體的數值而非分類。除了返回的結果不同,其他方法與分類問題類似。我們將定量輸出,或者連續變數預測稱為回歸;將定性輸出,或者離散變數預測稱為分類。長巾的演算法有:
(1)排序回歸(Ordinal Regression):適用於對數據進行分類排序的場景。
(2)泊松回歸(Poission Regression):適用於預測事件次數的場景。
(3)快速森林分位數回歸(Fast Forest Quantile Regression):適用於預測分布的場景。
(4)線性回歸(Linear Regression):適用於訓練時間短、線性模型的場景。
(5)貝葉斯線性回歸(Bayesian Linear Regression):適用於線性模型,訓練數據量較少的場景。
(6)神經網路回歸(Neural Network Regression):適用於精準度高、訓練時間較長的場景。
(7)決策森林回歸(Decision Forest Regression):適用於精準度高、訓練時間短的場景。
(8)提升決策樹回歸(Boosted Decision Tree Regression):適用於精確度高、訓練時間短、內存佔用較大的場景。
聚類
聚類的目標是發現數據的潛在規律和結構。聚類通常被用做描述和衡量不同數據源間的相似性,並把數據源分類到不同的簇中。
(1)層次聚類(Hierarchical Clustering):適用於訓練時間短、大數據量的場景。
(2)K-means演算法:適用於精準度高、訓練時間短的場景。
(3)模糊聚類FCM演算法(Fuzzy C-means,FCM):適用於精確度高、訓練時間短的場景。
(4)SOM神經網路(Self-organizing Feature Map,SOM):適用於運行時間較長的場景。
異常檢測
異常檢測是指對數據中存在的不正常或非典型的分體進行檢測和標志,有時也稱為偏差檢測。
異常檢測看起來和監督學習問題非常相似,都是分類問題。都是對樣本的標簽進行預測和判斷,但是實際上兩者的區別非常大,因為異常檢測中的正樣本(異常點)非常小。常用的演算法有:
(1)一分類支持向量機(One-class SVM):適用於數據特徵較多的場景。
(2)基於PCA的異常檢測(PCA-based Anomaly Detection):適用於訓練時間短的場景。
常見的遷移學習類演算法包含:歸納式遷移學習(Inctive Transfer Learning) 、直推式遷移學習(Transctive Transfer Learning)、無監督式遷移學習(Unsupervised Transfer Learning)、傳遞式遷移學習(Transitive Transfer Learning)等。
演算法的適用場景:
需要考慮的因素有:
(1)數據量的大小、數據質量和數據本身的特點
(2)機器學習要解決的具體業務場景中問題的本質是什麼?
(3)可以接受的計算時間是什麼?
(4)演算法精度要求有多高?
————————————————
原文鏈接: https://blog.csdn.net/nfzhlk/article/details/82725769
⑤ 神經網路以及小波分析法在汽車發動機故障檢修中有什麼應用
汽車是我們生活中常用的將交通工具,那麼神經網路和小波分析法在汽車發動機故障檢修中有什麼應用呢?大家請看我接下來詳細地講解。
一,小波分析在故障檢修中的應用
小波包分解與故障特徵提取。缸蓋表面的振動信號由一系列瞬態響應信號組成,分別代表氣缸的振動源響應信號:1為氣缸的燃燒激勵響應;2是排氣閥打開時的節流閥沖擊。氣門間隙異常時,振動信號的能量大於目前沖擊力作用時,振動信號的主要組件目前離沖擊力穩定的振動信號和雜訊,信號能量相對較小。因此,可以利用每個頻帶的能量變化來提取故障特徵,通過小波包分解系數{4]得到頻帶的能量。
⑥ BP神經網路的原理的BP什麼意思
原文鏈接:http://tecdat.cn/?p=19936
在本教程中,您將學習如何在R語言中創建神經網路模型。
神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。
該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。
本教程將涵蓋以下主題:
神經網路概論
正向傳播和反向傳播
激活函數
R中神經網路的實現
案例
利弊
結論
神經網路概論
神經網路是受人腦啟發執行特定任務的演算法。它是一組連接的輸入/輸出單元,其中每個連接都具有與之關聯的權重。在學習階段,網路通過調整權重進行學習,來預測給定輸入的正確類別標簽。
人腦由數十億個處理信息的神經細胞組成。每個神經細胞都認為是一個簡單的處理系統。被稱為生物神經網路的神經元通過電信號傳輸信息。這種並行的交互系統使大腦能夠思考和處理信息。一個神經元的樹突接收來自另一個神經元的輸入信號,並根據這些輸入將輸出響應到某個其他神經元的軸突。
創建測試數據集
創建測試數據集:專業知識得分和溝通技能得分
預測測試集的結果
使用計算函數預測測試數據的概率得分。
現在,將概率轉換為二進制類。
預測結果為1,0和1。
利弊
神經網路更靈活,可以用於回歸和分類問題。神經網路非常適合具有大量輸入(例如圖像)的非線性數據集,可以使用任意數量的輸入和層,可以並行執行工作。
還有更多可供選擇的演算法,例如SVM,決策樹和回歸演算法,這些演算法簡單,快速,易於訓練並提供更好的性能。神經網路更多的是黑盒子,需要更多的開發時間和更多的計算能力。與其他機器學習演算法相比,神經網路需要更多的數據。NN僅可用於數字輸入和非缺失值數據集。一位著名的神經網路研究人員說:「神經網路是解決任何問題的第二好的方法。最好的方法是真正理解問題。」
神經網路的用途
神經網路的特性提供了許多應用方面,例如:
模式識別:神經網路非常適合模式識別問題,例如面部識別,物體檢測,指紋識別等。
異常檢測:神經網路擅長異常檢測,它們可以輕松檢測出不適合常規模式的異常模式。
時間序列預測:神經網路可用於預測時間序列問題,例如股票價格,天氣預報。
自然語言處理:神經網路在自然語言處理任務中提供了廣泛的應用,例如文本分類,命名實體識別(NER),詞性標記,語音識別和拼寫檢查。
最受歡迎的見解
1.r語言用神經網路改進nelson-siegel模型擬合收益率曲線分析
2.r語言實現擬合神經網路預測和結果可視化
3.python用遺傳演算法-神經網路-模糊邏輯控制演算法對樂透分析
4.用於nlp的python:使用keras的多標簽文本lstm神經網路分類
5.用r語言實現神經網路預測股票實例
6.R語言基於Keras的小數據集深度學習圖像分類
7.用於NLP的seq2seq模型實例用Keras實現神經機器翻譯
8.python中基於網格搜索演算法優化的深度學習模型分析糖
9.matlab使用貝葉斯優化的深度學習
⑦ 淺談計算機人工智慧論文
近年來,隨著信息技術以及計算機技術的不斷發展,人工智慧在計算機中的應用也隨之加深,其被廣泛應用於計算機的各個領域。下面是我給大家推薦的淺談計算機人工智慧論文,希望大家喜歡!
《計算機在人工智慧中的應用研究》
摘要:近年來,隨著信息技術以及計算機技術的不斷發展,人工智慧在計算機中的應用也隨之加深,其被廣泛應用於計算機的各個領域。本文針對計算機在人工智慧中的應用進行研究,闡述了人工智慧的理論概念,分析當前其應用於人工智慧所存在的問題,並介紹人工智慧在部分領域中的應用。
關鍵詞:計算機;人工智慧;應用研究
一、前言
人工智慧又稱機器智能,來自於1956年的Dartmouth學會,在這學會上人們最初提出了“人工智慧”這一詞。人工智慧作為一門綜合性的學科,其是在計算機科學、資訊理論、心理學、神經生理學以及語言學等多種學科的互相滲透下發展而成。在計算機的應用系統方面,人工智慧是專門研究如何製造智能系統或智能機器來模仿人類進行智能活動的能力,從而延伸人們的科學化智能。人工智慧是一門富有挑戰性的科學,從事這項工作的人必須懂得計算機知識、心理學與哲學。人工智慧是處於思維科學的技術應用層次,是其應用分支之一。數學常被認為是多種學科的基礎科學,數學也進入語言及思維領域,人工智慧學科須借用數學工具。數學在標准邏輯及模糊數學等范圍發揮作用,其進入人工智慧學科,兩者將互相促進且快速發展。
二、人工智慧應用於計算機中存在的問題
(一)計算機語言理解的弱點。當前,計算機尚未能確切的理解語言的復雜性。然而,正處於初步研製階段的計算機語言翻譯器,對於演算法上的規范句子,已能顯示出極高的造句能力及理解能力。但其在理解句子意思上,尚未獲得明顯成就。我們所獲取的信息多來自於上下文的關系以及自身掌握的知識。人們在日常生活中的個人見解、社會見解以及文化見解給句子附加的意義帶來很大影響。
(二)模式識別的疑惑。採用計算機進行研究及開展模式識別,在一定程度上雖取得良好效果,有些已作為產品進行實際應用,但其理論以及方法和人的感官識別機制決然不同。人的形象思維能力以及識別手段,即使是計算機中最先進的識別系統也無法達到。此外,在現實社會中,生活作為一項結構寬松的任務,普通的家畜均能輕易對付,但機器卻無法做到,這並不意味著其永久不會,而是暫時的。
三、人工智慧在部分領域中的應用
伴隨著AI技術的快速發展,當今時代的各種信息技術發展均與人工智慧技術密切相關,這意味著人工智慧已廣泛應用於計算機的各個領域,以下是筆者對於人工智慧應用於計算機的部分領域進行闡述。具體情況如下。
(一)人工智慧進行符號計算。科學計算作為計算機的一種重要用途,可分為兩大類別。第一是純數值的計算,如求函數值。其次是符號的計算,亦稱代數運算,是一種智能的快速的計算,處理的內容均為符號。符號可代表實數、整數、復數以及有理數,或者代表集合、函數以及多項式等。隨著人工智慧的不斷發展以及計算機的逐漸普及,多種功能的計算機代數系統軟體相繼出現,如Maple或Mathematic。由於這些軟體均用C語言寫成,因此,其可在多數的計算機上使用。
(二)人工智慧用於模式識別。模式識別即計算機通過數學的技術方法對模式的判讀及自動處理進行研究。計算機模式識別的實現,是研發智能機器的突破點,其使人類深度的認識自身智能。其識別特點為准確、快速以及高效。計算機的模式識別過程相似於人類的學習過程,如語音識別。語音識別即為使計算機聽懂人說
的話而進行自動翻譯,如七國語言的口語自動翻譯系統。該系統的實現使人們出國時在購買機票、預定旅館及兌換外幣等方面,只需通過國際互聯網及電話網路,即可用電話或手機與“老外”進行對話。
(三)人工智慧計算機網路安全中的應用。當前,在計算機的網路安全管理中常見的技術主要有入侵檢測技術以及防火牆技術。防火牆作為計算機網路安全的設備之一,其在計算機的網路安全管理方面發揮重要作用。以往的防火牆尚未有檢測加密Web流量的功能,原因在於其未能見到加密的SSL流中的數據,無法快速的獲取SSL流中的數據且未能對其進行解密。因而,以往的防火牆無法有效的阻止應用程序的攻擊。此外,一般的應用程序進行加密後,可輕易的躲避以往防火牆的檢測。因此,由於以往的防火牆無法對應用數據流進行完整的監控,使其難以預防新型攻擊。新型的防火牆是通過利用統計、概率以及決策的智能方法以識別數據,達到訪問受到許可權的目地。然而此方法大多數是從人工智慧的學科中採取,因此,被命名為“智能防火牆”。
(四)人工智慧應用於計算機網路系統的故障診斷。人工神經網路作為一種信息處理系統,是通過人類的認知過程以及模擬人腦的組織結構而成。1943年時,人工神經網路首次被人提出並得到快速發展,其成為了人工智慧技術的另一個分支。人工神經網路通過自身的優點,如聯想記憶、自適應以及並列分布處理等,在智能故障診斷中受到廣泛關注,並且發揮極大的潛力,為智能故障診斷的探索開辟新的道路。人工神經網路的診斷方法異於專家系統的診斷方法,其通過現場眾多的標准樣本進行學習及訓練,加強調整人工神經網路中的閥值與連接權,使從中獲取的知識隱藏分布於整個網路,以達到人工神經網路的模式記憶目的。因此,人工神經網路具備較強的知識捕捉能力,能有效處理異常數據,彌補專家系統方法的缺陷。
四、結束語
總而言之,人工智慧作為計算機技術的潮流,其研究的理論及發現決定了計算機技術的發展前景。現今,多數人工智慧的研究成果已滲入到人們的日常生活。因此,我們應加強人工智慧技術的研究及開發,只有對其應用於各領域中存在的問題進行全面分析,並對此採取相應措施,使其順利發展。人工智慧技術的發展將給人們的生活、學習以及工作帶來極大的影響。
參考文獻:
[1]楊英.智能型計算機輔助教學系統的實現與研究[J].電腦知識與技術,2009,9
[2]毛毅.人工智慧研究熱點及其發展方向[J].技術與市場,2008,3
[3]李德毅.網路時代人工智慧研究與發展[J].智能系統學報,2009,1
[4]陳步英,馮紅.人工智慧的應用研究[J].邢台職業技術學院學報,2008,1
⑧ 人工神經網路概念梳理與實例演示
人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,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給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。
⑨ 我的筆記本聯網的時候顯示dns伺服器異常,這是網路服務商的問題還是我的本設置有問題
、背景
域名系統(Domain Name System,DNS)是互聯網的重要基礎設施之一,負責提供域名和IP地址之間的映射和解析,是網頁瀏覽、電子郵件等幾乎所有互聯網應用中的關鍵環節。因此,域名系統的穩定運行是實現互聯網正常服務的前提。近年來,針對域名系統的網路攻擊行為日益猖獗,DNS濫用現象層出不窮,再加上DNS協議本身固有的局限性,域名系統的安全問題正面臨著嚴峻的考驗。如何快速有效的檢測域名系統的行為異常,避免災難性事件的發生,是當今域名系統乃至整個互聯網所面臨的一個重要議題。
DNS伺服器通過對其所接收的DNS查詢請求進行應答來實現對外域名解析服務,因此DNS查詢數據流直接反映了DNS伺服器對外服務的整個過程,通過對DNS流量異常情況的檢測可以對DNS伺服器服務狀況進行有效的評估。由於導致DNS流量異常的原因是多方面的,有些是由針對DNS伺服器的網路攻擊導致的,有些是由於DNS服務系統的軟體缺陷或配置錯誤造成的。不同的原因所引起的DNS流量異常所具備的特徵也各不相同,這給DNS流量異常檢測帶來了諸多困難。
目前,在DNS異常流量檢測方面,比較傳統的方法是對發往DNS伺服器端的DNS查詢請求數據流中的一個或多個測量指標進行實時檢測,一旦某時刻某一指標超過規定的閾值,即做出流量異常報警。這種方法雖然實現簡單,但是僅僅通過對這些指標的獨立測量來判定流量是否異常過於片面,誤報率通常也很高,不能有效的實現異常流量的檢測。
近年來,隨著模式識別、數據挖掘技術的發展,開始有越來越多的數據模型被引入到DNS異常流量檢測領域,如在[Tracking]中,研究人員通過一種基於關聯特徵分析的檢測方法,來實現對異常DNS伺服器的識別和定位;[Context]則引入了一種上下文相關聚類的方法,用於DNS數據流的不同類別的劃分;此外,像貝葉斯分類[Bayesian]、時間序列分析[Similarity]等方法也被先後引入到DNS異常流量檢測中來。
不難發現,目前在DNS異常流量檢測方面,已有諸多可供參考利用的方法。但是,每種方法所對應的應用場合往往各不相同,通常都是面向某種特定的網路攻擊活動的檢測。此外,每種方法所採用的數據模型往往也比較復雜,存在計算代價大,部署成本高的弊端。基於目前DNS異常流量檢測領域的技術現狀,本文給出了兩種新型的DNS流量異常檢測方法。該兩種方法能夠有效的克服目前DNS異常流量檢測技術所存在的弊端,經驗證,它們都能夠對DNS流量異常實施有效的檢測。
2、具體技術方案
1)利用Heap』sLaw檢測DNS流量異常
第一種方法是通過利用Heap』s定律來實現DNS流量異常檢測。該方法創新性的將DNS數據流的多個測量指標進行聯合分析,發現它們在正常網路狀況下所表現出來的堆積定律的特性,然後根據這種特性對未來的流量特徵進行預測,通過預測值和實際觀測值的比較,實現網路異常流量實時檢測的目的。該方法避免了因為採用某些獨立測量指標進行檢測所導致的片面性和誤報率高的缺點,同時,該方法具有計算量小,部署成本低的特點,特別適合部署在大型DNS伺服器上。
堆積定律(Heap』sLaw)[Heap』s]最早起源於計算語言學中,用於描述文檔集合中所含單詞總量與不同單詞個數之間的關系:即通過對大量的英文文檔進行統計發現,對於給定的語料,其獨立的單詞數(vocabulary的size)V大致是語料大小N的一個指數函數。隨著文本數量的增加,其中涉及的獨立單詞(vocabulary)的個數占語料大小的比例先是突然增大然後增速放緩但是一直在提高,即隨著觀察到的文本越來越多,新單詞一直在出現,但發現整個字典的可能性在降低。
DNS伺服器通過對其所接收的DNS查詢請求進行應答來實現對外域名解析服務。一個典型的DNS查詢請求包由時間戳,來源IP地址,埠號,查詢域名,資源類型等欄位構成。我們發現,在正常網路狀況下,某時間段內DNS伺服器端所接收的DNS查詢請求數和查詢域名集合的大小兩者間遵循堆積定律的特性,同樣的,DNS查詢請求數和來源IP地址集合的大小兩者間也存在這種特性。因此,如果在某個時刻這種增長關系發生突變,那麼網路流量發生異常的概率也會比較高。由於在正常網路狀況下DNS伺服器端所接收的查詢域名集合的大小可以根據這種增長關系由DNS查詢請求數推算得到。通過將推算得到的查詢域名集合大小與實際觀測到的查詢域名集合的大小進行對比,如果兩者的差值超過一定的閾值,則可以認為有流量異常情況的發生,從而做出預警。類似的,通過將推算得到的來源IP地址集合大小與實際觀測到的來源IP地址集合的大小進行對比,同樣可以達到異常流量檢測的目的。
由於DNS流量異常發生時,DNS伺服器端接收的DNS查詢請求通常會異常增多,但是單純憑此就做出流量異常的警報很可能會導致誤報的發生。此時就可以根據觀測查詢域名空間大小的相應變化情況來做出判斷。如果觀測到的域名空間大小與推算得到的預測值的差值在允許的閾值范圍之內,則可以認定DNS查詢請求量的增多是由於DNS業務量的正常增長所致。相反,如果觀測到的域名空間大小未發生相應比例的增長,或者增長的幅度異常加大,則做出流量異常報警。例如,當拒絕服務攻擊(DenialofService)發生時,攻擊方為了降低本地DNS緩存命中率,提高攻擊效果,發往攻擊對象的查詢域名往往是隨機生成的任意域名,這些域名通常情況下不存在。因此當該類攻擊發生時,會導致所攻擊的DNS伺服器端當前實際查詢域名空間大小異常增大,與根據堆積定律所推算出預測值會存在較大的差距,即原先的增長關系會發生突變。如果兩者間的差距超過一定的閾值,就可以據此做出流量異常報警。
通過在真實數據上的測試和網路攻擊實驗的模擬驗證得知,該方法能夠對常見的流量異常情況進行實時高效的檢測。
2)利用熵分析檢測DDoS攻擊
通過分析各種網路攻擊數據包的特徵,我們可以看出:不論DDoS攻擊的手段如何改進,一般來說,各種DDoS工具軟體所製造出的攻擊都要符合如下兩個基本規律:
1、攻擊者製造的攻擊數據包會或多或少地修改包中的信息;
2、攻擊手段產生的攻擊流量的統計特徵不可能與正常流量一模一樣。
因此,我們可以做出一個大膽的假設:利用一些相對比較簡單的統計方法,可以檢測出專門針對DNS伺服器的DDoS攻擊,並且這中檢測方法也可以具有比較理想的精確度。
「熵」(Entropy)是德國物理學家克勞修斯(RudolfClausius,1822~1888)在1850年提出的一個術語,用來表示任何一種能量在空間中分布的均勻程度,也可以用來表示系統的混亂、無序程度。信息理論創始人香農(ClaudeElwoodShannon,1916~2001)在1948年將熵的概念引入到資訊理論中,並在其經典著作《通信的數學原理》中提出了建立在概率統計模型上的信息度量,也就是「信息熵」。熵在資訊理論中的定義如下:
如果在一個系統S中存在一個事件集合E={E1,E2,…,En},且每個事件的概率分布P={P1,P2,…,Pn},則每個事件本身所具有的信息量可由公式(1)表示如下:
熵表示整個系統S的平均信息量,其計算方法如公式(2)所示:
在資訊理論中,熵表示的是信息的不確定性,具有高信息度的系統信息熵是很低的,反過來低信息度系統則具有較高的熵值。具體說來,凡是導致隨機事件集合的肯定性,組織性,法則性或有序性等增加或減少的活動過程,都可以用信息熵的改變數這個統一的標尺來度量。熵值表示了系統的穩定情況,熵值越小,表示系統越穩定,反之,當系統中出現的不確定因素增多時,熵值也會升高。如果某個隨機變數的取值與系統的異常情況具有很強的相關性,那麼系統異常時刻該隨機變數的平均信息量就會與系統穩定時刻不同。如果某一時刻該異常情況大量出現,則系統的熵值會出現較大幅度的變化。這就使我們有可能通過系統熵值的變化情況檢測系統中是否存在異常現象,而且這種強相關性也使得檢測方法能夠具有相對較高的准確度。
將熵的理論運用到DNS系統的DDoS攻擊檢測中來,就是通過測量DNS數據包的某些特定屬性的統計特性(熵),從而判斷系統是否正在遭受攻擊。這里的熵值提供了一種對DNS的查詢數據屬性的描述。這些屬性包括目標域名長度、查詢類型、各種錯誤查詢的分布以及源IP地址的分布,等等。熵值越大,表示這些屬性的分布越隨機;相反,熵值越小,屬性分布范圍越小,某些屬性值出現的概率高。在正常穩定運行的DNS系統中,如果把查詢數據作為信息流,以每條DNS查詢請求中的某種查詢類型的出現作為隨機事件,那麼在一段時間之內,查詢類型這個隨機變數的熵應該是一個比較穩定的值,當攻擊者利用DNS查詢發起DDoS攻擊時,網路中會出現大量的攻擊數據包,勢必引起與查詢類型、查詢源地址等相關屬性的統計特性發生變化。即便是黑客在發動攻擊時,對於發送的查詢請求的類型和數量進行過精心設計,可以使從攻擊者到目標伺服器之間某一路徑上的熵值維持在穩定的水平,但絕不可能在所有的路徑上都做到這一點。因此通過檢測熵值的變化情況來檢測DNS系統中異常狀況的發生,不僅是一種簡便可行的方案,而且還可以具有很好的檢測效果。
DNS系統是通過資源記錄(ResourceRecord,RR)來記錄域名和IP地址信息的,每個資源記錄都有一個記錄類型(QType),用來標識資源記錄所包含的信息種類,如A記錄表示該資源記錄是域名到IP地址的映射,PTR記錄IP地址到域名的映射,NS記錄表示域名的授權信息等,用戶在查詢DNS相關信息時,需要指定相應的查詢類型。按照前述思想,我們可以採用DNS查詢數據中查詢類型的出現情況作為隨機事件來計算熵的變化情況,從而檢測DDoS攻擊是否存在。檢測方法的主要內容如圖1所示。可以看出,通過比較H1和H2之間的差別是否大於某一個設定的閾值,可以判定系統是否正在遭受DDoS攻擊。隨著查詢量窗口的不斷滑動,這種比較會隨著數據的不斷更新而不斷繼續下去。檢測演算法的具體步驟如下所示:
1、設定一個查詢量窗口,大小為W,表示窗口覆蓋了W條記錄。
2、統計窗口中出現的所有查詢類型及其在所屬窗口中出現的概率,根據公式(2)計算出該窗口的熵H1。
圖1熵分析檢測方法
3、獲取當前窗口中第一條查詢記錄所屬的查詢類型出現的概率,求出該類型所對應的增量
4、將窗口向後滑動一條記錄,此時新窗口中的第一條記錄為窗口滑動前的第二條記錄。
5、獲得窗口移動過程中加入的最後一條記錄所代表的查詢類型在原窗口中出現的概率以及對應的增量
6、計算新窗口中第一條記錄所對應的查詢類型出現在新窗口中出現的概率,以及對應的增量
7、計算新窗口中最後一條記錄所屬的查詢類型在當前窗口出現的概率以及對應的增量
8、根據前面的結果計算窗口移動後的熵:
重復步驟2至步驟8的過程,得到一系列的熵值,觀察熵值的變化曲線,當熵值曲線出現劇烈波動時,可以斷定此時的DNS查詢中出現了異常。
窗口的設定是影響檢測演算法的一個重要因素,窗口越大,熵值的變化越平緩,能夠有效降低誤檢測的情況發生,但同時也降低了對異常的敏感度,漏檢率上升;反之,能夠增加檢測的靈敏度,但准確性相應的會降低。因此,窗口大小的選擇,需要根據實際中查詢速率的大小進行調整。
2009年5月19日,多省市的遞歸伺服器由於收到超負荷的DNS查詢而失效,中國互聯網出現了大范圍的網路癱瘓事故,這起事故可以看作是一起典型的利用DNS查詢發起的分布式拒絕服務攻擊,這種突發的大量異常查詢混入到正常的DNS查詢中,必然會使DNS查詢中查詢類型的組成發生變化。我們利用從某頂級結點的DNS權威伺服器上採集到的2009年5月19日9:00-24:00之間的查詢日誌,來檢驗演算法是否能夠對DNS中的異常行為做出反應。圖2和圖3分別是窗口大小為1,000和10,000時所得到的熵變化曲線,圖4是該節點的查詢率曲線。
圖2窗口大小為1,000時熵的變化情況
圖3窗口大小為10,000時熵的變化情況
圖4查詢率曲線
從圖2和圖3中可以發現,大約從16:00時開始,熵值劇烈上升,這是由於此時系統中查詢類型為A和NS的查詢請求大量湧入,打破了系統原有的穩定態勢,在經歷較大的波動之後,又回復到一個穩定值。隨著系統中緩存失效的遞歸伺服器不斷增多,該根伺服器收到的異常數據量逐漸增大,在16:45左右熵值達到一個較低點,此時系統中已經混入了大量的異常查詢數據。由於各省遞歸伺服器的緩存設置的不一致,不斷的有遞歸伺服器崩潰,同時不斷緩存失效的遞歸伺服器加入,一直到21:00左右,這種異常查詢量到達峰值,表現為熵值到達一個極低的位置,隨著大批遞歸伺服器在巨大的壓力下癱瘓,查詢數據的組成再次發生劇烈波動,接下來隨著大面積斷網的發生,異常查詢無法到達該根伺服器,熵值在經歷波動之後又重新回到較穩定的狀態,圖4中的流量變化也證實了這一點。
圖2和圖3分別將查詢窗口設為1,000和10,000,對比兩圖可以看出,圖2中的熵值變化較為頻繁,反映出對DNS異常更加敏感,但同時誤檢測的幾率也較高,圖3中熵值的變化相對平緩,對異常情況敏感程度較低,同時誤檢率也相對較低。
上述例子表明該方法能夠及時發現DNS查詢中針對DNS伺服器的DDoS攻擊。將該演算法應用到DNS查詢流量的實時監測中,可以做到准實時的發現DNS異常從而能夠及早採取應對措施。此外,結合使用錯誤查詢類型或者源IP地址等其他屬性的分布來計算熵,或是採用時間窗口劃分流量等,可以進一步提高異常檢測的准確率。
3)利用人工神經網路分類器檢測DDoS攻擊
針對DDoS攻擊檢測這樣一個典型的入侵檢測問題,可以轉換為模式識別中的二元分類問題。利用人工神經網路分類器和DNS查詢數據可以有效檢測針對DNS名字伺服器的DDoS攻擊。通過分析DNS權威或者遞歸伺服器的查詢數據,針對DDoS攻擊在日誌中所表現出來的特性,提取出若干特徵向量,這些特徵向量用作分類器的輸入向量。分類器選擇使用多層感知器,屬於神經網路中的多層前饋神經網路。人工神經網路在用於DDoS攻擊檢測時具有以下顯著優點:
1、靈活性。能夠處理不完整的、畸變的、甚至非線性數據。由於DDoS攻擊是由許多攻擊者聯手實施的,因此以非線性的方式處理來自多個數據源的數據顯得尤其重要;
2、處理速度。神經網路方法的這一固有優勢使得入侵響應可以在被保護系統遭到毀滅性破壞之前發出,甚至對入侵行為進行預測;
3、學習性。該分類器的最大優點是能夠通過學習總結各種攻擊行為的特徵,並能識別出與當前正常行為模式不匹配的各種行為。
由於多層感知器具有上述不可替代的優點,因此選擇它作為分類器。分類器的輸出分為「服務正常」和「遭受攻擊」兩個結果,這個結果直接反應出DNS伺服器是否將要或者正在遭受DDoS攻擊。如果檢測結果是「遭受攻擊」,則相關人員可以及時採取措施,避免攻擊行為的進一步發展。
圖5DDoS攻擊檢測
如圖5所示,本檢測方法主要分為特徵提取、模型訓練和線上分類三個階段。在特徵提取階段,需要利用DNS查詢數據中已有的信息,結合各種DNSDDoS攻擊的特點,提取出對分類有用的特徵。模型訓練階段是通過大量的特徵數據,模擬出上百甚至上千的DDoS攻擊序列,對多層感知器進行訓練,多層感知器在訓練過程中學習攻擊行為的特徵,增強識別率。線上分類屬於應用階段,利用軟體實現將本方法部署在DNS權威或遞歸伺服器上。通過實時讀取DNS查詢數據,並將經過提取的特徵輸入到多層感知器中,就可以快速地識別出本伺服器是否將要或正在遭受DDoS攻擊,以便採取進一步防範措施。
多層感知器分類的精確率,在很大程度上取決於作為輸入的特徵向量是否能夠真正概括、體現出DDoS攻擊的特徵。本方法通過仔細分析各種DNSDDoS攻擊,以分鍾為時間粒度提取出八種能夠單獨或者聯合反映出攻擊的特徵:
1、每秒鍾DNS查詢量。這個特徵通過對每分鍾查詢量進行平均獲得;
2、每分鍾時間窗口內查詢率的標准差。公式如下:
其中,n表示每分鍾內查詢數據中記錄的秒數,Xi表示某一秒鍾的查詢量,m表示一分鍾內每秒鍾查詢量的均值;
3、IP空間大小。表示一分鍾內有多少個主機發出了DNS查詢請求;
4、域名空間大小。表示一分鍾內有多少域名被訪問;
5、源埠設置為53的查詢數量。由於某些針對DNS的DDoS攻擊將源埠設置為53,因此對這一設置進行跟蹤十分必要;
6、查詢記錄類型的熵的變化情況。公式如下:
其中n表示時間窗口內記錄類型的種類數,Pi表示某種記錄類型出現的概率,Xi表示某種記錄類型。
7、設置遞歸查詢的比例。由於某些DDoS攻擊會通過將查詢設置為遞歸查詢來增大攻擊效果,因此對這一設置進行跟蹤十分必要;
8、域名的平均長度。由於某些DDoS攻擊所查詢的域名是由程序隨機產生的,這必然在查詢數據上引起域名平均長度的變化,因此對域名的平均長度進行跟蹤也很有意義。
圖6人工神經網路分類器的結構
神經網路分類器的大致結構如圖6所示。如圖中所示,本分類器分為三個層次,一個輸入層,一個隱藏層,一個輸出層。輸入層包含八個單元,隱藏層包含20個單元,按照神經網路理論[3],隱藏層的單元數和輸入層的單元數應滿足以下關系:
H表示隱藏層單元數,N表示輸入層單元數。輸出層只含有一個單元,輸出值包含兩個:「1」表示「遭受攻擊」,「0」表示「服務正常」。
本檢測方法的關鍵技術點包括以下兩個方面:
1、特徵的抽取。這些特徵必須能夠充分、足夠地反映DDos攻擊發生時帶來的查詢狀況的改變;
2、學習、分類方法。選取多層感知器作為分類器,設計調整了該分類器的具體結構和相關參數,並利用後向傳播演算法對分類器進行訓練。通過將DDoS攻擊檢測問題轉化為包含「服務正常」和「遭受攻擊」兩種類別的二元分類問題,能夠有效地對DNSDDoS攻擊進行實時檢測。
⑩ 大數據科學家需要掌握的幾種異常值檢測方法
引言
異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。
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演算法則要表現得更好。
總結
上文為大家講解了異常值檢測的方法原理以及應用實踐。綜合來看,異常值檢測演算法多種多樣 ,每一種都有自己的優缺點和適用范圍,很難直接判斷哪一種異常檢測演算法是最佳的, 具體在實戰中,我們需要根據自身業務的特點,比如對計算量的要求、對異常值的容忍度等,選擇合適的異常值檢測演算法。
接下來,個推也會結合自身實踐,在大數據異常檢測方面不斷深耕,繼續優化演算法模型在不同業務場景中的性能,持續為開發者們分享前沿的理念與最新的實踐方案。