一种基于深度CNN的入侵检测算法

2020-04-19 07:25:50
计算机应用与软件 2020年4期
关键词:误报率残差卷积

李 勇 张 波

(重庆邮电大学自动化学院 重庆 400065)

0 引 言

随着互联网规模的不断扩大,互联网与人们的生活融合得越来越深,其正在改变人们的生活、学习和工作方式,但所面临的各种安全威胁也越来越严重。如何实时和快速地识别各种攻击,特别是不可预见的攻击,是目前一个不可避免的问题。入侵检测系统(IDS)作为信息安全领域一项重要的成果,相比于传统的静态安全技术,如防火墙、漏洞扫描机,可以识别已经发生的入侵或者正在发生的入侵,已经成为信息安全领域的重要研究对象。

近年来,机器学习方法已经被广泛应用在识别各种类型的攻击中,基于机器学习的入侵检测系统可以帮助网络管理员来判断系统是否遭受到入侵。然而,随着网络设备和技术的不断更新,大数据等新技术的兴起,产生了大量的网络数据。传统的机器学习算法大多属于浅层学习算法,旨在强调特征工程和特征选择,已经不能解决实际网络中出现的大量入侵数据的分类问题。随着网络数据量的急剧增长,其精度会不断下降,而且这种增长还将继续。

Hinton教授在2006年提出深度学习理论后[1],深度学习理论和技术迅速崛起,在此背景下,相关的论文和实践研究成果层出不穷,并取得了显著的成果,尤其在图像识别[2]、语音识别和动作识别[3-4]领域。入侵检测技术本质上是一种分类技术,而卷积神经网络能够自动发现数据之间的相关性,且深度CNN可以有效地检测零日攻击等新的攻击类型,因此将深度CNN应用到入侵检测中是非常有价值和意义的。

在之前的研究中,提出了一些基于传统机器学习的方法,包括SVM、K近邻(K-Nearest Neighbour, KNN)、ANN、Random Forest(RF)等,并在入侵检测系统中取得了成功。近年来,深度学习作为机器学习的一个分支,在入侵检测中得到了越来越多的应用。研究表明,深度学习完全超越了传统的学习方法。Salama等[5]将深度置信网络运用到入侵检测中,其准确率高于传统的SVM方法。Kim等[6]将循环神经网络应用到入侵检测,使用KDD99数据集进行验证,通过分析可知该方法在入侵检测中具有良好的检测能力。孔令智[7]提出了基于卷积神经网络的入侵检测模型,通过与传统的机器学习方法比较,证明该模型在漏报率和误报率上都大幅度降低。武天舒[8]提出一种改进的CNN入侵检测模型,使用信息熵和互信息进行特征降维,使用检测率、误报率、召回率等多个入侵检测系统指标评估,其提出的模型在网络入侵检测的检测率上可达到95%以上。通过以上研究表明,深度学习是入侵检测的下一个研究方向。

1 研究基础

1.1 前向传播

卷积神经网络主要包括输入层、卷积层、池化层以及全连接层。卷积层的输入来源于输入层或采样层,通过上一层的输出向量和本层的卷积核进行卷积运算,其公式如下:

(1)

采样层对卷积层输出的数据进行采样处理,主要为了降低网络特征的复杂度。其操作如下:

(2)

全连接层主要实现将所有的二维特征图转换为一维特征图作为全连接层的输入,如下所示:

(3)

1.2 反向传播调整权值和偏置

反向传播主要利用网络的实际输出与期望输出的差值来调节网络参数,主要优化卷积核参数k、全连接层的网络权重ω以及各层的偏置b。

(1) 卷积层。这里假设每个卷积层l后都有一个下采样层l+1,第l层的第j特征图的残差公式如下:

(4)

则卷积层l的偏置的梯度b可以表示为:

(5)

创造力的要素很多,如智力、认知风格、价值、目的、信念和策略等等。智力,在学校教育中被放在首要位置。但智力只是创造力的一个方面的要素,还有很多非智力方面的要素是不能忽略的。过去的教育往往倾向于智力因素的培养,忽视了非智力因素的作用。智力与非智力因素都是人创造力发展的重要方面。其中,想象力在创造性的发挥中至关重要。有的学者认为想象力是最重要的。一个人即便掌握了许多知识,但如果缺乏想象力,想象不到知识间的联系与新的可能性,便不能体现创造力。知识、智力固然很重要,非智力因素如想象力等也很重要。

(6)

(2) 采样层。假设层l为下采样层,l+1层为卷积层,则采样层l的第j特征图的残差计算公式可表示为:

(7)

则采样层的偏置的梯度可以表示为:

(8)

为了得到采样层权重的梯度,我们定义下式:

(9)

则采样层的权重β的梯度为:

(10)

2 CNN模型设计

深度CNN在图像识别和语音识别上获得了重大的成功,大部分研究都表明了网络深度的重要性。在其重要性的驱使下,一个问题诞生了:是否靠简单的堆叠网络来加深网络就能取得更好的成绩。但通过多次的实验表明,随着深度的增加,准确率在下降。问题的出现不是由过拟合造成的,而是由梯度消失造成的。针对此问题,微软研究院设计了一种深度残差网络。

使用H(x)表示任意的理想映射,假设某隐含层的映射关系为H(x)-x→F(x),多个线性层组合可以近似为一个复杂函数。假设隐含层的残差近似于某个复杂函数,则隐含层可以表示为:

H(x)=F(x)+x

(11)

这样就得到了一种新的残差结构。残差单元的输出就可以由多个卷积层级联的输出和输入元素相加(需保证输入元素和卷积层级联后的维度相同),经过Relu激活函数后得到,形成残差网络结构。其典型的结构如图1所示。

图1 经典残差结构[10]

本文参考Google团队的Inception结构和何凯明博士提出的残差网络,得出一种基于Inception结构和残差神经网络结合的CNN模型,如图2所示。

图2 深度残差模型[11]

深度残差结构使用1×1和3×3的卷积结构融合在一起。使用两个3×3卷积替换5×5的卷积操作,既可以加快运算速度又可以加深网络的深度。为了减少计算复杂度,同时对输出进行降维,在卷积操作前加入1×1的卷积核[11]。因需要进行层之间的融合,对上面的各个操作进行零填充,在3×3的卷积操作后加入pad为1的零填充层,5×5的卷积操作后加入pad为2的零填充层。

本实验模型由输入层、6个inception_resnet层、2个卷积层、1个采样层、2个Dropout层和3个全连接层组成。在卷积层后加入Relu函数,前两层全连接层使用Sigmoid激活函数,最后一层用Softmax函数进行最终的分类。除全连接层以外的所有层都加入了BN(Batch Normalization)层[12]。输入层为11×11维数据;第一个卷积使用3×3的卷积模块,步长设置为1;第二个卷积模块也使用3×3的卷积模块,步长设置为2;采样层使用动态自适应采样算法,采样大小设置为4×4,步长设置为默认大小,全连接层更加容易使模型过拟合,因此需要使用Dropout来避免过拟合[13]。其他参数取上文所获取的最优参数,最终的实验模型如表1所示。

表1 入侵检测整体模型设计

3 实 验

3.1 实验环境和数据源

本实验的硬件环境:Windows 10系统,Intel 酷睿i7 5500U双核CPU,8 GB内存。软件环境:Python 3.6、Oracle数据库、基于TensorFlow的keras深度学习框架。

本文选用的数据为KDDCUP99数据集。该数据集由Stolfo等[14]准备,并且基于DARPA(美国国防部高级研究计划局)在1998年的IDS评估项目中获取的数据所构建。共采集了九周的网络连接和系统审计数据,通过仿真不同种类的用户类型、网络流量以及攻击方式,得到KDDCUP99数据集[15]。

因为完整数据集的大小超过4 GB,一般的入侵检测系统和模型难以训练。所以本实验使用KDD CUP99数据集中的“kddcup.data_10_percent”作为网络的训练集,“corrected”作为网络的测试集,其中训练集共494 021条,测试集共311 029条。

3.2 数据预处理

KDDCUP99数据集的每条数据都具有41维,其中38维是数字特征,其他3维为符号特征,将每个特征属性进行预处理,消除特征之间的差异性,使其具有可比性。其过程可由以下两部分组成。

(1) 符号特征的数字化。KDDCUP99数据集包含38个数字特征和3个字符特征,由于基于卷积神经网络的入侵检测算法的输入值要求是一个数字矩阵,因此需将protocol_type、service和flag特征转换为数字形式。例如protocol_type特征具有3种类型的属性,将其通过One-hot编码的方式转换为对应的数值类型:TCP、UDP和ICMP其对应数值被编码为二进制向量(1,0,0)、(0,1,0)和(0,0,1)。类似地,service特征共有70种属性类型,flag特征具有11种属性类型,转换之后,41维的特征向量映射为122维特征向量。

(2) 数字特征的归一化。为了消除因为量纲导致不同特征之间具有的巨大差异,需要对剩下的38个特征向量进行归一化,采用最大最小归一化方法,其公式如下:

(12)

式中:xmin、xmax分别为每一维特征项的、最小值和最大值,x为原始特征项,xnorm为归一化后的值。

3.3 实验结果分析

入侵检测的评价指标主要包括准确率、误报率以及漏报率,其中,定义TN为数据为正常且预测也为正常的数据量,TP为数据为异常且预测也为异常的数据量,FN为数据为异常而预测为正常的数据的数量,FP为数据为正常而预测为异常的数据的数量,则准确 率、误报率、检测率分别为:

(13)

(14)

(15)

为了验证此算法对于入侵检测系统的有效性,输入特征项共122维,舍弃其中is_hot_login特征项,此项特征的值都为0,对入侵检测分类结果作用为零。将其转换为11×11维的二维的“图像数据”,全连接层采用Softmax进行分类。

(1) 二分类实验。对入侵检测算法进行二分类,正常标签设置为0,攻击标签设置为1,表2显示了改进的深度CNN与Lenet-5以及GoogleNet在各个攻击类型上的检测率对比。可以看出,深度CNN算法对Normal、Probe、DoS、U2R、R2L的准确率分别为97.82%、97.73%、97.90%、88.54%、33.87%,R2L的检测率比Lenet-5和GoogleNet算法都高,U2R的检测率也相应地有所提高。由于U2R和R2L在训练集中的比例非常低,这两种类型产生的后果非常严重,因此提高这两种攻击的检测率十分具有必要。

表2 深度CNN与Lenet-5以及GoogleNet的各个攻击类型的准确率对比 %

(2) 五分类实验。与二分类实验主要不同在于将攻击具体化分类,正常的设置为1,四大攻击类依次设置为2~5。表3显示了五分类实验中测试集在改进入侵检测算法上的混淆矩阵。可以看出,改进的入侵检测算法在五分类实验中准确率为93.45%,在对稀疏攻击U2R和R2L上,召回率提高到31.58%和36.67%。这进一步表明了改进算法具有强大的检测能力。

表3 深度CNN在测试集上五分类实验混淆矩阵

表4中将提出的CNN算法与常见机器学习算法的性能结果进行比较,在性能上有所提高。相比于文献[16]提出的基于粒子群优化的特征选择和使用朴素贝叶斯(NB)分类器进行分类的入侵检测算法,本文算法在检测率上提高了4%,误报率下降0.5%。文献[17]提出的基于GA的SVM算法,GA采取新的适应度函数,去优化SVM的参数,本文算法的检测率和误报率能与该入侵检测算法基本持平。本文较文献[18]提出的RF算法在准确率和检测率上都有所提高,与其改进的算法的性能基本一致。深度学习具有强大的特征提取能力,深度卷积神经网络相比传统机器学习算法在入侵检测中具有较大的优势。

表4 深度CNN和机器学习算法性能对比 %

表5将提出的CNN算法与文献[19]所提出的深度学习算法的性能进行比较,可以看出,本文的CNN算法在入侵检测中的检测率高于DBN,误报率略低于DBN,检测率和误报率与SMOTE-DBN算法基本持平。后期可以进一步改进本文算法来提高入侵检测能力。

表5 深度CNN和其他深度学习算法性能比较 %

4 结 语

本文对入侵检测和卷积神经网络展开研究,利用卷积神经网络在处理分类问题上的长处,将卷积神经网络用在入侵检测中,提出了一种基于深度卷积神经网络的入侵检测算法。通过KDDCUP99数据进行训练和测试,与文献[16-18]所提出的经典学习算法SVM、RF、NB进行比较,准确率和检测率均优于其他经典的机器学习算法,与其改进算法在性能上基本持平。本文算法较文献[19]所提出的深度学习算法DBN在检测率和误报率上都有所提高,与其提出的改进深度学习算法的性能指标基本一致,证明本文算法在入侵检测领域的有效性。同时与基于Lenet-5的CNN算法和GoogleNet算法进行比较,对稀疏攻击类型R2L和U2R的检测率都有所提升,但在检测稀疏攻击类型R2L方面需要进一步改进。

猜你喜欢
误报率残差卷积
基于GRU-LSTM算法的物联网数据入侵检测分析
基于SSA-SVM的网络入侵检测研究
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
家用燃气报警器误报原因及降低误报率的方法
煤气与热力(2021年6期)2021-07-28 07:21:40
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
自动化学报(2019年6期)2019-07-23 01:18:32
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
基于傅里叶域卷积表示的目标跟踪算法
神经网络技术在网络入侵检测模型及系统中的应用