基于值导数GRU的入侵检测算法
技术领域
本发明涉及一种入侵检测算法,尤其是一种基于值导数GRU的入侵检测算法。
背景技术
基于数据挖掘技术的入侵检测算法借助数据挖掘技术能够有效地处理大量数据,并且成功提取数据特征的优点,通过将数据挖掘同入侵检测算法进行融合,使得入侵检测更加自动化。但是,相较于基于值导数GRU的入侵检测算法而言,基于数据挖掘技术的入侵检测算法虽然取得快速发展,但是远远无法达到投入实际应用的程度,并且基于数据挖掘技术的入侵检测算法尚未具备完善的理论体系。
基于机器学习技术的入侵检测算法通过将机器学习同入侵检测算法进行融合,可以有效地学习入侵攻击的行为特征,保证社会生产生活的安全。但是,相较于基于值导数GRU的入侵检测算法而言,基于机器学习技术的入侵检测算法的根本问题在于无法摆脱对于特征工程的依赖。也就是说,基于机器学习技术的入侵检测算法的优劣很大程度上取决于特征提取技术的好坏。
基于深度学习技术的入侵检测算法利用深度学习针对分类的需求,通过高层和抽象的形式能够强化原始数据的分类能力,同时削弱原始数据中与分类不相关的特征分量的优势,将神经网络同入侵检测算法进行融合,有效地提高检测效率和检测准确度。但是,相较于基于值导数GRU的入侵检测算法而言,基于深度学习技术的入侵检测算法仅仅照搬已经成功应用在其他领域(例如计算机视觉、自然语言处理)的深度学习理论,没有考虑网络安全领域自身的特点,包括网络攻击动态变化、网络流量随机等,导致基于深度学习技术的入侵检测算法的检测效果无法取得类似其他领域的显著效果。
发明内容
本发明为基于值导数GRU的入侵检测算法。在数学中,导函数(或称导数)用于描述某一函数在定义域上每一点的变化趋势。也就是说,导函数可以定量地反映函数在定义域上每一点的局部变化程度。因此,函数与导函数的乘积(我们称之为值导数)可以反映函数在定义域上每一点的绝对变化程度。正是基于值导数这个数学概念,因此提出了基于值导数GRU的入侵检测算法。
为了实现上述目的,本发明创造采用的技术方案为:基于值导数GRU的入侵检测算法,其特征在于,步骤如下:
1)值导数GRU的隐层单元结构:
1.1)隐层单元引入一阶状态变化:st-1⊙(dst-1/dt),用于描述时间步t时网络流量的一阶动态变化,保证更新门ut和重置门rt能够定量地控制可以通过的网络流量:当网络空间遭受攻击时,伴随着网络异常流量的持续增加,一阶状态变化的值将显著增长,更新门ut和重置门rt的激活程度随之增大,进而定量地保留大部分网络流量;当网络空间正常运行时,由于内部几乎不存在网络异常流量,一阶状态变化的值将趋于平稳且接近于0,更新门ut和重置门rt的激活程度随之减小,进而定量地保留小部分网络流量;
1.2)隐层单元引入n阶状态变化:(dn-1st-1/dn-1t)⊙(dnst-1/dnt),用于描述时间步t时网络流量的高阶动态变化,进而捕获网络流量的高阶动态变化信息;
1.3)隐层单元引入累计状态变化:∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt),用于同时描述时间步t时网络流量的低阶和高阶动态变化,进而同时捕获网络流量的低阶和高阶动态变化信息;
2)值导数GRU的池化层单元结构:对于时间步t,与之关联的值导数GRU隐层单元的输出向量完全输入池化层,基于值导数GRU算法的池化层使用每个时间步t的输出向量的总体特征代替最后一个时间步的输出向量的局部特征,通过保留所有时间步的输出向量对应位置的最大元素,池化层获得最佳匹配结果;
3)值导数GRU算法的训练:
由此,值导数GRU捕捉网络异常流量的动态信息变化。
所述的步骤1)中,在值导数GRU隐层单元中,时间步t时更新门ut和重置门rt的计算公式为:
其中,xt表示时间步t的输入,st-1表示时间步t-1的隐层状态,st表示时间步t的隐层状态,ut表示时间步t的更新门,rt表示时间步t的重置门;
更新门ut和重置门rt均选取函数sigmoid作为激活函数,输出一个[0,1]之间的值,用于表示更新门ut和重置门rt的激活程度,当函数sigmoid输出值0时,更新门ut和重置门rt不允许任何网络流量信息通过;当函数sigmoid输出值1时,更新门ut和重置门rt允许所有网络流量信息通过;当函数sigmoid输出一个(0,1)之间的值时,更新门ut和重置门rt选择记忆一部分网络流量信息,遗忘另一部分网络流量信息;
在时间步t时,隐层状态st的计算公式为:
St=ut⊙st-1+(1-ut)⊙ct (3)
其中,ct表示时间步t的候选隐层状态,其计算公式如下:
ct=tanh(Wsc(rt⊙st-1)+Wxcxt+bc) (4)
重置门rt侧重于保留上一隐层状态st-1,更新门ut侧重于忽略上一隐层状态st-1以及保留候选隐层状态ct,更新门ut和重置门rt共同决定隐层状态st;
在公式(1)、(2)、(3)、(4)中,W**表示权重矩阵:Wxu,Wxr,Wxc分别表示输入单元到更新门、重置门以及隐层单元的权重矩阵,Wsu,Wsr,Wsc分别表示隐藏单元到更新门、重置门以及隐层单元的权重矩阵;b*表示偏置:bu,br,bc分别表示更新门、重置门以及隐层单元的偏置;
此外,在公式(1)、(2)中,分别设置n个矩阵W(1) xu,W(2) xu,……,W(n) xu和W(1) xr,W(2) xr,……,W(n) xr用于控制一阶状态变化st-1⊙(dst-1/dt),二阶状态变化(dst-1/dt)⊙(d2st-1/d2t),……,n阶状态变化(dn-1st-1/dn-1t)⊙(dnst-1/dnt)的权;在值导数GRU算法的训练过程中,权重矩阵W(1) x*,W(2) x*,……,W(n) x*随之动态更新,进而动态控制更新门ut和重置门rt的激活程度,保证值导数GRU算法能够动态捕获网络异常流量的低阶或高阶动态变化信息;通过捕获这些不同的累计状态变化,值导数GRU算法能够判定相应的网络异常流量;由此值导数GRU算法是基于动态更新的权重矩阵W(1) x*,W(2) x*,……,W(n) x*和不尽相同的累计状态变化∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt)完成入侵检测。
所述的步骤2)中,具体采用max函数作为池化层函数,池化层向量计算公式如下:
其中,vs表示所有时间步的输出向量的第s个位置的最大元素,sts表示时间步t的输出向量的第s个位置的元素。
本发明创造的有益效果为:本发明通过上述方法,提供了一种基于值导数GRU能够有效的捕获网络异常流量的动态变化信息的入侵检测算法。
附图说明
图1:值导数GRU的隐层单元结构。
图2:池化层结构。
具体实施方式
基于值导数GRU的入侵检测算法,具体包括以下步骤:
1)值导数GRU的隐层单元结构:
网络流量拥有自相似性、周期性的静态特征和可变性、突变性的动态特征,呈现出一种随机、不可预测的混沌状态。基于GRU的入侵检测算法通过利用循环连接的GRU隐层单元,能够学习网络流量,进而可以记忆网络流量的完整静态信息。然而,隐层单元结构决定了GRU算法只能控制网络流量的流动,无法捕获网络流量的动态变化信息。因此,构建基于值导数GRU的入侵检测算法时,要求值导数GRU算法既考虑网络流量的静态信息,又考虑网络流量的动态变化信息。通过捕获网络流量的静态和动态信息,提高值导数GRU算法网络异常流量的检测准确率。
值导数GRU隐层单元结构如图1所示。其中,xt表示时间步t的输入,st-1表示时间步t-1的隐层状态,st表示时间步t的隐层状态,ut表示时间步t的更新门,rt表示时间步t的重置门。通过在隐层单元内部增设更新门ut和重置门rt两个门控系统,值导数GRU算法可以选择性地记忆或遗忘网络流量。也就是说,当网络流量流入隐层单元时,更新门ut和重置门rt可以独立地控制是否可以通过以及可以通过多少网络流量。
为了保证更新门ut和重置门rt能够定量地控制可以通过的网络流量,隐层单元引入一阶状态变化st-1⊙(dst-1/dt),用于描述时间步t时网络流量的一阶动态变化。当网络空间遭受攻击时,伴随着网络异常流量的持续增加,一阶状态变化的值将显著增长,更新门ut和重置门rt的激活程度随之增大,进而能够定量地保留大部分网络流量;当网络空间正常运行时,由于内部几乎不存在网络异常流量,一阶状态变化的值将趋于平稳且接近于0,更新门ut和重置门rt的激活程度随之减小,此时仅仅可以定量地保留小部分网络流量。
我们把一阶状态变化st-1⊙(dst-1/dt)作为一个核心因素来控制网络流量的信息流动,能够保证基于值导数GRU的入侵检测算法可以有效地捕获网络流量的动态变化信息。此外,n阶状态变化(dn-1st-1/dn-1t)⊙(dnst-1/dnt)可以描述时间步t时网络流量的高阶动态变化,通过引入n阶状态变化,值导数GRU算法能够有效地捕获网络流量的高阶动态变化信息。更进一步,累计状态变化∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt)可以同时描述时间步t时网络流量的低阶和高阶动态变化,通过引入累计状态变化,值导数GRU算法可以同时捕获网络流量的低阶和高阶动态变化信息。
在值导数GRU隐层单元中,时间步t时更新门ut和重置门rt的计算公式为:
更新门ut和重置门rt均选取函数sigmoid作为激活函数,输出一个[0,1]之间的值,用于表示更新门ut和重置门rt的激活程度。也就是说,当函数sigmoid输出值0时,更新门ut和重置门rt不允许任何网络流量信息通过;当函数sigmoid输出值1时,更新门ut和重置门rt允许所有网络流量信息通过;当函数sigmoid输出一个(0,1)之间的值时,更新门ut和重置门rt选择记忆一部分网络流量信息,遗忘另一部分网络流量信息。
在时间步t时,隐层状态st的计算公式为:
st=ut⊙St-1+(1-ut)⊙ct
(3)
其中,ct表示时间步t的候选隐层状态,其计算公式如下:
ct=tanh(Wsc(rt⊙st-1)+Wxcxt+bc) (4)
重置门rt侧重于保留上一隐层状态st-1,更新门ut侧重于忽略上一隐层状态st-1以及保留候选隐层状态ct,更新门ut和重置门rt共同决定隐层状态st。
在公式(1)、(2)、(3)、(4)中,W**表示权重矩阵:Wxu,Wxr,Wxc分别表示输入单元到更新门、重置门以及隐层单元的权重矩阵,Wsu,Wsr,Wsc分别表示隐藏单元到更新门、重置门以及隐层单元的权重矩阵;b*表示偏置:bu,br,bc分别表示更新门、重置门以及隐层单元的偏置。
此外,在公式(1)、(2)中,分别设置n个矩阵W(1) xu,W(2) xu,……,W(n) xu和W(1) xr,W(2) xr,……,W(n) xr用于控制一阶状态变化st-1⊙(dst-1/dt),二阶状态变化(dst-1/dt)⊙(d2st-1/d2t),……,n阶状态变化(dn-1st-1/dn-1t)⊙(dnst-1/dnt)的权重。在值导数GRU算法的训练过程中,权重矩阵W(1) x*,W(2) x*,……,W(n) x*随之动态更新,进而动态控制更新门ut和重置门rt的激活程度,保证值导数GRU算法能够动态捕获网络异常流量的低阶或高阶动态变化信息。通过捕获这些不同的累计状态变化,值导数GRU算法能够准确地判定相应的网络异常流量。综上所述,值导数GRU算法正是基于动态更新的权重矩阵W(1) x*,W(2) x*,……,W(n) x*和不尽相同的累计状态变化∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt)完成入侵检测。
2)由于网络入侵攻击的行为与正常网络行为不同,而且最大的不同之处在于网络攻击的某些关键步骤。例如,扫描蠕虫首先通过扫描网络发现漏洞主机然后再进行漏洞攻击。因此,这些关键信息能够作为一个核心因素来区分正常的网络流量以及不同类型的攻击。为了捕获网络异常流量的关键信息,我们添加池化层来调节值导数GRU算法。
池化层结构如图2所示。其中,左侧区域表示值导数GRU隐层单元结构,中间区域表示隐层单元的输出,右侧区域表示池化层。对于时间步t而言,与之关联的值导数GRU隐层单元的输出向量完全输入池化层。基于值导数GRU算法的池化层使用每个时间步t的输出向量的总体特征代替最后一个时间步的输出向量的局部特征。
通过保留所有时间步的输出向量对应位置的最大元素,池化层可以获得最佳匹配结果,本文选取max函数作为池化层函数。池化层向量计算公式如下:
其中,vs表示所有时间步的输出向量的第s个位置的最大元素,sts表示时间步t的输出向量的第s个位置的元素。
3)值导数GRU算法的训练:
累计状态变化∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt)作为值导数GRU模型的核心内容,其计算公式如下:
下面仅以一阶状态变化st-1⊙(dst-1/dt)和二阶状态变化(dst-1/dt)⊙(d2st-1/d2t)为例,说明累计状态变化∑(dn-1st-1/dn-1t)⊙(dnst-1/dnt)的计算方法。由于高阶状态变化(dn-1st-1/dn-1t)⊙(dnst-1/dnt)的计算算法类似不再赘述。
对于连续问题而言,微分能够准确地描述单变量函数(本例中仅仅考虑隐层状态这一个因素)的函数值y随变量x的变化而变化的关系,导函数是dy/dx。然而,计算机硬件的物理特性决定了计算机无法解决连续问题,只能够处理离散数据。因此,本文借助微分的离散形式,即差分来计算一阶状态变化和二阶状态变化,具体计算公式如下:
通过把时间与时间步联系起来,GRU算法已经成功应用在计算机视觉、自然语言处理等领域。例如,对于视频分类任务而言,GRU算法通常将视频的一帧与一个时间步关联。此时,相邻时间步之间存在等长时间间隔,即相邻帧之间的时间差值。对于基于值导数GRU的入侵检测算法而言,我们将网络流量数据包的间隔时间与时间步关联起来,此时相邻时间步之间存在变长时间间隔,即相邻网络流量数据包之间的时间差值。因此,一阶状态变化和二阶状态变化的具体计算公式如下:
其中,Δt1表示s1、s2代表的网络流量数据包的时间差值,Δt2表示s2、s3代表的网络流量的时间差值。
抽象而言,GRU和值导数GRU均用于模拟人脑记忆细胞。人脑拥有数以亿计的神经元细胞,一部分神经元细胞拥有记忆静态实体的功能,一部分神经元细胞拥有记忆动态实体的功能。相比于GRU模拟记忆静态实体的神经元细胞而言,值导数GRU主要用于模拟记忆动态实体的神经元细胞。因此,值导数GRU能够有效地捕获网络异常流量的动态变化信息。
值导数GRU算法的训练过程如下: