基于改进BP神经网络的网络入侵检测研究
2019-05-23曾文献张淑青孟庆林李子坤
曾文献,张淑青,孟庆林,李子坤
(河北经贸大学 信息技术学院,河北 石家庄 050061)
0 引言
随着科技的发展,互联网技术广泛应用于人类生活的方方面面,但用户在享受便利的同时,网络攻击变得越来越严重,导致用户的个人信息甚至财产受到严重的威胁.在此环境的影响下,网络入侵检测系统(IDS)成为最新ICT(Information and Communication Technology)系统中不可或缺的一层,网络入侵检测技术根据信息来源的不同和检测方法的差异进行信息分类,进而确定数据是正常还是异常[1].本研究选择了误差反向传播神经网络(BPNN)方法构建模型,并采用KDD99数据集作为实验数据集.KDD99数据集主要涵盖拒绝服务攻击(Dos)、来自远程主机的未授权访问(R2L)、未授权的本地超级用户特权访问(U2R)、端口监视或扫描(Probe)和高级持续性威胁(APT)等攻击类型.其中APT攻击具有高度隐蔽、手段多样和目标明确的特点[2],具有极大的破坏力,是目前国内外网络入侵技术研究的重点,本研究将APT攻击作为重点研究对象之一,APT攻击的阶段图见图1.
图1 APT攻击阶段图
在传统的网络入侵检测方法中,存在着收敛速度慢、资源占用率大、成本高等缺点[3].并且当突发入侵事件发生时,部分检测方法不能够识别该网络攻击行为,进而导致信息泄露.为了解决上述问题,首先对不同入侵行为的目的进行分析,使用分类算法确定原始数据的主要特征,进行数据的预处理,偏差标准化算法(Z-Core)将连续数据离散化,然后使用相同数据集进行模拟实验训练并对结果进行分析对比,以提高模型的准确率和稳定性.
1 系统处理流程
系统的处理流程主要包括数据提取、数据处理、攻击分析及报警响应.具体流程如图2所示.
图2 系统处理流程
数据提取主要是对网路攻击数据的采集,根据不同的攻击行为,尽可能多地提取不同类型的数据,以保证实验结果的准确性;数据处理是对已提取的数据进行预处理的过程,以减小检测误差;攻击分析是对不同的入侵行为的分析,以检测攻击类型;报警响应是解决已检测出的攻击的重要措施,可以根据入侵数据的危害程度,选择主动或被动两种方案.
BPNN的主要特点是信号前向传播,而误差反向传播,优化的BP神经网络模型的训练流程如图3所示.模型训练结束后,将测试数据传入优化的BP模型中,分析攻击类型并报警响应,根据测试结果,判断模型的性能.
图3 模型训练流程
2 BP算法及其优化
2.1 BP神经网络
BP神经网络模型在人工神经网络基础上使用梯度下降优化算法进行数据集训练,是目前使用最广泛的模型之一[2].相较于其他神经网络,BP网络相对成熟,结构上分为输入层、1个或多个隐藏层及输出层3部分[4].
BP神经网络的过程主要可分两阶段,第一阶段为信号的前向传播,信号从输入层经过隐藏层再到输出层;第二阶段为误差的反向传播,从输出层到隐含层再到输入层.在这两个阶段不停地对输入层到隐藏层的权重wij和偏置aj以及隐藏层到输出层的权重wjk和偏置bk进行修改.假设输入层、输出层、隐藏层的节点个数分别为n,m,l,学习率为η,Yk为输出期望,具体计算如公式(1)~(4)所示.
隐藏层的输出公式:
输出层的输出公式:
误差计算公式:
在上式中,令 ek=(Yk-Ok),则则权值的更新公式可记为:
以上公式中,i=1,2,…,n,j=1,2,…,l,k=1,2,…,m.
2.2 BP算法优化
尽管传统BP神经网络在非线性映射能力、自学习和自适应、泛化能力和容错能力等方面相较于其他传统机器学习方法有一定的优势[5],但随着研究的深入,不足之处也越发明显.包括:1)容易导致局部最优;2)训练过程中的收敛速度比较慢;3)检测能力和训练能力之间容易出现过拟合现象.针对这些问题,本研究主要从改进BP神经网络Dropout随机丢弃方法和改变激活函数两方面进行优化,将节点间的相关性与Dropout正则化方法相结合,根据节点间的相关程度以不同的概率删除节点,进而提高检测的效率.
2.2.1 Dropout正则化方法
Dropout正则化方法是一种预防神经网络过拟合的方法[6],Dropout正则化方法是将隐藏层的N个神经元在每次训练的迭代过程中,以概率P(一般P=0.5)随机暂时删除部分神经元,用余下的(1-P)*N个神经元所构成的网络进行训练,训练结果如图4所示.
节点的随机丢弃首先是根据定义好的概率P进行选择要删除的节点,强制将其激活值置为0,根据概率P生成二项分布的向量q(n)(由0和1构成),0表示节点被暂时删除,连接断开,1表示节点被保留.将向量q(n)与上层的输出q(n)相乘得到X1(n)作为这层的输入,用于BP神经网络的训练,达到随机丢弃的效果.具体计算如公式(5)~(8)所示:
以上公式中,Binomial(p)为二项分布,X(n)表示上层输出的节点,W(n+1)表示权重矩阵,B(n+1)表示偏置向量,g则表示激活函数,经过删除处理后的节点X1(n)乘以对应的权重W(n+1)加上偏置B(n+1),再过激活函数,得到输出值 Z(n+1).
2.2.2 PReLU函数代替ReLU函数
在激活函数选择的过程中,虽然ReLU激活函数在BP神经网络研究过程中应用较为广泛,但考虑到入侵检测应用过程中需要大量的数据,而ReLU激活函数将矩阵内的负值都设为0,容易丢失全部负数参数信息,并且在较大梯度流参数更新后,易发生锁死现象.针对这些问题本研究提出了用PReLU函数代替ReLU函数作为隐藏层的激活函数,具体函数表达式如下式所示:
图4 Dropout训练的网络结构
式中i表示不同的通道,由公式(6)、(7)可以看出,PReLU在输入小于0时,不会丢失全部负数输入参数信息,因此不易发生训练锁死现象[7].当a更新时,采用带动量更新方式,带动量更新公式如下所示:
函数曲线图如图5所示.
图5PReLU函数曲线图
2.2.3 改进的Dropout随机丢弃方法
在入侵检测技术的设计过程中,考虑到使用Dropout正则化方法丢弃节点后,剩余节点的相关性过大会导致大量的数据冗余,使神经网络的稀疏性降低,进而影响入侵检测算法执行的效率,因此本研究将节点间的相关性与Dropout正则化方法相结合,以不同的概率删除节点.若节点间的相关性较大,则以较大的概率删除节点,同时对神经网络进行稀疏性处理;若节点间的相关性较小,则以适度小的概率删除节点,保留数据的特征,进而优化BP神经网络,以提高入侵检测技术检测结果的准确性.
在改进过程中,首先,节点间相关性大小是由输出向量之间的相关性决定的,对于节点vi和vj,如果存在vj=a*vi+b(a,b 为实数),则称节点 vj可由 vi线性表示. 节点 vi对其下层节点 vm的输出为 yim=g(viwim+bi),所以节点 vi的输出向量为 Yi=[yj0,yj1,…,yjn],同理,得到节点 vj的输出向量为 Yj=[yj0,yj1,…,yjn].
节点间的相关性由各个节点输出值的方差决定,节点输出值的方差计算公式为:
式中vin代表的是第i个节点的第n批次的输出,vi是第i个节点的所有输出值的期望.得到所有节点的输出,构成作用于下一层每个节点的向量,节点相关性的计算公式为:
根据公式(12)计算这一层中任意两个节点间的相似性Rij,根据Rij值的大小引入阈值(一般为介于0和1之间的值,根据网络复杂性和经验进行调整),区分为高度相关和低度相关.以不同的概率生成一个二项分布的向量q(n),将q(n)与上层的输出Y(n)的积Y1(n)作为这层的输入,最后,通过公式(15)计算得到最终输出值.具体计算公式如下:
3 模拟实验与结果分析
3.1 入侵检测研究数据集
基于BP神经网络的入侵检测技术在研究过程中对数据集的要求很高,基于PSO-BP神经网络的入侵检测技术优化算法的研究[8]中采用了KDD99入侵测试数据集,因此本研究也选择了性能优异、影响范围广的KDD99数据集进行实验,以检验入侵算法的好坏,并按照相应的算法对数据集进行数据预处理后进入神经网络模块中进行训练.同时,为保证实验过程的严谨性,本研究对河北经贸大学受到的网络攻击进行提取分类,并将其与KDD99数据集混合,共同进行模型的训练与测试.
3.1.1 KDD99数据集分析
KDD99数据集共包含4类异常特征、39种攻击,其中有22种训练集和17种未知攻击类型的测试集.数据集中的攻击类型及分类标识如表1所示.
表1 攻击类型及分类标识
3.1.2 数据预处理
通过对KDD99数据集的分析可以看出,该数据集已经去噪处理且比较理想,但不同攻击类型的数据差异很大,比如U2R攻击仅占0.01%,R2L占0.23%,Probe占0.83%,Normal占19.69%[9].因此,在研究过程中将训练集与测试集的数据混合均匀,然后进行去重处理并按照训练集测试集8∶2的比例进行数据的划分,生成新的训练集和测试集.
数据预处理过程包括标记处理和特征处理.本研究用数字0到n-1来表示字符特征.对标记处理来讲,按照表1将数据集中的样本的攻击类型转换为Normal,Dos,Probe,U2R,R2L 5个类别.由于检测系统不能处理字符串,因此通过字符转换将5个类别转换为数字型,分别用0,1,2,3,4来表示.
特征处理主要包括字符转换和归一化.在KDD99数据集的41个特征中,有3个特征属于字符型特征,分别是service,protocol_type和flag.特征处理就是将它们从字符型转换为数字型.使用0~69代表service中的70个特征值,0,1,2代表protocol_type中的3个特征值,0~10代表flag中的11个特征值.
数据预处理阶段需要将数据集中的连续特征离散并归一化,主要采用了Z-Core法,它是一种通过数据集均值和标准差的计算而进行的数据标准化过程.属性的均值和标准差E(xi)计算公式如下:
属性值标准化公式为:
经处理后,属性值符合标准正态分布,即均值为0,标准差为1.
3.1.3 数据特征选择
在数据集的特征描述中,并不是每一个特征都对训练结果起作用,因此本研究使用弃一法进行特征选择.每次从数据集中删除1个特征进行重新选择,如果检测率下降或误报率上升,则认为是1个重要特征;反之则为不重要特征,可将其剔除[1]用选择出来的特征进行神经网络训练,可发现各类别的检测率均有上升,并且模型训练时间减少,可提高检测系统的检测效率.检测结果如表2所示.
表2 检测率检测结果
检测率对比如图6所示,从结果中可以看出,在Dos攻击下,优化后的算法和传统的算法检测率分别为93.69%和84.64%,各类型攻击的检测率均得到了明显的提高.
3.2 实验过程及结果分析
使用Google开源数据流引擎TensorFlow验证改进BP神经网络算法效果,TensorFlow支持在多种平台上运行,如CPU,GPU或Android设备,符合实验要求.
图6 优化前后算法检测率
本研究使用优化前的BP神经网络与优化后的BP神经网络进行对比仿真实验.每个BPNN上进行两次实验,每次实验进行500次迭代,在KDD99测试数据集上评估每次实验性能.为了对比实验结果,选用准确率和误报率作为性能度量指标,其中TP为真正例,FP为假正例,FN为假反例,TN为真反例[10].准确率和误报率定义如下:
损失函数变化曲线如图7所示,从图中可以看出,当迭代次数达到500次以上时,图像趋于稳定,交叉熵可降低至0.192 5,模型的收敛速度明显提高.
实验结果表明,本研究方法可以比较准确地检测出网络入侵信号,当迭代次数足够多时,模型效果好,准确率达到了96.64%,相较于传统的BP神经网络准确率上升了6.51%,如图8所示.
同时,将文献[11]的结果与本研究结果进行对比,对比结果如表3所示.可以看出,与文献[11]研究模型的性能相比,本算法的准确率、误检率性能均得到优化,达到了预期实验效果.
图7 损失函数变化曲线
图8 优化BPNN准确率变化曲线
表3 性能对照表
4 结论
神经网络在IDS中的应用前景广泛,在国内外都获得了一致好评.实验结果表明,通过对BP算法的优化以及对数据的特征处理,使得模型的准确率达到了96.64%,误检率降低到3.65%,交叉熵降低至0.192 5.相较于传统的BP算法,改进算法具有良好的表征学习和分类能力,并且随着数据量的上升,模型的收敛效果和稳定性都有了较大的提升.