基于显式和隐含特征学习的智能入侵检测方法和系统

文档序号:26057080发布日期:2021-07-27 15:35阅读:93来源:国知局
基于显式和隐含特征学习的智能入侵检测方法和系统

本发明属于计算机网络安全领域,具体涉及一种基于显式和隐含特征学习的智能入侵检测方法和系统。



背景技术:

随着网络的广泛使用,网络安全的重要性不断提升。在众多网络安全防御技术中,网络入侵检测系统(nids)是可以主动保护系统免受非法外部攻击的最重要工具之一。传统的网络入侵检测方法基于模式匹配,将网络模式与现有恶意模式进行比较得出检测结果。如今,随着机器学习技术的发展,将机器学习技术引入入侵检测,将使入侵检测系统更加智能。对网络入侵数据进行分析,可以发现,网络入侵的数据特征比较复杂,表现在不同类别的恶意入侵分布不平衡,并且单个特征不能表现入侵类型的分布,即不同特征从不同角度反映了网络行为。智能入侵检测系统的关键是描述特征之间的复杂关系,并克服数据的不平衡分布。

根据特征学习的方式,目前针对入侵检测问题的方法,可以分为两类:基于特征选择的方法和基于深度学习的方法。基于特征选择的方法将数据降维和启发式算法进行结合,先将特征通过一定的方法进行降维,再将降维后的数据作为机器学习的输入,通过启发式算法得出检测结果。其中数据降维的方法包括:(1)过滤法,对各个数据特征进行评分,设定阈值或者待选择阈值的个数,来选择特征,例如计算每个特征与入侵类型的相关性,选择相关性大的特征;(2)包裹式选择,随机产生特征子集,直接将要采用的学习器的性能作为特征子集的评价标准,选择表现更好的特征子集;(3)嵌入法:使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。特征选择方法中的启发式算法一般为常用的算法,如支持向量机,贝叶斯,决策树等算法。基于深度学习的方法是通过神经网络学习特征的表示,在入侵检测中常用的神经网络有以下几种:(1)深度神经网络,由输入层、隐藏层、输出层组成,层与层之间是全连接的。将入侵数据的特征作为神经网络的输入,输出入侵类型;(2)循环神经网络,循环神经网络的隐藏层之间的节点是有连接的,会记忆之前的信息,并利用之前的信息影响后面节点的输出。考虑到入侵数据具有时序性,采用循环神经网络可以更好地利用入侵数据的时序信息;(3)自动编码器网络,自动编码器是一种能够通过无监督学习,学到输入数据高效表示的人工神经网络。通过自动编码器网络的编码过程学习入侵数据的特征,并将结果作为分类器的输入,得到入侵数据的类型。

基于特征选择的方法可以减小特征的维度,但这种方法很大程度上取决于特征选择算法的质量,不能保证在每种数据场景下均具有最佳性能,特别是对于入侵数据这种不平衡的数据集。并且这种特征选择方法还需要人工进行特征提取和筛选再进行分类,不能自主进行参数调整,完成学习和分类的目标。尽管基于深度学习的方法不需要人工辅助进行特征提取就可以自动提取数据的特征,但它无法计算入侵数据中属性特征的梯度,无法学习到属性特征之间的复杂关系。



技术实现要素:

本发明要解决的技术问题:针对现有入侵检测方法学习到的特征关系较少,检测准确率不高的技术问题,提供一种基于显式和隐含特征学习的智能入侵检测方法和系统,本发明能够学习到较多的特征关系,从而可有效提高智能入侵检测的检测准确率。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于显式和隐含特征学习的智能入侵检测方法,包括训练入侵检测神经网络的步骤:

1)输入网络行为数据包含显式和隐含特征的嵌入式表征e;

2)将嵌入式表征e输入初始的入侵检测神经网络得到数据表征r;

3)随机生成随机三元组tr;

4)根据损失函数和随机三元组tr小批量梯度下降更新入侵检测神经网络的参数集合θ;

5)判断迭代次数i小于预设阈值epoch是否成立,若成立则结束入侵检测神经网络的训练;否则,跳转执行下一步;

6)利用更新后的侵检测分类器的参数集合θ更新数据表征r;

7)从随机三元组tr中生成严格三元组th;

8)根据损失函数和严格三元组th小批量梯度下降更新入侵检测神经网络的参数集合θ;

9)将迭代次数i加1,跳转执行步骤5)。

可选地,步骤1)中的网络行为数据的嵌入式表征e为由网络行为数据中离散数据的连续型表征ec、网络行为数据中连续数据的连续特征en拼接得到。

可选地,步骤2)中的入侵检测神经网络为编码器多层神经网络,所述编码器多层神经网络由四层全连接的神经网络构成,初始的入侵检测神经网络是指初始的参数集合θ设置为:

θ={w1,w2,w3,w4,b1,b2,b3,b4}

上式中,w1~w4分别为四层神经网络的权重,b1~b4分别为四层神经网络的偏置;且所述入侵检测神经网络通过第二层神经网络得到数据表征r,其函数表达式为:

r=relu(w2relu(w1e+b1)+b2)

上式中,relu为线性整流激活函数,e表示网络行为数据的嵌入式表征。

可选地,步骤3)中随机生成随机三元组tr时,随机生成单个随机三元组tr的步骤包括:从数据表征r的正常样本类数据中选择一个原点样本ra,同样在正常样本类数据中随机选取一个正样本rp,在异常样本类数据中随机选取一个负样本rn,得到由原点样本ra、正样本rp、负样本rn三者构成的随机三元组tr={<ra,rp,rn>}。

可选地,步骤4)包括:

4.1)在所有的随机三元组tr中采样一组小批量三元组b;

4.2)针对小批量三元组b中的每一个随机三元组tr,根据下式计算损失函数l,根据下式将每一个随机三元组tr的损失函数l相加,得到小批量三元组b的总损失函数lb:

上式中,lcls为分类损失函数,且分类损失函数lcls采用分类交叉熵损失函数,为超参数,超参数用于控制分类损失函数lcls和三元组损失函数ltri对于总损失函数lb的贡献比例,ltri为三元组损失函数,<ra,rp,rn>表示某一个随机三元组tr;

4.3)对小批量三元组b的总损失函数lb中包含的入侵检测神经网络的参数集合θ,计算其梯度并根据在梯度下降方向更新入侵检测神经网络的参数集合θ中的{w1,w2,b1,b2},其中w为神经网络参数,表示参数集合θ中的任一参数,β为神经网络学习速率。

可选地,步骤6)包括:将嵌入式表征e输入更新参数θ中的{w1,w2,b1,b2}后的入侵检测神经网络更新数据表征r。

可选地,步骤7)包括:7.1)通过l=max(d(a,p)-d(a,n)+ε,0)计算每一个随机三元组tr的筛选函数值l,其中l为筛选函数值,d(a,p)表示原点样本ra、正样本rp之间的距离,d(a,n)表示原点样本ra、负样本rn之间的距离,max为最大值函数,ε为超参数;7.2)选择筛选函数值l最小的指定数量组随机三元组tr的构成严格三元组th。

可选地,步骤7)包括:

7.1)在所有的严格三元组th中采样一组小批量三元组b;

7.2)针对小批量三元组b中的每一个严格三元组th,根据下式计算损失函数l,根据下式将每一个随机三元组tr的损失函数l相加,得到小批量三元组b的总损失函数lb:

上式中,lcls为分类损失函数,且分类损失函数lcls采用分类交叉熵损失函数,为超参数,超参数用于控制分类损失函数lcls和三元组损失函数ltri对于总损失函数lb的贡献比例,ltri为三元组损失函数,<ra,rp,rn>表示某一个随机三元组tr;

7.3)对小批量三元组b的总损失函数lb中包含的入侵检测神经网络的参数θ,计算其梯度并根据在梯度下降方向更新入侵检测神经网络的参数θ中的{w1,w2,w3,w4,b1,b2,b3,b4},其中w为神经网络参数,表示参数集合θ中的任一参数,β为神经网络学习速率。

此外,本发明还提供一种基于显式和隐含特征学习的智能入侵检测系统,包括相互连接的处理器和存储器,该处理器被编程或配置以执行所述基于显式和隐含特征学习的智能入侵检测方法的步骤。

此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有所述基于显式和隐含特征学习的智能入侵检测方法的计算机程序。

和现有技术相比,本发明具有下述优点:本发明包括输入网络行为数据包含显式和隐含特征的嵌入式表征e;将嵌入式表征e输入初始的入侵检测神经网络得到数据表征r;随机生成随机三元组tr;根据损失函数和随机三元组tr小批量梯度下降更新入侵检测神经网络的参数集合θ;然后进行迭代,每一轮迭代中包括:利用更新后的侵检测分类器的参数集合θ更新数据表征r;从随机三元组tr中生成严格三元组th;根据损失函数和随机三元组tr小批量梯度下降更新入侵检测神经网络的参数集合θ,通过上述手段,本发明针对现有入侵检测方法学习到的特征关系较少,检测准确率不高的技术问题,能够学习到较多的特征关系,从而可有效提高智能入侵检测的检测准确率。

附图说明

图1为本发明实施例方法的训练流程示意图。

图2为本发明实施例中cdrl的基本原理框架的总体结构图。

图3是本发明实施例中cdrl的详细流程图。

图4是本发明实施例中cdrl采用的自动编码器autoencoder的结构图。

图5为本发明实施例中入侵检测神经网络的结构示意图。

图6为本发明实施例中两种三元组的生成原理示意图。

图7为本发明实施例中入侵检测神经网络的框架结构示意图。

具体实施方式

如图1所示,本实施例基于显式和隐含特征学习的智能入侵检测方法,包括训练入侵检测神经网络(本实施例中命名为inids,即intelligentnetworkintrusiondetectionsystem)的步骤:

1)输入网络行为数据包含显式和隐含特征的嵌入式表征e;

2)将嵌入式表征e输入初始的入侵检测神经网络得到数据表征r;

3)随机生成随机三元组tr;

4)根据损失函数和随机三元组tr小批量梯度下降更新入侵检测神经网络的参数集合θ;

5)判断迭代次数i小于预设阈值epoch是否成立,若成立则结束入侵检测神经网络的训练;否则,跳转执行下一步;

6)利用更新后的侵检测分类器的参数集合θ更新数据表征r;

7)从随机三元组tr中生成严格三元组th;

8)根据损失函数和严格三元组th小批量梯度下降更新入侵检测神经网络的参数集合θ;

9)将迭代次数i加1,跳转执行步骤5)。

本实施例中,步骤1)中的网络行为数据的嵌入式表征e为由网络行为数据中离散数据的连续型表征ec、网络行为数据中连续数据的连续特征en拼接得到。

常见的网络行为数据包含离散数据和连续数据,在输入入侵检测系统之前需要对离散数据的特征进行连续化处理。作为一种可选的实施方式,网络行为数据中离散数据的连续型表征ec转换为独热(onehot)表征,即若该数据对象包含某个特征值,则所属位设置为1,其余为0,这种方式会忽略离散特征之间的隐式相关关系。作为对上述方式的进一步改进,可采用离散数据表征学习模型,即cdrl,来获取网络行为数据中离散数据的连续型表征ec。如图2和图3所示,采用离散数据表征学习模型获取网络行为数据中离散数据的连续型表征ec的步骤包括:

s1)对输入的离散数据集合x,分别通过预设的频率影响力耦合关系函数计算基于出现频率的特征值影响力矩阵mo,通过预设的共现影响力耦合关系函数计算基于共现概率的特征值影响力矩阵mc;

s2)针对基于出现频率的特征值影响力矩阵mo、基于共现概率的特征值影响力矩阵mc进行聚类特征类学习得到特征值类的类别隶属关系矩阵c;

s3)将特征值类的类别隶属关系矩阵c输入预先完成训练的自动编码器进行降维,得到降维后的大小为|v|×r的特征值表征矩阵v,其中|v|表示特征值表征矩阵v的大小,r表示特征值表征矩阵v的行数,×表示矩阵乘法;

s4)将特征值表征矩阵v中取出每个特征值的连续表征拼接得到离散数据集合x对应的大小为n×(r*d)的连续化数据表征r,即前文的连续型表征ec,其中n表示离散数据集合x包含的数据对象数量,*表示乘法,d表示离散数据集合x包含的离散特征数量。

张数据表为x,包含的数据对象数量,即x={x1,,…,xn},其中包含了d个离散特征f={f1,…,fd},在具体的实施步骤之前,可通过一个具体例子来说明后续内容中用到的符号。特别地,以人口普查数据为例,即一张数据表(离散数据集合x),包含n个数据对象,即x={x1,,…,xn},其中包含了d个离散特征f={f1,…,fd},例如人的性别、工作、学历等。每个特征f有一个特征值域vf={v1,v2,…}其中包含了有限个特征值(至少两个),例如特征学历包含了高中、本科、研究生等。所有的特征值集合是各个特征值域的并集,并表示为大小为l的集合v。本专利的目的可以描述成如下:给定一个数据对象集合x,我们的目标是学习数据对象集合x的连续化数据表征r。步骤s1)即为特征值耦合关系学习的步骤,特征值耦合关系学习是离散数据表征学习的基础,主要负责提取离散数据中的耦合关系。为了学习特征值耦合关系,本发明构造了两个特征值影响力矩阵从两个最基本的角度捕获特征值耦合关系:出现频率和共现概率,这两个角度构建的耦合关系能够相互补充。首先介绍一些前提符号设置。数据对象x来自于特征f的特征值表示为vxf,而特征值vi表示它隶属于特征fi。假设特征值出现的概率p(v)可以通过它的频率计算。两个特征值vi和vj的联合概率p(vi,vj)为:

上式中,表示数据对象x来自于特征fi的特征值,n表示离散数据集合x包含的数据对象数量。基于以上联合概率,我们可以计算两个特征之间的互信息(mutualinformation),用ω(fi,fj)来表示。

本实施例中,步骤s1)中频率影响力耦合关系函数的函数表达式为:

上式中,表示特征值vj来自于特征值vi的频率影响力,ω(fi,fj)表示特征值vj和特征值vi之间的互信息,fi表示特征值vi对应的特征,fj表示特征值vj对应的特征,p(vi)表示特征值vi的出现概率,p(vj)表示特征值vj的出现概率。频率概率(即边缘概率)是特征值最基本的性质,它能够用于区分特征值。本发明中采用非对称的边缘概率比例来量化两个特征值之间的影响力,而非对称的边缘概率相似度,所以mo能捕获更多信息。进一步的,本章将互信息作为特征影响力的权值,因为特征值的边缘概率并不能够区分不同的特征。

本实施例中,步骤s1)中计算基于出现频率的特征值影响力矩阵mo的函数表达式为:

上式中,表示特征值v1来自于特征值v1的频率影响力,表示特征值vl来自于特征值v1的频率影响力,表示特征值v1来自于特征值vl的频率影响力,分别表示表示特征值vl来自于特征值vl的频率影响力,l为离散数据集合x中包含的特征值数量。本实施例中,步骤s1)中共现影响力耦合关系函数的函数表达式为:

上式中,表示特征值vj来自于特征值vi的共现影响力,p(vi,vj)表示特征值vj和特征值vi的共现概率,p(vi)表示特征值vi的出现概率。共现概率(即联合概率)反应了两个特征值之间的二元耦合关系。因为两个特征值的联合概率可能会相似,但是对彼此的影响力可能却不一样,所以本章利用非对称的条件概率来衡量一个特征值对另一个特征值的影响力。因为两个来自同一个特征的特征值不可能同时出现在一个数据对象中,所以它们的为0。

本实施例中,步骤s1)中计算基于共现概率的特征值影响力矩阵mc的函数表达式为:

上式中,表示特征值v1来自于特征值v1的共现影响力,表示特征值vl来自于特征值v1的共现影响力,表示特征值v1来自于特征值vl的共现影响力,分别表示表示特征值vl来自于特征值vl的共现影响力,l为离散数据集合x中包含的特征值数量。

步骤s2)即为特征值类学习的步骤,用于通过对基于出现频率的特征值影响力矩阵mo、基于共现概率的特征值影响力矩阵mc进行不同粒度的聚类,即通过控制聚类类别个数实得到若干个不同大小的特征值类,通过这些特征值类可以得到特征值表征的初始表征。

如图2和图3所示,本实施例步骤s2)包括:

s2.1)初始化特征值类的类别隶属关系矩阵c为空;

s2.2)判断基于出现频率的特征值影响力矩阵mo、基于共现概率的特征值影响力矩阵mc是否都已经遍历完毕,若都已经遍历完毕,则将最终得到的特征值类的类别隶属关系矩阵c输出,跳转执行步骤s3);否则,跳转执行下一步;

s2.3)初始化聚类的总类别数量k;

s2.4)判断集合大小|cs|与总类别数量k的比值是否超过预设比例参数α是否成立,若成立则跳转执行下一步,否则跳转执行步骤s2.2);

s2.5)初始化集合cs为空,集合cs用于记录只包含一个特征值的特征值类;

s2.6)将特征值类的类别隶属关系矩阵c和上一次的聚类结果拼接后作为新的特征值类的类别隶属关系矩阵c;

s2.7)将总类别数量k加1;

s2.8)将只包含一个特征值的特征值类从特征值类的类别隶属关系矩阵c中删除,然后迁移到集合cs中;

s2.9)计算集合cs的集合大小|cs|,跳转执行步骤s2.4)。

针对基于出现频率的特征值影响力矩阵mo、基于共现概率的特征值影响力矩阵mc,我们可以学习不同粒度的特征值类,这些特征值类反应了数据的不同特点。本实施例中通过在特征值矩阵上进行聚类来学习不同大小的特征值类。通过在基于出现频率的特征值影响力矩阵mo、基于共现概率的特征值影响力矩阵mc运行k-means聚类,同时采用不同的总类别数量k,即{k1,k2,…,kn1}和{k1,k2,…,kn2}。图2中聚类结果表示为kmeans[m,k],其中m表示基于出现频率的特征值影响力矩阵mo或者基于共现概率的特征值影响力矩阵mc,k表示总类别数量。聚类结果通过类别隶属关系矩阵来表示,定义如下:

其中,c(i,j)为类别隶属关系矩阵的第i行、j列元素。

对于大多数特征值来说,拥有少量特征值的特征值类的区分能力更弱一些,因为cdrl的目标是产生那些能够区分更多特征值的特征值类。因此,我们删除掉那些只有一个特征值的小特征值类。通过拼接在两个特征值影响力矩阵上产生的指示矩阵,我们得到一个大的指示矩阵,其中每一行用来代表一个特征值。

步骤s3)即为特征值类耦合关系学习的步骤,目的是为了消除特征值类之间的冗余关系和学习特征值类之间的相关关系。本实施例中通过输入自动编码器(autoencoder)实现维度的降低,得到离散数据特征值的低维连续性表征。经过构造包含全面的特征值类的类别隶属关系矩阵c之后,我们需要捕获特征值类之间的耦合关系。同时,经过学习特征值类的耦合关系,我们需要建立一个简洁且蕴含信息的特征值表征。一种非常直观的方法就是利用深度神经网络来进行特征值类的耦合关系学习,我们在这里利用自动编码器(autoencoder)来学习不同粒度的特征值类之间的非线性关系。自动编码机包含两部分,编码器和解码器,它们的函数表达是可以简写如下:

编码器(encoder):code=f(x),

解码器(decoder):x′=g(code)=g(f(x))

编码器的作用是学习一个低维空间的表征code,在编码器中的每一层网络都学习x的特征以及特征的耦合关系,因此获得的表征code充分包含了x的信息。解码器将得到的低维表征code还原为初始的输入x。自动编码器的训练过程是不断的减小损失函数loss[x,g(f(x))]。经过训练,低维表征code在携带与输入x相似的信息量的同时,可以捕获x中隐藏的耦合关系。参见图4,本实施例中步骤3)中的自动编码器包括两层结构的编码器(encoder)和解码器(decoder),编码器和解码器两者结构对称且均为两层结构,编码器的第一层的函数表达式为σ(w1tc),编码器的第二层的函数表达式为v=w2t(σ(w1tc)),其中σ为激活函数,w1为第一层的权重矩阵,c表示特征值类的类别隶属关系矩阵,v表示降维后的大小为|v|×r的特征值表征矩阵v,w2为第二层的权重矩阵,第一层的激活函数为sigmoid函数,第二层的激活函数为线性函数,自动编码器的训练过程是不断的减小损失函数loss[x,g(f(x))],x表示编码器的输入,g(f(x))表示解码器的输出结果。本实施例中,编码器的输入x即为特征值类的类别隶属关系矩阵c,因此输入的维度即为特征值类的类别隶属关系矩阵c的维度。第一层的激活函数为sigmoid函数,定义为:

σ(x)=1/(1+e-x),

参见图4,本实施例中第一层的目标维度为100,第二层的目标维度为20,可将维度从100个维度降低为20个维度。为了获取多样的特征值类之间的耦合关系,并且得到一个相对低维度的特征值表征,我们采用自动编码器来进行学习。也就是说,我们将之前聚类获得的类别隶属关系矩阵c(c=[co,cc]),即为从两个耦合关系矩阵聚类而来的矩阵拼接,作为输入训练自动编码器。进而我们利用编码器来生成新的特征值表征矩阵v,其大小为|v|×r,其中每一行代表一个特征值的表征。

步骤s4)即为离散数据表征学习的步骤,离散数据表征学习是在降维之后的特征值表征基础上学习离散数据对象的连续性表征,具体可以通过将数据对象不同特征值进行拼接或求均值操作得到,我们这里通过拼接得到每个数据对象的连续表征。本实施例中,步骤4)中将特征值表征矩阵v中取出每个特征值的连续表征拼接得到离散数据集合x对应的大小为n×(r*d)的连续化数据表征r时,针对连续化数据表征r中的每一行r的生成方式如下述函数表达式所示:

r=σ(v1,v2,…,vd)

上式中,σ为拼接函数,v1~vd为特征值表征矩阵v中对应行的元素,通过选取拼接函数,将每个特征值的表征拼接之后形成数据表征。由新的离散数据特征值表征v可以生成离散数据的数据对象的连续化数据表征r。数据对象x的表征r,即为连续化数据表征r的某一行,可以通过上述针对特征值表征v的数据对象表征函数建模。

本实施例基于层次化耦合关系的离散数据表征学习方法(categoricaldatarepresentationlearning,简称cdrl)在具体应用时,针对前文的步骤s1)~步骤s4),分别采用不同的程序单元来实现,其实现得到的离散数据表征学习框架包含4个学习模块,分别是特征值耦合关系学习模块、特征值类学习模块、特征类耦合关系学习模块和离散数据表征学习模块,分别一一对应前文的步骤s1)~步骤s4),该离散数据表征学习框架具有层次化的学习结构,并实例化为一个离散数据表征学习算法,为后续的机器学习算法或其他方法提供了调用接口。得到离散数据的连续型表征ec之后,将网络行为数据中离散数据的连续型表征ec、网络行为数据中连续数据的连续特征en进行拼接,得到数据的初始嵌入表征e=[ec,en]。此外,也可以通过预设的函数h将网络行为数据中离散数据的连续型表征ec、网络行为数据中连续数据的连续特征en两者综合得到数据初始的嵌入式表征e。

入侵检测神经网络可对嵌入式表征e进行分类学习,这里为了和嵌入学习形成端到端的训练模式,如图5所示,步骤2)中的入侵检测神经网络为编码器多层神经网络,编码器多层神经网络由四层全连接的神经网络构成,初始的入侵检测神经网络是指初始的参数集合θ设置为:

θ={w1,w2,w3,w4,b1,b2,b3,b4}

上式中,w1~w4分别为四层神经网络的权重,b1~b4分别为四层神经网络的偏置;且所述入侵检测神经网络通过第二层神经网络得到数据表征r,其函数表达式为:

r=relu(w2relu(w1e+b1)+b2)

上式中,relu为线性整流激活函数,e表示网络行为数据的嵌入式表征。

参见图5,其中前三层为数据嵌入式学习模块encoderf,四层的维度分别为d1~d4,采用的激活函数分别为relu、relu、relu以及softmax。入侵检测神经网络包含了嵌入式学习模块encoderf和分类器,一共四层神经网络,输入层为离散表征和连续表征的拼接,第一层神经网络的维度为d1,激活函数为线性整流函数(rectifiedlinearunit,relu),参数为w1和b1,即公式为f(x)=relu(w1x+b1)=max(w1x+b1,0),第二层和第三层的激活函数同为relu,参数分别为w2,b2和w3,b3,最后一层为分类层,即将数据划分到对应的类别,利用softmax激活函数实现,维度d4为数据的真实类别数。嵌入式学习模块encoderf主要负责将嵌入式表征e映射到低维向量空间,通过全连接神经网络映射可以学习到特征之间的耦合关系,生成数据表征r。在训练过程中计算分类损失函数lcls。

如图6所示,步骤3)中随机生成随机三元组tr时,随机生成单个随机三元组tr的步骤包括:从数据表征r的正常样本类数据中选择一个原点样本ra,同样在正常样本类数据中随机选取一个正样本rp,在异常样本类数据中随机选取一个负样本rn,得到由原点样本ra、正样本rp、负样本rn三者构成的随机三元组tr={<ra,rp,rn>}。

本实施例中,步骤4)包括:

4.1)在所有的随机三元组tr中采样一组小批量三元组b(本实施例中为32个);

4.2)针对小批量三元组b中的每一个随机三元组tr,根据下式计算损失函数l,根据下式将每一个随机三元组tr的损失函数l相加,得到小批量三元组b的总损失函数lb:

上式中,lcls为分类损失函数,且分类损失函数lcls采用分类交叉熵损失函数,为超参数,超参数用于控制分类损失函数lcls和三元组损失函数ltri对于总损失函数lb的贡献比例,ltri为三元组损失函数,<ra,rp,rn>表示某一个随机三元组tr;将三元组损失函数和分类交叉熵损失函数构成总损失函数lb,提高了神经网络学习效果,检测准确率更高。

本实施例中三元组损失函数ltri为针对三元组进行tripletloss计算,其函数表达式为:

ltri=max(d(ra,rp)-d(ra,rn)+ε,0)

上式中,d(ra,rp)表示原点样本ra、正样本rp之间的距离(例如欧式距离等),d(ra,rn)表示原点样本ra、负样本rn之间的距离,max为最大值函数,ε为超参数。

本实施例中分类损失函数lcls采用交叉熵损失函数,其函数表达式为:

上式中,c为编码器多层神经网络的输出维度(分类的类别数),yc为编码器多层神经网络的输出值,pc为多层神经网络预测的样本属于c类的概率。计算神经网络总的损失函数,定为交叉熵损失函数和三元组损失函数之和,即优化损失函数值使得l值尽可能的小得到神经网络的参数。

其中,多层神经网络预测的样本属于c类的概率pc的函数表达式为:

pc=sotfmax(relu(w3r+b3))

上式中,r表示第二层神经网络得到数据表征,softmax为归一化函数,定义如下:xk为归一化函数的输入,即为k类的分类预测值,xj表示c中每一类的分类预测值。

4.3)对小批量三元组b的总损失函数lb中包含的入侵检测神经网络的参数集合θ,计算其梯度并根据在梯度下降方向更新入侵检测神经网络的参数集合θ中的{w1,w2,b1,b2},其中w为神经网络参数,表示参数集合θ中的任一参数,β为神经网络学习速率(可设置为一个常数,如0.1)。

本实施例中,步骤6)包括:将嵌入式表征e输入更新参数θ中的{w1,w2,b1,b2}后的入侵检测神经网络更新数据表征r。

严格三元组th的原点样本采集和负样本采集同随机三元组tr,不同的是,正样本不仅是和原点样本在同一类,而且正样本和原点样本的距离与负样本和原点样本之间的距离比较接近,即选择那些比较难以和负样本区分的正样本。三元组损失函数的本质是将具有相同标签的样本在嵌入空尽量拉近,将具有不同标签的样本在嵌入空间尽量远离。随机选择一个样本a作为原点,选取与a相同类别的样本p作为正样本,选取与a不同类别的样本n作为负样本。在本发明中,我们采用全连接神经网络,输入数据经过输入层和隐藏层学习后得到嵌入空间值,在嵌入空间,三个样本之间的距离需要满足l=max(d(a,p)-d(a,n)+ε,0),使得l值尽可能的小。如图7所示,步骤7)包括:

7.1)通过l=max(d(a,p)-d(a,n)+ε,0)计算每一个随机三元组tr的筛选函数值l,其中l为筛选函数值,d(a,p)表示原点样本ra、正样本rp之间的距离,d(a,n)表示原点样本ra、负样本rn之间的距离(如欧式距离等),max为最大值函数,ε为超参数;

7.2)选择筛选函数值l最小的指定数量组随机三元组tr的构成严格三元组th。

本实施例中,步骤7)包括:

7.1)在所有的严格三元组th中采样一组小批量三元组b;

7.2)针对小批量三元组b中的每一个严格三元组th,根据下式计算损失函数l,根据下式将每一个随机三元组tr的损失函数l相加,得到小批量三元组b的总损失函数lb:

上式中,lcls为分类损失函数,且分类损失函数lcls采用分类交叉熵损失函数,为超参数,超参数用于控制分类损失函数lcls和三元组损失函数ltri对于总损失函数lb的贡献比例,ltri为三元组损失函数,<ra,rp,rn>表示某一个随机三元组tr;将三元组损失函数和分类交叉熵损失函数构成总损失函数lb,提高了神经网络学习效果,检测准确率更高;

7.3)对小批量三元组b的总损失函数lb中包含的入侵检测神经网络的参数θ,计算其梯度并根据在梯度下降方向更新入侵检测神经网络的参数θ中的{w1,w2,w3,w4,b1,b2,b3,b4},其中w为神经网络参数,表示参数集合θ中的任一参数,β为神经网络学习速率。本实施例中,将严格三元组th,和按照数据集本来的顺序取出的一条数据作为神经网络的输入,经过两层全连接的神经网络进行特征学习,神经网络的激活函数为relu函数,学习到的嵌入值分别为ea、ep、en和er;对ea、ep和en进行tripletloss计算,即三元组损失值为:

ltri=max(d(ea,ep)-d(ea,en)+,0)

上式中,d(ea,ep)表示原点样本ea、正样本ep之间的距离(例如欧式距离等),d(ea,en)表示原点样本ea、负样本en之间的距离,max为最大值函数,ε为超参数。

将er经过两层全连接的神经网络进行特征学习,采用softmax激活函数,输出维度为分类的类别数c,采用交叉熵损失函数计算其损失值为:

上式中,c为编码器多层神经网络的输出维度(分类的类别数),yc为编码器多层神经网络的输出值,pc为多层神经网络预测的样本属于c类的概率。计算神经网络总的损失函数,定为交叉熵损失函数和三元组损失函数之和,即优化损失函数值使得l值尽可能的小得到神经网络的参数。

综上所述,本实施例方法首先通过cdrl生成初始表征,然后构造随机三元组,基于构造的随机三元组通过小批量的梯度下降方法更新神经网络的参数。本发明采用神经网络对入侵数据特征进行学习,针对神经网络的优化,实质是梯度下降。在本发明中采用小批量的梯度下降,克服了批梯度下降和随机梯度下降的缺点。具体操作中,将一组严格三元组作为一批,按批来更新神经网络参数,一个批中的数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。基于更新之后的参数,我们得到学习之后的数据表征r,基于新的数据表征,我们可以构造严格三元组,具体来说我们在每一个类中采样一批原点样本和正样本,然后再在每个其他类中采样一批负样本,与之构成若干三元组,最后再通过l筛选出一批相对难以区分的作为严格三元组输入神经网络进行训练。经过若干次这样的表征更新、三元组构造和参数更新,我们就得到了比较稳定的神经网络参数,即形成了一个稳定的分类器。测试过程,即将测试数据的嵌入式表征输入分类器中,得到分类结果,用于判断是否为异常网络行为。

此外,本实施例还提供一种基于显式和隐含特征学习的智能入侵检测系统,包括相互连接的处理器和存储器,该处理器被编程或配置以执行前述基于显式和隐含特征学习的智能入侵检测方法的步骤。

此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有前述基于显式和隐含特征学习的智能入侵检测方法的计算机程序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1