夏景明,丁春健+,谈 玲
(1.南京信息工程大学 电子与信息工程学院,江苏 南京 210044;2.南京信息工程大学 计算机与软件学院,江苏 南京 210044)
入侵检测是互联网安全体系中的一个重要部分,它通过对网络中各种数据的收集与分析而检测出异常信息[1]。随着互联网技术的日益发展,传统的网络入侵检测技术已经无法应对更为复杂的信息防护问题,其检测效果及水平的不足给网络安全带来的巨大隐患,因此,如何提高网络入侵检测技术对与网络安全具有重大意义。
目前,与机器学习等领域相关的入侵检测技术已成为国内外学者的一个重点研究方面,相关人员也提出了一些有效的入侵检测方法。张晓峰等[2]利用K均值聚类算法对数据集划分为不同的簇,再由SVM标记异常集群进行详细分类,完成了对入侵攻击的有效检测并降低了误报率;BlancoR等[3]利用遗传算法重新排列输入要素而优化卷积神经网络,实现对数据集良好的入侵检测;郝孙等[4]在分析BP神经网络模型的基础上引入了粒子群算法优化网络的初始权值和阈值,提高了入侵检测的整体性能;高妮等[5]利用深度信念网络的特性提出了一种面向入侵检测系统的深度信念网络模型,即通过无监督学习对数据进行训练及特征提取,再由监督学习微调网络参数,提高了检测水平。综上所述,这些基于机器学习的检测方法可以弥补传统网络入侵检测技术的不足,并达到很好的效果,但仍可能存在一些问题:例如在使用常用机器学习方法或使用种群方法优化训练过程时,可能会出现参数需要多次调节或陷入局部最优等问题而导致训练过程不稳定[6];又如利用深度信念网络可以提高入侵检测水平,但在训练数据集时无法确定网络节点数而需增加训练次数手动调节次数,从而造成对整个网络训练过程的影响等。
针对传统网络入侵技术的不足及上述方法可能会出现的问题,提出了一种改进的深度信念网络应用于入侵检测之中,即通过引入灰狼算法对深度信念网络隐含层节点数进行全局寻优而近似确定网络结构,并在网络参数更新阶段增加动量学习率,在提高入侵检测效果的同时保证了网络训练的稳定性,最后利用NSL-KDD数据集[7]进行仿真验证该方法的可行性,并与多种检测方法进行对比。实验结果表明,基于灰狼算法的深度信念网络入侵检测方法提高了入侵检测的检测效果。
深度信念网络(deep belief network,DBN)[8]由多层受限玻尔兹曼机(restricted Boltzmann machine,RBM)及一层BP神经网络堆叠而成,它训练时分为无监督学习与有监督学习两部分:首先采用自下而上的贪婪算法对RBM逐层进行无监督学习,并将底层RBM的输出作为高层RBM的输入,经过多次训练迭代后得到无监督的DBN;其次在DBN的最后附加一层BP神经网络,将最后一层RBM的输出作为BP神经网络的输入而达到自上而下的监督学习,完成对网络中训练参数的微调。
受限玻尔兹曼机是深度信念网络的主要组成部分[9],由可见层和隐含层两部分构成,其结构特点是可见层与隐含层节点之间存在连接,而两层之间的自身节点不存在连接,且所有可见层单元和隐含层单元都有两种状态:处于激活状态时值为1,未激活状态值为0,因此可表示为一个二分图模型,如图1所示。
图1 RBN网络结构
RBM进行无监督训练设定为以下3个步骤:
(1)参数初始化求解。设v、h为RBM的可见层单元和隐含层单元,一个RBM网络有n个可见层节点、m个隐含层节点,对于一组给定状态并服从伯努利下的(v,h)值,每一个可见层节点与隐含层节点的取值之间都存在一个能量值,可通过计算求出整个联合组态的能量E,即
(1)
其中,ai、bj表示第i、j个可见层节点的阈值,vi、hj表示可见层和隐含层的第i、j个节点,Wij则表示第i个可见层节点数和第j个隐含层节点数之间的权值;然后通过对能量进行指数化和正则化,便可得到可见层节点与隐含层节点集合分别处于某种状态下(v,h)联合概率分布公式,也可描述为可视层和隐含层单元激活的概率
(2)
(3)
其中,Z(θ)表示对可见层和隐含层节点集合的所有可能状态的能量指数求和函数。
(2)训练算法的选择。为了使RBM在训练时拟合样本的分布并减少训练时间,使用k步对比散度算法(CD-k)[10]作为RBM模型的标准算法,首先通过极大似然函数求导得到权值w,并使当前样本在该分布下的概率最大,即
(4)
(5)
(6)
最终进行权值的更新。
(3)网络的评估。一般使用重构误差法作为RBM的评判标准,即以训练数据作为初始状态,经过RBM的分布进行一次Gibbs采样,然后得到与原始数据的差异,若差异减小满足条件,则训练结束,否则返回总误差进行网络参数微调直到满足误差条件。
灰狼算法[11]是一种模拟自然界中灰狼群捕食与狩猎的群体智能优化方法,其中灰狼群内部具有明显的社会等级制度,按职能可分为4类而构成金字塔结构,分别是具有领头作用的首领狼、协助首领狼的副首领狼、负责其它工作的小头目狼及普通灰狼,可表示为α、β、δ、ω,结构如图2所示。
图2 灰狼等级金字塔结构
整个算法可描述为3个部分:包围、追捕和攻击,最终成功捕获猎物(即得到全局最优解)。
定义灰狼与猎物之间的距离为D,迭代次数为t,整个算法步骤如下所述:
(1)包围猎物。灰狼群根据猎物大概位置对其包围,距离为
D=C·Xp(t)-X(t)
(7)
X(t+1)=Xp(t)-A·D
(8)
其中,Xp(t)、X(t)可表示第t次迭代后猎物的位置(全局最优解位置)与灰狼群的位置(全局潜在解位置),而A与C为系数因子,计算公式为
A=2a·r1-a
(9)
C=2r2
(10)
其中,a从2到0线性递减,与迭代次数有关;r1、r2为0~1之间的随机数。
(2)追捕猎物。定义Dα、Dβ、Dδ为灰狼个体之间的距离,在该过程中灰狼群个体之间的位置会随着猎物的位置改变而发生变化,根据灰狼群更新后的位置后便可重新确定猎物位置(即全局最优解),整个更新方程如下所示
(11)
(12)
(13)
(3)攻击猎物。最终狼群对猎物进行攻击并捕获即可得到全局最优解。
由RBM训练过程可知,DBN在训练过程中一般通过重构误差对网络参数进行微调从而确定网络整体结构,当返回总误差较小并趋于稳定数值时,表示目前DBN结构较好。由于在构建DBN模型时无法具体确定其网络隐含层节点数,只能类似BP神经网络通过经验公式或试凑法等大概确定[12],因此在训练过程中需增加训练次数及手动调节网络节点数次数,为了避免在训练过程中出现网络性能损耗等问题,本文将根据特征向量的维度关系,在DBN模型搭建之后引入灰狼算法对DBN隐含层节点数进行寻优而近似确定网络结构,使得重构误差最小,并且为了避免由于引入灰狼算法可能导致DBN在训练时与网络设定的学习率冲突而造成收敛速度变慢、陷入局部最优等问题,在网络参数更新阶段引入了动量学习率[13],以保证网络收敛速度而达到最佳训练效果。公式如下
(14)
灰狼算法优化DBN模型可分为以下几个步骤:
(1)构建一个DBN入侵检测模型并初始化网络参数,根据特征维度选择适当的网络节点数;
(2)将DBN模型的网络隐含层节点数作为灰狼算法的求解对象并对其进行全局搜索而寻得最优解;
(3)判断是否达到最大迭代次数,若符合要求,则将此时灰狼个体对应的隐含层节点数为全局最优解;
(4)设定DBN神经网络的隐含层节点数,对其进行训练并评估,判断重构误差是否减小;
(5)如果误差减小到一定程度则满足最优解条件,将最终求得的隐含层节点数作为DBN模型的初始训练参数并近似确定DBN网络结构,结束训练;否则返回第(3)步,更新灰狼群个体位置并重新计算。整个流程如图3所示。
图3 灰狼算法优化DBN训练过程
实验的数据来源于NSL-KDD数据集,是KDDCup99数据集的一部分,其中KDDCup99数据集由美国麻省理工学院实验室真实模拟美国空军局域网9个星期的网络连接数据,分成具有标识的训练数据和未加标识的测试数据,虽然该数据集是在1999年发布,但由于其数据集的有效性仍可以评估入侵检测模型的性能。NSL-KDD数据集去除了KDDCup99数据集中的冗余部分并重新调整了训练测试集比例,并将异常数据类型分为4大类,分别为:DOS(拒绝服务攻击)、R2L(来自远程主的未授权访问)、U2R(未授权的本地超级用户特权访问)、PROBE(端口监视或扫描),Normal则表示为正常数据,这在一定程度上对不同入侵检测技术的准确评估更为有效,其分布情况见表1。
由于NSL-KDD数据集的总特征由38个数字型特征和3个字符型共同构成,无法直接用于入侵检测算法,为了便于进行后续实验可对其进行编码处理。例如数据的第二列protcol_type包含tcp、udp、icmp这3种不同字符类型,实验采用One-Hot编码[14]方法将其分别表示为[0 0 1]、[0 1 0]、[1 0 0];同理,可将DOS、R2L、U2R、Probe、Normal这几种数据进行作为决策项进行编码操作并作为DBN网络的输出,决策表见表2。
表2 决策
在编码完成之后,使用标准化方法[15]对原始数据进行归一化处理,使结果落到之间,目的是减少数据量纲的影响并提高算法收敛速度。转换函数为
(15)
其中,xmin、xmax分别表示数据最小值和最大值。
实验硬件平台为搭载Windows10的PC机,软件平台为Matlab2018a。设定RBM训练迭代次数为100,BP神经网络微调参数迭代次数为300,动量学习率取0.5,由数据集的41个特征维度可设定输入层节点数为122。初始参数设定之后根据2.2节使用灰狼算法对DBN进行隐含层节点数多次寻优,可近似得到每层隐含层节点数为94-58-27-10时效果较好,然后构建其它几种不同的DBN网络结构进行对比验证,每一种DBN网络都包含不同的RBM层数及网络节点数,可表示为122-60-10、122-90-30-1、122-100-80-40-20-10,122-110-90-70-50-30-10,将它们分别编号为进行训练,最后利用准确率与检测率作为评判指标,其中
(16)
(17)
结果见表3。
表3 不同结构对应的准确率与检测率/%
实验结果表明,随着DBN网络层数的增加,入侵检测的综合准确率与检测率都有了明显的提高,当网络结构为122-94-58-27-10时检测效果最佳,综合准确率达到98.53%,并且检测率也达到97.23%,但随着网络层数进一步增加,准确率与检测率反而有所下降。为了进一步探索本文方法的优越性,在对DBN网络隐含层节点数进行寻优之后,实验综合文献资料并与其它几种主流入侵检测算法进行检测效果对比,并且为了保证实验的公平性,对每一种常用方法都在同一环境进行多次实验,尽量保证检测率达到最佳效果,最后并引入误报率(FA)作为评判标准,其中
(18)
对比结果见表4。
根据表4可求出不同入侵检测方法的平均检测率分别达到92.64%、94.87%、92.47%、95.73%、97.23%,如图4所示,不同方法对各种入侵数据的误报率对比如图5所示。从实验结果不难看出,与常用的入侵检测方法相比,基于深度信念的入侵检测方法在一定程度上提高了检测效果,对于5种不同类型数据的检测率都有了一定程度的提升,并且经过灰狼算法对DBN隐含层节点数寻优过后,DBN训练过程得到了进一步优化,相比一般DBN检测方法平均检测率增高了2个百分点;从图5折线走向可得,面对同一数据集时所有检测方法对其它4种数据类型处理较好,但对U2R类型的数据集的误报率稍有欠缺,但相对而言本文方法将误报率降至一个比较好的层面,总体平均水平达到2.77%,也验证了本文方法的有效性。
表4 不同算法检测率与误报率对比结果/%
图4 平均检测率及误报率
图5 误报率对比
针对传统入侵检测方法在检测效果上的不足,提出了一种基于灰狼算法的深度信念网络入侵检测方法,在面对海量数据集时,利用灰狼算法强大的搜索能力对DBN网络隐含层节点数全局寻优从而增加DBN模型的入侵检测效果,实验结果表明,与多种常用的入侵检测方法相比,该方法有效提高了入侵检测的检测率并降低了误报率。虽然该方法具有良好的检测能力,但面对数据集较少的U2R类型时检测效果仍需进一步优化。