1. 引言
入侵检测作为一种积极主动的网络安全防御措施,在网络安全上应用已久。入侵检测通过对计算机网络或计算机系统中的若干关键节点主动地进行信息收集和分析,从中发现网络或系统中是否有违反安全策略的行为和遭到攻击的迹象,同时做出响应 [1] 。入侵检测从检测技术上可以分为误用检测技术和异常检测技术。误用检测通过对已知攻击行为进行特征提取,找出入侵和攻击的模式或规则库,通过对比规则库和未知行为来确定未知行为是否为攻击。异常检测则是通过建立主体正常行为模型,将攻击行为作为异常活动从大量的正常活动中区分出来,进而达到检测攻击的目的。随着大数据时代的到来,网络攻击的方式也日益多样化,新型网络攻击行为呈现出了海量化、复杂化的趋势,面对新型网络攻击的威胁,传统的基于误用和基于异常的检测技术在检测速度和准确率上表现出越来越多的瓶颈,无法满足现有网络安全的需求。近些年飞速发展的深度学习技术,在语音识别、计算机视觉、机器智能等方面都取得了巨大成果,入侵检测作为典型的分类问题,与深度学习技术的结合,为解决入侵检测难题提供了一个新的方向。本文通过对入侵检测和深度学习的分析,提出了一种利用深度置信网络来进行入侵检测的方法:首先根据入侵检测数据的特点对数据进行过取样和非[0, 1]区间的归一化,然后利用限制玻尔兹曼机栈对归一化后的数据进行无监督地特征学习,在特征学习后送入BP神经网络进行有监督的分类学习,利用数据集的类别标签对网络参数进行调整,最终使整个网络能较好地识别数据集中的入侵行为。
2. 相关工作
目前最常用的入侵检测算法可以归为三种,分别是误用检测算法、异常检测算法和人工智能检测算法。误用检测主要采用的算法是模式匹配、专家系统、决策树等。如燕山大学的陈传钩 [2] 提出的AC-SA串匹配算法,利用后缀自动机SA加快AC自动机的跳转,从而提高检测效率。朱俚治 [3] 提出的使用决策树和决策系统的误用检测算法,通过对相似用户进行行为聚类,计算出用户行为的属性值,再由决策系统根据属性值进行决策。异常检测算法主要有支持向量机、聚类、关联规则等。如文献 [4] 提出的利用支持向量机和Hadamard矩阵,采用纠错编码解决多分类检测问题。文献 [5] 对聚类算法进行改进,采用多初始聚类中心和对聚类中心邻近数据进行预先搜索来减少计算量,加快了检测过程。使用人工智能的检测算法主要有基于免疫学算法的检测、基于遗传算法的检测和基于深度学习算法的检测。如文献 [6] 以克隆算法为基础,用Aho-Corasick多模式匹配机来改进免疫系统中负选择算法,取得了不错的效果。文献 [7] 提出了一种基于量子遗传算法的入侵检测库优化算法,利用量子旋转门更新染色体,逐代优化种群进而缩短检测时间。文献 [8] 提出的使用遗传算法改进神经网络,克服了神经网络学习阶段训练速度慢以及容易陷入局部最优的缺点。文献 [9] 提出了采用卷积神经网络对网络流中提取的特征进行学习,提取出高层特征,进而检测出僵尸云。
在以上这些检测方法中,基于误用的检测技术误报率低,检测速度快,但是不能检测出新型入侵行为。基于异常的检测技术可以检测出异常攻击,但是也存在误报率高,检测时间较长的缺点。基于人工智能的检测技术通过在检测过程中不断学习,所以具备检测新型攻击的能力,同时误报率低,检测速度快,是目前入侵检测技术的一个新的研究方向。本文提出的方法也正是人工智能的检测技术的一种,是在深度学习基础上改进的方法。
在利用深度学习进行入侵检测的研究中,有些侧重于将深度学习与其他技术结合,来进行入侵检测。如文献 [10] 采用深度学习中的自编码网格模型实现对网络特征的提取,通过softmax分类器对特征数据进行分类,在保证较高识别率的同时,也降低了误报率。文献 [11] 提出的基于深度置信网络的混合入侵检测模型,模型采用5层结构的DBN对特征进行学习处理,随后采用支持向量机(SVM)进行入侵的识别和分类,实验结果与传统的SVM和贝叶斯网络相比有较好的识别率。文献 [12] 提出了一种深度学习算法和集成学习算法MDBoot算法相结合的DBN-MDBoot2方法,将多个DBN的分类结果进行集成,以集成后的分类结果作为最终的检测结果,取得了不错的效果。有些从深度学习网络的内部分析,寻找对深度学习网络的改进,如文献 [13] 提出的采用神经元映射卷积神经网络(NPCNN)作为网络结构,用ReLU激活器作为非线性激活函数,采用Adam算法进行学习,具备较少的连接和参数,具有易于训练和泛化能力强的优点。文献 [14] 提出的一种基于优化数据处理的深度置信网络模型的入侵检测方法,该方法将经过概率质量函数(PMF)编码和MaxMin归一化处理后的数据用于DBN模型,在不破坏网络已学习知识的基础上,变化一个参数而固定其他参数,用交叉验证的方式来选择相对最优的DBN结构,以提高对未知攻击的检测。本文也是从入侵检测数据和深度置信网络的特点分析,提出了一些更加合理的预处理过程和参数训练方法。
3. 深度置信网络技术分析
深度置信网络是Geoffrey Hinton教授在2006年提出的,它是一种生成模型的神经网络,通过训练网络内部神经元之间的权重和偏置,让整个网络按照最大概率生成数据,结构上深度置信网络由受限玻尔兹曼机和BP神经网络构成。
3.1. 受限玻尔兹曼机
受限玻尔兹曼机(RBM)是玻尔兹曼机的一种特殊拓扑结构,起源于统计物理学,是一种基于能量函数的建模方法,用来描述变量之间的高阶相互作用 [15] 。RBM是一个对称连接无自反馈的两层网络模型,包含了一个可见层和一个隐含层。对称连接是指可见层和隐含层之间的节点以全连接方式连接,无自反馈是指可见层内部各节点之间以及隐含层内部各节点之间无连接。如图1所示。
RBM的隐含层节点的取值为0/1随机数,根据可见层节点取值,RBM可以分为伯努利-伯努利受限玻尔兹曼机(Bernouli-Bernouli RBM)和高斯-伯努利受限玻尔兹曼机(Gaussian-Bernouli RBM)。前者的可见层节点的取值为0/1随机数,后者的可见层节点的取值为服从高斯分布的随机数。RBM具有以下3个参数:
可见层和隐含层之间的权重矩阵
;
隐含层节点偏移量
;
可见层节点偏移量
;
通过以上这些参数,RBM决定了如何将一个m维的输入
编码成n维
输出,进而就实现了对原始数据的特征转换,当隐含层节点个数少于可见层节点个数时,就可以实现对原始数据的特征提取。
3.2. BP神经网络
反向传播(BP)神经网络是一种多层的前馈神经网络,由Rumelhart等人于1986年提出 [16] ,BP神经网络的网络结构由输入层、输出层以及一个或多个中间的隐含层组成,每层由若干个节点组成,网络只有在相邻层节点之间有连接。只有一层隐含层的BP神经网络的结构如图2所示。
在BP神经网络中,隐含层和输出层的每个节点都有一个偏置b,输入层和隐含层之间以及隐含层和输出层之间的任意两个节点之间都有一个权重w,用来表示节点之间的关联强度,输入层节点用来接收原始数据,对于一组输入向量,通过输入层和隐含层之间的权重和隐含层的偏置,计算出隐含层各节点的输出;同样,隐含层的输出再送给输出层,通过输出层和隐含层之间的权重以及输出层的偏置,计算出输出层各节点的输出,并由输出层节点输出和预期输出的误差,来反向调整节点之间的权重和偏置 [17] ;最终使输出和预期的误差达到可接受的程度。
BP神经网络的特点是结构简单,可调整的参数多,操作性好。在深度置信网络中,BP网络通常作为最后一层,接收上层受限玻尔兹曼机的输出结果,同时在数据标签的指导下进行有监督学习。
3.3. 深度置信网络
深度置信网络(DBN)是由若干个限制玻尔兹曼机层式堆叠,再在最后一层的RBM后面加上一层BP神经网络组成,结构如图3所示。
每层RBM的作用是实现对原始输入数据的特征提取,通过RBM堆叠形成的RBM栈,最终实现高层次的、抽象特征的提取。使用深度置信网络解决分类问题的步骤如下:首先,将训练数据输入到RBM栈,通过对比散度(CD)算法 [18] 对RBM栈的参数进行训练,实现对数据逐层地特征提取。然后将RBM栈的输出结果送入到BP神经网络,计算BP神经网络的输出,BP网络的输出值即为网络对原始数据类别的判断,再与原始数据本身的标签进行比对,两者之间的误差用来对BP网络的参数进行优化 [19] ,最后,把测试数据送入优化好的深度置信网络中,得到最终的预测分类结果。
![](//html.hanspub.org/file/13-1541012x15_hanspub.png)
Figure 2. Structure graph of BP neural network
图2. BP神经网络结构图
对比散度算法的过程如表1所示。其基本思想是:将可见层节点设置为一个训练样本的取值,并经过随机初始化后的RBM计算得到一个隐含层样本,再有该隐含层样本反向计算得到可见层样本,通过对比训练样本和得到的可见层样本的差异来更新RBM的网络参数。
4. 基于深度置信网络的入侵检测方法
4.1. 深度置信网络用于入侵检测的特点
入侵检测系统一般部署在局域网网络环境中,用于保护该网络,及时检测和发现网络中的入侵行为,这就要求入侵检测系统要实时地对网络环境中进出的大量数据包进行检测。
首先涉及到检测速度问题:传统基于误用的检测方法事先在规则库中存有大量入侵判断的规则,检测时通过抓取网络数据包,并逐一与规则库中的全部规则进行对比,来确定该数据包是否属于入侵及入
![](Images/Table_Tmp.jpg)
Table 1. Contrastive Divergence algorithm
表1. 对比散度算法
侵的类别,检测的时间复杂度按规则库中规则数量的幂基数增长。当网络流量不大时,基于误用的检测方法速度还能满足检测要求,但是当网络流量增大到一定水平时,检测速度就无法实时对所有数据包进行检测,甚至出现丢包现象。而基于深度置信网络的检测方法则不存在这种问题,因为基于深度置信网络的检测方法中没有规则库,而只有一个训练好的网络,网络的输入是预处理后的数据包,网络的输出是数据包的入侵类别,即使网络流量成倍增加,检测的时间复杂度也是同网络流量相等速率的增加,检测速度的上限较误用检测方法有了极大的提升。
其次是检测数据的属性问题,在基于误用的检测方法和基于异常的检测方法中,均要处理数据包中字符取值的属性,这就要用到字符串匹配算法,就不可避免的降低了数据包的处理速度,而基于深度置信网络的检测算法中不存在该问题,因为在将数据包送入深度置信网络计算之前,已经经过了预处理过程,将字符取值的属性转化为了合理取值范围内的数值型数据,网络只需要进行简单的数值数据的计算,这也在一定程度上提高了深度置信网络算法的检测速度。
当然基于深度置信网络的检测方法也有需要特殊处理的地方。入侵检测数据是从实际数据包中提取出的原始特征,不同于图片识别、视频处理这些场景仅涉及0~255之间的数值型数据,数据包中的数据特征有数值型和非数值型,离散型和连续型之分,并且不同特征的取值范围差异很大,这就导致需要先对数据进行数值化,归一化等预处理,以屏蔽量纲上的差异。其次,入侵检测数据集是从实际网络环境中抓取到的数据,是对真实网络环境的反映,所以不可避免地存在正常数据较多,而异常数据相对较少的问题,因此也需要对数据分布差异较大这一问题做特殊处理。
4.2. 少数类标签处理
在用网络数据包进行深度置信网络训练时,存在一个数据集中的类别数目差异问题,当某类标签的数据在全部数据集中的比重很大,而有些标签的数据所占比重很小时,少类别的数据往往会被预测为多类别的标签。本文采用过取样的处理方法:对少类别的样本,通过复制并加入随机噪音的方法产生出较多的新样本,将新生成的样本和原始样本一起送入网络进行训练。对多类别的样本没有采取删除部分样本的欠取样方式,是为了避免可能会丢失未知信息。在过取样之前,训练样本的类别分布如表2所示。
过取样后,所有数目少于600的类别都通过加入随机噪音的方法将数目增加到600。
![](Images/Table_Tmp.jpg)
Table 2. Number distribution of training data set
表2. 训练数据集类别数量分布
4.3. 数据归一化处理
在大多数深度学习的实验中,都是将训练数据和测试数据先数值化再归一化,且一般都是归一化到[0, 1]区间,但是在实际操作中,训练数据和测试数据在一个具体的特征上,其取值范围是不同的,尤其是测试集中出现大量训练集从未出现的新记录时,这样就会导致对于一个特征,同一个数值分别在训练集和测试集归一化后的取值是不同的。如果特征原始值为字符型,经过这样就会导致同一字符在训练集和测试集中归一化后的取值也不相同,这显然不合逻辑。比如对于某一个字符型特征,训练集中可能的取值范围为(A, B, C, D, E),测试集中的取值范围为(A, B, C, D, E, F)。对训练集数值化再归一化,可以得到对应的(0,0.25, 0.5, 0.75, 1.0),对测试集数值化再归一化,可以得到(0, 0.2, 0.4, 0.6, 0.8, 1.0),可以看出,对于同一个取值为B的特征值,它在训练阶段和测试阶段参与计算的取值分别为0.25和0.2,这样的计算结果就不严谨,对于这种情况,本文采取的方法是不归一化到[0, 1]区间,而是根据训练集的取值区间来决定测试集的取值区间。步骤如下:
1) 训练集数据的非数值特征数值化;
2) 对数值化后训练集所有的特征归一化,归一化到[0, 1]区间;
3) 测试集数据的非数值特征数值化;
4) 按照训练集中所有特征的取值把测试集中的相同特征进行归一化,测试集中新出现的特征按比例归一化到[0, 1]区间外;
虽然当测试集的取值区间比训练集大时,测试集的归一化区间会超过[0, 1],但是保证了在测试集出现新取值时,训练集和测试集归一化结果是一致的。比如上例中,测试集归一化后的结果是(0, 0.25, 0.5, 0.75, 1.0, 1.25)。这样只有测试集中新出现的F使用了新的数值1.25,而其他的A,B,C,D,E均保留了和训练集中一样的取值。
4.4. 整体结构
基于深度置信网络的入侵检测方法采用若干层(由实验确定)RBM堆叠构建RBM栈,在RBM栈的最后加上一个有监督的BP神经网络,以最后一层RBM的输出作为BP神经网络的输入,以训练集数据的标签和BP输出的均方差作为损失函数,训练BP网络,使整个DBN网络具备分类的能力。
整个模型的训练过程如下:
先对RBM堆叠栈使用贪心无监督方法逐层构建,训练集在不使用标签的情况下被用来训练RBM栈的参数空间
,这一过程也叫作无监督学习阶段。
使用梯度下降算法优化BP神经网络,训练集在附带标签的情况下用来训练BP神经网络的参数空间
。这一过程也叫作有监督学习阶段。
4.5. 参数训练方法
基于深度置信网络的入侵检测方法中存在两处参数训练的过程,分别是无监督学习阶段的参数训练和有监督学习阶段的参数训练,无监督学习阶段主要是对RBM栈的参数进行训练,使RBM栈能准确地对原始数据进行特征提取,方法是对比散度算法;有监督学习阶段训练的是BP网络的参数,使BP网络能在类别标签的指导下准确识别出特征提取后的数据包类别。在这两个参数训练过程中,均存在一定的缺陷,传统的对比散度算法每次只训练一个样本数据,迭代次数多,效率较低;BP算法容易陷入局部最小值,收敛速度慢 [20] ,以及没有兼顾少类别标签,针对这些问题,本文提出了一种新的方法来训练参数。
首先在无监督学习阶段,采用批梯度下降的对比散度算法来加快参数的训练过程。将训练集随机划分为若干批次,不再针对每个数据进行参数更新,而是以批次为单位,计算每批次的权重和偏置的更新量,更新公式如下:
权值的修正量:
(1)
隐含层偏置的修正量:
(2)
可见层偏置的修正量:
(3)
其中
,
,v1是对比散度算法中可见层第一次取值,h1是根据v1计算出的隐含层第一次取值,v2是根据h1计算出的可见层第二次取值,h2是根据v2计算出的隐含层第二次取值,n是每批次中包含的样本数目,α,η分别为学习动量和学习率。
在有监督学习阶段,采用批梯度区分下降的可变学习率算法来训练参数,误差计算公式如下:
输出层的误差:
(4)
隐含层的误差:
(5)
对于每批次,输出层误差为:
(6)
隐含层误差为:
(7)
其中
表示不同类别样本在误差度量上的区分度,nk表示在该批次中k所代表的样本类别出现的次数,n是该批次的总样本数,Nk表示k所代表的类别在整个训练样本中出现的次数,N是整个样本的总数目。通过加入区分度可以提高少类别样本误差在批度误差中的比重,进而加强对少类样本的拟合。
根据上面求出的训练误差,权值和偏置的修正量为:
(8)
(9)
上面两个过程中α,η分别为学习动量和学习率,学习动量表示每一次权重和偏置的变化量受上一次变化量的影响程度,学习率表示权重和偏置的变化量随误差更新的步长。α和η的更新规则如下:
如果训练误差在权值更新后增加了,并且超过了设定的一个阈值ξ (根据经验ξ可以取3%到10%之间,一般取5%),则权值更新被取消,学习速率η被乘以一个因子
,动量系数α被设置为0。
如果训练误差在权值更新后减小了,则权值更新被接受,学习速率η被乘以一个因子
,如果动量系数α被设置为0,则恢复到0之前的值;如果α没有被设置为0,则将α也乘以因子
。
如果训练误差在权值更新后增加了,但是增加量小于设定阈值ξ,则此次权值更新被接受(之所以在均方误差增加的情况下仍然接受取值更新,是为了尝试跳出局部最小值点),学习速率保持不变,如果动量系数α被设置为0,则恢复到0之前的值;如果α没有被设置为0,则将α乘以一个因子
。
5. 实验
5.1. 实验环境和数据源
本实验采用NSL-KDD入侵检测数据集,NSL-KDD数据集是在KDD CUP99数据集的基础上再次优化得到的。和KDD CUP99相比,主要有以下几点改进:
1) 训练集中不存在冗余记录;
2) 数据集中每个复杂等级的记录数量和原数据集中记录所占的百分比成反比;
3) 训练集和测试集的数量设置更加合理;
在NSL-KDD数据集中,每行代表一条记录,每条记录包含了从一条连接中提取的41个特征和攻击类型,如下所示为一条记录,记录的每个特征之间用逗号隔开。
0,tcp,private,S0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,6,1.00,1.00,0.00,0.00,0.05,
0.07,0.00,255,26,0.10,0.05,0.00,0.00,1.00,1.00,0.00,0.00,neptune,19
其中“neptune”表示攻击类型,neptune攻击是一种拒绝服务攻击,发生该攻击时目标主机会收到大量的SYN报文,进而影响目标主机的正常运行。最后一列的19表示复杂等级,一般在检测过程中不使用。41个特征按照内容可以分为4大类,分别是:
1) TCP连接基本特征(共9种)
duration、protocol_type、service、flag、src_bytes、dst_bytes、land、wrong_fragment、urgentl;
2) TCP连接的内容特征(共13种)
hot、num_failed_logins、logged_in、num_compromised、root_shell、su_attempted、num_root、num_file_creations、num_shells、num_access_files、num_outbound_cmds、is_hot_login、is_guest_login;
3) 基于时间的网络流量特征统计(共9种)
count、srv_count、serror_rate、srv_serror_rate、rerror_rate、srv_rerror_rate、same_srv_rate、diff_srv_rate、srv_diff_host_rate;
4) 基于主机的网络流量特征统计(共10种)
dst_host_count、dst_host_srv_count、dst_host_same_srv_rate、dst_host_diff_srv_rate、dst_host_same_src_port_rate、dst_host_srv_diff_host_rate、dst_host_serror_rate、dst_host_srv_serror_rate、dst_host_rerror_rate、dst_host_srv_rerror_rate;
本文实验的硬件环境:windows 7操作系统,Intel i3 2.1 GHz双核CPU,10 GB内存。软件环境:Java jdk8.0。
5.2. 数据预处理
1) 数值化:数据集中存在协议类型和服务类型等字符型特征,需要先转化为数值,采用的方法为整数映射。
2) 归一化:由于不同的特征值,采用的度量单位不同,数值差异较大,为了消除这种数值差异巨大带来的不利因素,需要进行归一化处理,采用的方法为改进后的[0, 1]归一化,如上4.3所述。
5.3. 实验流程
实验主要分为两步:一是使用训练数据对深度置信网络训练的过程,主要是对网络中的各个参数进行更新,二是利用步骤一得到的训练好的网络,对测试数据进行预测,并把预测值和测试数据期望的真实值进行对比,统计出预测结果。实验流程图如图4所示。
5.4. 实验结果分析
本文实验采用国际上通用的入侵检测评价指标:包括检测准确率(简称准确率),误报率和漏报率 [21] ,对实验进行有效性评价。定义TN为数据集中被正确识别出的正常数据数量,TP为数据集中被正确识别出的入侵数据数量,FN为数据集中入侵被识别为正常数据的数量,FP为数据集中正常数据被识别为入侵的数量,则有:
检测准确率(Dectection Precision Rate) = (TN + TP)/(TN + TP + FN + FP) × 100%;
误报率(False Positive Rate) = FP/(TN + FP) × 100%;
漏报率(Flase Negative Rate) = FN/(TP + FN) × 100%;
为了寻找深度置信网络在入侵检测数据集上的最佳效果,分别作了以下实验:
1) 为了寻找无监督学习迭代次数对检测结果的影响,采用3隐含层结构,即RBM栈的结构数目分别为{41, 32, 23, 14, 5},无监督学习迭代次数N分别取(5, 10, 30, 50, 70, 90),有监督学习的迭代次数固定为30次,对比检测后的准确率如表3和图5所示。由此可以看出:随着无监督迭代次数的增加,准确率呈现出先上升后下降的趋势,当无监督学习迭代次数较少时特征提取不明显,随着迭代次数的增加特征
![](//html.scirp.org/file/13-1541012x55_hanspub.png)
Figure 4. Intrusion detection experimental process
图4. 入侵检测实验流程
提取效果提高,准确率上升,当迭代次数超过一定的值时,准确率反而下降,可能原因是特征提取过度而导致了丢失了某些特征信息。
2) 为了寻找有监督学习迭代次数对检测结果的影响,仍然采用3隐含层结构,RBM栈的结构依然为{41, 32, 23, 14, 5},无监督学习迭代的次数N固定为50,有监督学习迭代次数n取值分别为(5, 10,30, 50, 70, 90),统计检测准确率如表4和图6所示。由此可以看出,随着有监督学习迭代次数的增加,准确率呈上升趋势,且在迭代次数较低时,上升速度较快,随着迭代次数的增多,上升逐渐趋于平缓。
3) 由1)和2)两个实验的结果,可以看出在无监督学习迭代次数和有监督学习迭代次数分别为50、50时,深度置信网络模型能取得很好的效果,为了寻找DBN的最佳结构,将无监督和有监督迭代次数固定为(50, 50),同时将DBN的结构分别置为{41, 32, 23, 14, 5}和{41, 70, 100, 80, 60, 40, 20, 5}进行实验,统计准确率如表5所示。
为了验证本文提出算法在入侵检测上的效果,将深度置信网络的网络结构定为{41, 32, 23, 14, 5},无监督和有监督学习均定为50次,与常见的入侵检测方法KNN,SVM,BP神经网络算法 [22] - [27] 进行了对比实验。实验结果如表6和图7所示。
由以上结果可以看出,基于深度置信网络(DBN)的入侵检测方法在准确率、误报和漏报方面都明显
![](Images/Table_Tmp.jpg)
Table 3. Unsupervised iteration number and accuracy
表3. 无监督迭代次数与准确率
![](//html.hanspub.org/file/13-1541012x56_hanspub.png)
Figure 5. Intrusion detection experimental process
图5. 入侵检测实验流程
![](Images/Table_Tmp.jpg)
Table 4. Supervised iteration number and accuracy
表4. 有监督迭代次数与准确率
![](Images/Table_Tmp.jpg)
Table 5. Network structure and accuracy
表5. 网络结构和准确率
![](//html.hanspub.org/file/13-1541012x57_hanspub.png)
Figure 6. Intrusion detection experimental process
图6. 入侵检测实验流程
优于KNN和BP网络,在误报率上和SVM相差不大,但准确率和漏报率也优于SVM方法。
为了验证本文提出的参数训练方法的有效性,将本文的方法同未改进的深度置信网络方法进行了对比实验,将两种深度置信网络的网络结构均设置为{41, 32, 23, 14, 5},无监督学习和有监督学习次数均设置为(10, 10),(20, 20),(30, 30),(40, 40),(50, 50)时,对比两种方法的准确率。实验结果如表7和图8所示。
由以上结果可以看出,本文的参数训练方法在无监督和有监督学习迭代次数较低时就可以到达较好的准确率,比未改进的DBN参数训练方法有较大的优势。
![](Images/Table_Tmp.jpg)
Table 6. Comparison of the results of several detection algorithms
表6. 几种检测算法的结果对比
![](Images/Table_Tmp.jpg)
Table 7. Result contrast between DBN in this article and the unimproved DBN
表7. 本文DBN和未改进DBN的结果对比
![](//html.hanspub.org/file/13-1541012x58_hanspub.png)
Figure 7. Comparison of the results of several detection algorithms
图7. 几种检测算法的结果对比
![](//html.hanspub.org/file/13-1541012x59_hanspub.png)
Figure 8. Intrusion detection experimental process
图8. 入侵检测实验流程
6. 总结
本文通过对入侵检测和深度置信网络的研究,利用深度学习在处理分类问题上的优势,将深度置信网络运用在入侵检测问题上,设计出了基于深度置信网络的入侵检测方法,结合入侵检测数据的特点对数据进行过取样和非[0, 1]区间的归一化,在对深度置信网络的参数进行更新过程时,采用批梯度下降的可变学习率算法,加快了参数的更新过程,并在每批训练数据中,加入了对类别的区分度,提高检测的准确率。通过实验先确定了深度置信网络的参数最佳选择,包括无监督学习次数、有监督学习次数以及网络结构,然后同KNN,SVM,BP神经网络等方法进行了对比,在准确率,误报率和漏报率等几个常用的入侵检测指标上都有较好的表现,证明了本文所提方法的有效性。但是本方法也存在一些缺点,比如在网络结构参数的选择上,不同的参数会存在一定的影响,同时参数选择也缺乏理论的支持,这些是需要改进的地方。