【基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法7000字(論文)】_第1頁
【基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法7000字(論文)】_第2頁
【基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法7000字(論文)】_第3頁
【基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法7000字(論文)】_第4頁
【基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法7000字(論文)】_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGE1PAGE基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法目錄TOC\o"1-2"\h\u313基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法 114291.引言 1258672.網(wǎng)絡(luò)異常檢測算法設(shè)計 285062.1設(shè)計流程 2154643.使用分類器進(jìn)行分類,獲得分類的結(jié)果。具體流程如圖2.1。 275122.2開發(fā)環(huán)境介紹 2158821、硬件環(huán)境: 2165422、軟件環(huán)境: 3157012.3數(shù)據(jù)集介紹 3252252.4數(shù)據(jù)預(yù)處理 4263252.5網(wǎng)絡(luò)模型結(jié)構(gòu) 5277593.系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 565473.1配置庫 5143313.2配置超參數(shù) 631303.3加載數(shù)據(jù)集 6241393.4數(shù)據(jù)預(yù)處理 792414.使用astype對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進(jìn)行浮點型轉(zhuǎn)換。 8259463.5定義卷積網(wǎng)絡(luò)結(jié)構(gòu)模型 9218973.6模型訓(xùn)練 1225944running_acc=0.0 12246454.實驗結(jié)果及分析 13199964.1評價指標(biāo) 1340164.2實驗結(jié)果及分析 14299135.總結(jié) 169761參考文獻(xiàn): 16摘要:網(wǎng)絡(luò)安全在給人們帶來舒適的同時,也帶來了一些頭疼的問題。網(wǎng)絡(luò)異常是對網(wǎng)絡(luò)安全問題的威脅,本文研究了基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法。一開始參照KDDCUP99數(shù)據(jù)集對數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進(jìn);然后根據(jù)卷積神經(jīng)網(wǎng)絡(luò)模型對訓(xùn)練數(shù)據(jù)進(jìn)行處理,得到訓(xùn)練模型數(shù)據(jù);最后把測試數(shù)據(jù)和訓(xùn)練模型數(shù)據(jù)進(jìn)行對比,然后求得平均準(zhǔn)確率,根據(jù)準(zhǔn)確率來評價模型的效果,進(jìn)而評估網(wǎng)絡(luò)異常檢測算法的可靠性。關(guān)鍵詞:KDDCUP99;神經(jīng)網(wǎng)絡(luò)模型;網(wǎng)絡(luò)異常檢測算法引言網(wǎng)絡(luò)安全事件也層出不窮,網(wǎng)絡(luò)攻擊也五花八門:針對企業(yè)的惡意軟件攻擊,針對網(wǎng)頁的Web攻擊,在目標(biāo)性攻擊方面,有供應(yīng)鏈攻擊與離地攻擊,不僅如此還有DDoS攻擊、挖礦活動、利用系統(tǒng)漏洞攻擊等攻擊行為,一直都潛藏在互聯(lián)網(wǎng)中,像這樣的攻擊行為對人們的各方面活動甚至國家都有了一定的威脅。已針對各種各樣的病毒,人們也有著不同的應(yīng)對方式,比如:計算機網(wǎng)絡(luò)系統(tǒng)中的防火墻安全技術(shù);對網(wǎng)絡(luò)訪問有目的性的限制安全技術(shù);計算機網(wǎng)絡(luò)密碼安全技術(shù);計算機網(wǎng)絡(luò)應(yīng)用過程中的防病毒安全技術(shù)以及計算機網(wǎng)絡(luò)數(shù)據(jù)庫安全技術(shù)等等。以上幾個安全防護(hù)措施在很大程度上保障了計算機網(wǎng)絡(luò)技術(shù)在應(yīng)用過程中的安全。不過因為計算機技術(shù)在不斷發(fā)展和更新,相對的計算機網(wǎng)絡(luò)安全威脅也在不斷升級。有效防御網(wǎng)絡(luò)攻擊的首要問題就是當(dāng)發(fā)生網(wǎng)絡(luò)攻擊時,系統(tǒng)需要盡可能快發(fā)現(xiàn)異常,分析異常,從而消除網(wǎng)絡(luò)異常,以保證網(wǎng)絡(luò)能夠正常的為人們提供服務(wù)。異常網(wǎng)絡(luò)檢測技術(shù)是研究網(wǎng)絡(luò)攻擊,及時發(fā)現(xiàn)入侵行為,這在網(wǎng)絡(luò)安全中是活躍的?;诤先∩窠?jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測算法,研究網(wǎng)絡(luò)異常行為。網(wǎng)絡(luò)異常檢測算法設(shè)計2.1設(shè)計流程設(shè)計流程主要包括三個步驟:1.首先獲取KDDCUP99數(shù)據(jù)集。然后對數(shù)據(jù)進(jìn)行預(yù)處理,比如字符型數(shù)據(jù)數(shù)值化、歸一化等操作,讓計算出的模型更加健壯。2.對數(shù)據(jù)進(jìn)行預(yù)處理后作為輸入,傳遞給卷積神經(jīng)網(wǎng)絡(luò)。用之前設(shè)計好的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練和特征值的提取。3.使用分類器進(jìn)行分類,獲得分類的結(jié)果。具體流程如圖2.1。圖2.1模型訓(xùn)練流程2.2開發(fā)環(huán)境介紹1、硬件環(huán)境:CPU:IntelCorei5-8250U內(nèi)存:8G磁盤:256G2、軟件環(huán)境:系統(tǒng)類型:Windows1064位操作系統(tǒng)開發(fā)工具:PyCharm開發(fā)語言:Python2.3數(shù)據(jù)集介紹本文采用KDDCUP99數(shù)據(jù)集。KDDCUP99數(shù)據(jù)集幾乎都是來自美國國防部研究局的機構(gòu)中,它將繼續(xù)收集九周的網(wǎng)絡(luò)接口和系統(tǒng)驗證數(shù)據(jù)。它的原材料包括不同的用戶類型、不同的攻擊方式和不同的網(wǎng)絡(luò)流量。盡管這一信息群體處于早期階段,但由于其龐大而復(fù)雜的性質(zhì),研究人員在網(wǎng)絡(luò)空間安全領(lǐng)域得到了廣泛認(rèn)可。這組數(shù)據(jù)中的各種網(wǎng)絡(luò)異常檢測算法可能反映了算法性能的好壞,通過比較學(xué)術(shù)范圍,這是網(wǎng)絡(luò)異常檢測算法的重要依據(jù)。KDDCUP99數(shù)據(jù)集總共累計了490萬次數(shù)據(jù)攻擊。它由一種正常類型記錄和22種攻擊類型組成。它由五大類組成:正常數(shù)據(jù)、拒絕服務(wù)攻擊、探測攻擊、遠(yuǎn)程對本地攻擊以及用戶對管理員攻擊。其數(shù)據(jù)標(biāo)識類型如表2.1所示。表2.1KDDCup99入侵檢測實驗數(shù)據(jù)的標(biāo)識探測攻擊(Probe):攻擊者對特定的網(wǎng)絡(luò)進(jìn)行探測或掃描,其目的是得到系統(tǒng)的信息和弱點,尋找網(wǎng)絡(luò)漏洞然后進(jìn)行攻擊。攻擊者需要盡可能詳細(xì)的收集系統(tǒng)信息,從而提高網(wǎng)絡(luò)入侵的成功率和效率。2.拒絕服務(wù)攻擊(DenialofService,DoS):這類型的攻擊偏向于主動攻擊,它的主要目的在于耗盡主機或者網(wǎng)絡(luò)等被攻擊對象的資源,然后讓被攻擊對象沒有辦法為操作者提供相對的服務(wù)。這樣一來,無論被攻擊對象的內(nèi)存有多少,處理速度有多快,對于這樣的攻擊都是沒有辦法應(yīng)對的。拒絕服務(wù)攻擊通常來說有三種方式:(1)專門發(fā)送過多的無用數(shù)據(jù)來引起網(wǎng)絡(luò)擁塞;(2)利用網(wǎng)絡(luò)中的漏洞來快速消耗資源;(3)多次、反復(fù)的發(fā)送請求。DoS攻擊具體包括smurf、neptune、mailbomb、pod、back、land等10種類型。3.非法獲取超級用戶權(quán)限攻擊(UsertoRoot,U2R):通常指攻擊者使用沒有相關(guān)權(quán)限或者權(quán)限很低的用戶,利用系統(tǒng)的某些漏洞來獲取超級超級用戶的權(quán)限,然后進(jìn)行一些非法的操作。這種攻擊包括perkrootkit、httptunnel、loadmodule、buffer_overflow等8種類型。4.遠(yuǎn)程到本地的非授權(quán)訪問攻擊(RemotetoLocal,R2L):一般是指攻擊者通過遠(yuǎn)程登陸進(jìn)入系統(tǒng)去執(zhí)行某些操作。這種攻擊主要包括phf、ftp_writet、warezmaster、warezclien、imap、guess_passwd、spymultihop、等13種類型。KDD99數(shù)據(jù)集中的每個樣本都含有41個特征屬性以及一個類標(biāo)識符。其中部分?jǐn)?shù)據(jù)如圖2.2所示。圖2.2部分?jǐn)?shù)據(jù)示例2.4數(shù)據(jù)預(yù)處理KDDCUP99數(shù)據(jù)集的每一條被標(biāo)記為正?;虍惓5挠涗浂加?1個固定特征。對于這些特征,要進(jìn)行預(yù)處理。符號特征數(shù)值化處理由于實驗算法無法對非數(shù)值型數(shù)據(jù)進(jìn)行處理,所以首先要對實驗數(shù)據(jù)進(jìn)行處理,這一部分的作用主要是將原始數(shù)據(jù)中的那些非數(shù)字類型的標(biāo)識轉(zhuǎn)換為數(shù)字類型,即數(shù)值化處理。本文使用sklearn.preprocessing.LabelEncoder將字符型特征轉(zhuǎn)換為數(shù)字。數(shù)值型特征歸一化處理一旦信息共享,特征就是數(shù)字。然而,有些特征是連續(xù)型的,而第二部分是不可信的。由于實驗算法的激活函數(shù)是連續(xù)的和有組織的,離散值是隨機的和分散的,因此數(shù)值被歸一化,歸一化公式如下:x=其中,Min是每個特征的最小值,Max是每個特征的最大值。經(jīng)過歸一化之后的每個數(shù)據(jù)的值域以一定的比例縮放,會均勻的規(guī)約到[0,1]之間。這樣可以消除不同量綱的差異帶來的影響。(3)將數(shù)據(jù)轉(zhuǎn)換為8*8的矩陣,缺少的位用0補齊。在卷積神經(jīng)網(wǎng)絡(luò)中,填充的目的一般是避免由于卷積運算而導(dǎo)致輸出圖像的縮小或者圖像邊緣的信息丟失。通常會在圖像的周邊部位填充上固定值。這樣一方面可以保證圖像的尺寸在卷積運算后不會縮小,另一方面也不會丟失位于圖像邊緣的信息。2.5網(wǎng)絡(luò)模型結(jié)構(gòu)本主題使用一個類來創(chuàng)建多維神經(jīng)網(wǎng)絡(luò)模型。它的網(wǎng)絡(luò)結(jié)構(gòu)如圖3.3所示。這個神經(jīng)網(wǎng)絡(luò)由單個輸入層、兩個卷積層、三個完整的接口層組成,一個源層由一個卷積層組成:CONV2D>激勵功能Relu->池化(MAXPOOL)整個接口層由線性層組成。其中卷積系數(shù)取值,步長為1,池層的長度和寬度設(shè)為2,步長設(shè)為2,池層暴露于以下樣本。圖2.3卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最后評價模型,通過在神經(jīng)網(wǎng)絡(luò)中的計算值與之前預(yù)定義的標(biāo)簽真實值,來求得分類的平均準(zhǔn)確率,也就是在神經(jīng)網(wǎng)絡(luò)中之前預(yù)定義的這些batch中有多少能夠被正確分類。系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)3.1配置庫#配置庫importtorchimportnumpyasnpimporttorch.optimasoptimfromtorch.autogradimportVariablefromsklearnimportdatasetsfromtorch.utils.dataimportDataLoaderfromtorch.utils.dataimportTensorDataset1.Numpy是Python的外部庫,可以將圖像等數(shù)據(jù)轉(zhuǎn)換為數(shù)組等形式,并且支持對維度數(shù)組和矩陣的運算。2.optim是優(yōu)化器模塊,提供了多種可以直接使用的優(yōu)化算法,例如:Adam,Momentum,RMSProp,AdaGrad和SGD等。3.datasets是一個數(shù)據(jù)集的庫,利用它可以加載一些常用的數(shù)據(jù)集,只需通過相應(yīng)的命令可以加載成功。4.DataLoader結(jié)合了數(shù)據(jù)集和采樣器,使用DataLoader類可以更加方便快捷的對數(shù)據(jù)進(jìn)行某種操作。5.TensorDataset可以用來對tensor進(jìn)行打包。該類通過每一個tensor的第一個維度進(jìn)行索引。因此,該類中的tensor第一維度必須相等。3.2配置超參數(shù)#神經(jīng)網(wǎng)絡(luò)參數(shù)batch_size=128learning_rate=1e-2num_epoches=301.batch_size指的是是批處理大小,它表示一次進(jìn)入網(wǎng)絡(luò)的圖片個數(shù)。迭代次數(shù)=樣本總數(shù)/批尺寸;在一定范圍內(nèi),批尺寸越大,跑完一次全數(shù)據(jù)集需要的迭代次數(shù)越少,處理數(shù)據(jù)的速度也越快。但是盲目增大批尺寸會導(dǎo)致達(dá)到一定精度所需時間更長。2.learning_rate是學(xué)習(xí)率。如果它的值太低,每個梯度的幅度相對較低,這意味著可以達(dá)到更高的訓(xùn)練時間精度。但是學(xué)習(xí)速度太高,學(xué)習(xí)效率則會過低,達(dá)不到學(xué)習(xí)的目的。3.num_epocher是數(shù)據(jù)集訓(xùn)練次數(shù),即數(shù)據(jù)集中的數(shù)據(jù)被訪問幾次。3.3加載數(shù)據(jù)集def__init__(self,batch_size):kddcup99=datasets.fetch_kddcup99()self.batch_size=batch_sizedata_X,data_y=self.__encode_data(kddcup99.data,kddcup99.target)self.train_dataloader=DataLoader(self.train_dataset,#使用的數(shù)據(jù)集self.batch_size,#批處理樣本的大小shuffle=True#每次迭代前打亂數(shù)據(jù))self.test_dataloader=DataLoader(self.test_dataset,self.batch_size,shuffle=True,num_workers=0)1.在模型建立與訓(xùn)練之前,首先需要準(zhǔn)備KDDCUP99數(shù)據(jù)集。該數(shù)據(jù)集可以直接在datasets中加載。 2.導(dǎo)入數(shù)據(jù)集后,使用DataLoader()函數(shù)將其定義為數(shù)據(jù)加載器,DataLoader()的作用是包裝數(shù)據(jù),其中shuffle參數(shù)代表是否打亂順序,True為打亂數(shù)據(jù),F(xiàn)alse代表不打亂數(shù)據(jù)。3.4數(shù)據(jù)預(yù)處理data_X=np.pad(data_X,((0,0),(0,64-len(data_X[0]))),'constant').reshape(-1,1,8,8)data_y=self._encoder['label'].transform(data_y)defsplit_data_to_tensor(self,data_X,data_y):X_train,X_test,y_train,y_test=train_test_split(data_X,data_y,test_size=0.3)train_dataset=TensorDataset(torch.from_numpy(X_train.astype(np.float32)),torch.from_numpy(y_train.astype(64)))test_dataset=TensorDataset(torch.from_numpy(X_test.astype(np.float32)),torch.from_numpy(y_test.astype(64)))returntrain_dataset,test_dataset1.np.pad()將numpy數(shù)組按某種的方法填充成某種的形狀。其語法結(jié)構(gòu)為:pad(array,pad_width,mode,**kwargs)參數(shù)解釋:array是要填補的數(shù)組。pad_width是填充的形狀。mode是指填充的方式,設(shè)置為constant則表示連續(xù)填充相同的值,reshape的作用是在不改變原始數(shù)據(jù)的前提下,將數(shù)組變換成指定的形狀。2.train_test_split函數(shù)在這里是用來將數(shù)據(jù)集按照隨機的方式劃分成訓(xùn)練集和測試集,同時返回訓(xùn)練集和測試集樣本以及標(biāo)簽。訓(xùn)練集(TrainingSet):用來學(xué)習(xí)的樣本集。使用這些樣本,通過網(wǎng)絡(luò)進(jìn)行正向傳播,得到損失函數(shù),從而通過梯度下降的方法確定網(wǎng)絡(luò)中的各個待定系數(shù)。測試集(TestSet):設(shè)置測試集的目的是在訓(xùn)練結(jié)束后,測試訓(xùn)練好的模型的能力。本文使用10%的KDDCUP99數(shù)據(jù)集進(jìn)行模型的訓(xùn)練。訓(xùn)練集的數(shù)據(jù)依照30%的比例劃分出測試集,則一共494021條數(shù)據(jù),使用345814條數(shù)據(jù)進(jìn)行訓(xùn)練,148207條數(shù)據(jù)進(jìn)行測試。3.將數(shù)據(jù)轉(zhuǎn)換為TensorDataset對象。TensorDataset可以用來對tensor進(jìn)行打包,就好像python中的zip功能。該類通過每一個tensor的第一個維度進(jìn)行索引。因此,該類中的tensor第一維度必須相等。4.使用astype對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進(jìn)行浮點型轉(zhuǎn)換。5.預(yù)處理前數(shù)據(jù)如圖3.1所示,由于數(shù)據(jù)篇幅較大,這里僅放置部分?jǐn)?shù)據(jù),以訓(xùn)練集前3個數(shù)據(jù)為例。圖3.1預(yù)處理前數(shù)據(jù)預(yù)處理后數(shù)據(jù)如圖3.2所示,同樣以訓(xùn)練集中的前3個數(shù)據(jù)為例。圖3.2預(yù)處理后數(shù)據(jù)3.5定義卷積網(wǎng)絡(luò)結(jié)構(gòu)模型classCNN(nn.Module):def__init__(self,in_dim,n_class):super(CNN,self).__init__()self.conv=nn.Sequential(nn.Conv2d(in_dim,6,3,stride=1,padding=1),nn.BatchNorm2d(6),nn.ReLU(True),nn.Conv2d(6,16,3,stride=1,padding=0),nn.BatchNorm2d(16),nn.ReLU(True),nn.MaxPool2d(2,2))self.fc=nn.Sequential(nn.Linear(144,512),nn.Linear(512,256),nn.Linear(256,n_class))defforward(self,x):out=self.conv(x)out=out.view(out.size(0),-1)out=self.fc(out) returnout1.nn.Moudle是nn中的核心類,它可以是包含多層的神經(jīng)網(wǎng)絡(luò)。例如,其內(nèi)容包括全連接層、激活層、損失層、卷積層以及循環(huán)層等網(wǎng)絡(luò)層和forword函數(shù)的定義。2.nn.sequential是一個有順序的容器,它繼承自Moudle類。它的作用主要是將卷積神經(jīng)網(wǎng)絡(luò)的多個功能層連接到一起。從而可以方便網(wǎng)絡(luò)定義向前傳播函數(shù)。另外,以特定神經(jīng)網(wǎng)絡(luò)模塊為元素的有序字典(OrderedDict)同樣可以作為傳入?yún)?shù)。3.nn.Conv2d是一個卷積神經(jīng)網(wǎng)絡(luò)的卷積層函數(shù),是二維卷積方法,相對應(yīng)的還有一維卷積方法nn.Conv1d,常用于文本數(shù)據(jù)的處理,而nn.Conv2d一般用于二維圖像。其接口定義:nn.Conv2d(self,in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True))參數(shù)解釋:in_channel:輸入圖像的通道數(shù),是一個整數(shù);out_channel:經(jīng)過卷積運算后,輸出圖像的通道數(shù),它和提取的特征數(shù)量有關(guān);kennel_size:卷積核大小,是整數(shù)或數(shù)組;stride:卷積的步長,默認(rèn)為1;padding:填充數(shù)量,為了保持輸出尺寸不變,這里取1。4.nn.BatchNorm2d是對上面的結(jié)果進(jìn)行批歸一化(BatchNormalization),其目的是防止訓(xùn)練過程中各個網(wǎng)絡(luò)層的輸入進(jìn)入到飽和區(qū)域從而導(dǎo)致梯度消失。5.nn.Relu是激活函數(shù),其作用是減少計算量,緩解過擬合。Relu函數(shù)的優(yōu)點是不會在訓(xùn)練過程中造成梯度飽和,同時由于Relu函數(shù)的線性運算,運算速度也比較快。由于輸入為負(fù)、輸出為0的性質(zhì),在反向傳播時,Relu函數(shù)也會造成梯度消失[21]。其函數(shù)解釋如圖3.3:圖3.3Relu函數(shù)6.nn.Linear用于設(shè)置神經(jīng)網(wǎng)絡(luò)中的全連接層。其接口定義:nn.Linear(in_features,out_features,bias=True)參數(shù)解釋:in_features:輸入特征的維度。out_features:輸出特征的維度。當(dāng)然,它也代表了該全連接層的神經(jīng)元個數(shù)。bias:代表是否會引入線性層的偏置參數(shù)。nn.MaxPool2d()是卷積神經(jīng)網(wǎng)絡(luò)中的池化層,可以減少計算量。經(jīng)典的池化方式有兩種——平均池化和最大池化。最大池化和平均池化的過程如圖3.4。這里采用的是最大池化層,卷積核大小為2*2,步長為2。圖3.4兩種池化方式8.forward函數(shù)的作用是將數(shù)據(jù)流向前傳播。3.6模型訓(xùn)練deftrain():criterion=nn.CrossEntropyLoss()optimizer=optim.SGD(model.parameters(),lr=learning_rate)#開始訓(xùn)練forepochinrange(num_epoches):print('epoch{}'.format(epoch+1))print('*'*10)running_loss=0.0running_acc=0.0fori,datainenumerate(dataset.train_dataloader,1):img,label=data#向前傳播out=model(img)#將數(shù)據(jù)傳入模型,進(jìn)行前向傳播loss=criterion(out,label)running_loss+=loss.item()*label.size(0)_,pred=torch.max(out,1)num_correct=(pred==label).sum()running_acc+=num_correct.item()#向后傳播optimizer.zero_grad()#梯度清零loss.backward()#后向傳播計算梯度optimizer.step()#利用梯度更新W,b參數(shù)CrossEntropyLoss()是交叉熵?fù)p失,也稱對數(shù)似然損失。當(dāng)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)的時候,通常會使用交叉熵來描述預(yù)測值與真實值之間的誤差,并根據(jù)誤差來對網(wǎng)絡(luò)進(jìn)行反向優(yōu)化。由于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目的是減少誤差,提高準(zhǔn)確度。因此,理想的輸出狀態(tài)是損失函數(shù)最小值的輸出[21]。兩個損失函數(shù)起作用,一個是具有不同函數(shù)的平均平方,另一個是交叉決策函數(shù)。本文使用了一個交叉函數(shù),所謂的crossentropylose()公式如下:其中x是網(wǎng)絡(luò)的輸出向量,class是真實標(biāo)簽SGD是隨機梯度下降法,是對梯度下降算法的改進(jìn),它的作用主要是是優(yōu)化神經(jīng)網(wǎng)絡(luò),加快運算速度,從而節(jié)省時間。SGD的原理是通過單個樣本對神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化更新。其優(yōu)勢是當(dāng)樣本數(shù)目過大時,只隨機取其中一部分的樣本進(jìn)行優(yōu)化就可以獲得最優(yōu)值。torch.max()簡單來說是返回一個張量中的最大值。上面torch.max(out,1)的意思是返回每一行中值最大的元素。這里的pred表示返回的預(yù)測結(jié)果。optimizer.zero_grad()用于將梯度清零。因為pytorch是動態(tài)計算圖,當(dāng)使用opimizer.step()和loss.backward()更新參數(shù)時,缺省情況下梯度是累加的,因此需要先手動把梯度初始化或者清零,所以這里要使用optimizer.zero_grad()將前面累加的梯度清除掉。loss.backward()的作用是實現(xiàn)反坡前進(jìn)。由于pytouch具有自動反向推進(jìn)功能,因此允許損失功能直接發(fā)揮反向推進(jìn)功能。這是損失。Back()用于反轉(zhuǎn)進(jìn)程,計算當(dāng)前梯度。優(yōu)化器。Step()函數(shù)基于當(dāng)前梯度,使用反向量,參數(shù)使用梯度下降法更新,從而降低模型的損失值。實驗結(jié)果及分析4.1評價指標(biāo)通常,網(wǎng)絡(luò)異常檢測算法的性能主要通過準(zhǔn)確率(AC)和損失值(loss)來衡量。本實驗采用準(zhǔn)確率(AC)和損失值(loss)作為評價指標(biāo)來評價模型的效果。4.1.1準(zhǔn)確率通過比較在神經(jīng)網(wǎng)絡(luò)中的計算值與之前預(yù)定義的標(biāo)簽真實值,來求得分類的平均準(zhǔn)確率,也就是在神經(jīng)網(wǎng)絡(luò)中之前預(yù)定義的這些batch中有多少張圖片能夠被正確分類。AC的計算公式如下:AC=其中TP:鑒定正確,樣本為正;TN:標(biāo)識正確,樣品為負(fù);FP:識別錯誤,樣品為證;FN鑒別錯誤,樣品為負(fù)。表4.1對數(shù)據(jù)進(jìn)行分類:表4.1數(shù)據(jù)分類情況4.1.2損失值在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,損失值通常用于證明凈收益的預(yù)測值和實際值之間的幫派參與程度,網(wǎng)絡(luò)通過幫派級別進(jìn)行優(yōu)化。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練旨在減少誤差和提高可預(yù)測性。因此,最佳狀態(tài)是把損失值壓縮到最低。4.2實驗結(jié)果及分析本文實現(xiàn)了基于連接神經(jīng)網(wǎng)絡(luò)的KDD杯99文件網(wǎng)絡(luò)異常檢測算法的設(shè)計。這里使用的卷積神經(jīng)網(wǎng)絡(luò)由一個輸入層、兩個卷積層、三個完整的連接層和一個起始層組成。其中卷積層的長度和寬度都設(shè)定為5,步長為1,池層的長度和寬度定位為2,階段大小也定為2,池層使用樣本中的最大值。采樣使用交叉熵?fù)p失。將測試數(shù)據(jù)集應(yīng)用到上一章節(jié)所得到的卷積神經(jīng)網(wǎng)絡(luò)模型之中,比較真實值與模型的預(yù)測值,最后統(tǒng)計預(yù)測結(jié)果的正確率。通過設(shè)置卷積神經(jīng)網(wǎng)絡(luò)的不同迭代次數(shù)來監(jiān)控準(zhǔn)確率的變化程度。如表4.2所示,在實驗過程中,隨著周期的增加,準(zhǔn)確度的趨勢增加。表4.2不同的epoch數(shù)目的準(zhǔn)確率對比epoch數(shù)目準(zhǔn)確率(%)156.831098.542099.013099.43本文進(jìn)行了模型的多次訓(xùn)練與調(diào)參,同時記錄了對應(yīng)的預(yù)測準(zhǔn)確率與損失值。30次迭代后,模型損失值為0.024216,準(zhǔn)確率為99.43%。本文模型的損失函數(shù)和迭代次數(shù)的關(guān)系如圖4.1所示。從圖中可以看出,隨著迭代次數(shù)的逐漸增加,其訓(xùn)練誤差不斷減小并達(dá)到收斂。圖4.1損失值變化準(zhǔn)確率和迭代次數(shù)的關(guān)系可以看圖4.2。是能夠看到隨著迭代次數(shù)的逐漸增加,其準(zhǔn)確率不斷上升達(dá)到0.9以上并趨于穩(wěn)定。圖4.2準(zhǔn)確率變化圖由圖4.1和圖4.2中的曲線可以看出,此時卷積神經(jīng)網(wǎng)絡(luò)模型的性能達(dá)到了一個較好的水平。另一方面,為了說明基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測算法的性能,本文也將使用卷積神經(jīng)網(wǎng)絡(luò)建立的模型與經(jīng)典的NN、SVM等其他網(wǎng)絡(luò)異常檢測算法模型進(jìn)行比較的,比較的結(jié)果如表4.3。從表中可以看出本文的CNN模型相比而言,檢測效果要高于其他模型,由此可得,本文提出的網(wǎng)絡(luò)異常檢測算法是有效的。表4.3與其他算法檢測結(jié)果的比較模型準(zhǔn)確率(%)NN82.30基于融合的SVM98.20基于DBN的算法98.59本文99.43總結(jié)在互聯(lián)網(wǎng)技術(shù)不斷發(fā)展的過程中,網(wǎng)絡(luò)攻擊的手段也越來越多樣。其主要特點有:技術(shù)更復(fù)雜,攻擊頻率更高,持續(xù)時間更長等。這使互聯(lián)網(wǎng)面臨著十分嚴(yán)峻的安全問題。網(wǎng)絡(luò)異常檢測技術(shù)作為一種主動的安全防御手段,對于網(wǎng)絡(luò)異常檢測技術(shù)的研究是非常有必要的。在搜集文獻(xiàn)的過程中,我發(fā)現(xiàn)伴隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,入侵的行為具有多樣性、復(fù)雜性、不確定性等特性,將快速發(fā)展的卷積神經(jīng)網(wǎng)絡(luò)算法應(yīng)用在網(wǎng)絡(luò)異常檢測中是一種創(chuàng)新。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論