王 禹,丁 箐,羅 弦
(中國科學技術大學 軟件學院,安徽省 合肥市 235000)
網絡犯罪每年給全球經濟造成的損失高達5 750億美元,其中包括罪犯違法所得和遭受攻擊的公司防護和維修帶來的費用,據說截至2019年,網絡犯罪帶來的損失將達到2萬億美元[1]。網絡入侵被定義為非法、未被授權使用和網絡資源被外部攻擊者利用,它是網絡犯罪的主要形式。為了識別和防范主機系統中的入侵,人們開始使用入侵檢測系統(IDS)[2]。檢測入侵最常見的方法是識別用戶的行為模式[3-4],這種方法需要人工完成,而且用戶行為數據體量非常龐大,所以相當耗費時力。因此借助機器學習方法勢在必行。神經網絡一類的機器學習算法對運算能力要求較高,在確保效率的同時,對節省入侵檢測任務計算資源的研究具有價值。
在機器學習方法檢測網絡入侵的問題上,文獻[5]用一種支持向量機(Support Vector Machine,SVM)和人工神經網絡(artificial neural network,ANN)相結合的方法做入侵檢測。ANN是一種主要用于解決分類任務的機器學習算法,它能將數據分類到其所屬的類別中,圖1演示神經網絡處理信息的過程,每一層的圓圈代表神經元,從輸入層到隱層再到輸出層的有向線段表示神經元之間傳遞信息的過程[6],輸出層輸出概率分布。SVM分類器使用合頁損失函數[7]找到分隔超平面(如圖2所示),將數據點分為兩類,預測網絡數據是否異常。

圖1 SVM算法生成分離超平面

圖2 人工神經網絡
考慮到網絡數據流具有時序特征,而循環神經網絡(Recurrent Neural Network,RNN)通常被用來分析或預測序列數據,文獻[8]提出了一種結合RNN和SVM的方法對樣本數據分類。具體地,使用回聲狀態網絡 (Echo State Network,ESN)提取樣本數據特征并把SVM做為分類器,ESN作為RNN的變體,一個ESN單元工作需要大量神經元,從而提高了計算資源的消耗。
可以發現,門限循環單元(Gated Recurrent Unit,GRU)對時序數據有更好的特征提取效果,降低計算復雜度的同時,克服了循環神經網絡難以解決的“長期依賴”問題。綜上,本文模型使用GRU取代ESN來做入侵檢測有可靠的理論依據。
本文提出的模型使用GRU提取樣本數據特征,SVM分類器預測數據是否為惡意入侵,模型結構如圖3所示。
X代表輸入的樣本數據的特征值,利用公式(1)~(4)計算每個單元的狀態,包括更新門、重置門和輸出:
zt=σ(Wz· [ht-1,xt])
(1)
rt=σ(Wr· [ht-1,xt])
(2)
ht=tanh(W· [rt*ht-1,xt])
(3)
ht=(1-zt) *ht-1+zt*ht
(4)

圖3 GRU-SVM結構模型,n-1個GRU輸入單元,SVM分類器
其中,Wz、Wr和W代表要學習的參數矩陣,通過GRU的門限機制學習更新[9];zt和rt分別為當前單元的更新門和重置門,ht是當前單元的輸出并影響下一個單元;下標t-1代表前一個單元狀態;σ()是Sigmoid激活函數。SVM作為輸出層的分類器,參數矩陣還可以通過優化SVM的目標函數更新,目標函數度量神經網絡的損失,決策函數f(x)=sign(wx+b)計算并預測樣本數據是否為入侵。GRU-SVM模型可以簡述為以下幾個步驟:
(1)給GRU模型輸入數據集的特征{xj|xj∈Rm};
(2)輸入特征值xi,計算GRU的單元狀態并更新參數矩陣;
(3)用隨機值初始化學習參數weights和biases(通過訓練調整);
(4)預測結果通過SVM的決策函數f(x)=sign(wx+b)計算;
(5)Adam optimizer[10]算法最小化損失函數,調整weights和biases;
(6)不斷重復整個過程直到神經網絡達到設定的準確率。
模型的分類器使用SVM而不使用Softmax,結合σ函數圖像如圖4所示,本文研究Softmax分類器預測類別機制。

圖4 Sigmoid函數圖像[10]
函數的導數值在0和1之間,隨著網絡層數的加深,輸出層誤差的影響越來越小,即梯度變小,同時帶來“梯度消失”現象,這是傳統模型錯誤分類的原因之一,GRU-SVM模型可以較好解決這一問題,同時能提升運行時間。
京都大學honeypot系統[11]2013年的網絡數據被用做實驗數據集,它有24個可統計特征。其中KDD CUP 1999數據集[12]中有14個特征,另外10個特征也至關重要,本文選取其中的22個特征。
數據集包括了大約4.1 GB網絡數據流(從2013年1月1日到6月1日)。在使用實驗數據集前對特征進行正則化-標準化的處理,如公式5,對連續數據標準化。
(5)
X是需要標準化的特征,μ是對應特征的平均值,σ是特征的標準差。為提高效率,本文實驗使用Scikit-learn[13]中的StandardScaler().fit_transform()函數來標準化。LabelEncoder().fit_transform()函數把離散特征特征標量化。然后用pandas[14]的qcut()函數將標準化后的值二進制化。最后,這些特征編碼為one-hot編碼(十分位二進制編碼),使用谷歌機器學習開源庫TensorFlow[15]構建神經網絡模型。
第一階段,將樣本數據80%選作訓練集,用DataFrame.drop_duplicates()函數去除重復數據;第二個階段將剩余20%數據選作測試集。本文提出的GRU-SVM模型分別在上述兩個階段的數據集上運行,用傳統的GRU-Softmax模型做對比。
實驗參數基于文獻[5]的研究,包括準確率、迭代輪數、損失、時間、數據點個數、誤報個數和漏報個數,統計學方法參數也被用到(真正率、真負率、假正率、假負率)。
兩個模型的超參數都通過手工賦值見表1。實驗中的兩個模型都在1 898 240行網絡數據流中訓練了5輪,訓練后的模型又運行在420 608行的測試集上,同樣經歷5輪迭代,訓練集和測試集的類別分布見表2,實驗結果見表3。

表1 兩種神經網絡中的超參數

表2 訓練集測試集的類分布

表3 兩種模型的實驗結果總結
表4和表5分別是兩個模型在訓練集和試集上的統計度量。

表4 兩種模型在訓練集中分類性能的統計度量

表5 兩種模型在測試集中分類性能的統計度量
5輪迭代過后, GRU-SVM模型用了16分43秒完成訓練達到了約91%的準確率,GRU-Softmax模型達到約78%,用了17分11秒,如圖5所示。GRU-SVM模型在1分22秒完成了測試并達到約89%的準確率,GRU-Softmax則用了1分40秒達到約85%,如圖6。

圖5 兩種模型在訓練數據集的準確率

圖6 兩種模型在測試數據集的準確率
實驗結果表明,在相同數據集條件下,本文提出的模型比傳統模型預測準確率高,同時說明SVM解決二分類問題更實用,而且運行時間更短,印證了兩種算法各自的理論時間復雜度。首先,SVM主要為解決二分類問題,只需要O(1)的計算開銷;而Softmax主要解決多類分類[16]問題,時間復雜度是O(n)級別。在提高準確率和優化效率之間均衡,本文提出的GRU-SVM模型在準確率和效率上更勝一籌,對于判斷網絡系統是否有入侵行為具有重要意義,同時為追蹤入侵來源爭取了較多時間。改進后的模型不僅可以用在入侵檢測這一領域,還可以用于其他一些機器學習任務中,如視頻分類、生物疾病的診斷,在理解自然語言語義[17]的研究中也具有廣闊前景。
參考文獻
[1] Juniper. Cybercrime will cost businesses over MYM2 Trillion by 2019[J/OL].(2015-05-15)[2017-06-22]. https://www.juniperresearch.com/press/press-releases/ cybercrime-cost-businesses-over-2trillion.
[2] PUKETZA N J, ZHANG K, CHUNG M, et al. A methodology for testing intrusion detection systems[J]. IEEE Transactions on Software Engineering, 2001, 22(10):719-729.
[3] 左軍. 基于大數據的網絡用戶行為分析[J]. 軟件工程, 2014(10):5-6.
[4] 周延森,汪永好.網絡入侵檢測系統模式匹配算法研究[J].計算機工程與設計, 2008, 29(7):1652-1654.
[5] MUKKAMALA S, JANOSK G, SUNG A.Proceedings of the IEEE International Joint Conference on Neural Networks, 2002, St. Louis,2002: 1702-1707.
[6] NEGNEVITSKY M.Artificial intelligence: a guide to intelligent systems (3rd ed.)[M].Pearson Education Ltd., 2011.
[7] CORTES C, VAPNIK V. Support-vector Networks[J]. Machine Learning,1995,20(3): 273-297.
[8] ALALSHEKMUBARAK A,SMITH L S. 9th International Conference on Innovations in Information Technology (IIT),IEEE,2013,2013.
[9] BOUGARES F,SCHWENK H,BENGIO Y. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv preprint arXiv,2014:1406.1078 .
[10] KINGMA D, BA J. Adam: A method for stochastic optimization[J]. arXiv preprint arXiv,2014:1412.6980.
[11] SONG J, TAKAKURA H, OKABE Y. Description of kyoto university benchmark data [J/OL].[2017-07-17]. http://www.takakura.com/Kyoto_data/BenchmarkData-Description-v5.pdf.
[12] STOLFO S J. KDD cup 1999 dataset[Z]. 1999.
[13] PEDREGOSA F,VAROQUAUX G,GRAMFORT A,et al.Scikit-learn: machine learning in python[J]. Journal of Machine Learning Research,2011,12: 2825-2830.
[14] MCKINNEY W. Data structures for statistical computing in python[M].2010.
[15] TensorFlow:異構系統上大規模機器學習庫[Z].2017.
[16] 張雨濃, 陳俊維, 劉錦榮,等.基于權值與結構確定法的單極Sigmoid神經網絡分類器[J]. 計算機應用, 2013, 33(3):766-770.
[17] YANG Z, YANG D, DYER C, et al. Hierarchical attention networks for document classification[C]. Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, 2017:1480-1489.