潘 嘉,翟江濤
(1.江蘇科技大學(xué)電子信息學(xué)院,江蘇鎮(zhèn)江 212003;2.南京信息工程大學(xué)計算機與軟件學(xué)院,江蘇南京 210044)
隨著5G 技術(shù)的快速發(fā)展,網(wǎng)絡(luò)流量也井噴式產(chǎn)生。與此同時,黑客技術(shù)也不斷發(fā)展,各種網(wǎng)絡(luò)攻擊產(chǎn)生的惡意流量給網(wǎng)絡(luò)管理與服務(wù)帶來嚴(yán)峻挑戰(zhàn),嚴(yán)重威脅網(wǎng)絡(luò)安全。網(wǎng)絡(luò)流量分類技術(shù)作為網(wǎng)絡(luò)安全管理系統(tǒng)的重要組成部分之一,其中一個至關(guān)重要的問題即是如何檢測與識別惡意流量[1]。
目前網(wǎng)絡(luò)流量分類主要采用3 種方法:基于端口的識別分類方法[2]、基于深度包檢測的分類方法[3]與基于統(tǒng)計的分類方法。基于端口的識別分類方法是早期的網(wǎng)絡(luò)流量分類方法,通過數(shù)據(jù)包端口號區(qū)分網(wǎng)絡(luò)流量類型。早在1992 年,RFC(Request For Comments)制定了標(biāo)準(zhǔn)的端口空間,端口識別方法自此開始發(fā)展并得到了廣泛運用[4]。然而,隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,動態(tài)端口降低了端口識別技術(shù)的可用性[5]。為彌補端口識別方法的不足,基于深度包檢測的分類方法應(yīng)運而生,該方法通過分析數(shù)據(jù)包是否含有網(wǎng)絡(luò)應(yīng)用所具有的獨特“指紋標(biāo)簽”進行檢測。文獻[6]提出利用網(wǎng)絡(luò)流量的深度數(shù)據(jù)包進行流量檢測分類,基于深度數(shù)據(jù)包的流量檢測方法識別效率高,同時一定程度上彌補了端口識別的缺陷,但對于加密網(wǎng)絡(luò)流量,自有協(xié)議無法做到有效識別。近年來網(wǎng)絡(luò)流量數(shù)據(jù)日益龐大,研究者將機器學(xué)習(xí)方法引入網(wǎng)絡(luò)流量分類工作中。文獻[7]通過使用相關(guān)向量機(Relevant Vector Machine,RVM)對網(wǎng)絡(luò)流量進行分類,實驗結(jié)果表明,RVM 的性能指標(biāo)優(yōu)于支持向量機(Support Vector Machine,SVM);文獻[8]采用多種機器學(xué)習(xí)算法進行網(wǎng)絡(luò)流量分類的對比實驗,結(jié)果表明,決策樹算法性能優(yōu)于C4.5 及SVM 算法。然而,機器學(xué)習(xí)方法可移植性差,針對不同的流量數(shù)據(jù),機器學(xué)習(xí)方法需要通過人工重新提取特征并進行訓(xùn)練。為實現(xiàn)端到端的網(wǎng)絡(luò)流量分類,可采用深度學(xué)習(xí)技術(shù)。深度學(xué)習(xí)在目標(biāo)檢測[9]、自然語言處理[10]等各領(lǐng)域都取得了突破性進展,因此將深度學(xué)習(xí)應(yīng)用于網(wǎng)絡(luò)流量分類是當(dāng)前的研究熱點。文獻[11]首次提出利用一維和二維卷積神經(jīng)網(wǎng)絡(luò)用于惡意流量與普通流量分類,結(jié)果表明一維卷積神經(jīng)網(wǎng)絡(luò)分類效果更佳;文獻[12]將流量數(shù)據(jù)包處理成三維數(shù)據(jù)格式,利用三維卷積神經(jīng)網(wǎng)絡(luò)對流量進行分類識別;文獻[4]進一步利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的多種組合進行網(wǎng)絡(luò)流量分類。然而,網(wǎng)絡(luò)流量樣本分布的不均衡性特點導(dǎo)致流量樣本分類具有難易差別,對于簡單的流量樣本,通常淺層的神經(jīng)網(wǎng)絡(luò)即能對其進行精準(zhǔn)分類,而對于難樣本,則需要更深層的網(wǎng)絡(luò)資源。因此導(dǎo)致了一個問題:淺層的神經(jīng)網(wǎng)絡(luò)無法滿足難樣本的分類需求,而將深層網(wǎng)絡(luò)應(yīng)用于簡單樣本又會造成網(wǎng)絡(luò)資源浪費,降低運算速度。針對此問題,本文提出一種基于自蒸餾的自適應(yīng)網(wǎng)絡(luò)流量分類算法,主要有以下兩方面貢獻:
(1)針對網(wǎng)絡(luò)流量的時序特點,設(shè)計基于自注意力機制的流量特征提取器SAC(Self-Attention-Convd)網(wǎng)絡(luò),同時引入流量的全局結(jié)點信息解決Self-Attention 的低秩瓶頸問題。
(2)設(shè)計分支網(wǎng)絡(luò)自適應(yīng)功能,通過利用主干網(wǎng)絡(luò)的教師分類器對分支網(wǎng)絡(luò)的學(xué)生分類器進行自蒸餾訓(xùn)練,使分支網(wǎng)絡(luò)的學(xué)生分類器擬合教師分類器的概率分布,并使流量樣本自適應(yīng)選擇網(wǎng)絡(luò)層進行輸出,以避免后續(xù)網(wǎng)絡(luò)不必要的推理過程。
本文首先對數(shù)據(jù)集進行預(yù)處理,將預(yù)處理后的流量數(shù)據(jù)作為網(wǎng)絡(luò)模型的輸入。訓(xùn)練階段先訓(xùn)練主干網(wǎng)絡(luò)和教師分類器,之后凍結(jié)主干網(wǎng)絡(luò)和教師分類器參數(shù)。利用教師分類器作為軟標(biāo)簽對各分支網(wǎng)絡(luò)的學(xué)生分類器進行自蒸餾指導(dǎo)訓(xùn)練。測試階段依據(jù)分支網(wǎng)絡(luò)計算流量樣本的熵值,若流量樣本在該分支網(wǎng)絡(luò)的熵值小于設(shè)定閾值,則流量樣本在該分支網(wǎng)絡(luò)提前返回;否則進入下一層網(wǎng)絡(luò)進行判別分類,以此類推。
數(shù)據(jù)集采用公開的USTC-TFC2016 數(shù)據(jù)集,數(shù)據(jù)集的流量格式為pcap[11]。一般網(wǎng)絡(luò)流量的切分方法分為5 種:TCP 連接、流、會話、服務(wù)、主機[13]。本文使用流的切分方法,將原始網(wǎng)絡(luò)流量切分成為五元組(源IP、源端口、目的IP、目的端口、傳輸層協(xié)議)的數(shù)據(jù)包。完整預(yù)處理流程如下:首先將原始網(wǎng)絡(luò)流量切分成多個獨立的網(wǎng)絡(luò)流,提取每條網(wǎng)絡(luò)流中的前n 個數(shù)據(jù)包,同時丟棄多余數(shù)據(jù)包,若網(wǎng)絡(luò)流不足n 個數(shù)據(jù)包,則進行填充0 處理,并進行流量清洗或匿名化處理[14],即去掉網(wǎng)絡(luò)協(xié)議層中的IP 地址和MAC 地址;其次截取每個包中前m 個字節(jié),并丟棄包中的多余字節(jié),若不足m 個字節(jié),則進行填充處理;接下來對于每條網(wǎng)絡(luò)流共截取n*m 個字節(jié),在此基礎(chǔ)上截取前256 個字節(jié)(保證n*m 大于256),并將每一個字節(jié)轉(zhuǎn)化為0~255之間的十進制數(shù)值;最后添加流量的類別標(biāo)簽,對每一條數(shù)據(jù)進行實例歸一化處理后映射為網(wǎng)絡(luò)模型的輸入[15]。
本文的網(wǎng)絡(luò)模型架構(gòu)主要由主干網(wǎng)絡(luò)與分支網(wǎng)絡(luò)構(gòu)成。如圖1 所示,主干網(wǎng)絡(luò)由6 層相同的SAC 網(wǎng)絡(luò)層及教師分類器組成,其中SAC(Self-Attention-Convd)網(wǎng)絡(luò)層是本文針對流量數(shù)據(jù)特點所設(shè)計的神經(jīng)網(wǎng)絡(luò)層,主要架構(gòu)為多頭自注意力層及一維卷積神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)層的總體設(shè)計思路如下:首先輸入流量序列經(jīng)過多頭自注意力機制處理后,得到具有權(quán)值分布的流量序列,然后利用一維卷積神經(jīng)網(wǎng)絡(luò)提取流量分布的顯著特征作為后續(xù)網(wǎng)絡(luò)輸入。教師分類器由反瓶頸層及多頭自注意力層構(gòu)成,反瓶頸層首先擴張?zhí)卣飨蛄浚缓笥啥囝^自注意力層進行計算,再將多頭自注意力層的計算結(jié)果進行壓縮,最后由帶有Softmax激活函數(shù)的全連接層進行輸出分類。分支網(wǎng)絡(luò)層結(jié)構(gòu)與教師分類器一致,作為每層SAC 網(wǎng)絡(luò)的額外輸出。
Fig.1 Network architecture圖1 網(wǎng)絡(luò)架構(gòu)
網(wǎng)絡(luò)流量序列本質(zhì)為時序數(shù)據(jù),RNN、LSTM(Long Short-Term Memory)等神經(jīng)網(wǎng)絡(luò)天然契合時序類數(shù)據(jù)的特點,因此目前大多數(shù)文獻選擇此類神經(jīng)網(wǎng)絡(luò)作為基準(zhǔn)網(wǎng)絡(luò)進行流量分類。但是RNN、LSTM 神經(jīng)網(wǎng)絡(luò)需依時序?qū)α髁啃蛄羞M行計算,對于遠距離的相互依賴特征,需要經(jīng)過若干時間步驟的信息積累才能將兩者相聯(lián)系,距離越遠,有效捕捉的可能性越小。Transformer 的Self-Attention 機制能夠?qū)⑤斎胄蛄兄械娜我鈨蓚€特征直接進行聯(lián)系,更有利于遠距離特征捕獲。然而,考慮到本文任務(wù)是對網(wǎng)絡(luò)流量序列進行分類,分類任務(wù)更關(guān)注序列整體信息,因此本文在Self-Attention 中引入全局節(jié)點S 構(gòu)建序列的全局信息。原始的Self-Attention 計算步驟如下:
該公式描述了Q、K兩個向量之間的聯(lián)系,其中d為K向量維度。假設(shè)序列長度為n,則該分布共有n2個值。由于Transformer 中引入多頭注意力機制,使得建模存在瓶頸,h為多頭數(shù)量。當(dāng)Q、K分別投影至低維時,總共參數(shù)量只有2n*(d/h),公式(1)相當(dāng)于用只有2n*(d/n)的參數(shù)量逼近本身有n2值的量,變相減弱了模型表達能力。如果要增加模型表達能力,直觀的想法就是增加2n*(d/h)參數(shù)量。由于多頭機制本身確實能夠使模型在不同位置關(guān)注不同子空間的信息,如果減少h的數(shù)量則會得不償失,因此本文選擇引入全局信息S融入Q、K向量,進而增大d以解決低秩瓶頸問題。首先對輸入的query、key、value進行線性映射,其次取映射向量Q的高斯分布作為全局信息S,并分別與Q、K向量進行concat 融合操作,最后利用公式(1)進行自注意力計算。
在多頭自注意機制中,多頭數(shù)目h會影響多頭自注意力層的性能。為針對流量分類任務(wù)選取合理的多頭數(shù)目,本文進行了h的尋優(yōu)實驗:對單層的SAC 網(wǎng)絡(luò)進行單次訓(xùn)練,期間僅改變多頭自注意力層中的多頭數(shù)目,分別觀察網(wǎng)絡(luò)的分類準(zhǔn)確率及損失變化,實驗結(jié)果如圖2 所示。隨著多頭數(shù)目的增加,準(zhǔn)確率不斷上升,損失隨之下降。當(dāng)多頭數(shù)目達到4 時,準(zhǔn)確率趨于穩(wěn)定,繼續(xù)增加多頭數(shù)目對于網(wǎng)絡(luò)性能基本無影響,因此本文在SAC 網(wǎng)絡(luò)層中選擇多頭數(shù)目h=4。此外,在實驗中發(fā)現(xiàn)去除scale 操作更有利于顯著特征的提取,進而可提升模型的整體準(zhǔn)確率。
SAC 網(wǎng)絡(luò)層的另一個核心架構(gòu)為一維卷積神經(jīng)網(wǎng)絡(luò)。流量數(shù)據(jù)的實質(zhì)為一維時序數(shù)據(jù),基于以上考慮,不同于Transformer 的前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本文使用一維卷積神經(jīng)網(wǎng)絡(luò)及最大池化操作替代前饋神經(jīng)網(wǎng)絡(luò),以更好地捕獲流量數(shù)據(jù)特征。不同超參數(shù)會影響網(wǎng)絡(luò)性能,因此本文設(shè)計了參數(shù)尋優(yōu)實驗。一維卷積神經(jīng)網(wǎng)絡(luò)的主要參數(shù)為卷積核尺寸及特征通道數(shù)。為選取合理的超參數(shù),設(shè)計了6 種候選模塊,如表1 所示。針對參數(shù)選擇有如下說明:①流量序列經(jīng)多頭自注意層力處理后維度為256,一般核尺度為3 或5,同時為避免邊緣信息丟失,引入Padding 以保持邊界信息;②對于流量數(shù)據(jù)所包含的信息,特征面一般不超過64,否則容易陷入局部最優(yōu)狀況,因此特征面一般設(shè)為8、16、32。
Fig.2 Accuracy of different heads圖2 不同head精度
Table 1 Candidate modules表1 候選模塊
將以上設(shè)計的6 種候選模塊分別嵌入單層SAC 網(wǎng)絡(luò),采用最大池化及平均池化進行多次對比實驗(單次訓(xùn)練epoch=1),分別對網(wǎng)絡(luò)的分類精度及時間開銷進行檢測,實驗結(jié)果如表2 所示。對比檢測結(jié)果可發(fā)現(xiàn),使用最大池化的模塊整體效果略優(yōu)于平均池化,特征通道變化對于精度影響不大,但花費時間提升較為明顯,同時小尺度核精度更高。綜合以上實驗分析,最終選擇1 號候選模塊的參數(shù)作為一維卷積神經(jīng)網(wǎng)絡(luò)的超參數(shù)。
Table 2 Results of experimental tests表2 檢測結(jié)果
Transformer 中對于兩兩子層之間使用Add 和Layer-Norm 操作,且使用Gelu 作為前饋神經(jīng)網(wǎng)絡(luò)層的激活函數(shù)[16]。本文所設(shè)計網(wǎng)絡(luò)層之間的操作不同于Transformer子層之間的操作,具體說明如下:對于殘差連接,可較大程度上減緩梯度消失問題,進而可訓(xùn)練更深層次的神經(jīng)網(wǎng)絡(luò)。本文殘差操作表示如下:
其中,α表示殘差連接權(quán)值,該參數(shù)初始化為0,后續(xù)可由網(wǎng)絡(luò)層自行學(xué)習(xí)最優(yōu)參數(shù);Xi、Xi-1分別表示網(wǎng)絡(luò)層的兩兩子層;f表示子層的函數(shù)映射。這種殘差連接方式可訓(xùn)練更深的網(wǎng)絡(luò)層,且收斂速度更快[17]。
本文在模型延遲實驗中發(fā)現(xiàn):在設(shè)計的網(wǎng)絡(luò)層中,LayerNorm 操作以及Gelu 激活函數(shù)占據(jù)了大量推理時間。為加速網(wǎng)絡(luò)的推理計算速度,在保證網(wǎng)絡(luò)準(zhǔn)確率的前提下,采用HadamardProduct 操作替代LayerNorm,同時使用Swish 激活函數(shù)替代Gelu 激活函數(shù)。不同架構(gòu)推理時間如表3 所示,分析得到LayerNorm 的推理時間幾乎是Hadamard Product 的3 倍,Swish 激活函數(shù)的推理時間遠小于Gelu 激活函數(shù)。基于以上結(jié)果,最終選擇的架構(gòu)操作為HadamardProduct,激活函數(shù)為Swish。
Table 3 Reasoning time of different architectures表3 不同架構(gòu)推理時間
分支網(wǎng)絡(luò)(學(xué)生分類器)作為每層SAC 網(wǎng)絡(luò)的額外輸出,其網(wǎng)絡(luò)架構(gòu)與教師分類器結(jié)構(gòu)保持一致。由于網(wǎng)絡(luò)流量樣本分類有難易之分,對于簡單的流量樣本,通常單一的淺層網(wǎng)絡(luò)即能進行區(qū)分,而對于難樣本,往往需要更深層次的網(wǎng)絡(luò),如果僅使用單層次的淺層或深層網(wǎng)絡(luò)則會導(dǎo)致誤分類、網(wǎng)絡(luò)資源浪費等后果。因此,本文設(shè)計了分支網(wǎng)絡(luò),并使用自蒸餾的訓(xùn)練方法解決該問題。分支網(wǎng)絡(luò)總體設(shè)計思路如下:首先訓(xùn)練主干網(wǎng)絡(luò)及教師分類器,然后凍結(jié)主干網(wǎng)絡(luò)及教師分類器參數(shù),利用訓(xùn)練后的教師分類器作為軟標(biāo)簽指導(dǎo)學(xué)生分類器進行自蒸餾訓(xùn)練。本文使用KL 散度表示教師分布與學(xué)生分布的損失:
其中,pt表示教師輸出概率分布,ps表示學(xué)生輸出概率分布,N表示流量類別數(shù)目。由于主干網(wǎng)絡(luò)由6 層SAC 網(wǎng)絡(luò)堆疊而成,所以自蒸餾的總損失可表示為:
其中,L代表網(wǎng)絡(luò)層數(shù),psi代表第i個分支網(wǎng)絡(luò)的輸出概率分布。流量樣本的自適應(yīng)網(wǎng)絡(luò)層采用分支網(wǎng)絡(luò)進行處理:通過對流量樣本的熵值進行判別,通常樣本熵值越低,代表樣本的置信度越高,分類準(zhǔn)確率越高。若樣本的熵值低于設(shè)定閾值,則流量樣本在該分支網(wǎng)絡(luò)提前返回,否則進入下一層網(wǎng)絡(luò)進行判別分類。網(wǎng)絡(luò)流量樣本的熵值定義如公式(5)所示,其中P(s)為分支網(wǎng)絡(luò)的輸出概率分布,N為流量類別數(shù)目。
實驗使用基于Python3.7 環(huán)境的Pytorch1.2.0,操作系統(tǒng)為Ubuntu18.04,并采用英偉達1050TiGPU 進行加速訓(xùn)練。其中,Mini_batch 大小為128,Epochs 為40 輪,初始學(xué)習(xí)率為0.001,訓(xùn)練過程中采用余弦退火方式更新學(xué)習(xí)率,模型評估指標(biāo)為準(zhǔn)確率、召回率及F1指數(shù)。
實驗使用公開的USTC-TFC2016 數(shù)據(jù)集,該數(shù)據(jù)集由中國科技大學(xué)的Wang等[11]創(chuàng)建,主要由兩部分構(gòu)成:一部分是由捷克科技大學(xué)科研人員在真實環(huán)境中采集的10 種惡意流量,另一部分源于專業(yè)網(wǎng)絡(luò)流量仿真工具IXIA BPS仿真的10 種正常流量。該數(shù)據(jù)集格式與Wireshark 抓取原始流量的pcap 格式相同,數(shù)據(jù)集總量為3.71G。表4 顯示了該數(shù)據(jù)集中部分正常流量及惡意流量的屬性信息。
Table 4 Selected traffic attributes of the dataset表4 數(shù)據(jù)集部分流量屬性
本文實驗主要由兩部分組成:第一部分為正常流量及惡意流量檢測對比實驗,以驗證本文模型的可行性;第二部分為分支網(wǎng)絡(luò)自適應(yīng)實驗,利用測試樣本驗證分支網(wǎng)絡(luò)是否具備自適應(yīng)網(wǎng)絡(luò)層的功能。其他部分超參數(shù)實驗在本文1.3、1.4小節(jié),涉及模型參數(shù)尋優(yōu)及架構(gòu)優(yōu)化。
2.2.1 流量檢測實驗
流量檢測識別不僅在于檢測惡意流量類別,對于正常流量的檢測識別也十分必要。因此,流量檢測實驗分為兩部分:第一部分實驗檢測混合流量(含有正常流量及惡意流量),由此得到模型對正常流量及惡意流量的檢測率;第二部分實驗檢測惡意流量類別。本文選取USTC-TFC2016數(shù)據(jù)集中5 類正常流量與5 類惡意流量構(gòu)成的數(shù)據(jù)集進行第一部分實驗。為避免模型過擬合,本文采取5 折交叉驗證方法進行對比實驗,兩部分檢測實驗對比對象分別為文獻[12]使用的三維卷積神經(jīng)網(wǎng)絡(luò)模型與文獻[11]使用的一維卷積神經(jīng)網(wǎng)絡(luò)模型。值得一提的是,文獻[11]首次將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于惡意流量分類,后續(xù)很多研究也將卷積神經(jīng)網(wǎng)絡(luò)用于流量檢測分類,所以一維卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)在該領(lǐng)域的典型算法。表5 詳細對比了文獻[12]及本文模型在混合流量中的檢測指標(biāo)。
Table 5 Comparison of testing indicators表5 檢測指標(biāo)對比(%)
實驗結(jié)果如下:無論是正常流量或惡意流量檢測,本文模型的表現(xiàn)均優(yōu)于文獻[12]的模型。其中,對于正常流量的檢測表現(xiàn),兩者相差甚微,對于惡意流量的檢測表現(xiàn)卻相差甚大。文獻[12]利用三維卷積神經(jīng)網(wǎng)絡(luò)進行流量特征提取,將流量數(shù)據(jù)歸一化至0~16 字段,并對每個字節(jié)進行one-hot 編碼,之后轉(zhuǎn)化為三維數(shù)據(jù)。但流量本質(zhì)為一維時序數(shù)據(jù),三維卷積過程并不契合流量數(shù)據(jù)的特點,且one-hot 編碼稀疏性較大,無法捕獲流量內(nèi)部的聯(lián)系。由表5 可進一步看出文獻[12]的模型在檢測Neris 及Virut兩類樣本時,檢測效果遠不如本文模型。
為進一步檢測惡意流量的具體類別,本文進行了第二部分惡意流量類別檢測。對比模型為文獻[11]的一維卷積神經(jīng)網(wǎng)絡(luò),表6 詳細對比了文獻[11]及本文模型針對10類惡意流量的檢測指標(biāo)。在深度學(xué)習(xí)分類中,難易樣本的判定是由訓(xùn)練損失(loss)決定的,難樣本的訓(xùn)練損失較簡單樣本大的多,進而會最終影響精度、召回率等檢測指標(biāo)。反映到具體指標(biāo)上,一般可由精度、召回率進行判斷。由表6 可以看出,文獻[11]使用單一結(jié)構(gòu)的淺層一維卷積神經(jīng)網(wǎng)絡(luò)檢測Gridex 及Nsis-ay 兩類簡單樣本時效果很好,然而對于Neris、Virut 兩類難樣本的檢測表現(xiàn)不佳,精度、召回率僅為93%左右。由之前實驗得到文獻[12]使用的三維卷積神經(jīng)網(wǎng)絡(luò)在檢測Neris 及Virut 兩類難樣本時,檢測效果也不佳。本文主干網(wǎng)絡(luò)針對Neris、Virut 兩類難樣本的檢測效果明顯優(yōu)于文獻[12]及文獻[11]的模型,各項檢測指標(biāo)提升了近5 個百分點,總體樣本檢測率高達99.9%左右。由于本文模型中自注意力機制的存在,使網(wǎng)絡(luò)能夠?qū)W習(xí)流量序列的內(nèi)部特征聯(lián)系,同時主干網(wǎng)絡(luò)中的架構(gòu)優(yōu)化大大緩解了梯度衰減問題,從而使得主干網(wǎng)絡(luò)的分類效果更佳。
Table 6 Comparison of testing indicators表6 檢測指標(biāo)對比(%)
2.2.2 分支網(wǎng)絡(luò)自適應(yīng)實驗
本文所設(shè)計的分支網(wǎng)絡(luò)層自適應(yīng)功能是目前網(wǎng)絡(luò)流量分類中所缺乏的,通過給予流量樣本自適應(yīng)功能,使流量樣本自適應(yīng)選擇網(wǎng)絡(luò)層進行輸出,可避免后續(xù)不必要的計算推理。為驗證分支網(wǎng)絡(luò)是否具備自適應(yīng)功能,本文從測試集的流量樣本中隨機均勻抽樣500 個樣本(各類別樣本數(shù)量相差不大),觀察各分支網(wǎng)絡(luò)的流量樣本輸出,如圖3 展示的測試樣本在各分支網(wǎng)絡(luò)的輸出分布。從實驗結(jié)果可以看出,幾乎90%的流量樣本在第一層分支網(wǎng)絡(luò)輸出,從而避免了后續(xù)不必要的網(wǎng)絡(luò)層計算,加快了網(wǎng)絡(luò)推理速度。與此同時,實驗中發(fā)現(xiàn)第一層分支網(wǎng)絡(luò)輸出的流量樣本中Gridex 及Nsis-ay 等簡單樣本占88%,驗證了主干網(wǎng)絡(luò)的對比實驗結(jié)果。其余10%的流量樣本的輸出分布在第二層及第三層分支網(wǎng)絡(luò),10%的流量樣本為Neris、Virut兩類難樣本,可見難樣本需要更深層次的網(wǎng)絡(luò)來提取特征。
Fig.3 Layer distribution of the sample圖3 樣本的層分布
本文提出一種基于自蒸餾的自適應(yīng)惡意流量分類算法,可避免人為提取流量特征,實現(xiàn)了端到端的自我學(xué)習(xí),同時具備流量樣本自適應(yīng)網(wǎng)絡(luò)的功能。在網(wǎng)絡(luò)架構(gòu)設(shè)計中,主干網(wǎng)絡(luò)首先采用自注意力機制構(gòu)建流量的權(quán)值分布,其次利用一維卷積神經(jīng)網(wǎng)絡(luò)提取權(quán)值流量分布中的顯著特征,最后經(jīng)過教師分類器輸出流量類別。分支網(wǎng)絡(luò)架構(gòu)與主干網(wǎng)絡(luò)的教師分類器保持一致,作為每層SAC 網(wǎng)絡(luò)層的額外輸出,分支網(wǎng)絡(luò)根據(jù)每個流量樣本的熵值自適應(yīng)選擇網(wǎng)絡(luò)。同時在網(wǎng)絡(luò)架構(gòu)的優(yōu)化中,設(shè)計帶權(quán)值的殘差連接減緩網(wǎng)絡(luò)梯度衰減問題,采用Hadamard Product 及Swish 激活函數(shù)降低網(wǎng)絡(luò)的推理延遲,進而提升網(wǎng)絡(luò)的檢測率。通過對比實驗,驗證了本文模型較現(xiàn)有方法的優(yōu)勢。由于實際流量數(shù)據(jù)具有多源化、分布不均衡等特點,都會給分類算法帶來挑戰(zhàn),未來將針對該問題以及更高效的深度學(xué)習(xí)模型進行研究。