APP下载

基于SDAE-DNN的网络异常检测方法

2020-06-11吕勋蔡畅

电子技术与软件工程 2020年1期
关键词:编码器神经网络深度

文/吕勋 蔡畅

(湖南省衡阳市南华大学计算机学院 湖南省衡阳市 421001)

1 引言

近年来,无线通信在网络流量方面经历了巨大的增长。但是,与传统的有线网络相比,无线网络更容易受到攻击。由于无线通信中的节点缺乏监督,恶意攻击很容易入侵系统并造成破坏,设计有效的异常检测系统对于保护无线通信至关重要。深度学习在近几年变得越来越流行,渐渐成为一种主流的解决方法[1-2],而且学者们发现深度学习在处理复杂大规模数据方面比传统机器学习算法有更出色的表现,它不仅可以表达出数据之间更加深层次的关系,而且深度学习算法有着强大的数据表示和特征选择能力,可以使相关数据信息得到保留。而深度学习中常用到的自编码器[3],作为一种新颖的特征提取方法,同样对异常检测的研究非常有效。所以将深度学习与异常检测技术相结合的研究,将是未来异常检测技术的研究方向。

异常检测方法[4-5]在过去几年中受到许多关注,为了提高异常检测系统的效率和性能,学者们从各个角度构建网络异常入侵检测系统[6-7]并取得了大量研究成果。Chen 等[8]提出一种基于特征的MSPCA 与sketch 的异常检测系统,通过结合PCA 和小波分析,MSPCA 可以有效分离异常数据,从而能够识别异常的源IP 地址。Anderson 等[9]人提出一种基于遗传算法和模糊逻辑的网络异常检测系统,遗传算法用于使用流分析生成网络段的数字签名,模糊逻辑方案来确定数据是否表示异常,实验结果获得了比较好的准确度和误报率。Juliette 等[10]人提出了一种新的在线和实时无监督网络异常检测算法,依赖于离散的时间滑动窗口来连续更新特征空间和增量网格聚类以快速检测异常。Hong 等[11]人提出了一种用于高维数据的混合半监督异常检测模型,模型由两部分组成:深度自动编码器(DAE)和基于集合k-最近邻图的异常检测器,训练DAE 以学习高维数据集的固有特征,然后,从整个数据集中随机抽取的不同子集构建几个非参数的基于KNN 的异常检测器。

大多数研究在处理低维度的数据集时,效果表现良好,但是在处理海量高维度的数据时,检测率和误报率不能让人满意。本文提出一种基于SDAE-DNN 的网络异常检测方法,首先对NSL-KDD数据集进行预处理,使用onehot 编码将数据预处理后,数据集扩展为122 维的数据;然后利用SDAE-DNN 模型对数据进行分类检测,实验与支持向量机(SVM)、深度神经网络、融合主成分分析(PCA)和深度神经网络的异常检测方法进行了对比,结果表明该模型要优于其他方法。

2 相关方法

2.1 栈式去噪自编码器

图1:栈式自编码器结构

图2:深度神经网络结构

简单的自编码器(AE)是一种三层的神经网络模型,包含数据输入层、隐含层、输出重构层,同时也是一种无监督学习模型。从输入层到隐层称为编码过程,从隐层到输出层称为解码过程。而栈式自编码(SAE)神经网络是由多个自编码器级联组成的神经网络,上一个自编码器的输出用作下一个自编码器的输入,以便可以获得输入数据的更高级别的特征表示,可以通过数据映射(变化)的方法,把数据从高维度的特征向量变换到低维度的特征向量。栈式自编码器结构如图1 所示。

栈式自编码器的网络可分为两个结构:编码器和解码器,这两个结构可定义为:

编码器:把输入数据的特征向量(Xn∈Rd)进行压缩变换,构成隐含层的m(m

解码器:将编码器的隐含层输出特征向量Hi解码重构回原始输入数据的特征向量大小。映射函数如下:

通过调整优化编码器和解码器的参数,使得输入数据和重构数据之间的重构误差函数最小化。隐含层单元输出的数据是原始数据的最佳低维表示,并且包括原始数据中存在的相关信息,优化自编码器使得数据重构的误差最小化,以此获得最佳子空间。损失函数函数一般使用均方差函数表示,公式如下:

而栈式去噪自编码器(SDAE)通过在输入层添加噪声,来提高自编码器的鲁棒性。将输入数据X 通过一个样本损坏过程C(X'/X),处理成一个含噪声的样本X',然后再对数据X'进行重构。本文使用加性高斯噪声对输入数据进行处理,通过引入噪声使栈式去噪自编码器利用含噪声的样本去重构不含噪声的输入,使SDAE-DNN网络更具更具鲁棒性。

2.2 深度神经网络

2006年Hinton 提出了深度神经网络(DNN),其结构主要是由全连接层构成,也就是每一层节点的输出结果会发送到下一层所有的节点作为输入,把简单的单层神经网络的隐含层扩展出多层,就可以得到一个深度神经网络[12-13],如图2 所示就是一个含有两个隐含层的深度神经网络。深度神经网络的训练过程主要由前向传递和反向传递过程组成,在前向传递过程中,输入向量从输入层到隐含层,再到输出层,当输出层的结果达不到预期要求时,那么再通过反向传播算法来调整神经元之间的连接权重,经过多次的训练迭代,使得输出值被控制在误差允许范围。

深度神经网络中的激活函数一般有relu 函数、tanh 函数、sigmoid 函数,本文把relu 函数和tanh 函数作为深度神经网络的激活函数,对于损失函数,DNN 一般取交叉熵函数,本文同样把交叉熵函数作为损失函数,公式如式(4)所示。为了防止深度神经网络过拟合,在DNN 中引入Dropout 技术,将DNN 全连接层的输出结果按比例P 为0。

3 基于SDAE-DNN的网络异常检测方法

本文提出的基于SDAE-DNN 的网络异常检测模型总体框架如图3 所示,模型包括两个部分:第一部分为栈式自编码器用于异常检测数据特征降维,第二部分为搭建深度神经网络对降维后的数据进行异常检测识别。

在构建基于SDAE-DNN 的网络异常检测模型中,通过对数据集进行预处理后输入到SDAE 模型,进行无监督训练,将数据降到30 维,然后在把降维数据输入到深度神经网络中,利用BP 算法进行监督学习,使用测试集对数据进行分类和异常检测。具体步骤如下:

表1:混淆矩阵

表2:不同分类模型性能比较

图3:SDAE-DNN 检测模型

步骤1:数据预处理。使用onehot 编码对NSL-KDD 数据集进行符号特征数值化,然后对数据进行最小最大归一化处理,将所有特征转换到[0,1]的范围。

步骤2:将预处理后的数据输入输入到栈式去噪自编码器中,利用编码器-解码器对数据进行降维重构,调整参数,进行无监督训练,使得损失函数最小化。

步骤3:抽取训练集10%作为验证集,根据损失函数值不断进行参数调优,得到最终参数,获得隐含层的低维度的训练数据和测试数据。

步骤4:构建深度神经网络。确定隐含层层数,设置好DNN各参数值。

步骤5:将获得的低维数据加上标签输入到DNN 中,利用反向传播算法(BP)对DNN 模型进行有监督训练,使得损失函数最小化。

步骤6:把降维后的测试集输入到已经训练好的DNN 模型中,利用DNN 最后一层的sigmoid 函数进行分类检测。

4 实验结果与分析

4.1 数据预处理

针对KDD CUP 99 数据集出现的一些不足,本文使用NSLKDD 来评价基于SDAE-DNN 的异常检测方法,NSL-KDD 数据集在KDD CUP 99 数据集基础上做出了改进,新的数据集除去了原有的KDD CUP 99 数据集中冗余重复的数据。NSL-KDD 数据集包含41 个分类特征,还有最后一列的标签,使用one-hot 编码来进行数据集数字化。NSL-KDD 数据集包括“Protocol_type”,“Service”和“Flag”等3 种符号特征,其中“Protocol_type”包括3 种不同的符号特征值,“Service”包括70 种不同的符号特征值,“Flag”包括11 种不同的符号特征值。因此,在完成数据数值化处理后,NSL-KDD 数据集的特征数据大小由41 维扩展为122 维。

为了便于比较结果,提高网络收敛速度和精度,使用公式(5)来对NSL-KDD数据集进行数字化化处理的数据再进行归一化处理,将数据特征映射到[0,1]区间上。xman和xmin分别表示原始特征值的最大值和最小值。x 表示原始特征值。

4.2 实验评估指标与设置

本文使用混淆矩阵的方法来评估本文的实验结果,混淆矩阵的定义如表1 所示。在表中,TP(True Positive)表示被预测为正类的正类数据,TN(True Negative)表示被预测为负类的负类数据,FP(False Positive)表示被预测为正类的负类数据,FN(False Negative)表示被预测为负类的正类数据。

本文使用的度量指标主要包括ACC(准确度)和Precision(检测率),FAR(误报率),定义如下。

实验中栈式去噪自编码器的训练中采用[122-100-90-30]的网络结构,噪声系数取0.5,采用自适应矩阵估计(Adam)算法进行优化,学习率α 取0.001,batch-size 设为128,网络迭代次数设置为50 次,激活函数为relu 函数;深度神经网络中采用[30-128-128-64-32-1]的网络结构,Dropout 比例P 设为0.5,采用随机梯度下降(SGD)算法来进行优化,batch-size 设为128,网络迭代次数设置为50 次,输出层采用sigmoid 函数,其他层激活函数为relu 函数和tanh 函数。

4.3 实验结果与模型对比分析

为了分析SDAE-DNN 异常检测模型的性能,本文把基于深度神经网络的异常检测方法、基于SVM(支持向量机)的异常检测方法和基于主成分分析(PCA)和了深度神经网络的异常检测方法与本模型SDAE-DNN)进行了对比,从准确率和误报率,精确率进行评估。

从表2 可以看出,本文提出的基于SDAE-DNN 模型性能要远优于基于DNN 的模型和基于SVM 模型,SDAE-DNN 的准确率比DNN、SVM、PCA-DNN 分别提高了3.65%、2.87%、2.39%,检测率比其他几种方法也要高,同时误报率比DNN、SVM、PCA-DNN分别降低了1.33%、3.51%、0.66%。同时可以看出基于栈式去噪自编码器的降维性能要由于基于PCA 的降维性能。

综上,本文提出的网络异常检测方法与传统的异常检测方法相比,有着较低的误报率和较高的检测率,模型整体性能有了不错的提升。

5 结束语

针对对高维度网络流量攻击数据的准确率和误报率问题,本文提出了一种基于栈式去噪自编码器和深度神经网络的网络异常检测方法,对高维数据集输入到栈式去噪自编码器中,进行特征降维,然后降维数据输入到深度神经网络中进行训练,再把测试集输入到训练好的DNN 模型中进行分类和异常检测。实验结果表明,本模型要优于其他方法。下一步工作将研究真实网络情况下的异常检测,大大降低模型的误报率。

猜你喜欢

编码器神经网络深度
深度理解一元一次方程
神经网络抑制无线通信干扰探究
深度观察
深度观察
基于FPGA的同步机轴角编码器
深度观察
基于PRBS检测的8B/IOB编码器设计
基于神经网络的拉矫机控制模型建立
JESD204B接口协议中的8B10B编码器设计
复数神经网络在基于WiFi的室内LBS应用