利索能及
我要发布
收藏
专利号: 2022105219467
申请人: 河北师范大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-12-08
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于小样本学习的三元CCT网络的入侵检测方法,其特征在于采用如下步骤:步骤一、构建小样本学习的数据集;

采用无监督子类型采样方法对数量充足的攻击类样本和正常类样本进行重新采样,具体如下:

1.1).将数量充足的攻击类样本和正常类样本采用k‑mean++算法聚类为各个类型的子类型;

1.2).对每个子类型逐一进行随机抽取一个样本,以获得代表每个类型可用于训练的集合;

1.3).将经过与所述无监督子类型重新采样的样本集合与数量稀少的攻击类样本合在一起,构建模型训练所需的小样本训练数据集;

1.4).每种类型有k个样本,不同的类型设置不同的k值;k值根据轮廓系数S(i)自适应确定,计算公式如下:式中:a(i)表示聚类中的样本i到聚类中所有其他样本的距离的平均值,b(i)表示聚类中的样本i到距离该样本最近的聚类中所有样本的平均距离的最小值,max{}是求最大值的函数,‑表示逐元素相减;

轮廓系数的计算结果在‑1和1之间,再设置一组初始k值并使用k‑mean++算法对每种类型中的数据进行聚类后,最终不同类型的k值根据以下公式选择,其代表前n大轮廓系数中最小的簇数:K=min{argmaxn{S(2),S(3),…,S(i)}}    (2)式中:min{}是求最小值的函数,n设置为10,argmaxn表示前n大的轮廓系数分别对应的簇数,S(i)表示样本i对应的轮廓系数;

步骤二、将数据集中的网络流量存储在二维数组中,将二维数组转换为灰度图像;

步骤三、搭建基于小样本学习的三元CCT网络的入侵检测模型;

所述三元CCT网络由3个并行的具有相同结构的CCT网络组成,并且它们使用相同的特征权重,将样本μ嵌入的CCT网络表示为CCTNet(μ);

所述CCT网络包括依次设置的卷积层、Reshape、位置嵌入、Transformer编码器层和序列池层;

所述Transformer编码器层由L层编码器块堆叠而成;每个L层编码器块均由多头自注意力(MSA)和多层感知机(MLP)块两个子层组成,多层感知机(MLP)块包括线性层、GELU激活函数和Dropout;每个子层之前都有一个层归一化(LN),然后是到下一个子层的残差连接;

在原有的残差连接之前加入一个可学习的通道加权,即对角矩阵,表示每个残差块产生的向量的通道权重,从而将与同一输出通道相关的权重更新分组;

所述序列池层Pooling整个数据序列,包含输入图像不同部分的相关信息,序列池层的操作可看作为映射;

所述卷积层包括依次设置的卷积操作、ReLU激活函数和最大池层;

所述位置嵌入使用条件位置编码(CPE),以输入为条件,并且能够保持期望的平移不变性;条件位置编码设置在Tansformer编码器层的第一个编码器块的输出之后,其通过位置编码生成器(PEG)实现;位置编码生成器为了对局部邻域施加条件,首先将接收的一维输入序列X重塑到二维图像空间中的X',再将一个函数F重复应用于X'中的局部图像块,以产生条件位置编码E,函数F是深度方向的、可分离的卷积或其他复杂的块;

所述三元CCT网络的输入样本有三个,分别输入到三个CCT网络中,输入样本表示为锚+ ‑点样本x、正例样本x和负例样本x ;当输入三个样本时,样本经过CCT网络并使用Embedding层,得到每个样本的CCT网络嵌入表达,然后输出2个中间值,分别是锚点样本x与正例样本x+ ‑之间的欧氏距离d+和锚点样本x与负例样本x 之间的欧氏距离d‑,然后使用三元损失函数对上述两个距离进行评估和优化,并对其进行归一化,其计算公式如下:+

式中:CCTNet(x)表示锚点样本的CCT嵌入表达,CCTNet(x)表示正例样本的嵌入表达,‑CCTNet(x)表示负例样本的嵌入表达,+表示逐元素求和,‑表示逐元素相减,||·||2表示求·的二范式;

在此基础上计算的三元损失函数为:

式中:α表示锚点样本与负例样本、锚点样本与正例样本嵌入表达距离的最小差,d+表示锚点样本与正例样本之间的欧氏距离,d‑表示锚点样本与负例样本之间的欧氏距离,表示求·的二范式的平方;

+ ‑

通过训练优化三元损失函数,使得锚点样本x向正例样本x靠近,远离负例样本x;

步骤四、训练入侵检测网络模型;

训练基于小样本学习的三元CCT网络模型的入侵检测网络,采用Adam优化器优化三元损失函数,使之最小化;

所述基于小样本学习的三元CCT网络模型结构与步骤三中基于小样本学习的三元CCT网络模型结构相同;

步骤五、检测网络流量并确定入侵类型;

检测网络流量并确定入侵类型具体过程如下:首先选择一个测试样本作为锚点样本,然后在步骤一中构建好的训练数据集中在两个随机的类中,分别选择一个随机样本,将这三个样本作为网络的输入三元组,比较测试样本与这两个样本之间的距离,将距离大的一个样本替换为训练数据集中一个不同于前两个类的一个随机样本,再次比较距离,直到将数据集中的类比较完毕,距离最小的那个样本所在的类就是当前测试样本的类。