一种基于知识蒸馏的数据包分类方法及相关装置与流程

文档序号:29857691发布日期:2022-04-30 09:51阅读:54来源:国知局
一种基于知识蒸馏的数据包分类方法及相关装置与流程

1.本技术涉及网络技术领域,特别涉及一种基于知识蒸馏的数据包分类方法及相关装置。


背景技术:

2.数据包分类可以理解为根据数据包包头数据确定数据包所匹配的类别,并按照类别对应的操作动作对数据包进行处理,比如,丢弃数据包或者接受数据包等。目前普遍采用可编程交换机来执行数据包分类操作,可编程交换机具有低延迟和高吞吐等性能,并且可编程交换机在进行数据包分类过程中,允许管理员通过简单的编程指令对数据包进行操作。然而,可编程交换机所支持的编程指令所能执行的操作比较少(例如,仅支持整数的加减和位移操作等),这使得具有高精度的分类网络模型(例如,卷积神经网络以及循环神经网络等),从而限制了可编程交换机的数据包分类效率。
3.因而现有技术还有待改进和提高。


技术实现要素:

4.本技术要解决的技术问题在于,针对现有技术的不足,提供一种基于知识蒸馏的数据包分类方法及相关装置。
5.为了解决上述技术问题,本技术实施例第一方面提供了一种基于知识蒸馏的数据包分类方法,所述的方法包括:
6.基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;
7.基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型,其中,所述二进制决策树模型中的各叶节点均对应有目标分类类别;
8.根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;
9.将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。
10.所述的基于知识蒸馏的数据包分类方法,其中,所述属性数据为基于训练数据包的二进制数据包头确定的。
11.所述的基于知识蒸馏的数据包分类方法,其中,所述基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型具体包括:
12.将各训练数据包及其对应的类别概率向量构成的训练数据集作为目标训练集,并将各训练数据包对应的属性数据构成的属性数据集作为目标属性数据集;
13.基于所述目标属性数据集确定目标属性位,并基于所述目标属性位将所述目标训练集中的各训练数据包划分至两个节点上;
14.对于两个节点中所包括的训练数据包的数量小于预设数量阈值的第一节点,将所述节点作为叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确
定所述叶节点对应的目标分类类别;
15.对于两个节点中所包括的训练数据包的数量大于或者等于预设数量阈值的第二节点,将所述目标属性数据集中的各属性数据中位于目标属性位的属性元素去除以得到候选属性数据;
16.将所述第二节点所包括的各训练数据包以其对应的类别概率向量所形成的训练数据作为目标数据集,将所述第二节点所包括的各训练数据包各自对应的候选属性数据所形成的属性数据集作为目标属性数据集;
17.继续执行基于所述目标属性数据集确定目标属性位的步骤,直至将所述预设训练集中的各训练数据包均划分至叶节点内。
18.所述的基于知识蒸馏的数据包分类方法,其中,所述基于所述目标属性数据集确定目标属性位之前,所述方法还包括:
19.检测所述目标属性数据集是否满足预设条件,其中,所述预设条件为所述目标属性数据集不为空,且所述目标属性数据集至少存在两个互不相同的属性数据;
20.若所述目标属性数据集满足预设条件,则执行基于所述目标属性数据集确定目标属性位的步骤;
21.若所述目标属性数据集不满足预设条件,则将所述目标训练集所属的节点作为叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别。
22.所述的基于知识蒸馏的数据包分类方法,其中,所述基于所述目标属性数据集确定目标属性位之前,所述方法还包括:
23.基于所述目标训练集中的各训练数据包各自对应的类别概率向量确定各训练数据包对应的预测类别;
24.若各训练数据包对应的预测类别全相同,则将所述目标训练集所属的节点作为叶节点,并将所述预测类别作为所述叶节点对应的目标分类类别;
25.若各训练数据包对应的预测类别不全相同,则执行基于所述目标属性数据集确定目标属性位的步骤。
26.所述的基于知识蒸馏的数据包分类方法,其中,所述基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别具体包括:
27.获取所述叶节点所包括的各训练数据包各自对应的类别概率向量的平均类别概率向量;
28.将所述平均类别概率向量中的最大向量元素所对应的类别作为所述叶节点对应的目标分类类别。
29.所述的基于知识蒸馏的数据包分类方法,其中,所述目标属性位的选取规则为:
30.a
*
=arg min gini(d,ai)i∈{1,2,...,m}
[0031][0032]
其中,a
*
表示目标属性,d表示目标训练集,ai表示属性数据中的第i位属性,dv表示目标训练集中的训练数据包在第i位属性上取值为v的训练数据包所形成的数据集;表示dv中的各训练数据包的类别概率向量的平均类别概率向量;|d|表示目标训练集所包括
的训练数据包的数量;|dv|表示dv所包括的训练数据包的数量;m表示目标属性集中的属性数据的数据位数。
[0033]
所述的基于知识蒸馏的数据包分类方法,其中,所述根据所述二进制决策树模型生成用于数据包分类的三元匹配流表包括:
[0034]
获取所述二进制决策树模型中的各叶节点各自对应的二进制字符串及目标分类类别;
[0035]
将各叶节点对应的二进制字符串以及目标分类类别转换为三元数据组,将各叶节点对应的三元数据组所形成的数据表作为三元匹配流表。
[0036]
所述的基于知识蒸馏的数据包分类方法,其中,所述通过所述可编程交换机对数据包进行分类具体包括:
[0037]
当可编辑交换机接收到待分类数据包时,获取于所述待分类数据包对应的分类属性数据;
[0038]
在所述三元匹配流表中查找所述分类属性数据所对应的目标分类类别,以分类所述待分类数据包。
[0039]
所述的基于知识蒸馏的数据包分类方法,其中,所述三元匹配流表包括掩膜、值以及类别;所述在所述三元匹配流表中查找所述分类属性数据所对应的目标分类类别,以分类所述待分类数据包具体包括:
[0040]
对于所述三元匹配流表中的每个三元数据组,将所述分类属性数据与所述三元数据组中的掩膜相与,以得到候选值;
[0041]
若所述候选值与所述三元数据组中的值相等,则将所述三元数据组中的类别作为分类属性数据所对应的目标分类类别,以分类所述待分类数据。
[0042]
本技术实施例第二方面提供了一种基于知识蒸馏的数据包分类装置,所述的装置包括:
[0043]
确定模块,用于基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;
[0044]
构建模块,用于基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型,其中,所述二进制决策树模型中的各叶节点均对应有目标分类类别;
[0045]
生成模块,用于根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;
[0046]
分类模块,用于将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。
[0047]
本技术实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的基于知识蒸馏的数据包分类方法中的步骤。
[0048]
本技术实施例第四方面提供了一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
[0049]
所述通信总线实现处理器和存储器之间的连接通信;
[0050]
所述处理器执行所述计算机可读程序时实现如上任一所述的基于知识蒸馏的数据包分类方法中的步骤。
[0051]
有益效果:与现有技术相比,本技术提供了一种基于知识蒸馏的数据包分类方法及相关装置,所述方法包括基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型;根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。本技术基于预先训练的教师模型所学的知识构建二进制决策树模型,以将复杂的教师模型转换为简单的二进制决策树模型,使得学习到教师模型所学的知识的二进制决策树模型可以布置于可编程交换机,这样一方面可以利用可编程交换机的数据包处理能力,另一方面可以提高可编程交换机的数据包分类效率。
附图说明
[0052]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053]
图1为本技术提供的基于知识蒸馏的数据包分类方法的流程图。
[0054]
图2为本技术提供的基于知识蒸馏的数据包分类方法的流程示意图。
[0055]
图3为本技术提供的基于知识蒸馏的数据包分类装置的结构原理图。
[0056]
图4为本技术提供的终端设备的结构原理图。
具体实施方式
[0057]
本技术提供一种基于知识蒸馏的数据包分类方法及相关装置,为使本技术的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本技术进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
[0058]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0059]
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0060]
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0061]
发明人经过研究发现,数据包分类可以理解为根据数据包包头数据确定数据包所
匹配的类别,并按照类别对应的操作动作对数据包进行处理,比如,丢弃数据包或者接受数据包等。目前普遍采用可编程交换机来执行数据包分类操作,可编程交换机具有低延迟和高吞吐等性能,并且可编程交换机在进行数据包分类过程中,允许管理员通过简单的编程指令对数据包进行操作。然而,可编程交换机所支持的编程指令所能执行的操作比较少(例如,仅支持整数的加减和位移操作等),这使得具有高精度的分类网络模型(例如,卷积神经网络以及循环神经网络等),从而限制了可编程交换机的数据包分类效率。
[0062]
为了解决上述问题,在本技术实施例中,基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型;根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。本技术基于预先训练的教师模型所学的知识构建二进制决策树模型,以将复杂的教师模型转换为简单的二进制决策树模型,使得学习到教师模型所学的知识的二进制决策树模型可以布置于可编程交换机,这样一方面可以利用可编程交换机的数据包处理能力,另一方面可以提高可编程交换机的数据包分类效率。
[0063]
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
[0064]
本实施例提供了一种基于知识蒸馏的数据包分类方法,如图1和图2所示,所述方法包括:
[0065]
s10、基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量。
[0066]
具体地,教师模型为经过训练的深度学习网络模型,教师模型用于确定数据包对应的分类类别,并可基于教师模型确定分类类别对数据包进行分类,其中,教师模型可以采用卷积神经网络,循环神经网络等。可以理解的是,教师模型对应的训练样本集包括若干训练数据包,若干训练数据包中的每个训练数据包均对应有类别标签,该类别标签为训练数据包对应给的分类类别。
[0067]
预设训练集包括若干训练数据包,各训练数据包输入经过训练的教师模型后,经过训练的教师模型可以各训练数据包各自对应的类别概率向量,其中,类别概率向量为教师模型所学习的知识,并通过蒸馏方式将教师模型所学习的类别概率向量传递给候选的二进制决策树模型,以使得二进制决策树模型可以学习到教师模型所学习的类别概率向量。
[0068]
类别概率向量包括若干概率值,若干概率值对应一个分类类别,用于反映训练数据的目标分类类别为该概率值对应的分类类别的概率。其中,预设训练集中的训练数据包可以为用于训练教师模型的训练数据集中的训练数据包中的一部分,也可以是,部分包含于该训练数据集,部分不包含于该训练数据集,还可以是,全部不包含于训练数据集。但是,无论预设训练集中的各训练数据包是否包括于教师模型,预设训练集中的各训练数据包均可以用于训练教师模型。可以理解的是,预设训练集中的训练数据包与用于训练教师模型的训练数据集中的训练数据包均是用于训练用于执行数据分类任务的网络模型的训练数据,例如,预设训练集中的训练数据包与用于训练教师模型的训练数据集中的训练数据包均为流量数据包等。
[0069]
s20、基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型。
[0070]
具体地,所述二进制决策树模型包括若干叶节点,每个叶节点均包括若干训练数据包以及对应有目标分类类别,其中,目标分类类别为基于叶节点所包括的若干训练数据包对应的类别概率向量确定。也就是说,基于二进制决策树模型可以其包括的各叶节点对应的目标分类类别,以及该叶节点对应的二进制字符串。在获取到叶节点对应的二进制字符串和目标分类类别后,可以将叶节点对应的二进制字符串可以作为一个分类规则,目标分类类别可以作为该分类规则对应的类别标签,从而可以基于二进制决策树模型进行数据包分类。在一个实现方式中,类别标签可以为操作动作,例如,丢弃网络包或者接受网络包等。
[0071]
所述数据属性可以为基于训练数据包的数据包包头所确定,其中,属性数据可以包括数据包包头所包括的所有数据段所构成的,也可以是数据包包头中的部分数据段段所构成的。其中,数据属性中的每个数据元素均为二进制字符,也就是说,每个数据元素均为0或者1;数据属性的数据长度等于构成数据属性的数据段的数据位数。例如,数据属性由数据包包头中的ip数据段构成,ip数据段可以包括8位的协议号以及16位的目的端口号,那么数据属性的数据长度为8+16=24,并且协议号以及目的端口号中的每个二进制字符为数据属性中的一个属性元素,即数据属性包括24位属性元素,每位属性元素均为0或者1。
[0072]
在本实施例的一个实现方式中,所述基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型具体包括:
[0073]
s21、将各训练数据包及其对应的类别概率向量构成的训练数据集作为目标训练集,并将各训练数据包对应的属性数据构成的属性数据集作为目标属性数据集;
[0074]
s22、基于所述目标属性数据集确定目标属性位,并基于所述目标属性位将所述目标训练集中的各训练数据包划分至两个节点上;
[0075]
s23、对于两个节点中所包括的训练数据包的数量小于预设数量阈值的第一节点,将所述节点作为叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标类别;
[0076]
s24、对于两个节点中所包括的训练数据包的数量大于或者等于预设数量阈值的第二节点,将所述目标属性数据集中的各属性数据中位于目标属性位的属性元素去除以得到候选属性数据;
[0077]
s25、将所述第二节点所包括的各训练数据包以其对应的类别概率向量所形成的训练数据作为目标数据集,将所述第二节点所包括的各训练数据包各自对应的候选属性数据所形成的属性数据集作为目标属性数据集;
[0078]
s26、继续执行基于所述目标属性数据集确定目标属性位的步骤,直至将所述预设训练集中的各训练数据包均划分至叶节点内。
[0079]
具体地,在所述步骤s22中,所述目标属性位为属性数据中的一个数据位置,对于目标属性数据集中的每个属性数据,基于该目标属性位均可以选取到的一个属性元素,其中,所述属性元素的元素值为0或1。也就是说,在构建二进制决策树模型时,首先会在属性数据中选取选位位置(即,目标属性位),然后基于各属性数据中在该选位位置的属性元素来对各训练数据包进行划分,以将各训练数据包划分至各自对应的节点。在本实施例中,由于属性数据中的每个属性元素均为0或者1,从而基于各属性数据在目标属性位上的属性元素的元素值可以将各训练数据包划分至两个节点,其中,一个节点中的所有训练数据包在
该目标属性为上的属性元素均为0,另一个节点中的所有训练数据包在该目标属性为上的属性元素均为1。
[0080]
目标属性位可以按照从前向后的顺序在属性数据对应的位置序列中选取,也可以在属性数据对应的位置序列中随机选取,还可以是基于属性数据对应的位置序列中的各位置序号各自对应的基尼系数确定,例如,选取基尼系数最小的位置序号作为目标属性位,或者,选取基尼系数最大的位置序号作为目标属性位。在一个典型实现方式中,目标属性位为基于位置序列中的各位置序号中基尼系数最小的位置序号,其中,所述基尼系数的计算公式可以为:
[0081][0082]
其中,gini()表示基尼系数,d表示目标训练集,ai表示属性数据中的第i位属性,dv表示目标训练集中的训练数据包在第i位属性上取值为v的训练数据包所形成的数据集;p
dv
表示dv中的各训练数据包的类别概率向量的平均类别概率向量;|d|表示目标训练集所包括的训练数据包的数量;|dv|表示dv所包括的训练数据包的数量。
[0083]
基于此,所述目标属性位的选取规则可以为:
[0084]a*
=arg min gini(d,ai)i∈{1,2,...,m}
[0085]
其中,a
*
表示目标属性,d表示目标训练集,ai表示属性数据中的第i位属性,m表示目标属性集中的属性数据的数据位数。
[0086]
两个节点中的每个节点对应的节点标识均为目标属性位在各属性数据中可以选取到的属性元素的元素值,并且各节点各自对应的节点标识互不相同。可以理解的是,每个节点可以包括节点标识以及目标属性位,所述节点的节点标识以及目标属性位为节点的节点信息。由此,每个节点所包括的训练数据包可以基于节点对应的节点信息在目标训练集选取相匹配的训练数据包所得到的,其中,该节点所包括的各训练数据包的属性数据中位于目标属性位的属性元素为节点标识。例如,节点信息中的目标属性为3,节点标识为1,那么节点包括的各训练数据包的属性数据中位于第三位的属性元素为1。在本实施例中,由于属性数据中的每个属性元素均为0或1,从而在基于目标属性位将目标训练集中的训练数据包划分至两个节点时,会将目标训练集划分为两个子数据集,两个子数据集中的一个子数据集中的各训练数据包的属性数据在目标属性位的属性元素为0,一个子数据集中的各训练数据包的属性数据在目标属性位的属性元素为1。
[0087]
在本实施例的一个实现方式中,为了避免因目标数据集为空,或者目标数据集中的每个属性数据均相同,而导致无法基于目标属性位将目标数据集划分至两个节点的问题。在所述基于所述目标属性数据集确定目标属性位之前,所述方法还包括:
[0088]
检测所述目标属性数据集是否满足预设条件;
[0089]
若所述目标属性数据集满足预设条件,则执行基于所述目标属性数据集确定目标属性位的步骤;
[0090]
若所述目标属性数据集不满足预设条件,则将所述目标训练集所属的节点作为叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别。
[0091]
具体地,所述预设条件为所述目标属性数据集不为空,且所述目标属性数据集至
少存在两个互不相同的属性数据。也就是说,目标属性数据集不为空集,并且目标属性数据集中的各属性数据不全相同。可以理解的是,目标训练集中的各训练数据包各自对应的属性数据不为空,并且目标训练数据集中至少存在第一训练数据包和第二训练数据包,第一训练数据包对应的属性数据与第二训练数据包对应的属性数据不同。其中,当所述目标属性数据集满足预设条件时,说明目标训练集可以基于目标属性位进行划分,从而可以执行基于所述目标属性数据集确定目标属性位的步骤,当然,在执行基于所述目标属性数据集确定目标属性位的步骤时,目标训练集中所包括的训练数据包的数量大于预设阈值。反之,当目标属性数据集不满足预设条件时,可以将目标训练集所属节点作为二进制决策树的一个叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别。
[0092]
在本实施例的一个实现方式中,所述基于所述目标属性数据集确定目标属性位之前,所述方法还包括:
[0093]
基于所述目标训练集中的各训练数据包各自对应的类别概率向量确定各训练数据包对应的预测类别;
[0094]
若各训练数据包对应的预测类别全相同,则将所述目标训练集所属的节点作为叶节点,并将所述预测类别作为所述叶节点对应的目标分类类别;
[0095]
若各训练数据包对应的预测类别不全相同,则执行基于所述目标属性数据集确定目标属性位的步骤。
[0096]
具体地,目标训练集中各训练数据包均对应有类别概率向量,基于各训练数据包各自对应的类别概率向量可以确定各训练数据包的预测类别,其中,预测类别为类别概率向量中的最大向量元素所对应的分类类别。此外,当各训练数据包对应的预测类别全相同时,将目标训练集所属节点作为二进制决策树的一个叶节点,并将各训练数据包对应的预测类别作为叶节点对应的目标分类类别。
[0097]
在所述步骤s23中,所述预设数量阈值为预先设置的,为节点可以在叶节点的限制条件。也就是说,在基于目标属性位将目标训练集划分至两个节点后,基于预设数量阈值来确定节点是否为叶节点。也就是说,在节点包括的训练数据包的数量包小于预设数量阈值时,直接将节点作为叶节点;在节点包括的训练数据包的数量大于或者等于预设数据阈值时,采用将节点所包括的训练数据包所形成的集合作为目标训练集,然后再检测目标训练集是否满足可以执行基于目标属性数据集选取目标属性位的操作。
[0098]
当两个节点中的第一节点的所包括的训练数据包的数量小于预设数量阈值时,将所述第一节点作为叶节点,并基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别。反之,当两个节点中的第二节点包括的所包括的训练数据包的数量大于或者等于预设数量阈值时,将第二节点作为中间节点,并以中间节点为出发点继续构成决策树节点。其中,当两个节点中的一个节点所包括的训练数据包的数量大于或者等于预设数量阈值时,对该节点进行决策树节点构建;当两个节点中的每个节点所包括的训练数据包的数量均大于或者等于预设数量阈值时,分别对两个节点进行决策树节点构建,直至将所有训练数据包均划分至叶节点内。
[0099]
在所述步骤s25中,所述基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别具体包括:
[0100]
获取所述叶节点所包括的各训练数据包各自对应的类别概率向量的平均类别概率向量;
[0101]
将所述平均类别概率向量中的最大向量元素所对应的类别作为所述叶节点对应的目标分类类别。
[0102]
具体地,所述平均类别概率向量的向量维度等于类别概率向量的维度,其中,各训练数据包各自对应的类别概率向量的向量维度相同。平均类别概率向量中的每个向量元素等于各类别概率向量中相对应的向量元素的平均值。在一个实现方式中,平均类别概率向量的计算公式可以为:
[0103][0104]
其中,p表示平均类别概率向量,pi表示平均类别概率向量的第i位向量元素,k表示平均类别概率向量的向量维度,d表示目标训练集,y表示目标训练集中训练数据包对应的类别概率向量,|d|表示目标训练集中的训练数据包的数量。
[0105]
在获取到平均类别概率向量后,确定平均类别概率向量中的最大向量元素,并将最大向量元素对应的分类类别作为所述叶节点对应的目标分类类别,其中,目标分类类别的计算公式可以为:
[0106][0107]
其中,c表示目标分类类别,p表示平均类别概率向量,j表示第i位向量元素。
[0108]
当然,在实际应用中,基于所述叶节点所包括的各训练数据包各自对应的类别概率向量确定所述叶节点对应的目标分类类别还可以采用其他方法,例如,获取所有类别概率向量中的最大向量元素,将获取到的最大向量元素作为叶节点对应的目标分类类别;或者时,基于各类别概率向量确定各训练数据包各自对应的预测类别,选取对应训练数据包最多的预测类别作为叶节点对应的目标分类类别等。
[0109]
s30、根据所述二进制决策树模型生成用于数据包分类的三元匹配流表。
[0110]
具体地,三元匹配流表包括若干三元数据组,若干三元数据组中的每个三元数据组均是基于二进制决策树模型确定得到的,为数据包分类的一个分类规则与操作动作的对应关系。也就是说,每个三元数据组均包括分类规则以及操作动作,当数据包与三元数据组中的分类规则相匹配时,则对数据包执行分类规则对应的操作动作。
[0111]
在一个实现方式中,所述根据所述二进制决策树模型生成用于数据包分类的三元匹配流表包括:
[0112]
获取所述二进制决策树模型中的各叶节点各自对应的二进制字符串及目标分类类别;
[0113]
将各叶节点对应的二进制字符串以及目标分类类别转换为三元数据组,将各叶节点对应的三元数据组所形成的数据表作为三元匹配流表。
[0114]
具体地,所述二进制字符串为用于对数据包进行分类的分类规则,目标分类类别为当数据包于二进制字符串匹配时,被执行的操作动作。其中,二进制字符串为基于二进制决策树从根节点到叶节点的节点路径上的所有节点所确定的,目标分类类别为叶节点对应的目标分类别。由此,二进制字符串的获取过程可以为:获取根节点到叶节点的节点路径,
并获取节点路径上各节点对应的目标属性位以及节点标识,然后将各节点的节点标识按照目标属性位在属性数据中的位置顺序进行排列,以得到叶节点对应的二进制字符串,其中,节点路径上各节点包括根节点和叶节点;二进制字符串的字符长度等于属性数据的数据长度。
[0115]
三元数据组包括掩膜、值和类别,在获取到各叶节点对应的二进制字符串以及目标分类类别后,将二进制字符串确定三元数据组中的掩膜对应的掩膜内容、值对应的值内容,将目标分类类别作为三元数据组中的类别对应的类别内容,以将叶节点所包括的分类规则以及操作动作转换为三元数据组,由此,所有叶节点所形成的三元数据组构成三元匹配流表。此外,在实际应用中,三元数据组中的掩膜和值可以不采用二进制形式存储,例如,三元数据组中的掩膜和值均采用16进制形式存储等。
[0116]
s40、将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。
[0117]
具体地,在获取到三元匹配流表后,将三元匹配流表作部署于可编程交换机,可编程交换机可以基于三元匹配流表来确定其接收搭配的数据包所对应的目标分类类别,并基于其对应的目标分类类别进行分类。本实施例通过将二进制决策树转换为三元匹配流表形式部署于可编程交换机上,使得可编程交换机部署了基于复杂教师模型所学习的知识训练得到的简单决策树模型,可以提高数据包的分类速度以及分类准确性。
[0118]
在本实施例的一个实现方式中,所述通过所述可编程交换机对数据包进行分类具体包括:
[0119]
当可编辑交换机接收到待分类数据包时,获取于所述待分类数据包对应的分类属性数据;
[0120]
在所述三元匹配流表中查找所述分类属性数据所对应的目标分类类别,以分类所述待分类数据包。
[0121]
具体地,待分类数据包为可编辑交换机接收到的数据包,分类属性数据为提取待分类数据包包头所形成的属性数据,分类属性数据的数据长度与属性数据的数据长度相同,并且分类属性数据所对应的分类数据包包头的数据段与属性数据包所对应的数据包包头的数据段相对应,以使得在三元匹配流表可以对确定分类属性数据所对应的三元数据组,以得到待分类数据包对应的目标分类类别。
[0122]
在本实施例的一个实现方式中,所述三元匹配流表包括掩膜、值以及类别;所述在所述三元匹配流表中查找所述分类属性数据所对应的目标分类类别,以分类所述待分类数据包具体包括:
[0123]
对于所述三元匹配流表中的每个三元数据组,将所述分类属性数据与所述三元数据组中的掩膜相与,以得到候选值;
[0124]
若所述候选值与所述三元数据组中的值相等,则将所述三元数据组中的类别作为分类属性数据所对应的目标分类类别,以分类所述待分类数据。
[0125]
具体地,在在获取分类属性数据后,将分类属性数据与三元数据组中的掩膜相与,以得到候选值;若候选值与三元数据组中的值相等,则将三元数据组中的类别作为待分类数据包对应的目标分类类别,以对待分类数据包进行分类。
[0126]
综上所述,本实施例提供了一种基于知识蒸馏的数据包分类方法,所述方法包括
基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型;根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。本技术基于预先训练的教师模型所学的知识构建二进制决策树模型,以将复杂的教师模型转换为简单的二进制决策树模型,使得学习到教师模型所学的知识的二进制决策树模型可以布置于可编程交换机,这样一方面可以利用可编程交换机的数据包处理能力,另一方面可以提高可编程交换机的数据包分类效率。
[0127]
基于上述基于知识蒸馏的数据包分类方法,本实施例提供了一种基于知识蒸馏的数据包分类装置,如图3所示,所述的装置包括:
[0128]
确定模块100,用于基于经过训练的教师模型,确定预设训练集中的各训练数据包各自对应的类别概率向量;
[0129]
构建模块200,用于基于各训练数据包及其对应的属性数据和类别概率向量构建二进制决策树模型,其中,所述二进制决策树模型中的各叶节点均对应有目标分类类别;
[0130]
生成模块300,用于根据所述二进制决策树模型生成用于数据包分类的三元匹配流表;
[0131]
分类模块400,用于将所述三元匹配流表部署于可编程交换机,并通过所述可编程交换机对数据包进行分类。
[0132]
基于上述基于知识蒸馏的数据包分类方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的基于知识蒸馏的数据包分类方法中的步骤。
[0133]
基于上述基于知识蒸馏的数据包分类方法,本技术还提供了一种终端设备,如图4所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communications interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
[0134]
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0135]
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
[0136]
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0137]
此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0138]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1