




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE1PAGE基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測(cè)算法目錄TOC\o"1-2"\h\u313基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測(cè)算法 114291.引言 1258672.網(wǎng)絡(luò)異常檢測(cè)算法設(shè)計(jì) 285062.1設(shè)計(jì)流程 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è)計(jì)與實(shí)現(xiàn) 565473.1配置庫(kù) 5143313.2配置超參數(shù) 631303.3加載數(shù)據(jù)集 6241393.4數(shù)據(jù)預(yù)處理 792414.使用astype對(duì)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)進(jìn)行浮點(diǎn)型轉(zhuǎn)換。 8259463.5定義卷積網(wǎng)絡(luò)結(jié)構(gòu)模型 9218973.6模型訓(xùn)練 1225944running_acc=0.0 12246454.實(shí)驗(yàn)結(jié)果及分析 13199964.1評(píng)價(jià)指標(biāo) 1340164.2實(shí)驗(yàn)結(jié)果及分析 14299135.總結(jié) 169761參考文獻(xiàn): 16摘要:網(wǎng)絡(luò)安全在給人們帶來(lái)舒適的同時(shí),也帶來(lái)了一些頭疼的問(wèn)題。網(wǎng)絡(luò)異常是對(duì)網(wǎng)絡(luò)安全問(wèn)題的威脅,本文研究了基于連接神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測(cè)算法。一開始參照KDDCUP99數(shù)據(jù)集對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)進(jìn);然后根據(jù)卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行處理,得到訓(xùn)練模型數(shù)據(jù);最后把測(cè)試數(shù)據(jù)和訓(xùn)練模型數(shù)據(jù)進(jìn)行對(duì)比,然后求得平均準(zhǔn)確率,根據(jù)準(zhǔn)確率來(lái)評(píng)價(jià)模型的效果,進(jìn)而評(píng)估網(wǎng)絡(luò)異常檢測(cè)算法的可靠性。關(guān)鍵詞:KDDCUP99;神經(jīng)網(wǎng)絡(luò)模型;網(wǎng)絡(luò)異常檢測(cè)算法引言網(wǎng)絡(luò)安全事件也層出不窮,網(wǎng)絡(luò)攻擊也五花八門:針對(duì)企業(yè)的惡意軟件攻擊,針對(duì)網(wǎng)頁(yè)的Web攻擊,在目標(biāo)性攻擊方面,有供應(yīng)鏈攻擊與離地攻擊,不僅如此還有DDoS攻擊、挖礦活動(dòng)、利用系統(tǒng)漏洞攻擊等攻擊行為,一直都潛藏在互聯(lián)網(wǎng)中,像這樣的攻擊行為對(duì)人們的各方面活動(dòng)甚至國(guó)家都有了一定的威脅。已針對(duì)各種各樣的病毒,人們也有著不同的應(yīng)對(duì)方式,比如:計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中的防火墻安全技術(shù);對(duì)網(wǎng)絡(luò)訪問(wèn)有目的性的限制安全技術(shù);計(jì)算機(jī)網(wǎng)絡(luò)密碼安全技術(shù);計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用過(guò)程中的防病毒安全技術(shù)以及計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全技術(shù)等等。以上幾個(gè)安全防護(hù)措施在很大程度上保障了計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)在應(yīng)用過(guò)程中的安全。不過(guò)因?yàn)橛?jì)算機(jī)技術(shù)在不斷發(fā)展和更新,相對(duì)的計(jì)算機(jī)網(wǎng)絡(luò)安全威脅也在不斷升級(jí)。有效防御網(wǎng)絡(luò)攻擊的首要問(wèn)題就是當(dāng)發(fā)生網(wǎng)絡(luò)攻擊時(shí),系統(tǒng)需要盡可能快發(fā)現(xiàn)異常,分析異常,從而消除網(wǎng)絡(luò)異常,以保證網(wǎng)絡(luò)能夠正常的為人們提供服務(wù)。異常網(wǎng)絡(luò)檢測(cè)技術(shù)是研究網(wǎng)絡(luò)攻擊,及時(shí)發(fā)現(xiàn)入侵行為,這在網(wǎng)絡(luò)安全中是活躍的?;诤先∩窠?jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)異常檢測(cè)算法,研究網(wǎng)絡(luò)異常行為。網(wǎng)絡(luò)異常檢測(cè)算法設(shè)計(jì)2.1設(shè)計(jì)流程設(shè)計(jì)流程主要包括三個(gè)步驟:1.首先獲取KDDCUP99數(shù)據(jù)集。然后對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,比如字符型數(shù)據(jù)數(shù)值化、歸一化等操作,讓計(jì)算出的模型更加健壯。2.對(duì)數(shù)據(jù)進(jìn)行預(yù)處理后作為輸入,傳遞給卷積神經(jīng)網(wǎng)絡(luò)。用之前設(shè)計(jì)好的卷積神經(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ā)語(yǔ)言:Python2.3數(shù)據(jù)集介紹本文采用KDDCUP99數(shù)據(jù)集。KDDCUP99數(shù)據(jù)集幾乎都是來(lái)自美國(guó)國(guó)防部研究局的機(jī)構(gòu)中,它將繼續(xù)收集九周的網(wǎng)絡(luò)接口和系統(tǒng)驗(yàn)證數(shù)據(jù)。它的原材料包括不同的用戶類型、不同的攻擊方式和不同的網(wǎng)絡(luò)流量。盡管這一信息群體處于早期階段,但由于其龐大而復(fù)雜的性質(zhì),研究人員在網(wǎng)絡(luò)空間安全領(lǐng)域得到了廣泛認(rèn)可。這組數(shù)據(jù)中的各種網(wǎng)絡(luò)異常檢測(cè)算法可能反映了算法性能的好壞,通過(guò)比較學(xué)術(shù)范圍,這是網(wǎng)絡(luò)異常檢測(cè)算法的重要依據(jù)。KDDCUP99數(shù)據(jù)集總共累計(jì)了490萬(wàn)次數(shù)據(jù)攻擊。它由一種正常類型記錄和22種攻擊類型組成。它由五大類組成:正常數(shù)據(jù)、拒絕服務(wù)攻擊、探測(cè)攻擊、遠(yuǎn)程對(duì)本地攻擊以及用戶對(duì)管理員攻擊。其數(shù)據(jù)標(biāo)識(shí)類型如表2.1所示。表2.1KDDCup99入侵檢測(cè)實(shí)驗(yàn)數(shù)據(jù)的標(biāo)識(shí)探測(cè)攻擊(Probe):攻擊者對(duì)特定的網(wǎng)絡(luò)進(jìn)行探測(cè)或掃描,其目的是得到系統(tǒng)的信息和弱點(diǎn),尋找網(wǎng)絡(luò)漏洞然后進(jìn)行攻擊。攻擊者需要盡可能詳細(xì)的收集系統(tǒng)信息,從而提高網(wǎng)絡(luò)入侵的成功率和效率。2.拒絕服務(wù)攻擊(DenialofService,DoS):這類型的攻擊偏向于主動(dòng)攻擊,它的主要目的在于耗盡主機(jī)或者網(wǎng)絡(luò)等被攻擊對(duì)象的資源,然后讓被攻擊對(duì)象沒(méi)有辦法為操作者提供相對(duì)的服務(wù)。這樣一來(lái),無(wú)論被攻擊對(duì)象的內(nèi)存有多少,處理速度有多快,對(duì)于這樣的攻擊都是沒(méi)有辦法應(yīng)對(duì)的。拒絕服務(wù)攻擊通常來(lái)說(shuō)有三種方式:(1)專門發(fā)送過(guò)多的無(wú)用數(shù)據(jù)來(lái)引起網(wǎng)絡(luò)擁塞;(2)利用網(wǎng)絡(luò)中的漏洞來(lái)快速消耗資源;(3)多次、反復(fù)的發(fā)送請(qǐng)求。DoS攻擊具體包括smurf、neptune、mailbomb、pod、back、land等10種類型。3.非法獲取超級(jí)用戶權(quán)限攻擊(UsertoRoot,U2R):通常指攻擊者使用沒(méi)有相關(guān)權(quán)限或者權(quán)限很低的用戶,利用系統(tǒng)的某些漏洞來(lái)獲取超級(jí)超級(jí)用戶的權(quán)限,然后進(jìn)行一些非法的操作。這種攻擊包括perkrootkit、httptunnel、loadmodule、buffer_overflow等8種類型。4.遠(yuǎn)程到本地的非授權(quán)訪問(wèn)攻擊(RemotetoLocal,R2L):一般是指攻擊者通過(guò)遠(yuǎn)程登陸進(jìn)入系統(tǒng)去執(zhí)行某些操作。這種攻擊主要包括phf、ftp_writet、warezmaster、warezclien、imap、guess_passwd、spymultihop、等13種類型。KDD99數(shù)據(jù)集中的每個(gè)樣本都含有41個(gè)特征屬性以及一個(gè)類標(biāo)識(shí)符。其中部分?jǐn)?shù)據(jù)如圖2.2所示。圖2.2部分?jǐn)?shù)據(jù)示例2.4數(shù)據(jù)預(yù)處理KDDCUP99數(shù)據(jù)集的每一條被標(biāo)記為正常或異常的記錄都有41個(gè)固定特征。對(duì)于這些特征,要進(jìn)行預(yù)處理。符號(hào)特征數(shù)值化處理由于實(shí)驗(yàn)算法無(wú)法對(duì)非數(shù)值型數(shù)據(jù)進(jìn)行處理,所以首先要對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理,這一部分的作用主要是將原始數(shù)據(jù)中的那些非數(shù)字類型的標(biāo)識(shí)轉(zhuǎn)換為數(shù)字類型,即數(shù)值化處理。本文使用sklearn.preprocessing.LabelEncoder將字符型特征轉(zhuǎn)換為數(shù)字。數(shù)值型特征歸一化處理一旦信息共享,特征就是數(shù)字。然而,有些特征是連續(xù)型的,而第二部分是不可信的。由于實(shí)驗(yàn)算法的激活函數(shù)是連續(xù)的和有組織的,離散值是隨機(jī)的和分散的,因此數(shù)值被歸一化,歸一化公式如下:x=其中,Min是每個(gè)特征的最小值,Max是每個(gè)特征的最大值。經(jīng)過(guò)歸一化之后的每個(gè)數(shù)據(jù)的值域以一定的比例縮放,會(huì)均勻的規(guī)約到[0,1]之間。這樣可以消除不同量綱的差異帶來(lái)的影響。(3)將數(shù)據(jù)轉(zhuǎn)換為8*8的矩陣,缺少的位用0補(bǔ)齊。在卷積神經(jīng)網(wǎng)絡(luò)中,填充的目的一般是避免由于卷積運(yùn)算而導(dǎo)致輸出圖像的縮小或者圖像邊緣的信息丟失。通常會(huì)在圖像的周邊部位填充上固定值。這樣一方面可以保證圖像的尺寸在卷積運(yùn)算后不會(huì)縮小,另一方面也不會(huì)丟失位于圖像邊緣的信息。2.5網(wǎng)絡(luò)模型結(jié)構(gòu)本主題使用一個(gè)類來(lái)創(chuàng)建多維神經(jīng)網(wǎng)絡(luò)模型。它的網(wǎng)絡(luò)結(jié)構(gòu)如圖3.3所示。這個(gè)神經(jīng)網(wǎng)絡(luò)由單個(gè)輸入層、兩個(gè)卷積層、三個(gè)完整的接口層組成,一個(gè)源層由一個(gè)卷積層組成:CONV2D>激勵(lì)功能Relu->池化(MAXPOOL)整個(gè)接口層由線性層組成。其中卷積系數(shù)取值,步長(zhǎng)為1,池層的長(zhǎng)度和寬度設(shè)為2,步長(zhǎng)設(shè)為2,池層暴露于以下樣本。圖2.3卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最后評(píng)價(jià)模型,通過(guò)在神經(jīng)網(wǎng)絡(luò)中的計(jì)算值與之前預(yù)定義的標(biāo)簽真實(shí)值,來(lái)求得分類的平均準(zhǔn)確率,也就是在神經(jīng)網(wǎng)絡(luò)中之前預(yù)定義的這些batch中有多少能夠被正確分類。系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3.1配置庫(kù)#配置庫(kù)importtorchimportnumpyasnpimporttorch.optimasoptimfromtorch.autogradimportVariablefromsklearnimportdatasetsfromtorch.utils.dataimportDataLoaderfromtorch.utils.dataimportTensorDataset1.Numpy是Python的外部庫(kù),可以將圖像等數(shù)據(jù)轉(zhuǎn)換為數(shù)組等形式,并且支持對(duì)維度數(shù)組和矩陣的運(yùn)算。2.optim是優(yōu)化器模塊,提供了多種可以直接使用的優(yōu)化算法,例如:Adam,Momentum,RMSProp,AdaGrad和SGD等。3.datasets是一個(gè)數(shù)據(jù)集的庫(kù),利用它可以加載一些常用的數(shù)據(jù)集,只需通過(guò)相應(yīng)的命令可以加載成功。4.DataLoader結(jié)合了數(shù)據(jù)集和采樣器,使用DataLoader類可以更加方便快捷的對(duì)數(shù)據(jù)進(jìn)行某種操作。5.TensorDataset可以用來(lái)對(duì)tensor進(jìn)行打包。該類通過(guò)每一個(gè)tensor的第一個(gè)維度進(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ò)的圖片個(gè)數(shù)。迭代次數(shù)=樣本總數(shù)/批尺寸;在一定范圍內(nèi),批尺寸越大,跑完一次全數(shù)據(jù)集需要的迭代次數(shù)越少,處理數(shù)據(jù)的速度也越快。但是盲目增大批尺寸會(huì)導(dǎo)致達(dá)到一定精度所需時(shí)間更長(zhǎng)。2.learning_rate是學(xué)習(xí)率。如果它的值太低,每個(gè)梯度的幅度相對(duì)較低,這意味著可以達(dá)到更高的訓(xùn)練時(shí)間精度。但是學(xué)習(xí)速度太高,學(xué)習(xí)效率則會(huì)過(guò)低,達(dá)不到學(xué)習(xí)的目的。3.num_epocher是數(shù)據(jù)集訓(xùn)練次數(shù),即數(shù)據(jù)集中的數(shù)據(jù)被訪問(wèn)幾次。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ù)組按某種的方法填充成某種的形狀。其語(yǔ)法結(jié)構(gòu)為:pad(array,pad_width,mode,**kwargs)參數(shù)解釋:array是要填補(bǔ)的數(shù)組。pad_width是填充的形狀。mode是指填充的方式,設(shè)置為constant則表示連續(xù)填充相同的值,reshape的作用是在不改變?cè)紨?shù)據(jù)的前提下,將數(shù)組變換成指定的形狀。2.train_test_split函數(shù)在這里是用來(lái)將數(shù)據(jù)集按照隨機(jī)的方式劃分成訓(xùn)練集和測(cè)試集,同時(shí)返回訓(xùn)練集和測(cè)試集樣本以及標(biāo)簽。訓(xùn)練集(TrainingSet):用來(lái)學(xué)習(xí)的樣本集。使用這些樣本,通過(guò)網(wǎng)絡(luò)進(jìn)行正向傳播,得到損失函數(shù),從而通過(guò)梯度下降的方法確定網(wǎng)絡(luò)中的各個(gè)待定系數(shù)。測(cè)試集(TestSet):設(shè)置測(cè)試集的目的是在訓(xùn)練結(jié)束后,測(cè)試訓(xùn)練好的模型的能力。本文使用10%的KDDCUP99數(shù)據(jù)集進(jìn)行模型的訓(xùn)練。訓(xùn)練集的數(shù)據(jù)依照30%的比例劃分出測(cè)試集,則一共494021條數(shù)據(jù),使用345814條數(shù)據(jù)進(jìn)行訓(xùn)練,148207條數(shù)據(jù)進(jìn)行測(cè)試。3.將數(shù)據(jù)轉(zhuǎn)換為TensorDataset對(duì)象。TensorDataset可以用來(lái)對(duì)tensor進(jìn)行打包,就好像python中的zip功能。該類通過(guò)每一個(gè)tensor的第一個(gè)維度進(jìn)行索引。因此,該類中的tensor第一維度必須相等。4.使用astype對(duì)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)進(jìn)行浮點(diǎn)型轉(zhuǎn)換。5.預(yù)處理前數(shù)據(jù)如圖3.1所示,由于數(shù)據(jù)篇幅較大,這里僅放置部分?jǐn)?shù)據(jù),以訓(xùn)練集前3個(gè)數(shù)據(jù)為例。圖3.1預(yù)處理前數(shù)據(jù)預(yù)處理后數(shù)據(jù)如圖3.2所示,同樣以訓(xùn)練集中的前3個(gè)數(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是一個(gè)有順序的容器,它繼承自Moudle類。它的作用主要是將卷積神經(jīng)網(wǎng)絡(luò)的多個(gè)功能層連接到一起。從而可以方便網(wǎng)絡(luò)定義向前傳播函數(shù)。另外,以特定神經(jīng)網(wǎng)絡(luò)模塊為元素的有序字典(OrderedDict)同樣可以作為傳入?yún)?shù)。3.nn.Conv2d是一個(gè)卷積神經(jīng)網(wǎng)絡(luò)的卷積層函數(shù),是二維卷積方法,相對(duì)應(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ù),是一個(gè)整數(shù);out_channel:經(jīng)過(guò)卷積運(yùn)算后,輸出圖像的通道數(shù),它和提取的特征數(shù)量有關(guān);kennel_size:卷積核大小,是整數(shù)或數(shù)組;stride:卷積的步長(zhǎng),默認(rèn)為1;padding:填充數(shù)量,為了保持輸出尺寸不變,這里取1。4.nn.BatchNorm2d是對(duì)上面的結(jié)果進(jìn)行批歸一化(BatchNormalization),其目的是防止訓(xùn)練過(guò)程中各個(gè)網(wǎng)絡(luò)層的輸入進(jìn)入到飽和區(qū)域從而導(dǎo)致梯度消失。5.nn.Relu是激活函數(shù),其作用是減少計(jì)算量,緩解過(guò)擬合。Relu函數(shù)的優(yōu)點(diǎn)是不會(huì)在訓(xùn)練過(guò)程中造成梯度飽和,同時(shí)由于Relu函數(shù)的線性運(yùn)算,運(yùn)算速度也比較快。由于輸入為負(fù)、輸出為0的性質(zhì),在反向傳播時(shí),Relu函數(shù)也會(huì)造成梯度消失[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)元個(gè)數(shù)。bias:代表是否會(huì)引入線性層的偏置參數(shù)。nn.MaxPool2d()是卷積神經(jīng)網(wǎng)絡(luò)中的池化層,可以減少計(jì)算量。經(jīng)典的池化方式有兩種——平均池化和最大池化。最大池化和平均池化的過(guò)程如圖3.4。這里采用的是最大池化層,卷積核大小為2*2,步長(zhǎng)為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()#后向傳播計(jì)算梯度optimizer.step()#利用梯度更新W,b參數(shù)CrossEntropyLoss()是交叉熵?fù)p失,也稱對(duì)數(shù)似然損失。當(dāng)訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)的時(shí)候,通常會(huì)使用交叉熵來(lái)描述預(yù)測(cè)值與真實(shí)值之間的誤差,并根據(jù)誤差來(lái)對(duì)網(wǎng)絡(luò)進(jìn)行反向優(yōu)化。由于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目的是減少誤差,提高準(zhǔn)確度。因此,理想的輸出狀態(tài)是損失函數(shù)最小值的輸出[21]。兩個(gè)損失函數(shù)起作用,一個(gè)是具有不同函數(shù)的平均平方,另一個(gè)是交叉決策函數(shù)。本文使用了一個(gè)交叉函數(shù),所謂的crossentropylose()公式如下:其中x是網(wǎng)絡(luò)的輸出向量,class是真實(shí)標(biāo)簽SGD是隨機(jī)梯度下降法,是對(duì)梯度下降算法的改進(jìn),它的作用主要是是優(yōu)化神經(jīng)網(wǎng)絡(luò),加快運(yùn)算速度,從而節(jié)省時(shí)間。SGD的原理是通過(guò)單個(gè)樣本對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化更新。其優(yōu)勢(shì)是當(dāng)樣本數(shù)目過(guò)大時(shí),只隨機(jī)取其中一部分的樣本進(jìn)行優(yōu)化就可以獲得最優(yōu)值。torch.max()簡(jiǎn)單來(lái)說(shuō)是返回一個(gè)張量中的最大值。上面torch.max(out,1)的意思是返回每一行中值最大的元素。這里的pred表示返回的預(yù)測(cè)結(jié)果。optimizer.zero_grad()用于將梯度清零。因?yàn)閜ytorch是動(dòng)態(tài)計(jì)算圖,當(dāng)使用opimizer.step()和loss.backward()更新參數(shù)時(shí),缺省情況下梯度是累加的,因此需要先手動(dòng)把梯度初始化或者清零,所以這里要使用optimizer.zero_grad()將前面累加的梯度清除掉。loss.backward()的作用是實(shí)現(xiàn)反坡前進(jìn)。由于pytouch具有自動(dòng)反向推進(jìn)功能,因此允許損失功能直接發(fā)揮反向推進(jìn)功能。這是損失。Back()用于反轉(zhuǎn)進(jìn)程,計(jì)算當(dāng)前梯度。優(yōu)化器。Step()函數(shù)基于當(dāng)前梯度,使用反向量,參數(shù)使用梯度下降法更新,從而降低模型的損失值。實(shí)驗(yàn)結(jié)果及分析4.1評(píng)價(jià)指標(biāo)通常,網(wǎng)絡(luò)異常檢測(cè)算法的性能主要通過(guò)準(zhǔn)確率(AC)和損失值(loss)來(lái)衡量。本實(shí)驗(yàn)采用準(zhǔn)確率(AC)和損失值(loss)作為評(píng)價(jià)指標(biāo)來(lái)評(píng)價(jià)模型的效果。4.1.1準(zhǔn)確率通過(guò)比較在神經(jīng)網(wǎng)絡(luò)中的計(jì)算值與之前預(yù)定義的標(biāo)簽真實(shí)值,來(lái)求得分類的平均準(zhǔn)確率,也就是在神經(jīng)網(wǎng)絡(luò)中之前預(yù)定義的這些batch中有多少?gòu)垐D片能夠被正確分類。AC的計(jì)算公式如下:AC=其中TP:鑒定正確,樣本為正;TN:標(biāo)識(shí)正確,樣品為負(fù);FP:識(shí)別錯(cuò)誤,樣品為證;FN鑒別錯(cuò)誤,樣品為負(fù)。表4.1對(duì)數(shù)據(jù)進(jìn)行分類:表4.1數(shù)據(jù)分類情況4.1.2損失值在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,損失值通常用于證明凈收益的預(yù)測(cè)值和實(shí)際值之間的幫派參與程度,網(wǎng)絡(luò)通過(guò)幫派級(jí)別進(jìn)行優(yōu)化。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練旨在減少誤差和提高可預(yù)測(cè)性。因此,最佳狀態(tài)是把損失值壓縮到最低。4.2實(shí)驗(yàn)結(jié)果及分析本文實(shí)現(xiàn)了基于連接神經(jīng)網(wǎng)絡(luò)的KDD杯99文件網(wǎng)絡(luò)異常檢測(cè)算法的設(shè)計(jì)。這里使用的卷積神經(jīng)網(wǎng)絡(luò)由一個(gè)輸入層、兩個(gè)卷積層、三個(gè)完整的連接層和一個(gè)起始層組成。其中卷積層的長(zhǎng)度和寬度都設(shè)定為5,步長(zhǎng)為1,池層的長(zhǎng)度和寬度定位為2,階段大小也定為2,池層使用樣本中的最大值。采樣使用交叉熵?fù)p失。將測(cè)試數(shù)據(jù)集應(yīng)用到上一章節(jié)所得到的卷積神經(jīng)網(wǎng)絡(luò)模型之中,比較真實(shí)值與模型的預(yù)測(cè)值,最后統(tǒng)計(jì)預(yù)測(cè)結(jié)果的正確率。通過(guò)設(shè)置卷積神經(jīng)網(wǎng)絡(luò)的不同迭代次數(shù)來(lái)監(jiān)控準(zhǔn)確率的變化程度。如表4.2所示,在實(shí)驗(yàn)過(guò)程中,隨著周期的增加,準(zhǔn)確度的趨勢(shì)增加。表4.2不同的epoch數(shù)目的準(zhǔn)確率對(duì)比epoch數(shù)目準(zhǔn)確率(%)156.831098.542099.013099.43本文進(jìn)行了模型的多次訓(xùn)練與調(diào)參,同時(shí)記錄了對(duì)應(yīng)的預(yù)測(cè)準(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中的曲線可以看出,此時(shí)卷積神經(jīng)網(wǎng)絡(luò)模型的性能達(dá)到了一個(gè)較好的水平。另一方面,為了說(shuō)明基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測(cè)算法的性能,本文也將使用卷積神經(jīng)網(wǎng)絡(luò)建立的模型與經(jīng)典的NN、SVM等其他網(wǎng)絡(luò)異常檢測(cè)算法模型進(jìn)行比較的,比較的結(jié)果如表4.3。從表中可以看出本文的CNN模型相比而言,檢測(cè)效果要高于其他模型,由此可得,本文提出的網(wǎng)絡(luò)異常檢測(cè)算法是有效的。表4.3與其他算法檢測(cè)結(jié)果的比較模型準(zhǔn)確率(%)NN82.30基于融合的SVM98.20基于DBN的算法98.59本文99.43總結(jié)在互聯(lián)網(wǎng)技術(shù)不斷發(fā)展的過(guò)程中,網(wǎng)絡(luò)攻擊的手段也越來(lái)越多樣。其主要特點(diǎn)有:技術(shù)更復(fù)雜,攻擊頻率更高,持續(xù)時(shí)間更長(zhǎng)等。這使互聯(lián)網(wǎng)面臨著十分嚴(yán)峻的安全問(wèn)題。網(wǎng)絡(luò)異常檢測(cè)技術(shù)作為一種主動(dòng)的安全防御手段,對(duì)于網(wǎng)絡(luò)異常檢測(cè)技術(shù)的研究是非常有必要的。在搜集文獻(xiàn)的過(guò)程中,我發(fā)現(xiàn)伴隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,入侵的行為具有多樣性、復(fù)雜性、不確定性等特性,將快速發(fā)展的卷積神經(jīng)網(wǎng)絡(luò)算法應(yīng)用在網(wǎng)絡(luò)異常檢測(cè)中是一種創(chuàng)新。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 批發(fā)商信譽(yù)評(píng)估考核試卷
- Unit8 Section B reading教學(xué)設(shè)計(jì)- 2024-2025學(xué)年人教版八年級(jí)英語(yǔ)上冊(cè)
- 期貨市場(chǎng)交易員職業(yè)技能培訓(xùn)與提升考核試卷
- 毛皮制品加工行業(yè)環(huán)境保護(hù)與低碳經(jīng)濟(jì)考核試卷
- 森林害蟲防治與氣候變化適應(yīng)性管理考核試卷
- 文具行業(yè)渠道整合與創(chuàng)新考核試卷
- 健身器材制造業(yè)生產(chǎn)效率提升與精益化管理考核試卷
- 批發(fā)業(yè)務(wù)中的客戶關(guān)系管理系統(tǒng)應(yīng)用考核試卷
- 殘疾人座車國(guó)內(nèi)外市場(chǎng)對(duì)比分析考核試卷
- 病案管理部門信息化建設(shè)計(jì)劃
- A320飛機(jī)空調(diào)系統(tǒng)非正常操作A要點(diǎn)分析
- 我的家鄉(xiāng)湖北襄陽(yáng)介紹
- 邏輯判斷課件
- 社會(huì)心理學(xué):社會(huì)心理學(xué)的研究方法完整版
- 預(yù)防住院患者跌倒墜床的防范措施及宣教
- 地坪漆施工合同地坪漆施工合同范本
- (完整)2-吸附脫附等溫線及吸附理論
- 畢業(yè)設(shè)計(jì)(論文)-基于PLC的供水控制系統(tǒng)設(shè)計(jì)
- 金稅四期下的稅務(wù)風(fēng)險(xiǎn)與防范
- 把未來(lái)點(diǎn)亮歌詞打印版
- 國(guó)家中醫(yī)藥管理局第3批24個(gè)專業(yè)104個(gè)病種中醫(yī)診療方案
評(píng)論
0/150
提交評(píng)論