陈虹,王瀚文,金海波
(辽宁工程技术大学软件学院,辽宁 葫芦岛 125000)
随着网络成为人们生活中的重要工具,人们将大量数据储存在网络云主机中,文献[1-2]介绍了目前个人或企业的网络云主机中存在大量敏感的或隐私数据,导致网络云主机容易受到攻击的情况,而入侵检测技术是当前云主机有效的防御手段。
目前入侵检测模型主要基于机器学习、深度学习构建。文献[3-4]主要是基于机器学习算法的入侵检测模型的综述,比较了不同机器学习算法的优劣。文献[5-6]介绍了两种入侵检测技术:即以主动学习及基于K 近邻的直推式信度机方法为依据的有指导入侵检测技术;以粗糙集和人工免疫为依据的集成入侵检测模型,该模型虽然准确率较高,但面对海量数据时易出现过拟合问题。对比传统的学习算法,基于深度学习算法构建的入侵检测模型,更侧重于海量数据学习及处理方面,主要是为了解决海量数据内高维、冗杂以及高噪等传统机器学习算法难以处理的问题。文献[7-8]介绍的两种传统机器学习算法虽然准确率较高,但需要复杂的特征工程,所有特征通常需要由行业专家确定,然后通过编码实现特征提取等操作。文献[9-10]介绍了两种改进的机器学习算法,即基于遗传规划网络的模糊类关联规则挖掘的入侵检测算法和基于自适应提升算法的网络入侵检测算法,这两种算法的收敛速度和准确率均优于前文提到的机器学习算法,但依然不能从数据中挖掘特征。深度学习算法不仅可以主动从数据内对特征进行学习,还可以在数据量较高的时候保持良好的性能。文献[11]使用卷积神经网络构建入侵检测模型,模型准确率较高,但收敛速度较慢。文献[12]基于长短期记忆(LSTM)与改进残差网络构建入侵检测模型对LSTM 进行优化,设计方案是在改进残差神经网络内融入一种带跳跃的连接线,从而对深度神经网络内梯度消失及拟合过渡等缺陷进行优化,但检测准确率较低。文献[13]提出了双重路由深层胶囊网络的入侵检测系统,该方法采用双重路由算法对基于向量表示的特征进行多方位识别捕捉,以减轻噪音特征的干扰,但模型的泛化程度较低。文献[14]提出了基于深度神经网络(DNN)和联邦学习网络入侵检测方法,通过自动编码器对DNN实现特征降维,并利用联邦学习特性使得多个参与方使用通用模型参与训练,该模型训练速度较快,但识别部分攻击准确率较高,模型整体准确率较低。文献[15]提出了以深度学习为依据的混淆恶意请求检测方式,通过注意力机制突出关键特征来检测隐蔽程度较高的入侵数据,但在数据过大的情况下易出现过拟合。文献[16]使用堆叠自编码器和卷积神经网络(CNN)对加密流量进行分类,实现了流量特征的类型识别,但检测速度较慢。文献[17-19]介绍了高维数据的降维操作,由于入侵检测数据多为高维数据,数据在高维空间难以处理,计算这些数据的成本过高,因此在入侵检测模型中引入自编码器来进行数据降维。文献[20-22]介绍自编码器在入侵检测技术中的研究,该方法对高维数据检测效果较好,但处理高噪声的海量数据效果较差。文献[23]介绍了稀疏自编码器和支持向量机结合的入侵检测模型,采用稀疏自编码器直接识别提取数据特征,然后使用支持向量机分类,该模型准确率较高,但收敛速度较慢。
为了解决入侵检测模型易过拟合、收敛速度慢和准确率低的问题,本文在残差网络(ResNet)基础上结合栈式自编码器构建新的入侵检测方法。该方法将处理好的数据输入改进的栈式自编码器进行特征降维,再将降维后的特征输入到ResNet 网络中进行分类,最后使用CIC-IDS-2017 作为测试集对训练好的模型进行测试。
栈式自编码器是可进行自我监督的一种学习算法,文献[24]将其作为深度学习模型预训练中的特征检测器。栈式自编码器主要由两部分组成,分别为多个编码器及解码器,其本质为对输入的数据进行某种转换。编码器把输入的数据x转变为编码数据f(x),而解码器将编码f(x)重构成输出数据͂,即:
数据经过栈式自编码器处理后获得新的特征并降低维度。
文献[25]提出一种残差网络,该网络结构基于CNN 结构通过跳跃连接加入残差模块,并将全连接层替换为全局平均池化层。如图1 所示,残差单元保留了之前网络结构内的输入x,将输入x与卷积后的输出相加,最终获得期望输出K(x),并将K(x)转换为残差网络的函数B(x),其中,K(x)=B(x) -x。
图1 残差模块Fig.1 Residual module
本文将栈式自编码器和ResNet 相融合,提出改进的堆叠的自动编码器和残差网络(ISAE-ResNet)入侵检测模型,如图2 所示。该入侵检测模型首先将预处理后的数据输入改进的栈式自编码器进行处理,利用降低数据维度的方式来增加模型的收敛速度。然后将处理后的数据输入改进ResNet 网络进行分类,并通过软阈值函数降低数据中的噪声来提高准确率。最后测试模型并判断当前模型是否为最优,若不是则调优模型重新训练,若是则得到分类结果。
图2 ISAE-ResNet 入侵检测模型Fig.2 ISAE-ResNet intrusion detection model
普通自编码器一次只能训练一个浅层自编码器,由于层数过浅,在训练过程中容易发生过拟合风险。为了解决传统自编码器易过拟合的问题,本文提出改进的栈式自编码器。改进的栈式自编码器如图3 所示。
图3 改进的栈式自编码器Fig.3 Improved stack self-encoder
改进的栈式自编码器通过主副编码器重构数据并使用权重捆绑,使得过拟合风险性有所下降,并提升了模型收敛速度。
改进的栈式自编码器由主编码器、副编码器A、副编码器B 组成。副编码器由3 个维度逐步递减的自编码器组成,输入数据首先进入2 个副编码器同时进行训练,使得数据重构为新的特征。然后输出的数据和原始数据共同进入主编码器进行训练。主编码器由4 个维度逐步递减的自编码器组成,并通过捆绑权重使模型参数减少1/2,即将解码层的权重捆绑到编码层,增强降维的效果,此时编码层和解码层的权重为:
其中:N为自编码器总层数,第N/2 层是编码层,第N层是输出层,L=1,2,…,N/2。
新的特征和原始数据通过主编码器训练后得到重构后的数据。重构后数据拥有新的特征并且降低了维度,模型使用这些数据将加快收敛速度并降低过拟合风险。
改进的ResNet 网络通过批标准化层使每个神经元内的激活值做如下变换:
通过上述操作使梯度变大,避免梯度消失,梯度变大也使得学习收敛速度变快,对训练速度有很大提升,并且可以简化调参过程,使得模型对于初始化敏感度降低,将使用较大学习率变为可能。同时,批标准化层的添加加快了训练速度,使收敛速度加快。模型中全局平均池化操作使得将特征图全局平均后只输出一个数值,并通过Softmax 函数,极大地缩短了训练的时间。
Softmax 函数为:
Softmax 损失值函数为:
在残差网络的跳跃连接之前加入软阈值函数,将数据通过软阈值函数处理,将绝对值低于阈值的特征置为0,其他特征也向0 收缩,以此降低噪声,提高模型的准确率。
软阈值函数为:
本文改进的ResNet 网络结构如图4 所示。
图4 改进的ResNet 网络结构Fig.4 Improved ResNet network structure
该网络结构中包括3个残差模块、1个批标准化层、1个全局平均池化层、2个全连接层和1个Dropout层。
本文模型使用CIC-IDS-2017 入侵检测评估数据集进行验证。文献[26]对1998 年以来现有 11 个数据集的评估表明,大部分数据集已过时且可靠性低,此外其中部分数据集还存在欠缺流量多样性等特点,一些没有涵盖已知攻击的种类,另一些则对数据包有效载荷数据展开匿名处理,因此难以体现出当前的趋势。其中,还有部分数据集缺少特征集和元数据,故本次实验没有选用KDD Cup 99、NSL-KDD等数据集。
CIS-IDS-2017 数据集中存在非恶性及最新的常见攻击,在数据集的评估框架中,初次建立了相关标准对可靠基准数据集构建的正确性进行验证。
CIS-IDS-2017 的数据分为1 个正常数据(BENIGN)和14 个攻击类,分别是暴力破解FTP(FTP-Parator)、暴力破解SSH(SSH-patator)、心脏出血漏洞(Heartbleed)、Brute Force Web 攻击(WebAttack)、XSS Web 攻 击、SQL 注入Web攻击、渗透(Infiltration)、僵尸网络(Botnet)、端口扫描 攻击(PortScans)、DDoS、DoS Hulk、DOS 黄金眼攻击(DoS GoldenEye)、DOS 懒猴攻击(DoS slowloris)、DoS Slowhttptest,每一种攻击均有78 个特征值表示。选取训练集和测试集按照7∶3 的比例进行划分,具体实验数据如表1 所示。
表1 实验数据Table 1 Experimental datas 单位:个
ISAE-ResNet 的模型在Windows 系统环境下进行实验和测试,使用Python 中的Keras 库编写模型并采用TensorFlow-CPU 进行计算,具体实验环境如表2 所示。
表2 实验环境 Table 2 Experimental environment
本文实验评价指标由准确率(AC)、真正例率(TPR)、误报率(FPR)作为评估模型的指标。
获得其他3 个指标的基础指标,由表3 的4 个基础指标组成,其中,TP 表示真正类,FN 表示假负类,FP 表示假正类,TN 表示真负类。
表3 基础指标 Table 3 Basic indicators
由上述4 个基本指标可得:
1)准确率(AC):
2)真正例率(TPR):
3)误报率(FPR):
本文采取与改进前的ResNet 网络和栈式自编码器交叉对比,以及与近期其他文献模型的准确率进行横向对比来验证ISAE-ResNet 模型的可行性。
3.3.1 超参数选择
模型展开多次超参数调整,最终选用以下最优参数:
1)batch_size
若batch_size 过小,则在均方误差代价函数的错误面及横截面,线性神经元分别是一个抛物面及椭圆,由于修正方向每次均以各个样本的梯度方向进行修正,难以达到收敛。batch_size 过大,各个 Batch 之间的采样差异、各次梯度修正值相互抵消,无法修正。经过超参数调整,本文batch_size 选取为100 时为最优。
2)学习率
在深度学习中,学习率作为一个核心的超参数,其控制了网络模型的学习进度,并对该网络成功找到全局最小值从而获得全局最优解的成功几率及成功时间起决定性作用。学习率设置的大小会对网络模型造成一定影响,当其设置过大时会使得网络不能成功收敛,只能在最优值附近震荡;当其设置过小时会极大地降低网络收敛速度。经过超参数调整,本文学习率选取为0.01 时为最优学习率。
3)实验迭代次数
实验迭代一次的过程称为一个epoch,即一个完整的数据集在神经网络中的一个来回。epoch 设置过小,会使网络学习时间过小,导致其不能收敛,epoch 数量则与神经网络内权重的更新次数呈正向关系,当前者数量过大时后者更新次数也会较大,从而使得曲线从欠拟合转变为过拟合。经过超参数调整,本文最优epoch 为50。
3.3.2 数据预处理
数据预处理包括独热编码和Z-Score 标准化。
1)独热编码
独热编码又被称为One-Hot 编码,其使用N位状态寄存器展开对N个状态的编码,各个状态均具备各自单独的寄存器位,在任意时刻的有效状态仅有一位。One-Hot 编码把二进制向量表示为分类变量,并把分类值映射到整数值,并且可将离散特征的取值扩展到了欧氏空间,离散特征的某个取值与欧氏空间的某个点相互对应。
使用TensorFlow 的One-Hot 函数将15 个标签转化为二进制标签,以便神经网络的训练。
2)Z-Score 标准化
Z-Score 将不同量级的数据转化为同一个量级,统一用计算出的Z-Score 值衡量,以保证数据之间的可比性。下面给出Z-Score 的标准差公式和标准化转换公式:
在所使用的CIC-IDS-2017 数据集中,不同的特征数据之间的大小有着巨大差异,具有不同的数量级,因此本文采用Z-Score 方法对数据集展开标准化处理,通过numpy 中的mean 和std 函数进行实现。
3.3.3 ISAE-ResNet 交叉对比
将ISAE-ResNet 分别与基于未改进的ResNet 的入侵检测模型和未改进的栈式自编码器的入侵检测模型进行交叉对比实验,3 个实验模型均采用相同的超参数和数据预处理方式。在模型训练的过程中,由图5 可见损失函数值的变化状态。ISAE-ResNet迭代次数与损失函数值呈负性关系,后者随前者的增加逐渐减小,且下降速率表现为先快后慢,在前10 次迭代中损失函数值快速下降,到第25 次左右loss 值逐渐趋于平缓。未改进的ResNet 网络的loss值的变化和未改进的栈式自编码器loss 值变化速度在25 次迭代时仅有缓慢下降趋势,且在30 次左右才趋于平稳,说明本文模型收敛速度较快。
图5 损失函数值对比Fig.5 Comparison of loss function values
ISAE-ResNet 准确率为98.67%、真正例率为95.93%、误报率为0.37%,优于基于未改进ResNet 的入侵检测模型准确率96.25%、真正例率91.24%、误报率0.59%和未改进的栈式自编码器的入侵检测模型准确率97.17%、真正例率92.31%、误报率0.46%,这表明ISAE-ResNet 模型性能高于未改进之前的ResNet 和栈式自编码器入侵检测模型。不同模型的准确率对比如图6 所示。
图6 不同模型的准确率对比Fig.6 Accuracy comparison of different models
3.3.4 ISAE-ResNet 与相关模型的对比
将本文模型与其他算法的入侵检测模型做对比实验,并通过准确率、真正例率、误报率等方式对本文模型的性能进行验证。本文模型准确率为98.67%、真正例率为95.93%、误报率为0.37%。文献[7]针对网络入侵数据检测,使用梯度提升决策树模型进行分类,丢弃无关特征加快收敛速度,但准确率均低于本文模型,说明本文改进自编码器可以在训练中通过重构生成新的数据来增加分类准确率。文献[12]设计了一种三层堆叠LSTM 网络,对存在差异的流量特征进行提取,从而提升收敛速度,但准确率和真正例率低于本文模型,说明本文改进ResNet 网络分 类效果较好。文献[14]基于AutoEncoder和ResNet 的网络融合了一种新的入侵检测模型,通过自编码器进行数据降维,但是并未对自编码器进行改进,输出的参数降维程度不高、分类效果较差,准确率、真正例率、误报率均低于本文模型。文献[17]采用变分自编码器对特征进行提取,并生成新的特征来加快模型收敛速度,但准确率低于本文模型。文献[20]使用动态自编码器的网络异常数据进行分类,将数据集中不平衡的数据进行处理来提高分类准确率,但准确率、误报率低于本文模型。具体分类结果表4 所示。
表4 模型分类结果Table 4 Model classification results %
实验结果表明,ISAE-ResNet 通过对栈式自编码器进行改进,使用副编码器重构数据得到新的特征并使用主编码器进行降维,再对ResNet 进行改进,使用软阈值函数清除噪声,提高了对网络中入侵数据的识别能力,并加快模型的收敛速度。同时,该模型准确率较高,误报率较低,收敛速度较快,表明本文模型检测能力较优。
随着云端储存时代的到来,大量用户将隐私敏感信息储存在网络云主机中,针对用户信息窃取的网络攻击也层出不穷。传统基于机器学习与深度学习算法构建的入侵检测模型已经较为成熟,但模型准确率及收敛速度有待提高。本文提出融合改进的栈式自编码器和ResNet 的入侵检测模型ISAEResNet,将预处理后的数据输入改进的栈式自编码器中,利用栈式自编码器对数据急性降维并通过改进的ResNet 模型对数据进行分类。实验结果表明,该模型存在收敛速度快、准确率高以及误报率较低等特点。下一步将通过调整模型结构提高模型运算性能,以缩短模型计算时间。