基于神经网络的网络入侵检测

基于神经网络的网络入侵检测
基于神经网络的网络入侵检测

基于神经网络的网络入侵检测

本章从人工神经网络的角度出发,对基于神经网络的网络入侵检测系统展开研究。在尝试用不同的网络结构训练和测试神经网络后,引入dropout 层并

给出了一种效果较好的网络结构。基于该网络结构,对目前的神经网络训练算

法进行了改进和优化,从而有效避免了训练时出现的过拟合问题,提升了训练效率。

4.1 BP 神经网络相关理论

本章从学习算法与网络结构相结合的角度出发,神经网络包括单层前向网

络、多层前向网络、反馈神经网络、随机神经网络、竞争神经网络等多种类型。

构造人工神经网络模型时主要考虑神经元的特征、网络的拓补结构以及学习规

则等。本文选择反向传播神经网络(Back Propagation Neural Network, BPNN)作

为基本网络模型。

BP 神经网络是一种通过误差逆传播算法训练的多层前馈神经网络,是目前

应用最广泛的神经网络模型形式之一。网络中每一层的节点都只接收上一层的

输出,而每一层节点的输出都只影响下一层的输入,同层节点之间没有交互,

相邻两层节点之间均为全连接模式。BP 神经网络在结构上分为输入层、隐含层与输出层三部分,其拓扑结构如图4-1

所示。

图4-1 BP 神经网络拓扑结构

Figure 4-1 Topological Structure of BP Neural Network

这里隐含层既可以是一层也可以是多层,数据在输入后由隐含层传递到输出层,通过各层的处理最终得到输出结果。

传统的BP 网络算法可分为两个过程:神经网络中信号的前向传播和误差函数的反向传播。算法在执行时会不断调整网络中的权值和偏置,计算输出结果

与期望结果之间的误差,当误差达到预先设定的值后,算法就会结束。

(1)前向传播

隐含层第J 个节点的输出通过式(4-1)来计算:

(4-1)

式中ωij 代表输入层到隐含层的权重,αj 代表输入层到隐含层的偏置,n

为输入层的节点个数,f(.)为激活函数。输出层第k 个节点的输出通过式(4-2)来

计算:

(4-2)式中ωjk 代表隐含层到输出层的权重,bk 代表隐含层到输出层的偏置,l

为隐含层的结点个数。

根据实际输出与期望输出来计算误差,见式(4-3)

(4-3)

式中(Yk-Ok)用ek 来表示,Yk 代表期望输出,m 为输出层的结点个数。当E 不满足要求时,就会进入反向传播阶段。(2)反向传播

反向传播是从输出到输入的传播过程。从式((4-1)至式(4-3 )中,可以发现网

络误差E 是与各层权值和偏置有关的函数,所以如果想减小误差,需要对权值

和偏置进行调整。一般采取梯度下降法反向计算每层的权值增量,令权值的变化量同误差的负梯度方向成正相关,调整的原则是令误差沿负梯度方向不断减少。

权值的更新公式见式(4-4),偏置的更新公式见式(4-5)。

(4-4)

(4-5)式中η为学习速率。

BP算法的整体流程如图4-2

所示。

图4-2 BP算法流程图

Figure 4-2 Flow Chart of Back Propagation Algorithm

4.2 网络结构的设计

4.2.1 设计思路

设计网络结构时确定隐含层的层数以及隐含层的节点数是非常重要的。增加隐含层的层数有利于提高精度同时降低网络误差,但是BP神经网络的隐含层层数越多,所需的训练时间也就越长。对于单隐层神经网络而言,隐含层的神经元数量过少会导致网络的学习能力不足。相反,神经元数量越多,网络的

学习能力就越强,越容易达到预期的精度,但是相对地会削弱网络的泛化能力,使网络容易达到过拟合状态。为了保证网络拥有足够强的性能及泛化能力,尽量避免在训练时出现过拟合现象,本文在设计网络结构时主要遵循以下原则:

(1)在保证神经网络检测精度的前提下,尽量减少神经元的数量;

(2)通过仿真实验试探查找隐含层节点数的最优值。

本文中网络结构选择的是多层前馈神经网络,它的结构虽然简单,但是能够实现任意精度逼近任意连续函数,并且可以获得复杂的处理能力,因此分类能力和模式识别能力一般都会强于反馈网络。激活函数选择的是线性整流函数( Rectified Linear Unit, ReLU),也叫作修正线性单元,函数曲线如图4-3所示,其公式见式(4-6)

图4-3 ReLU函数曲线

Figure 4-3 Function Curve of ReLU

(4-6) ReLU激活函数定义了神经元在线性变换w T x+b以后的非线性输出。换句话说,来自上一层网络的输入向量x在进入神经元后,将输出max(0, w T x + b)至下一层神经元。采用ReLU激活函数可以使梯度下降和反向传播的过程更加高效,同时避免了梯度爆炸与梯度消失的问题。此外,该函数没有其他复杂激活函数如Sigmoid函数中指数的影响,并且活跃度较为分散,使得神经网络整体的计算成本减少,从而简化计算过程。

目标函数选择的是Softmax函数。Softmax函数是式(4-7)取负对数后得到的损失函数,其公式见式((4-8)。

(4-7)

(4-8)

式中Sj 表示j 上的得分,Yi 表示真实类别。4.2.2 网络结构及对应实验分析

本文利用生长法来设计神经网络的网络结构,即设计网络结构时,首先确

定一种较为简单的网络结构,然后通过增加隐含层数和隐含层节点数来形成其

他的网络结构。根据4.2.1中的设计思路,设计并训练了五种不同的神经网络模型,对应的网络结构如图4-4所示。

在图4-4的网络结构中,输入层均由41个神经元构成,输出层由5个神经

元构成。x 为输入向量,数据输入后通过隐含层最终输出分别属于五个类别的概率,然后将概率最大的类别作为最终的判断结果。其中网络结构a,b,c 包含一

个隐含层,分别由50, 100, 500个神经元构成;网络结构d, e 由两个隐含层构成,

前者每个隐含层包含50个神经元,后者每个隐含层包含100

个神经元。

a)网络结构a

b)网络结构b

a) Network Structure a

b) Network Structure b

c)网络结构c d)网络结构d

d) Network Structure d

c) Network Structure c

e)网络结构e

e) Network Structure e

图4-4神经网络的网络结构

Figure 4-4 Structure of Neural Network

本章训练和测试神经网络时使用了Google推出的Tensorflow深度学习框架,Tensorflow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。它的灵活性和可延展性让用户可以在各种平台上展开计算,例如台式计算机中

的单个或多个CPU(GPU)、服务器、移动设备等等,因此主要用于机器学习和

深度神经网络方面的研究。本章实验部分的机器配置,显卡采用的是GeForceGT 750M,显存大小为2G,网络训练和测试时使用GPU模式。

用完整训练集分别训练图4-4中的五种网络结构,训练时的参数batch

size(每次从训练集中取的数据量)和epochs(使用完整训练集训练的轮数)将影响

模型的精度和训练时间。在合理范围内增大batch size 对训练有一定好处,可以

提高训练的速度,并且batch size 越大其确定的下降方向越准确,引起的训练震

荡越小。但受显存的限制,不能无限地增大batch size ,因此在本实验中batch

size 设为50。Epochs 代表使用完整训练集训练的轮数,由于训练集共包含

494021条数据,在batch size = 50的情况下,训练一次完整的数据集就需要

9881轮迭代,而完成全部训练过程的总迭代数=9881×epochs 。考虑到完整训练

集的数据量过于庞大,因此用完整训练集训练时epochs 设为50。模型参数采用

高斯分布初始化(Gaussian)方法进行初始化,训练时使用随机梯度下降法,基础学习率设置为base_1r=0.01调整策略使用step 策略,stepsize=5000,学习率按

照式(4-9)进行更新,其中gamma=0.1,iter 是当前的训练迭代次数。在以上参数

条件下,本文所设计的几种网络结构均可以达到收敛。

(4-9)

训练完成后用测试集分别对这五个模型进行测试,得到的结果见表4-1和

4-2。表4-1不同网络结构每种类别的检测率

Table 4-1 Detection Rate of Different Network Structures for Each Category

表4-2不同网络结构的整体效果

Table 4-2 Overall Effect Using Two Training Sets to Train the Structure a

从表4-1中可以看出使用网络结构a训练的模型在四种攻击类别上的检测率都比较高。虽然网络结构c在Normal类别上的检测率高于网络结构a,但是对入侵检测系统来说,检测出攻击流量是最为重要的,并且从表4-2中可以看到网络结构a对整体攻击流量的检测率最高,同时训练和检测时间要少于其他四种结构,这是由于网络结构a的复杂度最低,因此使用它进行训练和测试所需要的时间也就比较少。综上所述,本章选取网络结构a作为神经网络的一个基础候选网络结构,后续的研究也主要是在网络结构a的基础上进行一系列的改进。

4.2.3 Dropout层的引入

训练BP神经网络时经常会遇到的一个问题是容易达到过拟合状态,过拟合是指模型在训练集上损失函数较小,但是在测试集上损失函数较大,预测准确率较低的现象。而dropout的出现可以很好地解决这些问题。dropout是指在神经网络的训练过程中,对于网络中的神经元,按照一定的概率暂时将其从网络中丢弃,即在每个batch中,让一部分隐层节点值为0。由于是随机丢弃,所以每一个batch都在训练不同的网络,这种方式可以减少神经元之间的相互作用。Hinton在论文中证实了dropout对于全连接网络有防止过拟合的效果。

图4-5为dropout的可视化表示,其中图a)为应用dropout前的神经网络,图b)是应用dropout后的同一个网络,虚线代表临时删除的神经元。

a)应用out前的神经网络b)应用dropout后的神经网络a)Neural Network Before Applying Dropout b)Neural Network after Applying Dropout

图4-5应用dropout前后的神经网络

Figure 4-5 Neural Network Before and after Applying Dropout Dropout会以概率p舍弃部分神经元,其他神经元以概率1-p被保留,输入层和输出层神经元不作变动,舍去的神经元的输出都被设置为零。然后,将输入数据通过修改后的网络进行前向传播,将误差通过修改后的网络进行反向传播。对一个批次的样本完成上述操作以后,更新相应的权重和偏置,这样重复迭代处理,直至训练结束。

Dropout能够减轻过拟合现象的发生,主要是因为它达到了一种投票的作用。对于全连接神经网络,用相同的数据去训练多个不同的神经网络可能会得到多个不同的结果,这时采用投票机制可以相对提升网络的精度与鲁棒性。同理,对于单个神经网络。如果将其进行分批,虽然不同的网络可能会产生不同程度的过拟合,但是他们共用一个损失函数,相当于同时对其进行了优化,取了平均,因此可以较为有效地防止过拟合的发生。此外,当隐藏层神经元被随机删除后使得全连接网络具有了一定的稀疏性,从而有效地减轻了不同特征之间的协同效应。也就是说,有些特征可能会依赖于特定关系的隐含节点的共同作用,而dropout有效地阻止了那些在其他特征存在下才有效果的情况,提高

了神经网络的鲁棒性。将dropout添加到4.2.2中的网络结构a后训练使用的epochs量增加为100这是因为dropout会使每次训练时随机失效一些节点,

因此需要更多的训练轮数来使网络达到收敛。表4-3和表4-4展示了添加dropout后网络结构a的效果,可以发现网络的检测效果有一定的提升。虽然训练时间有所增长,但是训练时间增长的倍数并没有达到与epchos增长相同的倍数,这是由于每次训练时一些节点失效,使得实际的网络结构要比原始的网络结构a更简单。

表4-3添加dropout前后网络结构a对每种类别的检测率

Table 4-3 Detection Rate of Network Structure a for Each Category Before and after

Adding

表4-4添加dropout前后网络结构a的整体效果

Table 4-4 Overall Effect of Network Structure a Before and after Adding Dropout

4.3 数据集聚类与分层检测框架在神经网络入侵检测上的应用

本文提出了一些针对数据集和检测框架的改进方法,本节尝试将部分方法应用在神经网络的入侵检测上,并通过实验验证算法在神经网络入侵检测上的效果。训练使用4.2.3中添加了dropout的网络结构,训练时batch_size设为50,epochs设为100,网络初始化和学习率的设定同4.2.2节。

表4-5用两种训练集训练网络结构a所得每种类别的检测率4-5 Detection Rate for Each Category Using TwoSets to Train the Structure a

表4-6用两种训练集训练网络结构a的整体效果

Table 4-6 Overall Effect Using Two Training Sets to Train the Structure a

表4-5和表4-6展示了使用聚类后的训练集的实验效果,可以发现用子训

练集训练神经网络模型后每一种攻击的检测率均高于用完整训练集训练神经网

络模型后的检测率,并且用子训练集进行训练所需的时间远远低于用完整训练集训练的时间。因此在后续实验中均采用子训练集来训练神经网络模型。

实验所用网络结构如图4-6所示,由于采用小类别后最终分类目标类别实

际有15种,故输出层由之前的5个节点改为15个节点,训练集得到的结果见表4-7和表4-8,从表中可以看出这种小类结构的训练集应用于神经网络后也对

检测效果有了明显提升,说明这种训练集的重构方法与分类器无关。

图4-6使用15个小类别的神经网络结构图

Figure 4-6 Structure of Neural Network Using 15 Small Classes

表4-7用小类别训练集训练网络结构a 所得每种类别的检测率

Table 4-7 Detection Rate for Each Category Using Small Class Training Sets to

Train the Structure a

表4-8用小类别训练集训练网络结构a 的整体效果Table 4-8 Overall Effect

Using Small Class Training Sets to Train the Structure a

现对应到分层检测框架中需要使用的是15个二分类器,故模型结构如图4-7所示,输出层节点数为2。表4-9和表4-10展示了利用神经网络分层检测框

架进行检测的结果,可以发现Normal. U2R和R2L类别的检测率有一定的损失,但是剩余二类的检测率有所提升。检测率损失的部分原因是Normal, U2R和R2L类别在分层检测框架中位于框架的末端,故这三类数据中有一些被前几种

类别的分类器识别成对应类别而未能传递到应该被正确识别的层次上。但好在

这种损失比较轻微,尤其是R2L类别只减少了0.01%的检测率,并且Probe和类别以及整体的检测率还有所提升。

Dos

图4-7分层检测框架中用于二分类的神经网络结构图Figure 4-7 Structure of Neural Network as Binary Classifier in Hierarchical

Detection Framework.

表4-9用神经网络分层检测框架检测所得每种类别的检测率Table 4-9 Detection Rate for Each Category Using Neural Network Hierarchical

Detection Framework

4-10用神经网络分层检测框架检测的整体效果

Table 4-10 Overall Effect Using Neural Network Hierarchical Detection

Framework

本节的三个实验可以证明本文提出的对数据集的精简聚类、训练集数据重新构造方法和分层检测框架都是分类器无关的通用方法,神经网络可以获得检测效果的提升。

4.4 BP算法优化

4.4.1 传统BP神经网络的局限性

尽管传统BP神经网络在非线性映射能力、自学习和自适应、泛化能力和

容错能力等方面相较传统机器学习方法有一定优势,但是它也在近些年的应用中暴露了一些不足之处:

(1)易陷入局部最优:从数学的角度上看,BP神经网络本质上是一种基于局部搜索的方法,要解决的问题一般是复杂的非线性问题,其网络权值的调整是沿局部梯度的方向进行的,有陷入到局部最优的风险。同时,BP神经网络对网络权值的初始值比较敏感,使用不同的初始网络权值往往会得到完全不同的结果。

(2) BP神经网络训练时的收敛速度较慢:反向传播算法本质是梯度下降,通常给定的目标函数都比较复杂,因此训练时往往都会出现震荡,这使得BP算

法的训练效率变低。与此同时,在训练中如果神经元的输出比较靠近0或者

1,就会出现一些梯度很小的区域,这些平坦区内的权值变化往往很小,这使得梯度下降法的训练非常缓慢;训练BP神经网络模型时,对于权值改变的步长一般也会提前设置一些静态的更新规则,这些规则不能及时获得每次迭代的权值变化情况,也会引发一些效率问题。

(3) BP神经网络预测能力和训练能力的矛盾问题:一般情况下神经网络的预测能力会随着训练能力的提升而提高,但是当训练达到一定程度后,预测能力反而会有所下降,即出现了过拟合现象。这是由于网络学习了过多的样本细节,

导致模型己经不能反映总体样本的规律,所以如何把握学习的程度来解决网络的预测能力和训练能力之间的矛盾也是BP 神经网络的重要研究内容。4.4.2 BP 算法的改进

针对4.4.1中提出的几个传统BP 神经网络的问题,在先前的研究中已经通

过在网络结构中引入dropout 层后在一定程度上解决了BP 神经网络预测能力和

训练能力的矛盾问题,并且通过使用第三章中重新构造的训练集来优化了网络

的训练速度。本节将从BP 算法的权值初始化、增加动量项和自适应调节学习速率的角度对BP 算法进行改进。

(1)权值初始化

常用的神经网络权值初始化是采用高斯分布来生成随机初始值,这种做法的本质是将所有权值初始化为接近0的小随机数,从而避免将权值全部初始化

为0导致的训练后同层的神经元得到相同的参数的问题。

He 等人提出了一种针对ReLU 神经元的特殊初始化,文章给出了采用

ReLU 神经元的网络在通过高斯分布对权值进行初始化时的方差设置方法。基

于方差的计算并带入ReLU 神经元函数公式,最后推导出的方差表达式如式(4-10)所示,其中nl 指第1层的维数,Var[wl]指第1层的参数的方差,即wl 的初

始化公式为N(O,2/nl),本文将此公式作为神经网络参数的初始化公式。

(4-10)(2)增加动量项

BP 神经网络在训练过程中调整权值时,只按照当前迭代的梯度下降方向进行调整,而未考虑之前迭代的梯度方向,这有可能会导致训练出现震荡而减慢收敛速度。为了解决这一问题,考虑在权值调整公式中添加动量项,动量项实际上是从前一次权值调整中取出一部分叠加到本次权值调整中,添加动量项以

后的权值调整表达式如式(4-11)所示。式中的mc △wij(k)即为动量项,mc △

wij(k)=mc(wij (k)-Wij(k)-1)),其中me 代表动量因子,0≤mc<1,本实验中me

取0.9

可以看出动量项反映了上一次迭代所积累的调整经验。

(4-11)

动量项的作用如下:在训练过程中,当顺序加入训练数据时,在第t 次迭代

时,如果本次迭代的?E(t)/?wij(式中E 为单个样本的训练误差)和上一次迭代同

符号,动量项起到加快调节权值wij 的作用;而如果本次迭代的?E(t)/?wij 和上一次迭代正负相反,说明有一定的震荡存在,此时动量项使得权值Wij 的变化变小,起到了稳定的作用。

(3)自适应调节学习率

学习率η也称为步长,在标准BP 算法中设置为一个常数,然而在实际应

用中一般不会将其固定,比如在本节之前的网络训练中,使用式(4-9)来改变学

习率,本质上就是随着训练迭代次数的增加,逐步降低学习率,使训练得以收

敛。这种降低学习率的方法通常按照经验设置参数值,设定较为困难,并且若

只根据迭代次数去调整学习率,在遇到本章研究中这种需要频繁更换网络结构和实验训练集的条件下难以保证效果,故引入一种自适应调节学习率的方法。

从BP 算法在训练时学习率η的作用来看,η太小会使训练迭代次数增加,

此时希望加大η的值;而当误差变化剧烈时,学习率η太大则会导致对权值的

调整量过大,很容易跳过最优点,使训练迭代次数增加,此时则希望降低学习

率η的值。为此提出一种可变学习率的BP 算法,其规则如式(4-12)所示。式

中α和β是设置的用于调整学习率变化的参数,范围是(0,1),实验中α=0.5 β=0.2, γ是设置的用于条件判断的参数,实验中设定为3%

(4-12)

公式所代表的含义是,如果迭代的均方误差增加且超过了设置的阂值

γ,说明学习率η可能太大,取消本次权值更新,设置新的学习率为之前学习

率的1-α倍来降低学习率,同时将动量项中的动量因子mc 设置为0;如果均方

误差在权值更新后减少,那么本次迭代的权值更新有效,设置新的学习率为之

前学习率的1+β倍以加大学习率,同时判断当前动量因子是否为0,如果是则恢复动量因子为0.9;如果均方误差有增长,但是增长没有超过阂值,那么权值

更新被接受,保持学习速率不变,以防训练容易陷入局部最优。4.4.3 基于改进BP 算法的神经网络实验效果与分析

利用改进的BP 算法训练网络结构a ,由于改进后网络的收敛速度变快,因

此训练时的参数epochs 减少为80,batch_size 设置与之前实验相同,测试得到

的结果如表4-11和表4-12所示。

表4-11用改进的BP 算法训练网络结构a 所得每种类别的检测率Table 4-11 Detection Rate for Each Category Using The Improved BP

Algorithm to Train theStructure a

表4-12用改进的BP 算法训练网络结构a 的整体效果

Table 4-12 Overall Effect Using The Improved BP Algorithm to Train the

Structure a

从表4-11中可以看出,用改进后的BP 算法训练的网络模型对Dos, Probe

和R2L 类别的检测率均高于用传统BP 算法训练的网络模型,其中Dos 的检测

率从97.38%上升到了97.99%,Probe 的检测率从93.20%上升到了93.26%,R2L 的检测率上升最为明显,从28.97%上升到了31.45%。尽管

Normal 和U2R 类别的检测率有所下降,但是下降幅度比较微弱,并且从表4-

12可以看到整体的检测率相较于改进前得到了提升,同时误报率也被控制在理

想的范围内,这说明改进的BP 算法可以有效地防止训练陷入局部最优。除此以外,用改进后的BP 算法训练网络模型需要2870秒,远远小于用传统BP 算

法训练网络模型所需的时间,这主要是由于改进的算法在权值调整时引入了动

量项,从而减少了训练时的震荡,加快了网络的收敛速度。以上结果均证实了改进的BP 算法可以有效弥补传统BP 算法的不足。

相关主题
相关文档
最新文档