随着深度学习方法在理论与技术上的飞速发展,特别是在语音与图像识别领域的良好应用[1],许多研究者已经开始将深度学习方法应用于网络流量的分类中.传统的机器学习方法往往过分强调特征选择和参数训练,深度学习方法能有效地解决实际网络应用环境中出现的海量数据分类问题.这是因为深度学习方法更擅长从海量、高维数据中提取信息进行准确的表示[2-3].当前通过与深度学习神经网络算法相结合,传统的入侵检测技术不断地得到改善.文献[4]利用卷积操作提取特征,采用多层“卷积层-下采样层”对网络中正常流量和异常流量进行特征描画,最后通过多层感知机进行分类.文献[5]提出了一种基于增量式GHSOM神经网络模型的多目标特征选择方法,并应用于特征选择及无监督聚类过程.文献[6]提出了一种基于混合核主成分分析(KPCA)方法与支持向量机算法(SVM)的入侵检测方法.文献[7]提出了一种基于规则的混合特征选择优化的深度学习模型.文献[8]提出了一种基于包装器的特征提取单元(WFEU)前馈深度神经网络无线入侵检测系统.文献[9]提出了一种基于去噪自编码器(DA)构建的深度神经网络协作入侵检测系统,它能有效地利用历史反馈数据提供主动决策的能力.文献[10]提出了一种基于自动编码器神经网络(AN)和长短期记忆人工神经网络(LSTM)的网络入侵检测方法.文献[11]提出了一种以受限玻尔兹曼机(BM)为基础的入侵检测方法,提高了对网络异常流量的识别率.文献[12]先对DBN方法和采样技术进行整合,然后将其应用于入侵检测,最后通过实验证明了该方法相对其他方法具有更高的准确率和更低的误报率.文献[13]提出了基于深度结构的混合入侵检测模型,通过实验验证了5层深度学习模型比2层深度学习模型具有更高的特征学习效果.文献[14]和文献[15]针对不同的应用场景提出了一些基于深度学习的入侵检测方法.上述入侵检测的方法或在特征提取,或在网络流量识别过程应用了深度学习方法,但深度学习隐藏层的层数和每层神经元节点数主要通过人工专家的主观经验设置,深度学习模型智能化不够、灵活性不强.采用逐层贪婪训练的策略,通过改进稀疏自编码神经网络训练的方式,形成了一个自适应、智能化的特征提取神经网络,提升了网络入侵检测系统的效率和准确率.1 深度学习网络入侵检测模型设计基于深度学习模型的网络入侵检测框架结构图如图1所示.10.13245/j.hust.210219.F001图1基于深度学习模型的网络入侵检测框架检测过程主要包含三个步骤:步骤1 将入侵检测数据集中符号型特征属性进行数值化处理,然后对所有数据进行归一化处理,最终得到标准化的原始数据;步骤2 对预处理后的高维、非线性数据通过基于改进自编码的特征提取模型进行降维处理,得到原始数据最优低维表示;步骤3 将原始数据最优低维表示作为分类器的输入,分别识别出正常网络数据和各类网络攻击数据.2 相关定义定义1 设隐藏层第j个神经元的输出值为Mj=z'(m+1)/2 (m%2=1);(z'(m/2)+z'(m/2+1))/2 (m%2=0), (1)式中:z'x为有序序列Z'j的第x个值;m为隐藏层第j个神经元的样本个数.Zj={z1,z2,…,zm},对其进行排序得到有序序列Z'j={z'1,z'2,…,z'm},隐藏层第j个神经元的活跃度Mj实际上是隐藏层第j个神经元输出值的中位数.定义2 设稀疏性参数向量P=(p1,p2,…,pj,…,pn),n为当前隐藏层神经元节点数,Φ为隐藏层所有神经元的活跃度Mj的平均值,pj定义为pj=RMj (MjΦ);Mj+E (MjΦ), (2)式中:R为抑制常量,取值一般小于1;E为激励常量,由于隐藏层神经元的输出值较小,为了确保自编码损失函数最优,因此激励常量取值一般小于0.5.通过该稀疏性参数向量,对隐藏层活跃度较小的神经元进行抑制,对隐藏层活跃度较大的神经元进行激励.定义3 对集合A={a1,a2,…,aj,…,an|0aj1},取对数并排序得到其升序序列为A'={a'1,a'2,…,a'n},定义V'为V'=(3/4)A'rdown(1/4)(n+1)+(1/4)A'rup(1/4)(n+1),式中:rdown和rup分别为向下取整和向上取整函数;A'x为序列A'的第x个值;V'实际上为序列A'的低四分位数.为了提高集合中各小数值元素之间的敏感度,本定义先对原集体A中的各元素进行了对数运算,因此隐藏层神经元节点被激励与被抑制的临界值V是V'的反对数.定义4 设隐藏层神经元节点输出值的集合为X={x1,x2,…,xn},A是集合X的一个子集,如果集合A的所有值均小于临界值V,集合X-A的所有值均大于临界值V,那么称集合A为隐藏层神经元被抑制节点的集合.3 基于改进自编码的特征提取模型3.1 自编码器和稀疏自编码器自编码器是一种试图重构输入的神经网络,一般用于无监督学习算法.它主要包括编码器和解码器两个部分,每个部分均可以包含多个隐藏层,其中编码器将输入信号x变换成编码信号y,解码器努力将编码信号y还原成x.自编码器中的每个隐藏层输出都可以说是原始数据的一种抽象表示形式,当隐藏层神经元的节点数小于原始数据的维度时,可以实现将高维空间的数据压缩成低维空间的数据,从而得到原始数据的低维表示.稀疏自编码器是一个在优化网络的损失函数中加入额外惩罚因子的自编码器.惩罚因子的具体为∑j=1lplog(p/μj)+(1-p)log[(1-p)/(1-μj)], (3)式中:l为隐藏层神经元的数量;μj为隐藏层中第j个神经元所有输出值的平均值,即平均活跃度;p为一个比较小的数值.该惩罚因子实际上是两个伯努利随机变量p和μj之间的相对熵.相对熵是一种用来测量两个分布之间差异的方法.当两个分布相等时,相对熵等于零;当两个分布差异增大时,相对熵也随之变大.因此,在优化加了惩罚因子的损失函数过程中,稀疏自编码器隐藏层神经元的平均激活度将趋近p.根据自编码器的原理可知:自编码隐藏层不仅影响损失函数优化程度,而且还决定了原始数据低维表示的维度,因此自编码隐藏层的设置是自编码器的关键参数.由于自编码隐藏层神经元节点主要采用人工专家的主观经验方式设置,因此经常出现不同的研究者在同一数据集上训练出不同的自编码器模型,或者同一研究问题在不同数据集使用相同自编码器模型时出现不一样结果的情况.这些情况表明,当前人工专家方式的自编码器模型缺乏自适应性,因此在入侵检测的特征提取过程中,提出一种基于改进稀疏自编码神经网络的方法,用于灵活地、智能化地确定自编码隐藏层,确保稀疏自编码器模型在不同环境下结果的稳定性.3.2 改进稀疏自编码神经网络对传统的稀疏自编码器进行改进,具体构建步骤如下.步骤1 初始化训练神经网络.该训练神经网络只包含了输入层、隐藏层和输出层.设置输入层、隐藏层和输出层的神经元节点数都与训练该网络的数据集维度一致.设置隐藏层与其他两个层节点数一致的原因是基于隐藏层神经元节被抑制的点数不可能多于训练数据集的维度这个假设.步骤2 设置改进惩罚因子,形成改进稀疏自编码神经网络.为了找出步骤1神经网络隐藏层的被抑制节点,在步骤1神经网络中加入惩罚因子.但本研究的惩罚因子不同于传统稀疏自编码,其中为了强化隐藏层神经元的激励或抑制,在保证损失函数最优的前提下,p值不是采用传统单一固定参数的方式,而是采用“扶强抑弱”的策略,即如式(2)所示.同时,传统稀疏自编码采用隐藏层中第j个神经元所有输出值的平均值,但由于平均值容易受数据中极端值的影响,在数据呈现偏态分布时代表性较差,隐藏层神经元输出值呈现正态分布的概率较小,因此选择对偏态分布代表性较好的Mj(式(1)所示)代替μj(式(3)所示).根据以上分析,得到改进惩罚因子为∑j=1lpjlog(pj/Mj)+(1-pj)log[(1-pj)/(1-Mj)].步骤3 训练改进稀疏自编码神经网络.利用步骤2构建的改进稀疏自编码网络对输入的数据进行训练,直到加了惩罚因子的损失函数最优化为止.步骤4 隐藏层神经元节点的确定.训练完成后,根据定义4从改进稀疏自编码网络的隐藏层中找出被抑制的神经元节点,并删除这些被抑制的节点,即可得到一个新隐藏层.3.3 基于自编码的特征提取模型的构建自编码神经网络的构建使用了一种逐层贪婪训练的策略.逐层贪婪算法的主要思路是每次只训练网络中的一层,即首先训练只含一个隐藏层的网络,仅当这层网络训练结束之后才开始训练有两个隐藏层的网络,以此类推.在每一步中,把已经训练好的前k-1层固定,然后增加第k层,并将已经训练好的前k-1层的输出作为输入.基于自编码的特征提取模型构建步骤如下.步骤1 利用标准化后的原始数据作为输入,采用3.2节的方法,得到自编码神经网络的一个新隐藏层.步骤2 利用得到的隐藏层(包括节点数、权重值w和偏移值b)构建一个自编码神经网络,并再次利用标准化后的原始数据作为输入对它进行训练.训练完成后,利用这个自编码神经网络的隐藏层输出值作为输入,采用3.2节的方法,得到自编码神经网络的下一个新隐藏层.步骤3 利用步骤1和步骤2得到的隐藏层构成一个新自编码神经网络,并再次利用步骤2得到的自编码隐藏层输出值作为输入进行训练.训练完成后,利用这个自编码神经网络的隐藏层输出值作为输入,采用3.2节的方法,得到自编码神经网络的下一个新隐藏层.步骤4 重复步骤3,直到无法利用3.2节的方法得到自编码神经网络的下一个新隐藏层为止.根据以上步骤最终可构建如图2所示的自编码神经网络模型,模型中数字代表数据集特征的数量,编码器即为特征提取模型.10.13245/j.hust.210219.F002图2自编码神经网络模型4 SVM多类分类器使用的训练和测试数据集为UNSW-NB15[16],它包括10类网络流量,其中正常流量(Normal)1类,攻击流量9类.9类攻击流量分别为Fuzzers,Worms,Shellcode,Generic,Reconnaissance,Backdoor,Exploits,DoS和Analysis.攻击流量的识别有多种方法,本研究采用效果较好的支持向量机(SVM).根据数据集的网络流量类型,利用十个SVM组成的二叉树构建成一个多类分类器,并用训练数据集进行训练.基于SVM的多类分类器设计如图3所示.10.13245/j.hust.210219.F003图3基于SVM的多类分类器上述设计中,将经过特征提取的标准化原始数据作为SVM1分类器的输入,若输出为+1,则为正常流量;若输出为-1,则为攻击流量;将SVM1输出的攻击流量输入SVM2,若输出为+1,则为Fuzzers攻击流量;若输出为-1,则为其他攻击流量.将其他攻击流量输入SVM3,依此类推,SVM3可以识别Worms,SVM4可以识别Shellcode,SVM5可以识别Generic,SVM6可以识别Reconnaissance,SVM7可以识别Backdoor,SVM8可以识别Exploits,SVM9可以识别DoS,SVM10可以识别Analysis和其他攻击流量.5 实验与结果分析5.1 实验设置当前,入侵检测的实验数据主要使用KDD CUP99和NSL KDD两个数据集,但是这两个数据集是在十多年前创建,已无法全面反映当今复杂的网络流量特征,因此采用2015年由澳大利亚网络安全中心(ACCS)在室验室利用IXIA PerfectStorm工具创建的UNSW-NB15数据集作为实验数据.共有2.540 044×106条记录,42个特征属性和1个标签属性,并且该数据集包括1种正常流量和9种攻击流量,其中攻击流量子类206个.为保证实验结果的准确性,从UNSW-NB15数据集中随机抽取1.511 58×105条训练数据和7.042 7×104条测试数据.具体各种流量比例如表1所示.10.13245/j.hust.210219.T001表1训练数据集和测试数据集的数据条数流量名称训练集测试集Normal57 04132 179Fuzzers17 1105 016Worms10252Shellcode1 273362Generic40 32420 234Reconnaissance9 0613 089Backdoor51291Exploits20 9787 941DoS4 0121 362Analysis745101实验环境为:Intel i7 3.2GHz CPU、16GiB内存、GeForce GTX 1080显卡、64bit Windows10操作系统.主要实验工具有python,TensorFolow和Weka(LibSVM).UNSW-NB15数据集每条记录由42个属性组成,其中包括39个数值型属性和3个符号型属性.由于基于改进自编码的特征提取模型只能处理数值型属性,因此须要对3个符号型属性进行数值化处理,同时为了消除各属性之间的量纲影响,须要对各属性值进行归一化处理.对符号型属性的数值化处理采用属性映射方法,即转变成二进制数值.例如属性state有11种取值,分别是ACC,CLO,CON,ECO,FIN,INT,no,PAR,REQ,RST和URN.依次转变成二进制数值,ACC=[1,0,0,0,0,0,0,0,0,0,0],CLO=[0,1,0,0,0,0,0,0,0,0,0],依此类推.同理,属性proto的135种符号取值和service的13种符号取值都可按此方法转变成对应的二进制数值.最终42个属性变换成了198维特征.本实验中实现符号型属性数值化的工具是sklearn包的OneHotEncoder类.符号型属性转变成二进制数值后取值为0或1,而其他数值型属性的取值与它差异较大,由于直接对它们归一化将会使这些0和1变得非常小,其属性特征可能被忽略,因此对其他数值型属性的取值进行如下处理v'=(2/π)arctan v,式中v为某个数值型属性的取值.对所有记录再进行x'=1x∑i=1nxi21/2的处理,其中:xj为某个属性的取值;n为记录的属性个数.本实验中使用sklearn包的Normalizer类实现该处理.本实验中各模型的参数设置如下所示.a. 改进稀疏自编码神经网络.优化算法为Adam(通过实验发现,Adam比其他优化算法收敛速度更快,也不容易掉入局部最优解),损失函数为平方损失函数,学习率初始值为0.003(该值的大小对隐藏层神经元节点的输出值影响较大,可根据情况调整),衰退步长为6 000,衰退率为0.98,稀疏系数为5,精确度取输出与原始输入差值的平均值,设置为0.999(该值是训练的终止条件).b. 自编码.优化算法为Adam,损失函数为平方损失函数,学习率初始值为0.005,衰退步长为5 000,衰退率为0.98,精确度为0.96(该值是训练的终止条件,为避免训练过拟合不宜设置过大).c. 支持向量机.为了提高入侵分类的效果,参考文献[6]中SVM参数的设置,并结合实验数据的实际情况,设置核函数为N-RBF,惩罚因子C为900,控制因子g为0.000 01,采用十折交叉进行验证.5.2 评价指标和结果分析本实验采用测试时间、准确率(AC为正确分类的样本数除以总的样本数)、误报率(FAR为某类没有正确分类的样本数除以某类样本的总数)作为衡量本研究提出方法性能的评估指标.根据前文提出的方法分别得到标准化的原始网络数据、特征提取模型和基于SVM的多类分类器,然后整合成图1所示的基于深度学习模型取的网络入侵检测框架.5.2.1 与其他方法的性能对比实验为验证基于深度学习模型的网络入侵检测框架的有效性,设计了一组对比实验,即分别利用文献[6]的KPCA-GA-SVM方法和文献[17]的AN-SVM方法,采用5.1节从UNSW-NB15数据集中抽取的实验数据进行对比实验,实验结果如表2所示.10.13245/j.hust.210219.T002表2本研究方法与其他方法实验结果对比算法网络流量类型NormalFuzzersWormsShellcodeGenericReconnaissanceBackdoorExploitsDoSAnalysisAN-SVMAC94.8193.2120.4780.7894.2292.8257.4894.0193.4367.71FAR3.214.5668.3119.453.475.7333.824.164.3128.37KPCA-GA-SVMAC93.2293.0218.0175.8193.0791.9754.1993.1592.1562.98FAR4.895.0170.6223.184.196.1644.944.845.4134.04本研究AC97.2396.0433.3484.3197.1494.4668.2196.3595.0175.23FAR1.052.1150.5613.421.793.6720.471.972.1719.42%通过对以上实验结果进行分析可知:本研究方法对Normal,Fuzzers,Generic,Reconnaissance,Exploits和DoS六种网络流量具有比较好的检测性能,但对Worms,Shellcode,Backdoor和Analysis四种网络流量的检测性能不太理想,尤其是Worms类型的网络流量.分析其原因,可能是训练集中这四类网络流量的样本数太少的缘故.但是本研究方法从整体上看,准确率平均提高了5.01%,误报率平均降低了6.24%.5.2.2 与直接SVM的效率对比实验为分析本研究方法的检测时间效率,将经数据预处理得到的标准化原始测试数据随机平均分为6份:SD1,SD2,SD3,SD4,SD5和SD6.将这些数据集作为本研究提出的方法和直接SVM多类分类器的输入进行时间对比实验,实验结果如表3所示.10.13245/j.hust.210219.T003表3本研究方法与其他方法检测时间对比算法SD1SD2SD3SD4SD5SD6SVM454742414344本研究303128273029s由表3可知:虽然本研究方法比直接SVM多类分类器多了一个特征提取过程,但在时间效率上与多类分类器相比,检测时间平均降低了16%.6 结语为进一步改善传统网络入侵的检测性能,提出了一种基于深度学习特征提取的网络入侵检测方法.不同于其他神经网络隐藏层层数和每层神经元节点数的人工专家主观经验设置方式,当确定特征提取的自编码模型时,每个隐藏层通过改进的稀疏自编码神经网络确定,隐藏层的层数已无法得到超出设定范围的抑制节点确定.实验表明:该方法有效地提高了网络入侵的检测准确率,降低了误报率,提升了网络入侵检测的整体性能.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览