时间:2024-06-19
严志兵,马自强,王 恒,黄 岩
(宁夏大学 信息工程学院,银川 750000)
随着计算机技术的发展,网络流量也呈现井喷式增长,各类新型应用流量层出不穷,这些各式各样的流量中可能混杂着恶意攻击流量,给网络信息安全带来了严重威胁。科学地对网络中的异常流量进行分类,一方面能够根据分类结果科学预测网络中传输的主要业务,从而制定合理的网络资源分配策略;另一方面也能发现网络中存在的恶意流量,保障网络安全[1]。
目前传统的网络流量分类有如下几种方法,分别是基于端口的流量检测、基于深度包检测方法、基于机器学习的方法和基于深度学习的网络流量检测[2-3]。基于端口的流量识别比较简单,由于每一项应用程序都有一个固定的端口号,如HTTP协议的端口号是8080、SSH协议的端口号为22等,所以研究人员只需要通过流量中的端口信息,就可以知道该流量的所属应用类别,但是随着网络技术的发展,互联网普遍采用随机端口号策略[4]和端口伪装[5],这样就使得基于端口的流量检测技术性能下降,同时对于新型的网络流量,基于端口的流量检测技术也无法有效地进行识别。为了弥补端口检测技术的不足,研究人员便提出了深度包检测技术,所谓的深度包检测技术是在进行流量识别时,通过分析数据包中是否有特殊的字符来进行分类,这种方法不仅弥补了端口检测技术的不足,而且检测的准确度也很高。但随着现在加密技术的使用,一些攻击者会将攻击进行加密,这样就使得深度包检测技术识别率下降,同时深度包检测技术也无法对新型流量进行检测,因为深度包检测技术需要专家将流量指纹添加到指纹库中,随着新型网络流量的增加,手工添加指纹也是一个庞大的工程,这些缺点使得深度包检测技术逐渐被淘汰。随着机器学习技术的兴起,研究者开始将机器学习技术应用到流量分类上,首先将原始流量进行一系列特征预处理,包括对空值的处理、字符的处理、归一化处理、降维处理等,然后将处理好的数据分为训练集和测试集,最后应用机器学习算法对训练集和测试集进行训练和分类。机器学习技术不仅可以识别新型的网络流量,且识别率也比较高。韩晓燕[6]提出了一种改进的贝叶斯算法,文章中将每个流量特征赋予不同的权重,通过权值来加强检测的精度,但是没有考虑不同流量特征之间的联系。饶鲜等[7]使用SVM作为异常流量检测的分类器,实验证明与其他算法相比,SVM算法的准确率更高。虽然机器学习的方法在流量检测上有很高的准确性,也能对新型流量进行预测,但是机器学习的方法过度依赖人工特征选择。显然基于机器学习的方法也无法满足当前流量快速增长的需求。
近年来,深度学习在图像和语音识别领域也有了长足的发展。一些人开始将深度学习技术与流量检测相结合。其中,卷积神经网络在图像处理方面表现很突出,于是很多人开始将网络流量转化为二维矩阵形式,然后用卷积神经网络进行训练,这个过程是一个完全端到端的过程,它不需要复杂的人工提取特征,而且预测准确率更高。深度学习从“深度”和“学习”两方面来进行理解,学习是指对提取数据从一个抽象到具体的过程,深度是指随着网络层数的加深,模型的学习效果会更好,但是实际上随着网络层数的加深,基于深度学习的网络会出现梯度爆炸或者梯度消失的问题,导致训练精度逐渐下降。为了解决这个问题,文中尝试将改进的残差网络(ResNet)应用到流量分类中,实验模拟了真实网络环境,选取公开数据集Moore,将该一维流量数据转化为16×16的灰度图,以准确度和损失值作为衡量指标,实验证明该算法比卷积神经网络有更佳的表现。
卷积神经网络由卷积层、激活函数层、池化层、全连接层以及softmax层组成。卷积层负责提取数据的特征,在进行卷积操作时共享一个相同的卷积核,这样极大地减少卷积操作的参数,也省去人工提取特征的步骤。激活函数层主要负责将一些冗余信息和很弱的特征剔除,常用的激活函数有ReLU、Sigmod、tannh等,通过激活函数,模型会提取到更加有用的信息。在提取到特征之后,对这些特征进行一系列计算,但是如果提取到的数据特征很大,模型的运算量相应会变大,这样使得模型训练时间变长。所以选择对不同位置的特征进行聚合统计,如计算一个区域的最大值或者平均值作为特征,这种方法称为池化操作,常用的池化操作有最大池化和平均池化。卷积神经网络模型具体架构如图1所示。
图1 卷积神经网络模型架构
王伟[8]在对异常流量分析中就采用一维卷积神经网络,将原始流量经过一系列处理之后,生成28×28的灰度图,实验以2分类、10分类和20分类作为分类器,证明了3种分类器的精度都非常高,且查准率、查全率、F1值都达到了98%。张小莉等[9]设计了离差标准化的卷积神经网络,将Moore数据集作为训练集和测试集,相比传统卷积神经网络精度提升了5%~8%,开销降低了3.2%。随着网络层数的加深,卷积神经网络将出现梯度下降或者梯度消失的问题。这是由于在网络层数加深之后,在向后传播时无法将梯度更新到前面的网络层,导致一些超参数无法更新,从而使得测试的结果变差。针对卷积神经网络梯度消失或梯度爆炸的问题,He等[10]提出了一种残差网络。通过在一个浅层网络基础上叠加一个恒等映射层,可以让网络随着深度的增加而不出现退化。很多研究证明,残差网络不仅可以缓解梯度消失或梯度爆炸的问题,而且它也能够提高训练的精度。
残差网络即它允许原始输入的信息直接通过恒等映射层传输到深层网络中,图2所示是一个ResNet学习的原理。
图2 ResNet原理
假设某段网络输入是X,期望的输出是H(X),此时残差网络的学习目标为H(X)=F(X)+X。它的基本原理为
Z[l+1]=W[l+1]a[l]+b[l].
(1)
式中:a为l层的激活值;a[l]与权重W[l+1]相乘加上偏置b[l]得到线性激活值Z[l+1],然后经过非线性激活函数ReLU函数激活得到a[l+1],ReLU函数能够删除数据中的噪音和冗余信息,加强对关键信息的提取,一个残差块中包括线性激活和非线性激活,在恒等映射层的作用下,上层的信息能够传入到更深的网络层中,这也是残差网络能够防止梯度消失的关键所在。式(2)为正向传播过程中非线性激活操作
a[l+1]=g(Z[l+1]).
(2)
再进行下一轮的线性激活和非线性激活
Z[l+2]=W[l+2]a[l+1]+b[l+2],
(3)
a[l+2]=g(Z[l+2]+a[l]).
(4)
式中:a[l+1]为l+1层的激活值;W[l+2]和b[l+2]为l+2层的权重和偏置,经过线性激活之后得到Z[l+2],然后再经过非线性激活时将a[l]与Z[l+2]的和作为变量直接传入ReLU函数,对应到残差网络就是直接将a[l]拷贝到更深的网络中,这样就能将上一层的网络输出传输到更深层网络,同时也解决了卷积神经网络中梯度爆炸或梯度消失的问题。这样的一个2层网络组成一个block,两个或者多个block组成一个残差单元,许多的残差单元堆叠起来形成一个残差网络模型。原始的残差网络模型并没有加入批量归一化层,使得模型容易过拟合,且收敛速度比较慢,批量归一化可以有效地加速模型的收敛,能够很好地防止过拟合问题。在残差网络中随着残差单元的不断叠加,使得网络层数越来越深,这也会出现模型训练时间长的问题。
为了进一步提高残差网络的精确度和收敛时间,文中提出了一种改进的残差网络。图3为改进残差网络的架构。
图3 改进残差网络架构
图中残差模块由直接映射和恒等映射2个部分组成,多个残差块组成一个残差网络模型。首先输入的数据经过一个BN层,对输入数据做一个批量归一化处理,防止过拟合现象的发生。文献[11]把这种改进叫做预激活残差网络,将残差网络批量归一化层和非线性激活函数放到卷积层之前,文献[12]也证明了预激活残差网络比原始残差网络有更高的精确度和泛化能力。文中的改进思路是将批量归一化层和非线性激活函数层移动到卷积层之前,形成预激活残差网络。为了缩短残差网络的训练时间和减少过拟合,在恒等映射层中加入BN层和Conv2D层,这样使得残差网络收敛更快。本次实验中每128个数据作为一个批量,经过一个1×1的卷积运算,再经过一个3×3的卷积运算,最后经过一个1×1的卷积运算,每次卷积运算之后都会通过一个非线性函数去除特征图中的一些冗余信息,加强对关键信息的提取。与传统残差网络不同的是,本次实验在恒等映射层中加入了一个BN层和一个卷积层,这样操作的目的是使X与F(X)的维数一样,而且能大大加强对关键特征的提取。本实验残差网络为18层,有4个残差单元,每一个残差单元中都有线性激活与非线性激活操作,首先对特征数据进行一个降维,然后升维,再将F(X)与X进行相加,将相加后的结果进行一次非线性整流函数运算,最后进入下一个残差单元。
实验选择的数据集是公开的数据集Moore。Moore数据集是在不同的局域网中抓取的网络流量[13],一共包含377 526个流量样例,每个流量中有249个特征,第249个特征表示的是流量的所属类别,其中,每个数据集基本由12种应用程序流量组成。
在将数据导入模型训练之前,需要对数据进行预处理,本次实验考虑将网络流量转化灰度图来进行处理。对数据的预处理分为以下步骤:
1)流量数据的数值化。由于每个数据流量有249个特征,但有些特征是布尔类型或文本类型,为了将流量数据转化为灰度图,需要对这些非数值类型进行数值化。处理过程为:布尔类型的True表示1,False表示0。对于文本类型,由于文本特征有多个取值,此次选择1~N来表示不同的文本特征。
2)缺省值处理。每一条数据流中都有249个特征,但由于一些意外情况,使得一些特征并没有被采集,从而导致一些流量缺失特征。处理过程为:对于布尔类型数据,用0和1进行填充,对于数值特征采用平均值来填充特征数据。
3)流量数据归一化。由于流量数据数值的差异,如有些数值很大,有些数值很小,这样会大大降低预测的精度,为了解决这个问题,对流量进行归一化处理,将数值限制在0和1之间。
4)数据图片化。由于本次实验要求输入的形式是图片格式,故需要将一维流量转化为灰度图,根据Moore数据集的特征,设置灰度图的大小为16×16。将训练集的特征值和测试集特征值分别转化为16×16的灰度图。
为了验证文中改进模型在网络流量分类中有较好的表现,将经典的CNN算法[14]与改进残差网络进行对比,本次实验评价的指标是精确度与损失值,由于数据量比较大,迭代次数选择5。取5轮的精度值和损失值为衡量标准,得到如图4~6所示的结果。
图4 改进残差网络与卷积神经网络精度关系
图5 卷积神经网络与改进残差网络损失值比较
图6 改进残差网络与深度残差收缩网络精确度比较
由图4可知卷积神经网络在5次迭代之后模型精度为98.3%,且随着网络层数的加深,卷积神经网络的精度也有较大的波动,而改进的残差网络在第一次迭代之后精度就达到1,且在后期几次迭代中都表现稳定,精度都保持在1左右。图5为卷积神经网络和改进残差网络的损失值曲线,从图中可以发现,改进的残差网络损失值一直保持较低的水平,而卷积神经网络的初始值为0.26,到第5次迭代之后变为0.05,达到平稳的趋势。从精度和损失值2个指标可以看出,改进残差网络的性能都优于卷积神经网络。查阅资料知Zhao等[15]提出了深度残差收缩网络,通过在残差网络中加入注意力机制来提高模型的精度和减少模型训练时间,通过图6可知,改进的残差网络的准确度与深度残差收缩网络达到持平,证明了文中设计的改进残差网络相比于卷积神经网络在对流量分类上有更好的表现,达到了预期的效果。
随着现代社会的快速发展,网络流量出现井喷式增长,这给网络安全和网络管理带来了新的挑战,对网络流量进行分类,提升网络资源利用率或者识别网络中的一些恶意流量成为当下一个研究热点。文中设计了一种改进的残差网络,在传统残差网络的恒等映射层中引入Conv2D层和BN层,并模拟了卷积神经网络和改进残差网络在公开数据集中的表现,以预测精度和损失值为衡量指标,最终实验证明了改进残差网络有更好的表现。如何通过改进残差网络的架构来弥补数据流量不平衡导致的精度下降和误差仍是今后工作的重点。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!