基于粒子群算法优化CNN的入侵检测研究
2022-07-02赵海军陈毅红
刘 想,赵海军,陈毅红
(1.西华师范大学 计算机学院,四川 南充 637009;2.物联网感知与大数据分析南充市重点实验室,四川 南充 637009)
0 引言
在信息化时代的高速发展之下,大规模网络环境形成的同时,也带来了令人担忧的网络威胁.由于网络攻击技术日趋成熟,衍生了更多结构复杂且从未出现的攻击方式,衰减了传统的入侵检测防止网络入侵的功能,因此需要研究探索更多的方式来满足网络安全中网络入侵的检测要求.
传统意义上的机器学习中,文献[1]为了提高入侵检测率,提出了一种基于主动转移学习ACTrAdaBoost的入侵检测模型.文献[2]提出了一种基于深度分层递归单元(DGRU)的分类器实现方法和基于包装器的无线IDS特征提取算法.文献[3]表明极限学习机能够方便地集成到入侵检测系统中,并作为一种替代方法,因为它具有高成功率、比其他分类方法快、训练算法简单等优点.这些方法对入侵检测的性能得到了一定程度的提高.但是,传统的基于机器学习的算法在面对大量的网络信息数据时,不能取得良好的识别效果,不能自主地学习特征从而使一部分有效特征遗漏,不能很好地反映出原始以及过程中的网络数据,检测模型的稳定性也不高.
由于深度学习技术可以提取的高层特征和强大的自主学习能力,大量与其相关的技术被应用于入侵检测之中.深度学习技术中,常见的有堆叠自编码器(Stacked Autoencoderm,SAE)[4]、深度置信网络(Deep Blief Network,DBN)[5]和自编码器(AutoEncoder,AE)[6]等.有着卷积计算的卷积神经网络的参数具有的共享性和网络层之间的稀疏性,使该网络模型在对格点化特征时,需要的计算量变得比较小[7].所以这种特征结构使得卷积神经网络的模型所需要的参数更少,复杂度更低,提取数据的深层特征更加简单.文献[8]将卷积神经网络和三支决策结合的入侵检测算法,规避因信息不足而盲目分类造成的风险,提升入侵检测系统的性能.文献[9]的实验证明了LSTM和RNN对于网络入侵检测非常有效.文献[10]提出卷积神经网络检测方法,解决了数据集和损失函数问题,实验结果证明提升了算法性能.由此可见,与其他深度学习方法比较,卷积神经网络被广泛地应用作特征提取.
得益于智能算法中PSO解决优化问题的能力,本文提出了一种基于PSO优化卷积神经网络的入侵检测模型,该模型利用粒子群算法良好的优化效果,通过粒子群迭代优化卷积神经网络算法,有效提升了入侵检测精度,减少了分类过程中所耗费的时间.
1 网络模型
1.1 卷积神经网络的原理
在深度学习的领域中,卷积神经网络已成为大多数领域的研究方法.它作为一种高效的神经网络模型,其结构模型如图1所示.其中,包括有多个前后相继的卷积层和池化层,最后的池化层后面接池化层[11].
图1 卷积神经网络基本结构
1.2 构建卷积神经网络
本文将详细介绍卷积神经网络各层的原理,从基础的方向认识及研究卷积神经网络的工作方式.本文构建的CNN基本框架如图2所示.
图2 卷积神经网络结构
1)输入层
输入层是神经网络的输入,在处理数据流的时候,需要规范处理输入模型的数据,将一维数据预处理之后,转换映射为一定格式的数据,卷积神经网络才能更好地接受处理.
2)卷积层
卷积层由一组具有N×N形式滤波器组成,它是一组多个不同的映射特征.假设输入数据为二维,设置其对应的卷积核大小,卷积核移动的步长,以卷积核中的参数与对应位置点依次相乘后累加作为以此卷积操作结果.从左往右,从上到下地按照步长大小将卷积计算完成,最后输出的便是卷积核大小的卷积特征,最后将此特征作为下一层的输出.具体计算公式如下:
(1)
(2)
(3)
relu(z)=max(0,z)
(4)
3)池化层
为了缩小特征图的大小,一般会在卷积层之间加入池化层,减少最后连接层的参数数量.池化层的本质是数字图像处理中的聚合操作,通过简单的方式就可实现.以最大池化层为例,池化操作根据池化层大小,从左到右,从上到下,依次对应输入中相应位置的元素,池化窗口中的最大值便是池化输出的值.最大池化层的具体计算公式为:
yij=max(xi,j,xi,j-1,xi-1,j,xi-1,j+1)
(5)
4)全连接层
全连接层是指每个节点都与上一层的所有节点相连,合成上一层提取的特征,输入和输出都是一维张量.由于其全连接特性,全连接层一般参数最多.
5)输出层
输出层位于卷积神经网络最后一层,用于数据的多重分类,在所给的训练集,对应的类别为标签.
1.3 粒子群算法优化CNN的入侵检测算法
粒子群算法是基于群体协助,模拟群鸟寻找食物的天性而演化出的计算模型[12].作为一种搜索最优解的算法,利用PSO求解优化问题时,粒子群求解到最优解需要一次一次迭代,如图3所示.在迭代的每一次中,粒子通过初始化和更新的速度以及位置,获得当前个体极值以及全局极值进行下一次迭代.其中,群体极值就是群体最优解.PSO在解决复杂优化问题时,保证了过程的时效性和结果的最优化.
图3 粒子群算法流程图
粒子群算法将首先初始化粒子群及其各个粒子的初始位置和速度,然后优化卷积神经网络的各层的过滤器大小,卷积核大小、池化层大小和卷积步长参数等.经卷积神经网络模型训练出的损失,然后通过粒子群算法相关操作后获得最优化参数,再次进行卷积神经网络模型的训练,即本文提出的优化入侵检测算法模型.其组合优化算法流程如图4所示.
图4 基于粒子群算法和卷积神经网络优化算法流程图
粒子群算法优化CNN的具体步骤如下:
1)构建CNN基本框架,确定粒子群的参数、上下边界等;
2)初始化粒子群大小、初始位置和速度;
3)根据公式(6)、公式(7)更新粒子的位置和速度:
vi=ω×vi+c1×rand()×(pbesti-xi)+c2×rand()×(gbesti-xi)
(6)
xi=xi+vi
(7)
其中,ω表示惯性因子,非负数,vi表示粒子的速度,xi表示粒子的位置,rand()是介于(0,1)之间的随机数,c1和c2表示学习因子,pbesti和gbesti分别表示当前个体极值和全局极值.
4)由粒子群优化产生的参数,生成卷积神经网络模型进行训练;
5)根据目标函数计算出各粒子当前的pbesti,求解群体的gbesti;
6)判断是否符合终止条件,否则跳到3);
7)更新参数作为新的卷积神经网络训练模型;
8)测试数据,实验结果及分析.
通过以上分析,整个模型的实现流程如图5所示.
图5 模型算法流程示意
2 实验分析
2.1 数据集
在深度学习中,大量且有效的实验数据是实验的重要需求.对于入侵检测的实验数据,可以通过一些工具来采集,如Libdump、cpdump或者Snort等,均可得到数据源记录.
2.1.1 数据采集
本文将使用KDD-CUP99入侵检测数据集[13],该数据集约490万条数据记录,其中提供了一个完全包10%的具有标识的训练子集数据和一个没有标识的测试子集数据,且这两个数据集有着不同的概率分布.训练数据中只有22种异常类型,测试数据中的共有包含17种未知异常类型的全部39种异常类型,这样能使实验模型设计的泛化能力得到更好的检验,对未知异常类型的入侵检测能够更好地评估入侵检测的性能.
在KDD-CUP99数据集中,最后一个标识类用来表示每条连接记录的类型,共分成5种类型.其中包含有1种正常类型和其他4种异常类型,如图6所示.正常类型只有1种,其属性值为“normal”,异常类型有41种具体属性值.
图6 数据集标识类
2.1.2 数据预处理
数据集中数据属性存在着文本数据,为了更好地实现数值计算,需要对数据属性文本值进行处理,即符号型特征数值化.之后还需要对特征属性值进行标准化.本文数据预处理分为以下三步:
1)数值标准化
(8)
(9)
(10)
其中,AVGj表示平均值,STADj表示平均绝对偏差,使用平均绝对偏差是因为其对于孤立点比较适用,鲁棒性更佳.当AVGj=0时,X′ij=0;当STADj=0时,X′i=0.
2)数值归一化
数值标准化后,进一步进行数据处理,对需要处理的属性归一化.
(11)
Xmin=min{X′ij}
(12)
Xmax=max{X′ij}
(13)
3)独热编码
对离散化后数据进行独热编码[14],本文独热编码的数据为标识类,能够有效地解决分类器不好处理属性数据,提高模型运算效率.
利用Python编码,采用以上步骤对KDD-CUP99的训练和测试数据集进行预处理.本文数据集的数据预处理流程如图7所示.
图7 数据预处理流程
2.2 实验环境
本文实验参数硬件环境:主机系统为Windows 10 64位、Intel(R)Core(TM)i5处理器、机带RAM 16.0G.软件环境:CUDA11.4、Sklearn 0.24.2、keras 2.2.4、TensorFlow 1.12.0等,使用了Python 3.6.13进行代码编程.
2.3 性能评价指标
采用训练好的卷积神经网络对入侵数据进行检测,入侵检测的性能评价指标主要包括4种,其中有精度A(Accuracy)、准确率P(Precision),召回率R(Recall)及F1,其具体相关公式如下为:
(14)
(15)
(16)
(17)
其中,TP、TN、FP和FN的表示含义如表1所示.
表1 混淆矩阵
2.4 实验结果及分析
将本文提出的方法与CNN和BP神经网络两种网络模型进行实验对比,模型训练时使用训练集中15%的数据用作验证,训练和验证损失和精度变化如图8-图9所示,训练损失随着轮次的增加在降低,训练精度则相反,其随着轮次增加在提升,约20轮后达趋于平稳,为防止过拟合,可在20轮后停止.表2展示了3种模型在使用测试集时,4种性能评价指标结果对比,其中CNN模型的分类结果在各个指标上低于BP神经网络,这是由于CNN 的属性里默认包含了类似图像像素点的二维矩阵位置关系,使得CNN普遍用于图像处理之中,不适合处理有空间结构的数据.本文使用粒子群算法来优化CNN的方法在各个指标上均高于其他两种模型,主要取决于卷积神经网络中各参数的最优选取,优化了卷积神经网络的分类效果.
图8 训练和验证的损失变化
图9 训练和验证的精度变化
表2 三种模型各个指标对比
3 结束语
快速有效地发现对网络安全有威胁的网络流量是入侵检测中非常重要的环节.本文提出了一种基于粒子群算法来优化CNN的方法,并且用CNN和BP神经网络两种模型与之评估,实验分析表明,粒子群算法优化卷积神经网络在入侵检测研究中的可行性和有效性,本文方法有着更好的分类性能.然而,本文提出的算法也存在一定的不足,在后续工作中,在训练时间、模型结构优化上还有待改进,将测试更多的数据集来检测优化后的模型.