发明内容
本发明目的:在于提供一种基于二次特征提取的网络流量异常检测方法及***,通过使用双向长短期记忆网络学习网络流量数据之间的特征关系,完成网络流量数据的一次特征提取,并在此基础上,定义一种基于注意力机制的特征重要性权重评估规则,依据特征重要性大小对双向长短期记忆网络生成的特征向量给予相应的权重,完成数据的二次特征提取。最后,提出一种“先总分后细分”的设计思想构建网络流量数据检测模型,实现多分类网络流量数据的异常检测。本发明有效提高了网络流量数据异常检测的准确率、精确率、召回率和F1值,并且该模型并且具有良好的泛化能力。
为实现以上功能,本发明设计一种基于二次特征提取的网络流量异常检测方法,执行以下步骤S1-步骤S6,构建并训练异常网络流量数据检测模型,并应用训练好的异常网络流量数据检测模型,完成各待检测网络流量数据的检测:
执行如下步骤S1-步骤S4,构建异常网络流量数据检测待训练模型:
步骤S1:分别采集各种类的网络流量数据样本,包括正常网络状态下的正常网络流量数据样本和各预设类型异常网络状态下的异常网络流量数据样本;
步骤S2:分别对各网络流量数据样本进行预处理,预处理包括数据清洗、数值化、归一化,以经过预处理的各网络流量数据样本构建网络流量数据集;
步骤S3:构建双向长短期记忆网络-注意力机制二次特征提取模型,以网络流量数据集中的各网络流量数据作为双向长短期记忆网络的输入,基于双向长短期记忆网络对各网络流量数据进行特征提取,获得各网络流量数据的特征向量,以各种类的网络流量数据的特征向量所组成的总特征向量作为双向长短期记忆网络的输出;其中,针对双向长短期记忆网络的每一层加入批归一化算法,以使双向长短期记忆网络保持输入的网络流量数据分布的一致性;
基于注意力机制,计算各网络流量数据与总特征向量之间的相关性,即针对总特征向量中的各特征向量赋予相应的权重,通过计算总特征向量中的各特征向量的加权和,获得各网络流量数据对应的重要特征;
步骤S4:基于softmax分类器函数,对步骤S3所获得的重要特征进行二层分类,第一层分类为二分类,将各网络流量数据中的正常网络流量数据、异常网络流量数据分开;第二层分类为多分类,将各异常网络流量数据按照其所属的各预设类型进行分类;
步骤S5:基于步骤S1-步骤S4所构建的异常网络流量数据检测待训练模型,以各网络流量数据样本为输入,以各网络流量数据样本所对应的正常或异常分类结果,以及各异常网络流量数据样本所对应的预设类型为输出,对异常网络流量数据检测待训练模型进行训练,获得训练好的异常网络流量数据检测模型;
步骤S6:应用异常网络流量数据检测模型,针对实时输入的各待检测网络流量数据,完成各待检测网络流量数据的异常检测,针对待检测网络流量数据中的异常网络流量数据,根据预设类型对其进行分类。
作为本发明的一种优选技术方案:步骤S3的具体步骤如下:
步骤S31:将经过步骤S2预处理的网络流量数据集X={x1,x2,…,xt,…,xn}输入双向长短期记忆网络,其中xt为网络流量数据集X中第t个网络流量数据,n为网络流量数据总数,双向长短期记忆网络通过更新门信息对各网络流量数据进行特征提取,具体如下式:
双向长短期记忆网络由一个前向LSTM层和一个后向LSTM层组成,两个LSTM层分别为从左到右处理序列、从右到左处理序列,式中,
分别为输入x
t所对应的前向LSTM层、后向LSTM层的输出,/>
分别代表网络隐藏层的参数,/>
分别为前向LSTM层、后向LSTM层的偏置值,W
U和W
V分别是对应于前向和后向矩单位状态的权重系数,C
t为双向长短期记忆网络输出的特征向量;
步骤S32:针对双向长短期记忆网络的每一层加入批归一化算法,以使双向长短期记忆网络保持输入的网络流量数据分布的一致性,具体如下式:
yn=μx′n+ρ
式中,x
n为归一化前的值,x
n∈{x
1,x
2,…,x
z},z为归一化前的值的总数,x′
n为归一化后的值,μ和ρ为学习的参数,γ
ρ为均值,
为方差,τ为预设数值的正数,以避免除数为0;
步骤S33:计算网络流量数据xn与特征向量Ct之间的相关性,采用softmax分类器函数对相关性进行归一化,获得特征向量Ct与网络流量数据之间的权重ot,具体如下式:
步骤S34:通过计算总特征向量中的各特征向量的加权和,获得网络流量数据的重要特征M,具体如下式:
M=∑otCt。
作为本发明的一种优选技术方案:步骤S4中基于softmax分类器函数,对步骤S3所获得的重要特征进行二层分类,二层分类计算过程如下式:
y=softmax(KhM+qh)
式中,M为重要特征,Kh、qh为可训练的参数,y为二层分类的分类结果。
本发明还设计一种基于二次特征提取的网络流量异常检测***,包括计算模块、存储模块、输入模块、输出模块,以实现所述的一种基于二次特征提取的网络流量异常检测方法;
其中,输入模块用于接收各种类的网络流量数据,输出模块用于显示异常网络流量数据检测模型输出的检测结果;存储模块用于存储各种类的网络流量数据,以及异常网络流量数据所对应的各预设类型;
计算模块包括数据获取模块、数据预处理模块、训练模块、异常检测模块、恢复备份模块,所述数据获取模块用于调取输入模块所接收的各网络流量数据,数据预处理模块对各网络流量数据进行预处理,训练模块用于构建并训练异常网络流量数据检测模型,异常检测模块用于应用异常网络流量数据检测模型,对实时的网络流量数据进行异常检测,并形成检测报告,恢复备份模块用于对网络流量数据进行统一恢复和备份。
有益效果:相对于现有技术,本发明的优点包括:
1、本发明构建了一种基于双向长短期记忆网络(BiLSTM)的特征提取模型。使用双向长短期记忆网络模型来提取网络流量数据特征,并且在模型中加入了批量归一化(BatchNormalization,BN)算法,在保持数据分布一致性的同时提高了网络收敛的速度。
2、本发明设计了一种基于注意力机制的特征重要性权重评估规则。考虑到直接使用双向长短期记忆网络生成的特征向量进行流量异常检测,不能给予数据的重要特征更高的关注度,检测的效率会大大降低。因此,本发明通过使用注意力机制,并且依据特征重要性大小对双向长短期记忆网络生成的特征向量给予相应的权重,完成数据的二次特征提取,大大提高了网络流量异常检测的准确率。
3、本发明提出了一种面向不均衡数据的网络流量异常检测方法。传统的过采样和欠采样方法在处理数据分布不均衡问题上,存在少数类样本的过拟合和多数类样本的重要信息丢失等问题。因此,本发明提出一种“先总分后细分”的设计思想构建网络流量异常检测模型,通过先将异常网络流量作为一个整体,优先检测出正常网络流量,再进一步细分检测出剩余的不同异常类型的网络流量,从而实现多分类网络流量的异常检测,解决了数据集分布不均衡而导致对小样本流量数据检测效率低的问题。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
参照图1,本发明实施例提供的一种基于二次特征提取的网络流量异常检测方法,执行以下步骤S1-步骤S6,构建并训练异常网络流量数据检测模型,并应用训练好的异常网络流量数据检测模型,完成各待检测网络流量数据的检测:
执行如下步骤S1-步骤S4,构建异常网络流量数据检测待训练模型:
步骤S1:分别采集各种类的网络流量数据样本,包括正常网络状态下的正常网络流量数据样本和各预设类型异常网络状态下的异常网络流量数据样本;
步骤S2:分别对各网络流量数据样本进行预处理,预处理包括数据清洗、数值化、归一化,以经过预处理的各网络流量数据样本构建网络流量数据集;
网络流量数据集中各预设类型的异常网络流量数据样本见表1:
表1
表1中数据标签0代表正常网络流量数据样本、数据标签1-11分别代表各预设类型的异常网络流量数据样本。
所述预处理所包括的数据清洗、数值化、归一化具体方法如下:
数据清洗:由于网络流量数据样本是从真实的网络环境中抓取的,所以存在无效网络流量数据样本的可能性非常大。本发明删除无效网络流量数据样本,以提高实验结果的准确性。另外从原始网络流量数据样本中提取的特征有80多个,其中包括了IP地址、协议、端口号等特征,但这些特征并不是所需要的,所以发明将这些不需要的特征字段删除,最终保留了流持续时间、在正向上包的数量、在反向上包的数量、正向数据包的总大小、包在正向上的最大大小等75个网络流量数据特征。
数值化:采用one-hot方法将字符型特征转化为数值型特征。
归一化:即对数值进行缩放,使其落入一个预设区间,使不同的特征都具有相同的量级,便后续的计算处理。本发明利用max-min归一化方法将网络流量数据样本线性化在[0,1]区间上,具体公式如下:
其中,x′是归一化处理后的网络流量数据样本特征值,x是归一化处理前的网络流量数据样本特征值,xmax是网络流量数据样本特征值的最大值,xmin是网络流量数据样本特征值的最小值。
步骤S3:构建双向长短期记忆网络-注意力机制二次特征提取模型(BiLSTM-Attention),以网络流量数据集中的各网络流量数据作为双向长短期记忆网络(BiLSTM)的输入,基于双向长短期记忆网络对各网络流量数据进行特征提取,获得各网络流量数据的特征向量,以各种类的网络流量数据的特征向量所组成的总特征向量作为双向长短期记忆网络的输出;
其中双向长短期记忆网络是由一个前向长短期记忆网络(LSTM)和一个后向长短期记忆网络组合而成的,可以对网络流量数据进行高级抽象和非线性变换,分析双向数据信息,提供更细粒度的计算,使用双向长短期记忆网络可以获得网络流量数据之间的特征关系,提取的特征向量更加精确。
针对双向长短期记忆网络的每一层加入批归一化算法(Batch Normalization,BN),以使双向长短期记忆网络保持输入的网络流量数据分布的一致性;
在训练的过程中,前一层训练参数的更新将导致后一层输入网络流量数据分布的变化。以双向长短期记忆网络第二层为例:网络的第二层输入,是由第一层的参数和输入计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入网络流量数据分布的改变。所以,本发明在双向长短期记忆网络的每一层加入批归一化算法,以使双向长短期记忆网络保持输入的网络流量数据分布的一致性;
基于注意力机制,计算各网络流量数据与总特征向量之间的相关性,即针对总特征向量中的各特征向量赋予相应的权重,通过计算总特征向量中的各特征向量的加权和,获得各网络流量数据对应的重要特征;
本发明设计了一种基于注意力机制的特征重要性权重评估规则。考虑到直接使用双向长短期记忆网络生成的特征向量进行网络流量数据异常检测,不能给予网络流量数据的一些重要特征更高的关注度,检测的效率会大大降低。计算各网络流量数据与总特征向量之间的相关性,得到每种网络流量数据的重要特征(相关性权重系数越高,说明该特征越重要),将这些相关性权重系数高的特征相加就可以得到每种网络流量数据的特征。在下面的异常检测中,就不会产生因为网络流量数据之间的特征相似性较高而产生误报的结果。
步骤S3的具体步骤如下:
步骤S31:将经过步骤S2预处理的网络流量数据集X={x1,x2,…,xt,…,xn}输入双向长短期记忆网络,其中xt为网络流量数据集X中第t个网络流量数据,n为网络流量数据总数,双向长短期记忆网络通过更新门信息对各网络流量数据进行特征提取,具体如下式:
双向长短期记忆网络结构图参照图2,双向长短期记忆网络由一个前向LSTM层和一个后向LSTM层组成,两个LSTM层分别为从左到右处理序列、从右到左处理序列,式中,
分别为输入x
t所对应的前向LSTM层、后向LSTM层的输出,/>
分别代表网络隐藏层的参数,/>
分别为前向LSTM层、后向LSTM层的偏置值,W
U和W
V分别是对应于前向和后向矩单位状态的权重系数,C
t为双向长短期记忆网络输出的特征向量;
步骤S32:由于在使用双向长短期记忆网络分析网络流量数据后,网络中的网络流量数据分布会发生变化。为了解决此问题,本发明在使用双向长短期记忆网络的基础上引入了批归一化(BN)算法进行一次特征提取。将前一层的输入网络流量数据经过激活函数的非线性变换后进行归一化,保证网络的可训练性,并使网络能够持续保持输入网络流量数据分布的一致性,从而减少变化网络中的节点分布。BN算法可以加快网络的收敛速度,保持网络的表示能力。
针对双向长短期记忆网络的每一层加入批归一化算法,以使双向长短期记忆网络保持输入的网络流量数据分布的一致性,具体如下式:
yn=μx′n+ρ
式中,x
n为归一化前的值,x
n∈{x
1,x
2,…,x
z},z为归一化前的值的总数,x′
n为归一化后的值,μ和ρ为学习的参数,γ
ρ为均值,
为方差,τ为预设数值的正数,以避免除数为0。
由于每种网络流量数据之间的某些特征可能会相同,例如DoS Hulk和DoSSlowhttp这两种网络流量数据都有流持续时间特征,但是此特征对检测出该种网络流量数据的帮助却是不一样的,如果模型不能对这些特征区别对待,那么模型就会产生误报,检测的准确率就会降低,影响异常检测效果。因此,本发明提出基于注意力机制的特征重要性权重评估规则实现数据的二次特征提取,通过对网络流量数据的特征给予不同的权重值,可以使模型更加关注网络流量数据的重要特征,对网络流量数据的次要特征给予较低的关注度,从而在异常检测时能够提高检测效率。具体方法如步骤S33-步骤S34。
步骤S33:计算网络流量数据xn与特征向量Ct之间的相关性,采用softmax分类器函数对相关性进行归一化,获得特征向量Ct与网络流量数据之间的权重ot,具体如下式:
步骤S34:通过计算总特征向量中的各特征向量的加权和,获得网络流量数据的重要特征M,具体如下式:
M=∑otCt。
无论是在民用还是军事领域中,网络中异常网络流量数据的占比都是较小的。但是研究人员在进行网络流量数据异常检测时,如果不对这些异常网络流量数据进行处理,那么模型就会出现对大样本的检测效率高而对小样本检测效率低的情况。针对异常网络流量数据存在数据不均衡的问题,本发明提出了一种“先总分后细分”的设计思想构建异常网络流量数据检测模型。通过先将各异常网络流量数据作为一个整体,优先检测出正常网络流量数据,再进一步细分检测出剩余的异常网络流量数据分别所属的各预设类型,从而实现多分类网络流量数据的异常检测。这样可以使得数据集处于一个相对平衡的状态,不会对异常检测效果产生较大的影响。具体方法如步骤S4。
步骤S4:基于softmax分类器函数,对步骤S3所获得的重要特征进行二层分类,第一层分类为二分类,将各网络流量数据中的正常网络流量数据、异常网络流量数据分开;第二层分类为多分类,将各异常网络流量数据按照其所属的各预设类型进行分类;
参照图3,该步骤提出一种“先总分后细分”的设计思想构建异常网络流量数据检测模型,通过先将异常网络流量数据作为一个整体,优先检测出正常网络流量数据,再进一步细分检测出剩余的各异常网络流量数据分别所属的各预设类型,从而实现多分类网络流量数据的异常检测。通过不断训练,完成异常网络流量数据检测模型的建立。
步骤S4中基于softmax分类器函数,对步骤S3所获得的重要特征进行二层分类,二层分类计算过程如下式:
y=softmax(KhM+qh)
式中,M为重要特征,Kh、qh为可训练的参数,y为二层分类的分类结果。
步骤S5:基于步骤S1-步骤S4所构建的异常网络流量数据检测待训练模型,以各网络流量数据样本为输入,以各网络流量数据样本所对应的正常或异常分类结果,以及各异常网络流量数据样本所对应的预设类型为输出,对异常网络流量数据检测待训练模型进行训练,获得训练好的异常网络流量数据检测模型;
步骤S6:应用异常网络流量数据检测模型,针对实时输入的各待检测网络流量数据,完成各待检测网络流量数据的异常检测,针对待检测网络流量数据中的异常网络流量数据,根据预设类型对其进行分类。
本发明的一个实施例如下:
本实施例采用的数据集是CICIDS2017数据集,该数据集是加拿大网络安全研究所于2017年开源的入侵检测和入侵防御数据集。其中,Benign表示正常网络流量数据样本,其余流量类型表示网络流量数据样本。使用80%数据集作为训练集,20%作为测试集。实施例中涉及的参数如下:使用的单次训练样本数batch-size为256,训练轮数epochs为100,学习率为0.0001,采用的是AdamOptimizer优化器,均方误差来计算训练过程的成本。使用2层BiLSTM层,每层结点为256个,其中每一层都采用了Batch Normalization机制使得每一个训练过程都保持同分布性。
为了验证本发明所提出的方法的有效性,首先进行了消融实验,即对比有无注意力机制对实验带来的影响,然后使用二分类实验检测正常网络流量数据样本和异常网络流量数据样本,最后使用多分类实验检测出异常网络流量数据样本所属的各预设类型。同时设置了通过比较本发明所提出的方法与LSTM、BiLSTM、自适应提升算法(AdaptiveBoosting,Adaboost)、多层感知器(Multilayer Perceptron,MLP)算法作为对比。
(1)有无注意力机制前后对比
为了验证注意力机制对异常网络流量数据检测模型性能的影响,本发明做了有无注意力机制的消融实验,实验结果如表2所示。
表2
从表2可以看出,引入注意力机制后,异常网络流量数据检测模型的准确性、精确率、召回率分别提高了1.35%、1.5%和1.21%,说明了注意力机制对整体模型有着重要的贡献。注意力机制可以让异常网络流量数据检测模型更加关注对检测和分类更加重要的特征,例如,对Dos GlodenEye这种异常网络流量数据样本而言,后向数据包长度标准差、流到达时间最小值、前向流到达时间最小值、流到达时间平均值是用来检测的最佳特征,注意力机制给予它们不同的关注度,可以提高检测准确率。
(2)异常检测结果
在二分类实验中,此模型检测出了68493个正常网络流量数据样本,43507个异常网络流量数据样本。接下来进行多分类实验,将这43507个异常网络流量数据样本分类出具体异常类型。具体实验结果如图4a-图4d所示,本发明提出的异常网络流量数据检测模型的准确率达到了99.88%,精确率为99.93%,召回率为99.83%,F1值为0.9988,性能都优于对比模型。由于本发明进行了两次特征提取,可以获得更加重要的分类特征,是使得模型效率高的重要原因。
接下来验证本发明提出的“先总分后细分”的设计思想进行异常网络流量数据检测的方法,和未使用面向不均衡数据的异常网络流量数据检测模型的方法进行对比。图5a-图5c分别表示了10种异常网络流量数据样本在精确率、召回率值、F1值三项指标上的结果。从图中可以看出,本发明所提出的“先总分后细分”的设计思想进行异常网络流量数据检测的方法,在精确率、召回率值、F1值都要优于直接进行“细分”的检测方法。此外从图5a-图5c中还可以看出,本发明提出的异常网络流量数据检测模型检测Dos Slowhttp、DosSlowloris、SSH Patator、FTP Patator、Web Attack、BotNet六种异常网络流量数据样本时,得到的准确率、召回率值、F1值要远高于未使用本发明模型的方法。这是因为这六种异常网络流量数据样本在数据集中的占比十分稀少,如果直接对这些异常网络流量数据样本进行检测就会导致模型对大样本检测效率高而对小样本检测效率低的情况。本发明提出的这种“先总分后细分”的设计思想构建的异常网络流量数据检测模型,通过先将异常网络流量数据样本作为一个整体,优先检测出正常网络流量数据样本,再进一步细分检测出剩余的异常网络流量数据样本分别所属的各预设类型,这样可以使得数据集处于一个相对平衡的状态,模型不会对大样本数据敏感而忽略小样本。
综上,本发明提出的“先总分后细分”的设计思想进行异常网络流量数据检测的方法,先二分类方法将网络流量数据样本检测出正常和异常,再使用多分类的方法细分出异常网络流量数据样本类型,有效避免了异常网络流量数据样本分布不均衡而导致检测效果差的问题。因此,本发明提出的方法对于异常检测具有重要的意义。
(3)验证泛化能力
为了验证泛化能力,本发明使用CICIDS2017中不同的子数据集作为测试数据,分别为P1~P6,并且和LSTM模型进行了比较,如表3所示。
表3
从表3中可以看出,本发明模型准确率的均值为99.52%,精确率的均值为99.51%,召回率的均值为98.98%,F1-Score的均值为99.24%,本发明提出的模型的性能比LSTM的性能高得多,因此该模型的泛化能力较好。由于本发明使用BiLSTM模型来提取流量数据之间的特征关系,而不是仅仅学习单个流量本身的特征,利用网络流量数据样本之间的特征关系进行异常网络流量数据检测,可以提高模型的表征能力。表征能力和泛化能力是呈正相关的,模型的表征能力越好,说明提取的特征向量更加精确,在不同的数据子集上进行异常检测时,模型的检测效率会大大提高,泛化能力也因此提升。
综上所述,本发明提供的方法在异常网络流量数据检测方面的有效性和优越性;以及该方法能够有效的处理不均衡的异常网络流量数据样本,训练基于深度学习的异常网络流量数据检测模型,提升检测异常网络流量数据样本的能力,具有实际意义。
图6为本发明提供的面向网络***的异常网络流量数据检测模型图,本发明通过从网络***采集到的网络流量数据,使用基于BiLSTM-Attention的网络模型进行二次特征提取,结合提出的面向不均衡数据的异常网络流量数据检测框架,从而使得异常网络流量数据检测能力大幅度提升。
本发明实施例还提供一种基于二次特征提取的网络流量异常检测***,参照图7,包括计算模块、存储模块、输入模块、输出模块,以实现所述的一种基于二次特征提取的网络流量异常检测方法;
其中,输入模块用于接收各种类的网络流量数据,输出模块用于显示异常网络流量数据检测模型输出的检测结果;存储模块用于存储各种类的网络流量数据,以及异常网络流量数据所对应的各预设类型,另外,存储设备的规格需满足大容量数据的读写要求,保证设备在处理大规模网络异常数据时,能快速有序运转;
计算模块是基于二次特征提取的网络流量异常检测***的核心,参照图8,计算模块包括数据获取模块、数据预处理模块、训练模块、异常检测模块、恢复备份模块,所述数据获取模块用于调取输入模块所接收的各网络流量数据,数据预处理模块对各网络流量数据进行预处理,进行原始网络流量数据的数据清洗、数值化和归一化,删除无用的特征信息,统一数据类型,使不同的特征都具有相同的量级,便后续的计算处理;训练模块用于构建并训练异常网络流量数据检测模型,异常检测模块用于应用异常网络流量数据检测模型,对实时的网络流量数据进行异常检测,并形成检测报告,恢复备份模块用于对网络流量数据进行统一恢复和备份。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。