ll t 基于神经网络的网络入侵检测本章从人工神经网络的角度出发,对基于神经网络的网络入侵检测系统展开研究。在尝试用不同的网络结构训练和测试神经网络后,引入dropout层并给出了一种效果较好的网络结构。基于该网络结构,对目前的神经网络训练算法进行了改进和优化,从而有效避免了训练时出现的过拟合问题,提升了训练效率。
4.1 BP神经网络相关理论本章从学习算法与网络结构相结合的角度出发,神经网络包括单层前向网络、多层前向网络、反馈神经网络、随机神经网络、竞争神经网络等多种类型。构造人工神经网络模型时主要考虑神经元的特征、网络的拓补结构以及学习规则等。本文选择反向传播神经网络(Back Propagation Neural Network, BPNN)作为基本网络模型。BP神经网络是一种通过误差逆传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络模型形式之一。网络中每一层的节点都只接收上一层的输出,而每一层节点的输出都只影响下一层的输入,同层节点之间没有交互,相邻两层节点之间均为全连接模式。BP神经网络在结构上分为输入层、隐含层与输出层三部分,其拓扑结构如图4-1所示。
图4-1 BP神经网络拓扑结构 s in their being ar 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)。 hings in their being are good for so (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神经网络的隐含层层数越多,所需的训练时间也就越长。对于单隐层神经网络而言,隐含层的神经元数量过少会导致网络的学习能力不足。相反,神经元数量越多,网络的 s in their bein 学习能力就越强,越容易达到预期的精度,但是相对地会削弱网络的泛化能力,使网络容易达到过拟合状态。为了保证网络拥有足够强的性能及泛化能力,尽量避免在训练时出现过拟合现象,本文在设计网络结构时主要遵循以下原则:(1)在保证神经网络检测精度的前提下,尽量减少神经元的数量;(2)通过仿真实验试探查找隐含层节点数的最优值。本文中网络结构选择的是多层前馈神经网络,它的结构虽然简单,但是能够实现任意精度逼近任意连续函数,并且可以获得复杂的处理能力,因此分类能力和模式识别能力一般都会强于反馈网络。激活函数选择的是线性整流函数( Rectified Linear Unit, ReLU),也叫作修正线性单元,函数曲线如图4-3所示,其公式见式(4-6)。
图4-3 ReLU函数曲线Figure 4-3 Function Curve of ReLU (4-6)ReLU激活函数定义了神经元在线性变换wTx+b以后的非线性输出。换句话说,来自上一层网络的输入向量x在进入神经元后,将输出max(0, wTx + b)
至下一层神经元。采用ReLU激活函数可以使梯度下降和反向传播的过程更加高效,同时避免了梯度爆炸与梯度消失的问题。此外,该函数没有其他复杂激活函数如Sigmoid函数中指数的影响,并且活跃度较为分散,使得神经网络整体的计算成本减少,从而简化计算过程。目标函数选择的是Softmax函数。Softmax函数是式(4-7)取负对数后得到的损失函数,其公式见式((4-8)。
(4-7) e
and All things in their being are good for so (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)网络结构ba) Network Structure a b) Network Structure b e and All
things in their being are good for soc)网络结构c d)网络结构dc) Network Structure c d) Network Structure d
e)网络结构ee) Network Structure e图4-4神经网络的网络结构Figure 4-4 Structure of Neural Network本章训练和测试神经网络时使用了Google推出的Tensorflow深度学习框架,Tensorflow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。它的灵活性和可延展性让用户可以在各种平台上展开计算,例如台式计算机中的单个或多个CPU(GPU)、服务器、移动设备等等,因此主要用于机器学习和深度神经网络方面的研究。本章实验部分的机器配置,显卡采用的是GeForceGT 750M,显存大小为2G,网络训练和测试时使用GPU模式。 and All things in their 用完整训练集分别训练图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