王蓉1,马春光2,武朋2

1. 哈尔滨工程大学计算机科学与技术学院,哈尔滨 150001;2. 山东科技大学计算机科学与工程学院,青岛 266590

doi :10.3969/j.issn.1671-1122.2020.04.006

来源:技术研究 2020.04

摘 要:目前基于深度学习的入侵检测算法是入侵检测研究领域的研究热点,但是大多数研究的重点集中在如何改进算法来提高入侵检测的准确率,而忽视了实际中单个机构所产生的有限的标签数据不足以训练出一个高准确率的深度模型的问题。文章提出一种基于联邦学习和卷积神经网络的入侵检测方法,可以通过多个参与方的数据集联合训练模型达到扩充数据量的目的。该方法利用联邦学习框架,设计了基于深度学习的入侵检测模型。首先通过数据填充进行数据维度重构,形成二维数据,然后在联邦学习的机制下利用DCNN 网络进行特征提取学习,最后结合Softmax 分类器训练模型进行检测。实验结果表明,该方法很大程度上减少了训练时间并保持较高的检测率。另外,与一般的入侵检测模型相比,该模型还保证了数据安全隐私。

关键词:入侵检测;联邦学习;深度学习;卷积神经网络

0 引言

入侵检测技术是网络安全中最重要的防御手段之一。近年来,随着机器学习和深度学习算法研究的不断深入,将这些算法引入入侵检测领域成为科研人员的一大研究热点。2017年,YIN[1]等人提出了一种基于递归神经网络(RNN-IDS)的深度学习入侵检测方法,该方法采用的RNN网络有效提高了分类器的准确性,实现了有效的入侵检测。同年,LI[2]等人等提出了将NSL-KDD数据集的41维特征通过独热编码转换为图像,再通过卷积神经网络(CNN)进行训练,其检测率达到了80%。此外,WANG[3]等人提出了基于分层时空特征的入侵检测系统(HAST-IDS),该系统将深度卷积神经网络(DCNN)与长短期记忆网络相结合,其分类效果比传统入侵检测系统的分类效果更佳。2018 年,ZHANG[4] 等人利用去噪自动编码器(DAE)通过加权损失函数来改进入侵检测系统(Intrusion Detection System,IDS)的特征选择,使用UNSW-NB数据集进行实验。实验结果表明,该方法能在达到较高的准确率的同时需要较低的内存和计算能力。同年,AL-QATF[5]等人提出了一种基于STL框架的深度学习方法,该框架由稀疏自编码器(SAE)和支持向量机(SVM)结合而成,极大减少了训练和测试时间,并有效提高了支持向量机的预测精度。虽然深度学习在入侵检测领域有较好的实验效果,但仍然面临以下问题:1)单个机构产生的标签数据数量极其有限,而训练数据对深度学习模型的训练效果有很大影响,因此需要在保证数据安全的情况下扩充数据量;2)网络环境日益复杂对入侵检测的适用性提出了更高的要求;3)大数据时代,是否能够高效处理海量数据决定了入侵检测的效率;4)随着大数据的发展,数据隐私和安全越来越引起公众的重视,如何在保数据安全的前提下进行海量网络数据的模型训练,从而提高模型的训练速度,满足入侵检测的实时性需求,也是亟待解决的重要问题。

近年来,联邦学习的出现使得深度学习模型在高效训练的同时保证了数据的安全与隐私。2019年,NGUYEN[6] 等人提出了一种用于检测受损物联网设备的自主自学习分布式系统,该系统利用一种异常检测方法结合联邦学习,将网络数据包表示为语言中的符号,允许使用语言分析技术有效检测异常。该系统将联邦学习应用到物联网异常检测领域,证实了联邦学习在入侵检测领域的优秀效果。本文提出了基于联邦学习和卷积神经网络(Federated Learning and Convolutional Neural Network,FC)的入侵检测方法,该方法采用一种数据填充方法将数据集重新构建,形成二维矩阵,采用卷积神经网络进行特征提取,并用Softmax进行入侵检测分类。最后将该模型在NSLKDD[7]标准数据集上进行了训练和验证。

1 相关理论

1.1 卷积神经网络

卷积神经网络由卷积层部分和完全连接层部分组成。典型的卷积神经网络如图1所示,主要结构包括卷积层、池化层、全连接层。

1)卷积层

卷积层的作用是从输入数据中提取特征并形成特征图。卷积网络通过将卷积核乘以输入数据来捕获特征映射,然后通过非线性函数激活特征映射[8]。卷积核由随机初始化的权重

和偏置b组成,卷积运算由一个卷积核以滑动窗口的形式实现。卷积运算如公式(1)所示。

其中,

为卷积运算后的特征映射,
为卷积核对应滑动窗口内的数据。

2)池化层

特征提取之后,可以选择添加池化层来减少映射的表示,即对特征进行降维[9]。最大池和平均池是常用的池化层。池化操作是指对局部区域中的所有特征提取该区域的最大值或平均值。最大池和平均池的计算如公式(2)、公式(3)所示。

3)全连接层

将全连接层作为分类器,根据提取的特征进行最终的分类。在全连接层后,所有标签上数据的概率分布由Softmax或Logsoftmax计算,如公式(4)、公式(5)所示。

其中,x 是模型的输入,y 是由j 个元素组成的完全连接层的最终输出结果。

1.2 联邦学习

联邦学习是一种机器学习环境,其目标是在训练一个高质量的集中式模型的同时训练数据仍然分布在大量客户端上。在每一轮训练中,每个客户端根据其本地数据独立计算当前模型的更新,并将此更新传输到中央服务器,在中央服务器聚合客户端更新以计算新的全局模型。

联邦学习是指使数据拥有方在不用给出己方数据的情况下也可进行模型训练并得到模型M_FED的计算过程,并能够保证模型M_FED的效果V_FED与模型M_SUM的效果V_SUM间的差距足够小,即|V_FEDV_SUM |< δ,其中,δ 是任意小的一个正量值。

图2是联邦学习框架结构。在联邦学习机制下,多个用户利用本地数据集进行本地模型训练,通过中心服务器(可靠第三方,如政府机构、安全计算节点等)聚合各个用户模型更新,维持一个最新的全局模型。

2 基于联邦学习和卷积神经网络的入侵检测算法

本文基于NSL-KDD数据集进行网络攻击检测模型训练和验证。与一般的深度学习入侵检测模型相比,联邦学习机制下的分布式入侵检测模型在训练效率和数据安全保障方面有极大的提升,同时分类精度并不会下降。本文提出的基于FC的入侵检测算法主要分为数据预处理、通用模型搭建、FC模型建立3部分,其技术路线图如图3所示。

该算法首先利用数据填充法对归一化的数据进行维度重构;然后利用DCNN进行有效特征学习,通过多个参与方协作进行联邦学习得到全局入侵检测模型;最后通过Softmax分类器进行分类,并验证其正确率和误报率。

2.1 数据预处理

本文使用卷积神经网络算法检测攻击。由于NSLKDD数据集为一维数据序列,因此,数据预处理应将初始数据格式转换为二维矩阵格式。此外,NSL-KDD数据包括符号和数字两种类型,符号数据不能直接送入模型中,需要数值化。因此,数据预处理包括符号数据预处理、数据归一化、将归一化数据转换为二维矩阵格式数据、独热编码4个步骤。

1)符号数据预处理

NSL-KDD数据集中有protocol_type feature、flagfeature、service feature和attack label四类非数值型特征,需要将这4类非数值型特征编码为数值。例如,将protocol_type中的类别‘tcp’、‘udp’、‘icmp’和‘other’分别转换为‘1’、‘2’、‘3’和‘4’。其他非数字特征都用这种方法数字化。

2)数据归一化

数据归一化的优点是可以消除不同维度数据之间的差异,使不同维度的数据规范化后具有可比性。显然,NSL-KDD数据集中的各个特征具有不同的取值域,为了确保训练结果的可靠性,必须将这些特征归一化到[0,1]范围内。本文应用最小最大标准化(Min-maxNormalization)对数据进行归一化处理,如公式(6)所示。

其中,

为原始数据,
为样本数据的最大值,
样本数据的最小值
归一化后的结果。

3)将归一化数据转换为二维矩阵格式数据

由于原始数据是一维向量,而本文采用的卷积神经网络处理的数据类型为二维数据,因此需要将原始数据转化为二维矩阵。本文采用数据填充方法,转化算法相应伪代码如下:

4)独热编码

独热编码即One-Hot编码,又称一位有效编码,其方法是使用N位状态寄存器对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时刻,其中只有一位有效。在机器学习中,回归、分类等方法均可解决混合数据不容易处理的问题。本文对数据标签进行独热编码,攻击类型包括DoS、Probe、U2R、R2L四类,独热编码结果如表1所示。

2.2 深度卷积神经网络

通用模型是基于FC入侵检测框架中最重要的组成模块之一,本文将DCNN网络作为该模型主要框架。DCNN可以自动学习并能够提取出原始数据中最有效的特征表示,其基本结构如图4所示,主要包括卷积层、池化层、Dropout层和全连接层。模型有两个卷积层和池化层堆叠,后接一个全连接层,为了防止过拟合,在其后加入Dropout层,最后连接Softmax分类器。图4 中,2×2×10依次表示卷积核宽度、卷积核高度和卷积核数目。

2.3 基于DCNN 的联邦学习框架

深度学习需要大量有效的标签数据进行特征提取学习。在实际应用中,尽管网络每天产生海量数据,却都是无标签数据,不能直接用于训练模型。另外,对于中小型企业或单位来说,其产生的网络数据很少且数据类型单一。为打破数据孤岛,聚合更多数据,本文采用联邦学习的方法实现多用户的分布式学习。联邦学习是一种通信效率高、隐私保护性好的学习方法,适用于DCNN的分布式优化[10,11]。在联邦学习中,参与方不共享他们的训练数据,而是训练一个本地模型并将模型更新后发送给一个集中的实体进行聚合。设有n个参与方协作训练模型,其所拥有的数据分别为d1, d2,…, dn,各本地模型权重分别为W1,W2,…,Wn,G是全局模型,如公式(7)所示。

其中

联邦学习的训练过程如图5所示。

1)每个参与者从第三方服务器获得初始的DCNN模型;

2)每个参与者用本地数据进行模型训练;

3)参与者将训练几轮后的中间结果上传至第三方服务器;

4)服务器聚合参数并更新全局模型,得到最新模型;

5)将最新的全局模型参数下发到各个参与方;

6)重复步骤2)~步骤5),直到模型收敛,结束训练。

3 实验及分析

3.1 数据集描述

KDDCup 99数据集广泛用于检测算法评估,但其包含大量冗余记录,导致了训练后的模型预测偏向出现更频繁的记录。TAVALLAEE[12]等人通过寻址KDDCup 99 数据集实现了NSL-KDD 数据集。NSLKDD数据集已经被视为基准数据集。

NSL-KDD数据集的每个记录都包含41个特征和1个标签的向量,41个特征可分为基本特征、内容特征、流量特征3类,包括两个较小的组(同一主机功能相同服务功能)。标签标记连接的攻击类型,攻击类型包括DoS、Probe、U2R、R2L四类[13-15]。

NSL-KDD数据集包含KDDTrain、KDDTrain_20%、KDDTest 和KDDTest-21 四个数据集。KDDTrain_20%是KDDTrain 的20%子集,KDDTest-21是不包含标记为21的记录的KDDTest的子集。为了说明基于卷积神经网络算法的模型的准确性和通用性,本文使用了KDDTrain、KDDTest 和KDDTest-21 数据集[16-17]。表2显示了两个数据集中不同类型数据的分布。

3.2 实验环境及评价指标

实验计算机配置为8 GB内存,i5-6500 3.2 GHz处理器,操作系统为Windows 10,实验语言为Python,框架搭建使用Pytorch平台完成。

本文使用查全率(AC)、检出率(DR)和虚报率(FAR)3个指标对FC模型进行评估,其计算公式如公式(9)~公式(11)所示。

其中,TP 表示分类到攻击类中的攻击样本数量,FP 表示错分为攻击类的正常样本数量,FN 表示错分为正常类的攻击样本数量,TN 表示分类为正常类的正常样本数量。因此,当AC、DR 越大,FAR 越小时模型性能越好[18,19]。

3.3 实验结果及分析

3.3.1 实验1

实验1是为了验证将一维入侵检测网络数据转化为二维数据方法的有效性,在KDD数据集上设计实现。该实验设置普通模型和转换模型两个模型,普通模型的输入为41维的原始数据,转换模型的输入是经数据转换方法处理后的7×7的二维矩阵数据。普通模型具有4个隐藏层,第一层具有10个1×3维的卷积核,第二层和第三层分别具有20个1×5维的卷积核,第四层具有20 个1×3维的卷积核。转换模型共有2个隐藏层,第一层有10个2×2维的卷积核,第二层有20个2×2维的卷积核。所有卷积核步长均为1,并且每个卷积层后都有一个池化层,所有池化层的卷积核步长为2。两种模型最后均连接全连接层和分类层。实验结果如表3所示。

由表3可知,与转换模型相比,普通模型训练一轮需要花费更多的时间;普通模型的准确率为78.91%,转换模型的准确率为79.58%。另外,转换模型的计算量为普通模型计算量的1/2。因此,将一维网络数据转换为二维数据的方法不仅提高了模型的精度,还降低了模型的运算成本。

3.3.2 实验2

实验2的目的是确定DCNN模型的深度,具体实验设计如下:设计两个不同深度的卷积神经网络模型,其输入数据为7×7的二维矩阵,模型的隐藏层数分别为1层和2层。表4为两个模型的具体参数设置。

分别对不同层次的模型进行训练和测试,并对准确率和所用时间进行比较分析,从而确定DCNN模型的深度。实验结果如表5所示。

由表5可知,两个层数不同的模型在训练和测试时间上没有明显的差异,但在准确率方面,有2个隐藏层的模型准确率平均提高了1%。对于大规模网络入侵检测来说,准确性和时间同等重要,准确率决定是否可以找到攻击,时间决定是否可以击败攻击。2个隐藏层模型可以满足入侵检测的实时性要求。另外,实验还训练测试了具有3个隐藏层的模型,发现并没有明显的性能提升,说明单纯的增加隐藏层数量对模型性能提升没有太大作用。

3.3.3 实验3

实验3 使用FC 算法构建入侵检测模型,并在NSL-KDD标准数据集上进行多分类实验。实验对数据进行5种分类,包括正常类和DoS、Probe、U2R、R2L四个攻击类。数据预处理方法、通用模型参数设置与实验2相同。为模拟多用户共同参与模型训练,设置该FC模型共有A、B和C三个参与方,将数据集随机分为3部分分别发送给A、B、C三方,并分别在本地训练各自的本地模型。每个参与方都进行20次迭代训练。测试结果如表6所示。由表6可知,两种模型在测试集的准确率方面没有太大差异,在查全率上有所提升,虚报率有所下降,但在训练时间上有明显改善。由于FC模型在训练数据时本地数据不需要输出,只需要传输少量参数,因此在数据安全性方面与其他集中式训练模型相比具有一定优势。由表7的混淆矩阵可以看出,本文方法有很好的检测性能。

4 结束语

为了提高复杂网络环境下入侵检测系统的性能,本文提出了基于联邦学习和DCNN的入侵检测方法,利用联邦学习框架使得多方协作参与,在提高标签数据数量的同时保证了本地数据的安全性。通过DCNN可以自动提取数据特征,更高效地学习到网络数据特征,提高入侵检测准确率。本文提出的基于FC的入侵检测模型可以极大减少训练时间,同时保证数据的安全与隐私,多个参与方协作训练可以得到性能更好的模型。

参考文献:

卷积神经网络训练准确率突然下降_基于联邦学习和卷积神经网络的入侵检测方法...相关推荐

  1. 卷积神经网络训练准确率突然下降_从MobileNet看轻量级神经网络的发展

    前 言 随着深度学习的火热,计算机视觉领域内的卷积神经网络模型也层出不穷.从1998年的LeNet,到2012年引爆深度学习热潮的AlexNet,再到后来2014年的VGG,2015年的ResNet, ...

  2. 卷积神经网络训练准确率突然下降_详解卷积神经网络:手把手教你训练一个新项目...

    作者:Tirmidzi Aflahi 原文链接:https://thedatamage.com/convolutional-neural-network-explained/Tirmidzi Afla ...

  3. 获取预制体_基于弱磁探测技术的轴承滚动体转速检测方法研究

    摘要 针对高速轻载轴承保持架打滑测试中滚动体速度检测的难题,利用弱磁探测技术探测滚动体的弱磁场,并通过提取弱磁信号的特征频率实现滚动体转速的测量.搭建了测试平台进行试验,分析了测试距离与转速对滚动体弱 ...

  4. 点云的无序性_基于深度学习的激光雷达点云物体识别方法总结

    0. 前言: 激光雷达作为自动驾驶不可或缺的传感器,随着价格不断下降,各种基于深度学习的模型也层出不穷(坐等马斯克打脸); 激光雷达物体识别的任务: 输入: 激光点云(x, y, z, intensi ...

  5. 基于噪声学习的卷积降噪自动编码器用于图像去噪

    python tensorflow1.14实现 卷积降噪自动编码器用于图像去噪,这个博客主要是借鉴了DnCNN用于图像去噪的方式,论文可以直接搜到(https://arxiv.org/pdf/1608 ...

  6. 目标检测YOLO实战应用案例100讲-基于深度学习的光学遥感图像目标检测及价值评估

    目录 基于深度学习的光学遥感图像目标检测方法研究 传统的目标检测方法

  7. 基于python的入侵检测系统毕设_基于深度学习的射频指纹的物联网设备入侵检测...

    摘要:物联网(IoT)和4G/5G无线网络增加了大量设备和新服务,商用现货(COTS)物联网设备得到了广泛部署.为了确保具备无线传输能力的这些系统的安全运作,射频(RF)监视对于监视它们在RF频谱中的 ...

  8. 研究型论文_基于流量异常分析多维优化的入侵检测方法

    文章目录 基于流量异常分析多维优化的入侵检测方法 论文摘要 论文解决的问题 1.基于遗传算法的数据抽样优化算法 2.基于相关分析的特征选择优化算法 3.模型 总结 基于流量异常分析多维优化的入侵检测方 ...

  9. 研究型论文_基于双层异质集成学习器的入侵检测方法

    文章目录 基于双层异质集成学习器的入侵检测方法 论文摘要 论文解决的问题 1.模型体系结构 2.数据降维 3.交叉验证策略 4.分类评估算法 5.多分类器集成算法 6.总结 参考文献 基于双层异质集成 ...

最新文章

  1. 远程桌面的分辨率最大不会超过本机真实物理机的分辨率
  2. Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)
  3. 在制造业中推进机器人技术的五种方法
  4. halcon/c++接口基础 之内存管理
  5. 每日英语:Five Really Dumb Money Moves You've Got to Avoid
  6. npm命令Error: EINVAL: invalid argument, mkdir
  7. java学习笔记之DBUtils工具包
  8. 遥感数字图像处理------第二章---数字图像存储与读取
  9. LINUX使用C执行系统命令ping,读取执行结果的崩溃日志
  10. c语言编程我爱你红色代码,C语言告白代码,一闪一闪亮晶晶~
  11. gd32f450 linux,GD32F450开发板初体验
  12. 三菱PLC项目案例学习之PLC控制伺服或步进电机带动丝运行案例
  13. 51单片机60秒倒计时 数码管显示
  14. Win10计算机默认排序,win10系统文件夹自动排列怎么取消?win10文件夹不自动排列设置方法...
  15. C语言学习:合数和质数的判断
  16. MIUI——添加学校邮箱到电子邮件解决方案
  17. 基于java的药店管理系统的设计与实现
  18. 计算机应用教程第9,计算机应用教程
  19. 网站渗透测试工作三年总结报告
  20. 安卓代替系统默认电话应用

热门文章

  1. 腾讯广告算法大赛 | 复赛第一周周冠军心得分享
  2. java植树问题代码,小学数学最难的13种典型题,让孩子吃透了,拿高分不难!
  3. 深圳大学二本计算机软件,深圳大学是几本(深圳大学是一本还是二本)
  4. Facebook广告账号主页创建时,其实还有这些小知识!
  5. [APIO2017]商旅——分数优化+floyd+SPFA判负环+二分答案
  6. python批量读取文件赋值给一个参数_求助一个Python 循环读取文件,并对读到的字符串进行赋值,然后进一步生成json file 的方法。...
  7. HTML 如何禁用缓存
  8. [JS基础] 之类型判断
  9. 在Tomcat 与weblogic 中的 日志(log4j) 配置系列三(log文件的存放路径)
  10. [Ext JS4] 数据包