本发明属于网络攻击检测和深度学习领域,具体涉及物联网环境下基于混合深度学习的网络攻击检测方法。
背景技术:
随着互联网的普及与成熟,物联网技术开始蓬勃发展。物联网可采用无线连接,以降低通信成本。世界从互联网的人与人连接阶段发展到接下去物联网的人与物、物与物连接的时代。互联网与物联网的发展也带来了日益复杂化和智能化的网络攻击。因此对于网络攻击检测的智能性、准确性和实时性的研究与提高已成为一种趋势。
传统的浅层机器学习或统计学为主的网络攻击检测方法尽管发展较为成熟,但是需要人为提取数据特征,其面对日益智能化与多样化的网络攻击,存在严重缺陷,如检测率低,误报率高,漏报率高,不具备高准确度的检测能力。
深度学习的出现弥补了传统机器学习人工提取特征的缺陷,通过强大的算法对数据的特征进行自动化提取,训练复杂的深层模型,保存大量的参数,提高了对网络攻击的检测能力。随着深度学习的不断发展,单一的深度学习算法同样存在一定缺陷,由于单一的模型缺乏足够的多样性,因此会让模型过于复杂,从而导致参数过多,模型训练时间长且收敛速度慢,预测的精度也会降低。
技术实现要素:
本发明针对现有技术的不足,提出了一种物联网环境下基于混合深度学习的网络攻击检测方法,减少深度学习神经网络模型的训练以及测试检测时间,进一步提高在物联网环境下对网络攻击的检测能力。本发明的目的在于提供一种基于混合深度学习的网络攻击检测方法,通过混合深度学习模型,提高在物联网环境下对网络攻击检测的性能,降低物联网受网络攻击的风险。
为解决上述技术问题,本发明的技术方法步骤如下:
物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于,包括如下步骤:
步骤1:构建单一的深度学习模型和混合深度学习模型;
构建simple模型;一层为输出单元为64,激活函数为relu的全连接层,第二层为输出单元为1的全连接层;
构建单一的gru模型,即门控循环神经网络,首先连上5层输出单元为64的gru层,并在每层后跟上dropout层;之后再加一层输出单元为64的gru层和dropout层,输出层为输出单元为1的全连接层;
构建单一的lstm模型,即长短期记忆模型;首先连上5层输出单元为64的lstm层,并在每层后跟上dropout层;之后再加一层输出单元为64的lstm层和dropout层,输出层为输出单元为1的全连接层;
构建混合深度学习模型multi-scalecnn gru,即多尺度cnn与gru混合模型;首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个cnn模型,输出层全连接层,输出形状分别为(30),(20),(20);将这三个cnn模型进行连接,再加上gru层和全连接层,最后输出单元为1;其结构如表1所示;
multi-scalecnn gru
表1
构建混合深度学习模型multi-scalecnn lstm,即多尺度cnn与lstm混合模型;首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个cnn模型,输出层全连接层,输出形状分别为(30),(20),(20);将这三个cnn模型进行连接,再加上lstm层和全连接层,最后输出单元为1;
multi-scalecnn lstm
表2
步骤2:编译所构建的深度学习模型;
每个模型的输出层激活函数,优化器,损失函数,评估指标均一致;即每个模型的输出层激活函数采用sigmoid函数;优化器选择adam优化器;损失函数采用标签交叉熵损失函数;评估指标采用二分类精度算法;simple模型的输入张量形状为(76),而其余模型输入张量形状均为(1,76);
步骤3:使用公开的网络入侵检测数据集的训练集对上述五个模型进行训练;
步骤4:使用数据集的测试集测试训练完成的单一模型和混合模型。
作为优选,所述步骤3包括以下步骤:
步骤3.1:利用通信安全机构和加拿大网络安全研究所合作项目收集的网络入侵数据集cic-ids-2017,将其中protocol字段下的字符值按照类别映射到数值,再进行one-hot编码;将label字段下的benign数据改成0,即正常记录,非benign数据改为1,即异常记录;
步骤3.2:将所有数据进行归一化,从而让各个数据都处于[0,1]之间;归一化算法为:x'=(x-min)/(max-min),其中x为特征属性值,min为x的最小值,max为x的最大值,x'为归一化后的特征属性值;
步骤3.3:将数据集打乱,防止出现前一半为正常数据,后一半为异常数据,从而对模型训练造成偏差,之后拆分成训练集和测试集,之后分别将训练集和测试集的数据存入数据库;
步骤3.4:取出数据库中的训练集,将训练集分割成训练集和验证集,分别对5个模型进行训练,将每个模型的history数据保存在本地,同时将训练后的模型保存在本地。
作为优选,所述步骤4包括以下步骤:
步骤4.1:取出数据库中的测试集,将label特征字段分割出来,为实际结果,用作与预测结果的分析计算;
步骤4.2:分别用同一个测试集去测试上述5个模型,记录预测值;
步骤4.3:计算预测结果和实际结果的差异,得出各项评估指标,包括准确率、误报率和检测率,精准率、召回率和f1-measure,并记录训练和测试的消耗时间,绘制各模型roc曲线。
作为优选,步骤3.3中训练集和测试集比例为7:3。
作为优选,步骤3.4中将训练集以6:4的比例分割成训练集和验证集。
本发明相对于背景技术的优点在于:
①由于多尺度cnn的输入尺寸是不固定的,从而可以提取到尺度多样的数据特征,得到了对网络正常行为和入侵行为更丰富的特征表达,从而提高了网络攻击检测的精确度,降低了误报率和漏报率。
②多层的gru和lstm模型参数较多,训练花费时间较长,而混合深度学习模型因为有多尺度cnn的存在,已经提取到了较深的特征,因此可以减少gru和lstm的层数,从而减少了参数,提高了训练和测试的效率。
附图说明
图1为本发明中技术方案的流程图;
图2为本发明中multi-scalecnn lstm混合模型的结构图;
图3为本发明中multi-scalecnn gru混合模型的结构图;
图4为本发明中5个模型的roc曲线示意图。
具体实施方式
如图1所示,下面结合实施例来对本发明做进一步的描述。
步骤1:构建单一的深度学习模型和混合深度学习模型。
本发明中,通过构建5类模型进行对比试验。
本发明的步骤1包括以下步骤。
步骤1.1:首先构建simple模型,即最简单的单层全连接模型,其目的是参与对比。第一层为输出单元为64,激活函数为relu的全连接层,第二层为输出单元为1的全连接层,如表3所示。
simple
表3
步骤1.2:构建单一的gru模型,即门控循环神经网络。首先连上5层输出单元为64的gru层,并在每层后跟上dropout层,防止因参数过多而造成过拟合。之后再加一层输出单元为64的gru层和dropout层,输出层为输出单元为1的全连接层;如表4所示。
gru
表4
步骤1.3:构建单一的lstm模型,即长短期记忆模型。首先连上5层输出单元为64的lstm层,并在每层后跟上dropout层,防止因参数过多而造成过拟合。之后再加一层输出单元为64的lstm层和dropout层,输出层为输出单元为1的全连接层,如表5所示。
lstm
表5
步骤1.4:构建混合深度学习模型multi-scalecnn gru,即多尺度cnn与gru混合模型。首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个cnn模型,输出层全连接层,输出形状分别为(30),(20),(20)。将这三个cnn模型进行连接,再加上gru层和全连接层,最后输出单元为1。
该模型的结构图如图3和表6所示。
multi-scalecnn gru
表6
步骤1.5:构建混合深度学习模型multi-scalecnn lstm,即多尺度cnn与lstm混合模型。具体方法只需将步骤1.4的gru改为lstm即可。该模型的结构如图2、表7所示。
multi-scalecnn lstm
表7
步骤2:编译步骤1所构建的深度学习模型。
本发明中,在相同条件下的模型编译,使该对比试验的影响因素最少。
本发明的步骤2包含以下步骤:
步骤2.1:每个模型的输出层激活函数,优化器,损失函数,评估指标均一致;
步骤2.2:输出层激活函数采用sigmoid函数,该函数使输出范围有限,优化稳定。优化器选择adam优化器,该优化器参数的更新不受梯度的伸缩变换影响,且无需手动调整参数,可以自动调节学习速率,有效避免陷入局部最小值,适合应用于大规模的数据及参数场景。损失函数采用标签交叉熵损失函数,适用于二分类问题。评估指标采用二分类精度算法。
步骤2.3:simple模型的输入张量形状为(76),而其余模型均为(1,76)。
步骤3:使用公开的网络入侵检测数据集的训练集对上述模型进行训练。
本发明步骤3包含以下步骤:
步骤3.1:利用通信安全机构和加拿大网络安全研究所合作项目收集的网络入侵数据集(cse-cic-ids2017),将其中protocol字段下的字符值按照类别映射到数值,再进行one-hot编码,以消除数值大小所带来的数据噪声;将label字段下的benign数据改成0,即正常记录,非benign数据改为1,即异常记录。
例如protocol字段下有字符值’tcp’和’udp’,则将’tcp’映射为0,’udp’映射为1,再进行one-hot编码,则’tcp’变为[1,0],’udp’变为[0,1]。
步骤3.2:由于各类字段下的数值存在尺度不一致,即范围差距悬殊,因此将数据进行归一化,从而让各个数据都处于[0,1]之间,方便后续的数据处理,也保证了模型运行时能够加快收敛。归一化算法为:x'=(x-min)/(max-min),其中x为特征属性值,min为x的最小值,max为x的最大值,x'为归一化后的特征属性值。因为max-min肯定大于或者等于x-min,且x-min大于0,因此归一化后的x'肯定属于[0,1]。例如一特征列max=10,min=0,则特征属性值6归一化之后为0.6,其处于[0,1]。
步骤3.3:将数据集打乱,防止出现前一半为正常数据,后一半为异常数据,从而对模型训练造成偏差,之后拆分成训练集和测试集,比例为7:3,之后分别将训练集和测试集的数据存入数据库。
步骤3.4:取出数据库中的训练集,将训练集以6:4的比例分割成训练集和验证集,分别对5个模型进行训练,将每个模型的history数据保存在本地,同时将训练后的模型保存在本地。
训练集数据数量为100000,分割之后训练集大小为60000,验证集大小为40000,对5个模型分别训练5轮,即epochs=5,训练完成后将每个模型的history文件和model.h5保存在results文件夹中,方便测试模型时直接导入已训练好的模型。
步骤4:使用数据集的测试集测试训练完成的单一模型和混合模型。
本发明的步骤4包含以下步骤:
步骤4.1:取出数据库中的测试集,将label字段分割出来,用作与预测数据的比较计算;
label字段为0或1,0表示正常,1表示异常。预测数据为0-1范围内的一个浮点数。
步骤4.2:分别用同一个测试集去测试上述5个模型,记录预测值;同一个测试集是为了消除不同测试集对预测结果带来的影响。测试集包含50000个数据。
步骤4.3:计算预测结果和实际结果的差异,得出各项评估指标,例如准确率(acc)、误报率(far)和检测率(dr),精准率(precision)、召回率(recall)和f1-measure,并记录训练和测试的消耗时间,绘制各模型roc曲线。
比较阈值为0.5,若模型预测的数据大于0.5,则为1;若小于0.5,则为0。因为是二元分类,即正常或异常,因此预测有四种结局,即真阳性(tp):检测为异常,实际上也为异常;伪阳性(fp):检测为异常,实际上正常;真阴性(tn):检测为正常,实际上也正常;假阴性(fn):检测为正常,实际上异常。按照该标准来计算模型预测结果的准确率(acc)、误报率(far)和检测率(dr),精准率(precision)、召回率(recall)和f1-measure。
roc曲线展现的是dr和far关系的曲线,适用于评估分类器的整体性能且不会随着样本中的正负样本比例变化而产生明显变化。该5个攻击检测模型的评估指标如下表8所示。
根据lstm与multi-scalecnn lstm和gru与multi-scalecnn gru的各项指标对比可以看出混合模型的各项指标大体上优于单一模型,即准确率、精准度更高,消耗时间更短。multi-scalecnn gru在多项指标上优于其它的四种模型。
通过图4的roc曲线,最优的模型排名大致如下:
1.multi-scalecnn gru
2.lstm
3.multi-scalecnn lstm
4.simple
5.gru
说明混合模型相比单一模型拥有更好的性能。
表8。
1.物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于,包括如下步骤:
步骤1:构建单一的深度学习模型和混合深度学习模型;
构建simple模型;一层为输出单元为64,激活函数为relu的全连接层,第二层为输出单元为1的全连接层;
构建单一的gru模型,即门控循环神经网络,首先连上5层输出单元为64的gru层,并在每层后跟上dropout层;之后再加一层输出单元为64的gru层和dropout层,输出层为输出单元为1的全连接层;
构建单一的lstm模型,即长短期记忆模型;首先连上5层输出单元为64的lstm层,并在每层后跟上dropout层;之后再加一层输出单元为64的lstm层和dropout层,输出层为输出单元为1的全连接层;
构建混合深度学习模型multi-scalecnn gru,即多尺度cnn与gru混合模型;首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个cnn模型,输出层全连接层,输出形状分别为(30),(20),(20);将这三个cnn模型进行连接,再加上gru层和全连接层,最后输出单元为1;其结构如表1所示;
multi-scalecnn gru
表1
构建混合深度学习模型multi-scalecnn lstm,即多尺度cnn与lstm混合模型;首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个cnn模型,输出层全连接层,输出形状分别为(30),(20),(20);将这三个cnn模型进行连接,再加上lstm层和全连接层,最后输出单元为1;
multi-scalecnn lstm
表2
步骤2:编译所构建的深度学习模型;
每个模型的输出层激活函数,优化器,损失函数,评估指标均一致;即每个模型的输出层激活函数采用sigmoid函数;优化器选择adam优化器;损失函数采用标签交叉熵损失函数;评估指标采用二分类精度算法;simple模型的输入张量形状为(76),而其余模型均为(1,76);
步骤3:使用公开的网络入侵检测数据集的训练集对上述五个模型进行训练;
步骤4:使用数据集的测试集测试训练完成的单一模型和混合模型。
2.如权利要求1所述的物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于:所述步骤3包括以下步骤:
步骤3.1:利用通信安全机构和加拿大网络安全研究所合作项目收集的网络入侵数据集cic-ids-2017,将其中protocol字段下的字符值按照类别映射到数值,再进行one-hot编码;将label字段下的benign数据改成0,即正常记录,非benign数据改为1,即异常记录;
步骤3.2:将所有数据进行归一化,从而让各个数据都处于[0,1]之间;归一化算法为:x'=(x-min)/(max-min),其中x为特征属性值,min为x的最小值,max为x的最大值,x'为归一化后的特征属性值;
步骤3.3:将数据集打乱,防止出现前一半为正常数据,后一半为异常数据,从而对模型训练造成偏差,之后拆分成训练集和测试集,之后分别将训练集和测试集的数据存入数据库;
步骤3.4:取出数据库中的训练集,将训练集分割成训练集和验证集,分别对5个模型进行训练,将每个模型的history数据保存在本地,同时将训练后的模型保存在本地。
3.如权利要求2所述的物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于:所述步骤4包括以下步骤:
步骤4.1:取出数据库中的测试集,将label特征字段分割出来,为实际结果,用作与预测结果的分析计算;
步骤4.2:分别用同一个测试集去测试上述5个模型,记录预测值;
步骤4.3:计算预测结果和实际结果的差异,得出各项评估指标,包括准确率、误报率和检测率,精准率、召回率和f1-measure,并记录训练和测试的消耗时间,绘制各模型roc曲线。
4.如权利要求2所述的物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于:步骤3.3中训练集和测试集比例为7:3。
5.如权利要求2所述的物联网环境下基于混合深度学习的网络攻击检测方法,其特征在于:步骤3.4中将训练集以6:4的比例分割成训练集和验证集。
技术总结