一种基于CNN_LSTM的网络流量异常检测方法技术

技术编号:26763183 阅读:21 留言:0更新日期:2020-12-18 23:21
本发明专利技术公开了一种基于CNN_LSTM的网络流量异常检测方法,对数据集进行预处理,处理结束后针对样本数量采用分布不均问题,使用Smote技术过采样,然后采用一维卷积神经网络(CNN)的方法进行特征提取,利用深度学习中长短期记忆网络(LSTM)来训练数据,当损失函数满足条件时终止训练,得到训练好的模型,本发明专利技术采用的一维卷积神经网络对网络流量这种序列数据进行特征提取,实用性较,同时对恶意流量检测有较好的效果,准确率高,误报率较低。

【技术实现步骤摘要】
一种基于CNN_LSTM的网络流量异常检测方法
本专利技术涉及一种基于CNN_LSTM的网络流量异常检测方法,属于机器学习

技术介绍
通过监控网络流量包或系统日志,自动高效检测恶意流量是网络安全的重要保障,目前国内外已经有很多工作来检测恶意流量。主要有传统的方法和基于机器学习的方法,这两种方法都有特征提取这一阶段。传统的方法主要是安全专家研究不同攻击类别的特点,为特征设定一个较为合理的阈值;机器学习的方法是基于给定的模型从数据集中自动学习恶意流量的模式。随着深度学习在语音识别、文本分析等方面的广泛应用,深度学习模型在从大规模数据集中的学习潜力受到了越来越多的关注,有很多安全人员将其应用到网络入侵检测的研究中,取得了不错的效果。CNN一般由卷积层、池化层、全连接层组成,卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。把所有局部特征结合变成全局特征,用来计算最后每一类的得分。RNN(包括但不限于LSTM)在时序数据中性能较好的原因是其全局化处理和memory(hidden)cell。全局化表示完整的输入才能包含所有信息,只看一部分(局部化)可能丢失信息从而导致建模失效;memorycell保留每一步的信息来动态调整下一步。BLSTM由于有双向信息全局化优势更加明显,所以很多非因果的系统里BLSTM性能常常能达到非常好的性能。全局化处理在例如翻译之类的任务里非常重要,因为少了一个词意思可能就完全不一样了,CNN等局部化或感受野不够大的结构可能会直接失效。
技术实现思路
专利技术目的:为了克服普通机器学习的方法在复杂网络中由于其结构较为单一无法使用,本专利技术提供一种基于CNN_LSTM的网络流量异常检测方法,选用复杂网络结构更加复杂的深度学习方法。CNN在特征提取方面有很好的特性,LSTM在序列数据方面有较为成熟的应用,通过将CNN和LSTM结合,解决了卷积神经网络只能学习局部特征但无法处理较长信息的长期依赖问题,加入LSTM可以利用网络流量的时序性,对恶意流量检测有较好的效果。技术方案:为实现上述目的,本专利技术采用的技术方案为:一种基于CNN_LSTM的网络流量异常检测方法,对NSL_KDD数据集进行预处理,采用卷积神经网络(CNN)的方法进行特征提取,利用深度学习中长短期记忆网络(LSTM)来训练数据,当损失函数满足条件时终止训练,将训练好的模型在测试集进行测试,具体包括以下步骤:步骤1:采集网络流量相关数据形成数据集,并对数据集进行预处理:步骤1-1:数据集中有些字段是非数值的形式,如协议类型字段(TCP,UDP,ICMP)、目标主机的网络服务类型(http,Telnet,whois,ftp,netstat等等),模型的输入只接受数值型的输入,因此将数据集中非数值的字段通过机器学习模块sklearn中LabelEncoder()函数将非数值型的数据处理成数值型的形式。步骤1-2:数据集中有缺失值时要补上,要不会导致算法不收敛,训练没有意义。步骤1-3:数据集中涉及到的攻击类型,比如Dos攻击、SQL注入攻击、僵尸网络、恶意软件、暴力破解等等,本专利技术做的是二分类,因此将数据集中的攻击流量和正常流量分别标记为1和0。将标签和其他特征属性分开存放。步骤1-4:数据集中数值属性有较大的量级差异,经常导致机器学习模型表现不佳,为了更好更快的让模型收敛,需要对数据进行标准化,在这里通过sklearn模块中的Normalizer函数对数据集中的数据进行正则化处理。步骤1-5:将数据集中的数据采用reshape()方法转变为模型的输入维度。步骤2:Smote过采样步骤2-1:首先从步骤1得到的数据集中少数类的全部样本中找到样本的k个近邻。步骤2-2:从这k个近邻中随机选择一个样本,生成一个0到1之间的随机数,从而生成一个新的样本。步骤2-3:重复步骤2-2,合成多个样本。步骤3:通过合成的多个样本对CNN_LSTM模型进行训练:步骤3-1:CNN在特征提取方面有良好特性,循环神经网络CNN包括依次连接的输入层、卷积层、池化层、全连接层,用relu函数作为激活函数,池化层的主要目的是在保留有用信息的基础上减少数据处理量,加快模型的训练速度,这里将池化层大小设置为2。这里区别于其他文献所用的地方在于,本专利技术采用的是一维卷积,这样更好的利用网络流量的时序特性。为了防止模型过拟合,加入dropout层。步骤3-2:循环神经网络(RNN)擅长处理序列数据,为了防止模型训练过程中出现梯度消失和梯度爆炸问题,选用LSTM模型,LSTM模型是紧跟在循环神经网络CNN后面,LSTM和RNN相比,其隐藏层加入了门机制和一个细胞状态的更新,门机制包括遗忘门、输入门、输出门,遗忘门、输入门、输出门结合当前输入信息和上一状态的输出到一个sigmoid函数中,sigmoid函数会输出0到1之间的值,0表示不许通过,1表示允许任意值通过。输入门决定当前时刻的输入信息哪些需要保留到记忆单元中。遗忘门决定从记忆单元中丢弃哪些信息。输出门决定需要输出的信息。步骤4:通过sigmoid函数进行分类。步骤5:训练阶段用binary_crossentropy作为损失函数,优化算法选用adam。步骤6:测试集测试,评估模型性能。优选的:步骤1-2对于缺失值采用取众数的方法进行填充。优选的:步骤3-1中循环神经网络CNN采用一维卷积,滤镜个数设置为48个,滤镜的大小为3。优选的:LSTM模型输出大小为70。本专利技术相比现有技术,具有以下有益效果:1、网络流量正常流量的数量明显多于异常流量,为了更好地训练模型,本文对正负样本不平衡问题,采用smote过采样技术增加了负样本的数量,这样解决了类不平衡的问题。2、利用卷积神经网络进行特征提取,比凭人工经验进行特征选择要靠谱,CNN能够从低级特征中迭代提取更复杂的特征,网络流量更适合用一维卷积去处理;3、网络流量这种序列数据可以利用LSTM的时序特性。附图说明图1是模型图。图2是流程图。图3是模型评估图,横坐标是模型预测label,纵坐标是实际的label。图4是LSTM的内部结构图。具体实施方式下面结合附图和具体实施例,进一步阐明本专利技术,应理解这些实例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读了本专利技术之后,本领域技术人员对本专利技术的各种等价形式的。一种过采样的CNN_LSTM的网络流量异常检测方法,如图1、2所示,包括数据预处理、过采样、模型训练和测试阶段,在NSL_本文档来自技高网
...

【技术保护点】
1.一种基于CNN_LSTM的网络流量异常检测方法,其特征在于,包括以下步骤:/n步骤1:采集网络流量相关数据形成数据集,并对数据集进行预处理:/n步骤1-1:将数据集中非数值的字段通过机器学习模块sklearn中LabelEncoder()函数将非数值型的数据处理成数值型的形式;/n步骤1-2:对数据集中有缺失值数据进行填充补上;/n步骤1-3:将数据集中的攻击流量和正常流量分别标记为1和0;将标签和其他特征属性分开存放;/n步骤1-4:通过机器学习模块sklearn中的Normalizer()函数对数据集中的数据进行正则化处理;/n步骤1-5:将数据集中的数据采用reshape()函数转变输入维度;/n步骤2:Smote过采样/n步骤2-1:首先从步骤1得到的数据集中少数类的全部样本中找到样本的k个近邻;/n步骤2-2:从这k个近邻中随机选择一个样本,生成一个0到1之间的随机数,从而生成一个新的样本;/n步骤2-3:重复步骤2-2,合成多个样本;/n步骤3:通过合成的多个样本对CNN_LSTM模型进行训练:/n步骤3-1:循环神经网络CNN包括依次连接的输入层、卷积层、池化层、全连接层,卷积层采用一维卷积,用relu函数作为激活函数;/n步骤3-2:选用LSTM模型,LSTM模型是紧跟在卷积神经网络CNN后面,LSTM模型相比RNN,其隐藏层加入了门机制和一个细胞状态的更新,门机制包括遗忘门、输入门、输出门,遗忘门、输入门、输出门结合当前输入信息和上一状态的输出到一个sigmoid函数中,sigmoid函数会输出0到1之间的值,0表示不许通过,1表示允许任意值通过;输入门决定当前时刻的输入信息哪些需要保留到记忆单元中;遗忘门决定从记忆单元中丢弃哪些信息;输出门决定需要输出的信息;/n步骤4:通过sigmoid函数进行分类;/n步骤5:训练阶段用binary_crossentropy作为损失函数,优化算法选用adam;/n步骤6:测试集测试,评估模型性能。/n...

【技术特征摘要】
1.一种基于CNN_LSTM的网络流量异常检测方法,其特征在于,包括以下步骤:
步骤1:采集网络流量相关数据形成数据集,并对数据集进行预处理:
步骤1-1:将数据集中非数值的字段通过机器学习模块sklearn中LabelEncoder()函数将非数值型的数据处理成数值型的形式;
步骤1-2:对数据集中有缺失值数据进行填充补上;
步骤1-3:将数据集中的攻击流量和正常流量分别标记为1和0;将标签和其他特征属性分开存放;
步骤1-4:通过机器学习模块sklearn中的Normalizer()函数对数据集中的数据进行正则化处理;
步骤1-5:将数据集中的数据采用reshape()函数转变输入维度;
步骤2:Smote过采样
步骤2-1:首先从步骤1得到的数据集中少数类的全部样本中找到样本的k个近邻;
步骤2-2:从这k个近邻中随机选择一个样本,生成一个0到1之间的随机数,从而生成一个新的样本;
步骤2-3:重复步骤2-2,合成多个样本;
步骤3:通过合成的多个样本对CNN_LSTM模型进行训练:
步骤3-1:循环神经网络CNN包括依次连接的输入层、卷积层、池化层、全连接层,卷积层采用一维卷积,用relu函数作为激活函数;
步骤3-2:选用LSTM模型,LSTM模型是紧跟在卷积神经网络CNN后面...

【专利技术属性】
技术研发人员:马明艳陈伟
申请(专利权)人:南京邮电大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1