基于改进VGG16 神经网络的异常检测模型研究

2020-12-07 06:46王浩雨
现代计算机 2020年30期
关键词:灰度分辨率卷积

王浩雨

(西南交通大学信息科学与技术学院,成都611756)

0 引言

近年来,随着互联网的快速发展,Web 服务给人们带来越来越多的便利。同时,由于一些互联网开发人员缺乏安全意识,网络安全事件也在不断发生。依据2018 年赛门铁克公司发布的《互联网安全威胁报告》[1],基于每日分析超过千万个网络请求,每13 个网络请求中就会有一个网络攻击请求,相比2016 年的数据,上涨了3%。入侵检测是抵御网络攻击的重要手段,其常用的两种方法为误用检测和异常检测。

误用检测基于规则库对请求进行检测,但随着Web 攻击方法在不断增加,误用检测需要不断对知识库进行更新,负责维护知识库的人员学习成本较高。而对于未知的网络攻击请求,误用检测的检测成功率较低。异常检测基于统计分析和数据挖掘的方法对数据的特征进行提取,如果对于某个网络请求不能表现出正常请求所具有的特征,则将它归类为异常请求。只要构建出恰当的异常检测模型,对请求的检测成功率就较高。

国内外专家学者基于异常检测技术对网络请求进行检测,取得了很多研究成果。Nguyen 等人[2]使用支持向量机完成了基于HTTP 协议的异常检测。Fiore 等人[3]使用半监督学习的方法,基于受限的玻尔兹曼机用于搭建异常检测模型,并取得了不错的效果。张晴[4]基于改进后的隐马尔科夫模型,提升了对网络安全态势识别方面的精确度。李景超[5]基于改进后的K 聚类算法,对入侵检测系统的报警信息过多问题进行了研究,并取得了不错的改进效果。刘敬等人[6]使用SVM 算法对异常检测技术进行了研究。Zolotukhin 等人[7]使用K 聚类算法对网络正常访问行为进行了相关的描绘,完成了相应的异常检测实验。Walsh R 与Livadas C[8]基于贝叶斯分类器对IRC(Internet Relay Chat)进行检测,并取得了不错的效果。

在人工智能领域,深度学习在不断快速发展,其最大的特点是其复杂函数的表示能力和数据表征的学习能力,这为深度神经网络应用在异常检测模型中提供了可能。本文构建了改进VGG16 神经网络的异常检测模型,并取得了较好的检测效果。

1 算法实现

1.1 现存问题

常用于异常检测的算法包括决策树、LSTM 与SVM 等,这些算法的检测效果在很大程度上依赖人工挑选特征值的情况。卷积神经网络随着计算机计算能力的提高在近些年取得了飞速的发展,卷积神经网络实现了高维度空间的特征表,改进了非线性空间的网络结构提取属性间的内在关系,规避了因人工提取特征而出现的冗余性与考虑不足等问题。VGG16 卷积神经网络由Oxford 大学的科研人员在ILSVRC2014 比赛中提出的一种深度学习算法,并在当年的图像分类比赛中取得了第二名的好成绩。本文提出了一种改进VGG16 的异常检测模型,通过将网络请求数据转为流量灰度图,并输入到模型完成检测。该异常检测模型在传统VGG16 卷积网络的基础上,基于2 标签的Soft⁃max 分类器来代替原VGG16 神经网络的Softmax 分类器,使用RMS 的方法对模型的学习率进行优化,基于微型迁移学习来共享预训练模型中卷积层与池化层的参数,该模型改进了全连接层的数量与结构,适用于异常检测模型的分类特点,分类结果更加准确并提高了训练效率。

1.2 VGG16深度神经网络

VGG16 是一种前馈神经网络,其特点是使用3×3的卷积核在卷积层进行运算。作为前馈神经网络[9],各层神经元结点从输入层开始,来接收前一层神经元结点所传递来的数据和信息,对这些数据与信息进行处理并输出,VGG16 深度神经网络是单向多层结构,其结构由图1 所示。

图1 VGG16深度神经网络结构

它具有16 个卷积层,在每一个卷积层的运算之后,会紧接一个ReLU 激活函数进行计算,同时有四个最大池化层穿插在其中。全连接层共有三个,最后的Softmax 层用于分类,数量为1000。

卷积层的目的是将输入图片的主要特征进行提取,如公式(1):

y是卷积层的输出结果,W 是卷积核,Matrix 为灰度图矩阵,*表示卷积核与灰度图矩阵进行卷积运算,Bias 表示偏置值。卷积运算后的结果需要进入激活函数进行计算,常用的激活函数[10]有Relu、Tanh 和Sig⁃moid,VGG16 所使用的激活函数为Relu,Relu 使网络引入非线性因素,使网络具有稀疏性,有效减少过拟合现象的产生,如公式(2):

在池化层运算中,其主要目的是将图片的特征进一步提取,并减少参数。常用的池化方法包含两种,最大池化与平均池化。VGG16 模型所使用的池化方法为最大池化,其池化框的尺寸为2×2,步长为2,如公式(3):

在公式中,0≤n≤N,0≤m≤M,M 与N 的值分别是输入图像二维向量的长和宽,最大池化运算是在选定的图像区域中,选择最大的值来作为池化层的运算结果。Softmax 层的目的是解决分类问题,Softmax 所需的分类数必须不小于2,假设其训练集样本为k 个标记过的样本,如公式(4):

在公式中,其分类标签为y(i)∈{1,2,…k} ,其样本的集合是x(j),i 为不同的类别,并估算i 的概率值,样本集中每个样本其第k 类标签的概率为:

将回归样本转变为概率变量,维度是k,则其推导后如公式(6)所示:

VGG16 模型的学习参数表达式如公式(7):

每种分类的总和概率为1,如公式(8)所示。样本集中的样本需要不断进行训练与学习,Softmax 基于迭代训练不断更新数据的拟合曲线,模型的损失函数公式为:

调整参数α,使模型达到最小误差。1{y(j) =i} 的含义为如果y(j)=i,则其值为1,在其他的情况下,其值为0。通过模型损失函数的迭代与计算,参数将进一步优化,直到小于指定误差或达到最大迭代次数为止。

1.3 模型的不足与优化

在VGG16 卷积神经网络中,每一层网络的权重和结点值都需要进行训练,包含三个全连接层,而前两个全连接层每层都拥有多达4096 个结点,造成全连接层的训练时间过长,同时全连接层也可能会破坏输入图片的空间结构。Softmax 分类层可分类的数量为1000,并不符合异常检测二分类的特点。

本文对传统VGG16 模型进行改进,提出改进VGG16 神经网络的异常检测模型,如图2 所示。

图2 改进后的VGG16异常检测模型

首先,传统的VGG16 深度卷积神经网络是基于ImageNet 图片数据集训练而成,拥有十分强大的特征学习能力,特别是卷积层对于输入图片的曲线、边缘和轮廓的提取,在每一层中都拥有已经训练好的参数和权重。本文将训练好的ImageNet 模型作为预训练模型,使用迁移学习将原模型的卷积层参数移植到本模型。其次,异常检测模型的输出分类结果为异常与正常,改进后的模型使用二分类的Softmax 来代替原网络的Softmax 分类层。第三,针对异常检测的特点对原模型全连接层进行改进,将一个128 结点的全连接层替代原模型的前两个全连接层。第四,为了加快模型的训练速度同时保证模型准确率,学习率的优化方法采用RMS(Root Mean Square),此方法进一步优化了损失函数在更新过程中所存在的摆动幅度过大的问题,并加快了函数的收敛速度,RMS 算法对偏置和权重使用了微分平分加权平均数的方法。

2 训练结果与分析

2.1 数据集

数据集选择为ISCX2012,此数据集是由纽布伦斯威克大学所开发出的网络安全数据集,数据集内包含不同形式的攻击请求与正常请求,网络攻击请求包括强化SSH、HTTP 拒绝服务、分布式拒绝服务等,数据集格式为Wireshark 的文件存储格式Pcap。本文使用Python 的依赖包Scapy 将原始的Pcap 格式数据集转为XML 文件格式,图3 所示为一条正常网络请求的XML文件。

图3 ISCX2012数据集中的一条请求(XML格式)

2.2 训练环境

深度学习模型的训练对环境要求较高,本模型的实验环境为MAC OS Mojave 10.14.6,最大内存容量为16GB,CPU 型号为英特尔酷睿i5 8259U,四核心八线程处理器。模型的训练使用Python3.7,编程软件选择Anaconda4.3.1,后端框架为 Keras2.2.5 与 Tensor⁃Flow1.14,使用不同版本的依赖和框架可能会存在程序无法运行以及不兼容等问题。

2.3 训练过程

模型训练过程如图4 所示,挑选出数据集中的60000 条数据,15000 条为测试集,45000 条为训练集,训练集中有随机数量的正常与异常请求。

图4 模型的训练过程

之后对训练集进行数据预处理,基于Matplotlib 将训练集中的每一条数据转为流量灰度图。在训练过程中,将数据转为256×256,128×128 以及75×75 三种分辨率的流量灰度图输入到异常检测模型进行训练并比较,来确定哪一种分辨率的流量灰度图会得到更好的效果,图5 所示为随机选取两个分辨率为75×75 的流量灰度图。

图5 分辨率为75×75的流量灰度图

改进后的VGG16 模型池化层和卷积层的参数采用Image-Net 模型中预训练好的值,训练过程中,冻结了池化层与13 个卷积层的参数,只训练一个Softmax层和一个全连接层的参数,这样既可保证模型的准确率也可加快模型训练速度。基于Keras 的VGG 神经网络训练框架,设置epoch 的值是2,batch-size 的值为40,迭代次数为3000,模型的误差函数选择为交叉熵(Cross Entropy),基于Model 模块的Summary 函数可对VGG16 模型的各层神经网络结构进行可视化,表1 所示为模型中各层结构与参数(以流量灰度图分辨率75×75 为例)。

2.4 仿真检测实验及结果

训练完成后,如图6 所示为不同输入图像分辨率下的误差情况,共计进行迭代3000 次。图像分辨率为256×256 和128×128 时,效果并不理想。当输入图像的分辨率为75×75 时,进行到2800 次迭代时,模型能达到最小误差。

表1 VGG16 结构及参数情况

图6 不同图像分辨率下的误差情况

如图7 所示为模型的准确率情况。分辨率为128×128 和256×256 的输入图像在迭代次数为2500 次时,达到最高准确率大约为75%,而流量灰度图分辨率为75×75 时,在经历2850 次迭代后,准确率达到91%。综合模型准确率和模型误差的分析,因此流量灰度图分辨率为75×75 时,模型的训练效果最佳。

图7 不同图像分辨率下的准确率情况

在训练集中,依旧采用流量灰度图分辨率为75×75时所训练的模型,因异常检测模型为二分类模型,因此采用F1分数作为模型的评价标准,F1值兼顾了模型的召回率与准确率,公式如下:

如表2 所示为本模型对测试集的预测情况。

表2 测试集预测情况

测试集共15000 条数据进入模型测试,正常请求12620 条,异常请求2380 条,预测正确的正常请求为11098 条,预测错误的正常请求为1522 条,预测正确的异常请求为1730 条,预测错误的异常请求为650 条。模型的精确率为94.47%,召回率为87.94%,F1值为91.1%。模型取得了较好的训练结果。

3 结语

网络安全在近年来受到了人们的重视,良好的异常检测模型可对网络请求进行检测。本文在传统VGG16 算法基础上进行改进,基于微型迁移学习将Image Net 模型中卷积层与池化层参数迁移至改进模型,将全连接层个数改为2,其结点个数更符合异常检测模型,学习率优化方法改为RMS。通过ISCX2012数据集对改进后的算法进行训练,取得了较好的训练效果。

猜你喜欢
灰度分辨率卷积
航空滤光片阵列多光谱图像条带灰度调整算法
基于全卷积神经网络的猪背膘厚快速准确测定
采用改进导重法的拓扑结构灰度单元过滤技术
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
天津港智慧工作平台灰度发布系统和流程设计
好画质不局限于分辨率 探究爱普生4K PRO-UHD的真面目
Arduino小车巡线程序的灰度阈值优化方案
ARM发布显示控制器新品重点强化对分辨率的支持