[0045] 如图1所示,下面结合实施例来对本发明做进一步的描述。
[0046] 步骤1:构建单一的深度学习模型和混合深度学习模型。
[0047] 本发明中,通过构建5类模型进行对比试验。
[0048] 本发明的步骤1包括以下步骤。
[0049] 步骤1.1:首先构建SIMPLE模型,即最简单的单层全连接模型,其目的是参与对比。第一层为输出单元为64,激活函数为ReLU的全连接层,第二层为输出单元为1的全连接层,如表3所示。
[0050] SIMPLE
[0051]
[0052] 表3
[0053] 步骤1.2:构建单一的GRU模型,即门控循环神经网络。首先连上5层输出单元为64的GRU层,并在每层后跟上Dropout层,防止因参数过多而造成过拟合。之后再加一层输出单元为64的GRU层和Dropout层,输出层为输出单元为1的全连接层;如表4所示。
[0054] GRU
[0055]
[0056]
[0057] 表4
[0058] 步骤1.3:构建单一的LSTM模型,即长短期记忆模型。首先连上5层输出单元为64的LSTM层,并在每层后跟上Dropout层,防止因参数过多而造成过拟合。之后再加一层输出单元为64的LSTM层和Dropout层,输出层为输出单元为1的全连接层,如表5所示。
[0059] LSTM
[0060]
[0061]
[0062] 表5
[0063] 步骤1.4:构建混合深度学习模型Multi‑Scale CNN+GRU,即多尺度CNN与GRU混合模型。首先对输入张量进行形状变换,分别为(1,76),(2,38),(4,19),由这三个输入张量分别构建三个CNN模型,输出层全连接层,输出形状分别为(30),(20),(20)。将这三个CNN模型进行连接,再加上GRU层和全连接层,最后输出单元为1。
[0064] 该模型的结构图如图3和表6所示。
[0065] Multi‑Scale CNN+GRU
[0066]
[0067]
[0068] 表6
[0069] 步骤1.5:构建混合深度学习模型Multi‑Scale CNN+LSTM,即多尺度CNN与LSTM混合模型。具体方法只需将步骤1.4的GRU改为LSTM即可。该模型的结构如图2、表7所示。
[0070] Multi‑Scale CNN+LSTM
[0071]
[0072]
[0073] 表7
[0074] 步骤2:编译步骤1所构建的深度学习模型。
[0075] 本发明中,在相同条件下的模型编译,使该对比试验的影响因素最少。
[0076] 本发明的步骤2包含以下步骤:
[0077] 步骤2.1:每个模型的输出层激活函数,优化器,损失函数,评估指标均一致;
[0078] 步骤2.2:输出层激活函数采用Sigmoid函数,该函数使输出范围有限,优化稳定。优化器选择Adam优化器,该优化器参数的更新不受梯度的伸缩变换影响,且无需手动调整参数,可以自动调节学习速率,有效避免陷入局部最小值,适合应用于大规模的数据及参数场景。损失函数采用标签交叉熵损失函数,适用于二分类问题。评估指标采用二分类精度算法。
[0079] 步骤2.3:SIMPLE模型的输入张量形状为(76),而其余模型均为(1,76)。
[0080] 步骤3:使用公开的网络入侵检测数据集的训练集对上述模型进行训练。
[0081] 本发明步骤3包含以下步骤:
[0082] 步骤3.1:利用通信安全机构和加拿大网络安全研究所合作项目收集的网络入侵数据集(CSE‑CIC‑IDS2017),将其中Protocol字段下的字符值按照类别映射到数值,再进行one‑hot编码,以消除数值大小所带来的数据噪声;将Label字段下的BENIGN数据改成0,即正常记录,非BENIGN数据改为1,即异常记录。
[0083] 例如Protocol字段下有字符值’tcp’和’udp’,则将’tcp’映射为0,’udp’映射为1,再进行one‑hot编码,则’tcp’变为[1,0],’udp’变为[0,1]。
[0084] 步骤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]。
[0085] 步骤3.3:将数据集打乱,防止出现前一半为正常数据,后一半为异常数据,从而对模型训练造成偏差,之后拆分成训练集和测试集,比例为7:3,之后分别将训练集和测试集的数据存入数据库。
[0086] 步骤3.4:取出数据库中的训练集,将训练集以6:4的比例分割成训练集和验证集,分别对5个模型进行训练,将每个模型的history数据保存在本地,同时将训练后的模型保存在本地。
[0087] 训练集数据数量为100000,分割之后训练集大小为60000,验证集大小为40000,对5个模型分别训练5轮,即epochs=5,训练完成后将每个模型的history文件和model.h5保存在results文件夹中,方便测试模型时直接导入已训练好的模型。
[0088] 步骤4:使用数据集的测试集测试训练完成的单一模型和混合模型。
[0089] 本发明的步骤4包含以下步骤:
[0090] 步骤4.1:取出数据库中的测试集,将Label字段分割出来,用作与预测数据的比较计算;
[0091] Label字段为0或1,0表示正常,1表示异常。预测数据为0‑1范围内的一个浮点数。
[0092] 步骤4.2:分别用同一个测试集去测试上述5个模型,记录预测值;同一个测试集是为了消除不同测试集对预测结果带来的影响。测试集包含50000个数据。
[0093] 步骤4.3:计算预测结果和实际结果的差异,得出各项评估指标,例如准确率(ACC)、误报率(FAR)和检测率(DR),精准率(Precision)、召回率(Recall)和F1‑Measure,并记录训练和测试的消耗时间,绘制各模型ROC曲线。
[0094] 比较阈值为0.5,若模型预测的数据大于0.5,则为1;若小于0.5,则为0。因为是二元分类,即正常或异常,因此预测有四种结局,即真阳性(TP):检测为异常,实际上也为异常;伪阳性(FP):检测为异常,实际上正常;真阴性(TN):检测为正常,实际上也正常;假阴性(FN):检测为正常,实际上异常。按照该标准来计算模型预测结果的准确率(ACC)、误报率(FAR)和检测率(DR),精准率(Precision)、召回率(Recall)和F1‑Measure。
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101] ROC曲线展现的是DR和FAR关系的曲线,适用于评估分类器的整体性能且不会随着样本中的正负样本比例变化而产生明显变化。该5个攻击检测模型的评估指标如下表8所示。
[0102] 根据LSTM与Multi‑Scale CNN+LSTM和GRU与Multi‑Scale CNN+GRU的各项指标对比可以看出混合模型的各项指标大体上优于单一模型,即准确率、精准度更高,消耗时间更短。Multi‑Scale CNN+GRU在多项指标上优于其它的四种模型。
[0103] 通过图4的ROC曲线,最优的模型排名大致如下:
[0104] 1.Multi‑Scale CNN+GRU
[0105] 2.LSTM
[0106] 3.Multi‑Scale CNN+LSTM
[0107] 4.SIMPLE
[0108] 5.GRU
[0109] 说明混合模型相比单一模型拥有更好的性能。
[0110]
[0111]
[0112] 表8