尹晟霖 張興蘭 左利宇
(北京工業大學信息學部 北京 100124)
隨著信息時代的不斷發展,互聯網絡已經深入到了社會的方方面面,正在改變著人們的生活、學習和工作方式,同時面臨的各種安全威脅也在不斷增加,提供對數據的保護是安全開發人員面臨的重要挑戰.入侵檢測技術是一個維護網絡安全的重要方式,其本質上是一個對網絡流量進行分類的任務,即識別網絡流量的行為是正常還是異常.傳統機器學習技術已被廣泛用于入侵檢測系統中,雖然機器學習的算法在處理分類任務中有著不錯的表現,但是大多數的機器學習算法只是淺層的學習,并不能很好地提取數據流量中的特征,缺乏良好的泛化能力,隨著惡意攻擊的不斷變化,出現了許多挑戰.深度學習有著較強的特征提取的能力,它可以將數據映射到更高維度上去提取分析特征,隨著深度學習技術不斷創新和發展,在語音識別、圖像處理等領域獲得了令人矚目的成就,越來越多的人開始將深度學習與入侵檢測相結合,以提升入侵檢測系統的泛化能力.
近年來,循環神經網絡(recurrent neural network, RNN)和卷積神經網絡(convolutional neural network, CNN)已被運用到入侵檢測當中,但這些方法仍然存在著一些問題.RNN一般被用來處理時間序列數據,下一時刻的信息會依賴于上一時刻的信息,在處理特征過程中,RNN會把每個位置上的特征融合到一起,并且隨著序列的增加,會逐漸丟失前一段的信息.長短時記憶網絡(long short-term memory, LSTM)解決了信息丟失的問題,但仍會融入每個位置上的信息.對于入侵檢測數據,并不是每一個特征都會對分類結果起到有效的作用,融入過多非必要的特征會產生噪音,影響最終的分類結果.CNN被用來提取和處理圖片中的特征,在有些工作中可以將入侵檢測數據的特征數組重組,轉化成圖片數據格式,再通過CNN進行處理.但CNN模型在處理數據的過程中,難以表達特征位置關系復雜對象的特征,會降低模型的準確率.
為了解決這個問題,本文提出了基于膠囊網絡的入侵檢測技術,將膠囊網絡運用到入侵檢測的任務中,為了能夠擬合不同分布的數據,本文使用深層膠囊網絡來提取更深層的特征,通過雙重路由機制來彌補單路由機制中不能很好擬合復雜分布的缺陷,并使用殘差連接和膠囊丟棄機制來穩定動態路由過程,同時增添了一個噪音類來收集對分類結果起到負作用的特征以減少數據中的噪音,從而提高模型的準確率.最后模型在NSL-KDD數據集和CICIDS2017數據集上進行了測試,同時與多個模型進行對比,結果顯示,本文的模型在2個數據集上都取得了不錯的效果.
隨著在機器學習基礎上的大量研究,入侵檢測技術得到了提升.但傳統的機器學習技術在處理大數據流量時稍顯吃力,越來越多的人嘗試將深度學習技術與入侵檢測技術相結合.
文獻[2]將遺傳算法和模擬退火算法運用到深度神經網絡(deep neural network, DNN)中,將傳統的機器學習算法與深度學習框架相結合,提出了基于機器學習的入侵檢測系統(intrusion detection system based on machine learning, MLIDS).文獻[3-5]分別提出了基于RNN、基于門控循環單元(gated recurrent units, GRU)和基于LSTM的入侵檢測系統,將數據當作時間序列來處理.在NSL-KDD數據集上進行了實驗,文獻[6]在訓練集上達到了99%的準確率,但因沒有在測試集上進行驗證,不具有代表性.文獻[7]使用了CNN模型,在處理后的數據上進行1維卷積的操作,文獻[8]則是將數據數組重組成類似于圖片數據的矩陣的形式后進行2維的卷積操作,也是在NSL-KDD數據集上進行實驗,都取得了不錯的效果,但仍有許多提升的空間.文獻[9]使用了孿生神經網絡(siamese neural network, SNN)來處理入侵檢測數據中類別不平衡的問題.此外,隨著深度學習的不斷發展,許多基于混合神經網絡模型被逐漸運用到入侵檢測上來.文獻[10]使用了CNN與雙向LSTM結合點方式,并使用了交叉驗證的方式獲得了效果最好的模型,取得了較高的準確率.文獻[11]提出了一種基于LightGBM算法的入侵檢測系統,極大減小了數據的計算量,并取得了不錯的效果.
Hinton首次提出了膠囊網絡的概念,在文獻[12]中運用在了圖像分類的任務中,并在文獻[13]中得到了改進.文獻[14-15]將膠囊網絡運用到了文本分類任務中,文獻[16]則運用到了目標識別場景下.由此可見,膠囊網絡在深度學習中是一個很有前途的概念,但到目前為止,其真正的潛能尚未得到充分的發揮,該模型被認為可能成為下一代重要的神經網絡模型.膠囊網絡是由膠囊(capsule)組成的,膠囊是一組神經元的集合,與傳統的神經網絡不同,在膠囊中,神經元的集合是向量或者矩陣.基于矢量的表示能夠抓取更多的特征信息并能夠在學習過程中對輸入特征組之間的潛在相互依存關系進行編碼,同時引入動態路由迭代過程,通過聚類的方式對特征進行歸類,利用該耦合系數來測量預測上層膠囊和下層膠囊的向量之間的相似度,并將下層膠囊指向特定的上層膠囊.通過這個過程,膠囊學會了代表給定實體的屬性,這是一種更加有效的特征編碼方式,改善了RNN和CNN的缺陷.


Fig. 1 Double routing capsule network with residuals圖1 殘差的雙重路由膠囊網絡

利用注意力機制可以更加精確地捕捉更相關的特征,傳統的注意力機制過度地關注了Token之間的聯系,減少了模型的泛化能力,并增加了運行過程中的參數.為了減少模型參數并提升泛化能力,本文使用的是混合注意力機制,它在文獻[17]中被證明是有效的.混合注意力機制是由2種不同的注意力機制疊加形成的,結構如圖2所示.

Fig. 2 Mixed attention mechanism圖2 混合注意力機制

F
(+)+,(1)




(2)

(3)
最后將得到的2個注意力矩陣混合,即

(4)

K
-Means算法的動態路由和EM算法的動態路由.2.2.1K
-Means算法K
-Means算法是一種無監督的聚類算法,通過初始化聚類中心,經過多次迭代后將樣本點進行聚類.在動態路由算法中,將流量數據的特征視為樣本點,對特征進行聚類.將低級膠囊中的特征聚類為高級膠囊,K
-Means算法是一種行之有效的聚類方法.它希望將已有的數據特征(,,…,)無監督的劃分為k
個類,使得產生的k
個聚類中心(,,…,)之間的間隔最小:
(5)
將Ω
層膠囊和Ω
+1層膠囊之間的動態路由看作是一個K
-Means聚類的過程,則Ω
+1層膠囊是Ω
層膠囊的聚類中心,式(5)中的d
為相似程度的度量.
使用數據處理層輸出的數據=(,,…,)來初始化,迭代公式為
(6)

(7)

(8)


(9)

(10)

Fig. 3 Vanilla Squash function圖3 原始壓縮函數圖像
注意到函數S
()能夠將向量的模長壓縮到[0,1]之間,它存在著多種方式.
文獻[10]中的函數對全局進行了壓縮,對于自變量細微的變化不敏感,容易丟失許多信息.
本文對函數S
()進行了修改,使用了3種不同形式的激活函數,公式為
(11)

(12)

(13)
3種激活函數的圖像如圖4所示,改進后的激活函數放大了自變量為0附近的值時,函數值對自變量的變化更加敏感,可以使各類之間的間距變大,從而產生更大的類分離.

Fig. 4 Three Squash functions圖4 3種壓縮函數圖像
本文使用以上3種激活函數進行了實驗,實驗結果表明,S
()的效果要優于另外2種.
整個迭代過程的路由算法如下:
算法1.
K
-Means路由算法.
輸入:;輸出:Squash
().

i
to高級膠囊j
迭代r
次

⑤ end for
⑥ 返回Squash
().
2.
2.
2 EM算法在EM(expectation-maximum)算法中,Ω
+1層膠囊被看作高斯混合分布,而Ω
層膠囊的輸出從到需要被聚類的數據點.
通過在E
_Step
和M
_Step
之間交替迭代地更新輸出膠囊的均值、方差,以及輸入膠囊的分配概率R.
動態路由機制也可以被看作一個反向的注意力機制過程,通過全局的特征,動態地調整局部特征的貢獻程度.
經過處理的數據符合混合高斯分布,通過迭代以獲得最大的分布函數p
(),低級膠囊中的特征值之間相互獨立,因此協方差矩陣是一個對角矩陣.
對標準EM迭代算法改動后的分布函數公式為
(14)

(15)

(16)

M
_Step
中,通過得到的分配概率求出迭代改進后的高斯混合模型(Gaussian mixture model, GMM)的參數.
該步驟是獲得給定迭代的低級膠囊之間的總體表示.E
_Step
調整每個數據點到高斯分布的分配概率R
,即低級膠囊到高級膠囊之間的分配概率,該過程基于給定迭代的高級膠囊來調整每個膠囊的貢獻.
GMM是基于加權的歐氏距離,其特點是聚類中心向量是類向量的加權平均,因此不能使用向量的模長來表示特征的顯著程度.為了解決這個問題,使用一個標量a
對最后的結果進行縮放,縮放之后便可通過壓縮函數來計算向量的模長.通過EM算法得到的是一個概率分布來描述一個類.這個類的不確定性越大,方差就越大,代表著越接近均勻分布,說明特征不夠突出,此時a
的值應該越??;若不確定性越小,方差就越小,此時的分布就越集中,a
的值則會越大.
此過程使用不確定性來描述a.
將p
(x
|j
)帶入信息熵公式化簡可得S
:
(17)


(18)
其中,r
為隨機初始化的標量,范圍在(0,1]之間.
因為顯著程度越大,信息熵越小,所以本文用-S
來衡量特征的顯著程度.
同時為了將S
的大小限制在[0,1],使用Sigmoid函數來對S
進行變化:a
=Sigmoid(1-S
).
(19)
得到縮放尺度后,仍然使用壓縮函數將向量壓縮到[0,1]之間來表示特征的顯著程度,新的壓縮函數NSquash
為
(20)
整個迭代過程的路由算法如下:
算法2.
EM路由算法.輸入:;輸出:NSquash
(a
,).
① 初始化參數:a
,V
,σ
;② for迭代r
次③ ?j
∈Ω
+1:M
_Step
(a
,R
,V
,j
);④ ?i
∈Ω
:E
_Step
(μ
,σ
,V
,i
);⑤ end for
⑥ 返回NSquash
(a
,).
E
_Step
(μ
,σ
,a
,V
,i
)


M
_Step
(a
,R
,V
,j
)


a
←Sigmoid(1-S
).
2.2.3 深度膠囊與殘差連接
網絡層數越深,越能提取到豐富的特征.但簡單地通過堆疊膠囊層來構建深層膠囊網絡會與傳統的MLP模型相似,出現梯度彌散或者梯度爆炸的現象,即便使用正則化來處理,也會在訓練集上出現網絡退化的現象.此外,膠囊網絡的動態路由機制是一個非常昂貴的計算過程,多個膠囊層的疊加會導致訓練的時間增加.現有的研究表明,單純將膠囊層疊加在一起會導致中間層的學習效果有所下降.這是由于當膠囊數量過多時,膠囊之間的耦合系數會過小,從而抑制了膠囊網絡的學習,導致學習效果下降.為了解決這一問題,本文改進了原有的動態路由機制.
首先,為了避免在路由過程中膠囊數量過多,本文采用了Dropout層的思想,對膠囊進行失活,丟棄某個膠囊.但在這個過程中不采用隨機失活的方式,因為隨機失活很有可能會導致含有重要特征的膠囊丟失,影響模型的性能.在失活過程中,會對貢獻度低的膠囊進行丟棄,若每個膠囊的貢獻度一樣,則本迭代不刪除任何膠囊.從低層膠囊Ω
到達下一層膠囊Ω
+1之后,在K
-Means動態路由中,刪除長度較小的膠囊;在EM動態路由中,刪除顯著程度a
較低的膠囊.過程如圖5所示,含有陰影的膠囊為丟棄的膠囊:
Fig. 5 Capsule network Dropout mechanism圖5 膠囊網絡Dropout機制
其次,在聚類迭代過程中,由于淺層膠囊用來捕獲低級特征,深層膠囊用來捕捉高級特征,所以淺層膠囊之間使用較小的迭代次數,設i
=1;中間層膠囊設i
=2;深層膠囊之間使用正常的迭代次數,設i
=3.
同時,動態路由的膠囊過程中,隨著膠囊層數的增加,會出現模型過擬合以及網絡退化的現象.
為了使模型能夠得到收斂同時有保證不會出現過擬合以及退化的現象,也使用殘差連接來解決這個問題.
殘差連接過程如圖6所示.
殘差公式為+2=+2+,(21)
是可學習的參數矩陣,是j
層的膠囊的結果,+2是j
+2層膠囊的結果.

Fig. 6 Skip connection圖6 跳躍連接
2.
2.
4 噪音膠囊膠囊網絡會提取樣本中的所有特征,因此本文通過增加一個不屬于之前類別的噪音膠囊來收集膠囊網絡提取到的噪音特征,以提高模型的準確性,最終分類膠囊中含有c
+1個膠囊,c
為樣本數據集中的類別數目.
.
邊緣損失函數是基于分類層輸出的向量長度的分類損失,公式為

(22)

重構損失是計算原始數據與重構數據之間的差距,使用均方誤差來計算實現,公式為
L
=λ
∑MSELoss
(Data
,Data
),(23)
其中,Data
為原始的數據,Data
為重構后的數據,λ
為重構損失縮放倍數,縮放倍數越大,越會導致模型的過擬合.
整個模型優化的整體損失為
L
=L
+L
.
(24)
本文采用的是NSL-KDD數據集和CICIDS 2017數據集.
NSL-KDD是KDD CUP99數據集的改進版,刪除了原始KDD數據集中的冗余數據,在測試集中沒有重復的記錄,并且有著合理的數據量.數據集中含有4種異常類型,被細分為39種攻擊類型,其中有17種未知攻擊類型出現在測試集中.每一條記錄包括41個特征和1個類別標識.其中41個特征中是由TCP連接基本特征(9種)、TCP連接內容特征(13種)、基于時間的網絡流量統計特征(9種)和基于主機的網絡流量統計特征(10種)組成.
CICIDS2017數據集包含最新的常見攻擊,更接近于真實的數據.完整的CICIDS2017數據集包含八個文件,總共含有3 119 345條實例和83個特征,其中包含15個類別標簽(1個正常標簽,14個攻擊標簽).此外,數據集中含有288 602個標簽缺失的實例和203個特征缺失的實例.刪除缺失信息的實例后,總共得到2 830 540個實例.
數據集中標簽分布如表1和表2所示:

Table 1 Number of Categories in NSL-KDD Dataset表1 NSL-KDD數據集中各類別的數量

Table 2 Number of Categories in CICIDS2017 Dataset表2 CICIDS2017數據集中各類別的數量
數據處理包括字符類型數字化、類別不平衡處理、歸一化處理3個步驟.
1) 字符類型數字化
在數據集的特征中,有3個特征和類別標識是字符類型的.在字符類型數字化的過程中,使用了one-hot方式.對于NSL-KDD數據集,協議類型的值有3種,目標主機的網絡服務類型有70種,連接正?;蛘咤e誤的狀態有11種.在one-hot方式下,協議類型被處理為[1,0,0],[0,1,0],[0,0,1]的形式,其他特征處理過程類似,最終每條數據的長度為121維.CICIDS2017數據集處理的過程同上.
本文在實驗過程中使用了one-hot編碼的方式,以NSL-KDD數據集為例,將數據處理成長度為121的向量,為了實現可視化,將特征長度121維的數據轉化為11×11的矩陣,圖7展示了Normal,DoS,Prob這3種標簽的圖像,可以看出,每種類別之間,都包含著相似的特征分布.

Fig. 7 Partial sample visualization of the NSL-KDD dataset圖7 NSL-KDD數據集部分樣本可視化
2) 類別不平衡處理


(25)
但是SMOTE算法的缺點是生成的少數類樣本容易與周圍的多數類樣本產生重疊難以分類,會影響分類器的效率,而數據清洗技術可以處理掉重疊樣本,通過使用ENN(edited nearest neighborhood)算法,將與多類樣本重疊的數據刪除.
對于NSL-KDD數據集,直接使用SMOTE+ENN算法處理數據,生成新的訓練集與測試集.對于CICIDS2017數據集,先將同性質的標簽進行合并,再均勻地對每個標簽下的數據進行篩選,避免處理后造成數據偏大.最后使用SMOTE+ENN算法進行處理.處理后的數據集如表3和表4所示.
3) 歸一化處理
為了消除不同量綱帶來的數據差異,在對字符變量數字化以后,進行歸一化處理.采用最大最小歸一化的方法,可以減輕由于量綱不同造成的差異,將數值統一在[0,1]之間,公式為

Table 3 Processed NSL-KDD Dataset表3 處理后的NSL-KDD數據集

Table 4 Processed CICIDS2017 Dataset表4 處理后的CICIDS2017數據集

(26)
其中,x
是原始數據,x
是同一特征中的最小值,x
是同一特征中的最大值,x
是原始數據歸一化后的結果.
數據處理完成后,對于NSL-KDD數據集,使用新生成的訓練集和測試集進行模型的訓練和測試;對于CICIDS2017數據集,使用全體數據集的70%進行訓練,30%用于測試,其中訓練集中不包含測試集中的數據.
AC
、精確率P
、召回率R
、F
1作為實驗結果的評價指標,其中TN
(true negative)是負樣本且被判為負樣本的數量,TP
(true positive)是數據為正樣本且也被判為正樣本的數量,FN
(false negative)是數據為正樣本但被判為負樣本的數量,FP
(false positive)是數據為負樣本,但被判為正樣本的數量.
(27)

(28)

(29)

(30)
1) 在NSL-KDD數據集上實驗
在實驗過程中,將訓練集劃分為5等份進行5折交叉驗證,使用了機器學習算法隨機森林(random forest, RF)、決策樹(decision tree, DT)和神經網絡算法ResNet-50(residual network)、BiLSTM(bi-directionallong short-term memory)、原膠囊網絡(vanilla capsule)作為對照模型,實驗結果如表5所示:

Table 5 NSL-KDD Dataset Results表5 NSL-KDD數據集結果
從結果可知,混合路由機制膠囊網絡的泛化能力要高于機器學習算法和傳統神經網絡,本文模型在準確率上比機器學習算法DT高2個百分點,比ResNet50深度網絡高5.2個百分點,比原膠囊網絡高2.24個百分點.
雖然每個類別有自己獨特的特征分布,但是不同種類之間也包含著相似的特征點.傳統的神經網絡,如CNN擅長對特征的檢測與提取,它可以很好地檢測出不同類別所含有的特征.但是它在探索特征之間的空間關系方面效果不佳.如圖8所示.

Fig. 8 Sample visual comparison圖8 樣本可視化對比
兩者都包含相似的特征點,對于傳統的神經網絡,非常容易將異常數據識別為正常數據,或者將正常數據識別為異常數據,導致分類器精度降低.這是因為傳統神經網絡具有平移不變性,而膠囊網絡會捕捉特征之間的空間關系,從而提升分類模型的泛華能力.
NSL-KDD數據集仍存在著一些問題,其測試集中含有訓練集從未出現過的種類以及特征分布,訓練集和測試集的分布有一定的差異,導致模型準確率有所下降,所以NSL-KDD數據集不太適用于檢驗模型的性能.
2) 在CICIDS2017數據集上實驗
本文使用CICIDS2017數據集對模型進行了進一步探究.實驗過程與在NSL-KDD數據集上一致.實驗結果如表6所示:

Table 6 CICIDS2017 Dataset Results表6 CICIDS2017數據集結果
由實驗結果可知,本文的準確率比RF高了1.69個百分點,比BiLSTM高了2.3個百分點,效果有了明顯的提升.
本文對提出的3種不同的激活函數S
(式(11)),S
(式(12)),S
(式(13))與原始激活函數Vanilla進行了對比實驗,實驗結果以及收斂過程如表7和圖9所示.由實驗結果可得,使用S
有著更好的泛化能力以及更快的收斂速度,且趨于穩定.
Table 7 Results of Different Activation Functions表7 不同激活函數結果

Fig. 9 Relationship between L and training times圖9 L與訓練次數關系
為了驗證殘差連接的有效性,本文將有殘差連接模型(本文)與沒有殘差連接的模型(CapsuleA
)進行了對比,準確率如表8所示:
Table 8 Comparison Results with the Non-residual Model表8 與無殘差連接模型對比結果
由此可見,經過檢驗,不含殘差連接的模型在訓練集上和測試集上,準確率都有所下降,說明網絡加深以導致了模型出現了網絡退化以及過擬合現象,并且所損耗的時間大大增加.通過殘差連接可以很好地解決模型過擬合以及網絡退化的問題,并提高運行效率.
3) 模型效率分析
為了研究模型在推斷階段的效率,本文比較了傳統機器學習算法與神經網絡算法運行一個Batch所需要的時間.其中CapsuleB
模型只是單純加深了網絡深度,網絡層數與本文提出的模型一致,且CapsuleB
模型在NSL-KDD數據集上的準確率為83.78%.實驗結果如表9所示:
Table 9 Results ofthe Models’ runtime表9 模型運行時間結果 s
由實驗結果可知,本文的運行時間要小于單純的將膠囊層數疊加的模型(CapsuleB
),且單純的疊加膠囊層數并沒有達到較好的效果.同時,神經網絡算法的運行時間普遍大于傳統機器學習的算法.在實際應用中,本文算法的時間消耗仍在可接受的范圍內,與ResNet網絡相當.隨著數據的爆發式增長,傳統的機器學習算法將不再適用,而神經網絡算法隨著數據的增加,在一定程度上可以有效地提升模型的準確度,且深度神經網絡算法可以很好地在GPU上得到加速,隨著設備的發展,時間效率問題可以進一步得到緩解.本文構建了雙重路由機制的膠囊網絡模型,通過使用不同的動態路由算法進行相互補充,根據數據集自動分配2種路由機制所占的比重,可以更好地擬合不同種類樣本所形成的特征分布.同時,在特征提取過程中使用了混合注意力機制,使得模型更加關注對判別產生影響的特征,減少了噪音的干擾,增強了模型的魯棒性.但在膠囊網絡的動態路由機制過程中損耗時間要大于傳統神經網絡,今后需要通過進一步優化動態路由機制,提升膠囊網絡模型的運行效率.
作者貢獻聲明
:尹晟霖提出了方法、完成實驗以及撰寫原稿;張興蘭負責整體監督與論文的修改;左利宇負責部分實驗的實現以及實驗結果的整理.