写在前面:
本文翻译供个人研究学习之用,不保证严谨与准确
github链接:https://github.com/WithHades/network_traffic_classification_paper
本文原文:Sun, H., Xiao, Y., Wang, J., Wang, J., Qi, Q. I., Liao, J., & Liu, X. (2019). Common Knowledge Based and One-Shot Learning Enabled Multi-Task Traffic Classification. 39485–39495. https://doi.org/10.1109/ACCESS.2019.2904039
文章目录
基于公共知识和一次学习的多任务流量分类
摘要
将深层神经网络应用于流量分类,取得了很好的效果。然而,以往的工作大多局限于一个特定的分类任务,其中限制了分类器潜在的性能和应用领域。可以从不同的角度对流量流进行标记,这有助于通过挖掘更有意义的潜在特征来提高分类器的准确性。另外,基于深度神经网络(deep neural network,DNN)的模型难以适应新分类需求的变化,因为训练这种新模型不仅耗费大量的计算资源,而且需要大量的标记数据。为此,我们提出了一个同时学习多任务流量分类的多输出DNN模型。在该模型中,利用任务间的协同作用来挖掘业务流的公共知识,分别提高每个任务的性能。结果表明,该结构具有满足未来新需求的潜力,同时能够实现分类的快速性和公平性。本文还探讨了一次学习(One-shot learning)方法,该方法指的是数据稀少的学习过程,并且取得了显著的效果。
关键词: 流量分类,多任务模型,迁移学习,一次性学习
II. 介绍
随着硬件容量的提高和通信需求的不断增长,传统internet网络中的简单系统逐渐被一些新的管理系统所取代,如SDN(Software Defined network)[1]。因此网络流量分类已经成为高效网络流量管理和服务质量保证的关键之一[2]。
在过去的几十年中,人们提出了许多理论来更好地预测不同流量的带宽、延迟和质量的要求。人们普遍认为,用一小组流的特征可以很好地预测流的许多性质。在所有的方法中,一些机器学习工具使用流的端口号或者统计特征产生结果。最近,一些研究转向了深度学习技术,获得了令人满意的准确度分数[4]。然而,在许多研究中,不同的流分类任务通常被视为不同的领域,大多数研究都集中在一个特定的领域。
我们的工作是由这样一个事实推动的:需求总是在变化的,而且之前的大多数工作都显示了一些特性,这些特性是不能用以描述流的不同任务的。例如,两个数据流的分类特征和识别流应用的特征惊人地相似[5]–[7]。这意味着对于不同的业务分类任务和应用功能,可能有一些共同的知识,从所选功能到我们需要重新定义的不同流属性基于共同知识的迟滞封闭关系,我们想探索一个一体化的解决方案,一种用来适应不断变化的需求的工具,一种有可能应用于流分类的各种相关任务的工具。
为了解决上述问题,我们比较了许多机器学习工具,选择DNN作为基本技术。为了提取和实现训练中的公共知识,我们提出了多输出DNN结构,这是对简单DNN的一种改进。我们提出的结构分为两个阶段:第一阶段由公共层提取公共知识,然后利用私有层的独立分支分别训练和计算各种流分类任务。为了节省计算时间和内存,公共层也被认为是有效的。每个分类任务都拥有一个扩展的、相对简单的私有层分支,用于任务专门化。此外,有了这个提议,我们认为通过添加一个连接到训练有素的公共层的私有层的新分支,可以解决新的相关分类任务。
在实际实现中,由于神经网络的计算复杂度和时间开销,采用DNN等技术是相当困难的。但我们提议的结构可能是一个解决方案。它不仅适用于具有巨大计算能力的集中式数据中心控制器,而且在许多设备计算能力较弱的情况下也是一种潜在的解决方案。一方面,在集中式数据中心中,我们提出了一种算法,用一个计算单元同时处理多个分类任务,无论是在时间上还是在内存上都大大降低了成本。此外,新的需求可以在不影响既定业务的情况下进行测试,并共享从大量先前相关数据中提取的公共知识。另一方面,对于弱端设备,使用我们的分层结构,可以将公共学习层远程放置在云中或一些专门的神经网络计算单元中。然后,只需对几个神经元进行简单的计算,终端设备就可以通过连接到公共层来完成复杂的新任务。
我们的主要贡献总结如下:
- 提出了一种多输出DNN结构来提取网络业务的公共知识,从而解决了业务分类中的多任务问题。
- 实验证明,我们提出的算法能够处理流量分类中不同相关任务的迁移学习,从而满足我们对解决新需求的潜在能力的设想。
- 在大量的实例学习场景实验中,我们提出的算法利用先前训练的公共层的公共知识,在准确率和效率上都有显著的性能。
论文的其余部分安排如下。第二节回顾了流分类的背景和多任务学习的相关工作。第三节介绍了基本算法和我们提出的算法。第四节列出了我们在实验中使用的数据集的描述和统计。第五节给出了我们的实验设置,第六节报告了我们的实验细节和结果。论文在第七节结束。
II. 背景和相关知识
流量分类有很多种方法。机器学习工具是最有前途的技术,在过去的几十年里得到了广泛的研究。大量的研究人员致力于预测不同的流特征。对流量分类的研究主要集中在几个方面。
检测潜在的elephant flow可以避免一些潜在的网络拥塞[8]。许多研究都集中在多媒体业务的精确分类上,p2p(Peer-to-Peer)流量[9]占了所有流量的很大比例。通过对特定应用层信息的区分,可以根据不同的应用需求提供更好的服务质量。而对恶意网络流量的早期检测是对网络安全的一个有吸引力的改进[10]。
一方面,对监督学习进行了探索。kNN(k-最近邻)是一个简单但有用的工具[11]。引入朴素贝叶斯估计量[12],Auld等人[13]随后提出了基于贝叶斯神经网络的分类方法。支持向量机(SVM)被证明是许多分类任务中最有前途的技术之一[14]。C4.5决策树是另一种解决方案[15]。此外,一些研究者尝试了深度学习技术[16]。对于其他领域,深度学习可以通过端到端的方式训练模型,这减少了专家建模的工作[17]。另一方面,Bernaille等人[18]提出了一种无监督学习模型,它与预先定义的标签无关,有助于流量分类。
许多数据挖掘和机器学习算法都是使用先前收集到的带标签或未标记数据集训练的模型来进行预测。然而,在许多实际应用中,特征空间的解释或分布并不总是恒定的[19]。相反,迁移学习允许训练和测试数据集属于不同的领域、任务或分布[20]。
弱监督学习是一种利用其他相关任务标记来提高目标任务性能的学习方法。其中一个主要问题是减少跨域差异。许多弱监督学习已被应用于其他领域,如计算机视觉[22]和自然语言处理[23]。对于自然语言处理,Perera等人[24]结合许多相关任务,如语义标注和名称实体识别,学习更好的句子表示。对于图像分类,Han等人[25]提出了一种利用无监督学习算法对图像背景进行编码,然后利用重建残差将显著目标从背景中分离出来的方法。Zhang等人[26]将自同步学习与多实例学习相结合,进行协显著性检测。最近,Sun等人[27]使用迁移学习,Moustafa等人[28]使用集成学习改进网络流量分类。
值得注意的是,迁移学习有许多分支研究依赖于源任务和目标任务的数据集的可用性。大多数案例都得到了很好的探索。然而,对于流量分类问题,多任务分类很少被注意到。此外,一些研究集中在一次性学习上,目标任务中的标记训练集非常小。一次性学习的关键是可以利用以前训练过的数据中的知识,费飞等[29]第一次提到这个词。
III. 方法
A. 准备
在这一节中,我们将介绍一些符号和定义。首先任务数据集D由两个部分组成:特征空间X和相应的标签空间Y。,给定一个任务数据集D,其中包含特征 X = { x 1 , . . . , x n } ∈ X X = \{x_1, ..., x_n\} \in X X={x1,...,xn}∈X以及相应的标签 Y = { y 1 , . . . , y 2 } ∈ Y Y = \{y_1, ..., y_2\} \in Y Y={y1,...,y2}∈Y,它们之间的关系可以表示为一个映射函数 f : X → Y f:X\rightarrow Y f:X→Y。例如,在对流量进行分类时,一个流的端口号和一组统计量都是一个特征向量X,它们的实际流量可以是标签空间的一个实例 y ∈ Y y\in Y y∈Y。从判别模型的角度来看, f ( ⋅ ) f(\cdot) f(⋅)可以写成 P ( Y ∣ X ) P(Y|X) P(Y∣X)。深度学习是一个拟合函数的过程,这个函数很可能是真函数。它通常使用一个损失函数 L [ f ( X ) , Y ] L[f(X),Y] L[f(X),Y]来判断拟合函数的性能,该函数表示预测值与实际值之间的差异。
B. 多输出的DNN方法
DNN的数学直觉是一个高度非线性的映射函数。给定一个特定的跟踪数据集D,现在考虑我们要对持续时间、流量和许多其他流属性进行分类,这些属性表示为
Y
1
,
Y
2
,
.
.
.
,
Y
n
Y_1, Y_2, ..., Y_n
Y1,Y2,...,Yn,对应的映射函数
f
1
,
f
2
,
.
.
.
,
f
n
f_1, f_2, ..., f_n
f1,f2,...,fn。,
f
n
f_n
fn可能在某种程度上与相同的X相似。在允许的可承受性偏差
Δ
i
\Delta_i
Δi下,我们可以得到:
f
i
=
f
i
′
⋅
f
c
+
Δ
i
(1)
f_i = f_i^{'} \cdot f_c + \Delta_i\tag{1}
fi=fi′⋅fc+Δi(1)
f
i
′
f_i^{'}
fi′分别表示私有层不同分支的映射函数,
f
C
f_C
fC表示公共层的一般功能。这个结构中的公共知识C可以表示为:
C
=
f
c
(
X
,
θ
c
)
(2)
C = f_c(X, \theta_c)\tag{2}
C=fc(X,θc)(2)
θ
c
\theta_c
θc是公共层的参数,如图1所示,多输出DNN包含公共层和多个私有层分支。在神经网络的结构中,所有的公共层是全连接。所有私有分支的第一层也分别与最后一层公共层完全连接。对于每个私有分支,层之间完全连接。但是,来自不同私有分支的任何一对神经元之间没有联系。

假设分类的任务是共有的,对于每一个任务,即神经网络的每个分支,我们用一个函数 L i [ f i ( X , θ ) , Y i ] L_i[f_i(X, \theta),Y_i] Li[fi(X,θ),Yi]来衡量相应拟合函数的性能,其中θ表示神经网络中的参数。因此,总体优化过程如下:
θ ∗ = a r g m i n θ = { θ c , θ i } ∑ i N L i [ f i ( X , θ ) , Y i ] = a r g m i n θ = { θ c , θ i } ∑ i N L i [ ( f i ′ ⋅ f c ) ( X , θ ) , Y i ] (3) \theta^* = \underset{\theta = \{\theta_c, \theta_i\}}{arg\,min}\sum_i^NL_i[f_i(X,\theta),Y_i]\\=\underset{\theta = \{\theta_c, \theta_i\}}{arg\,min}\sum_i^NL_i[(f_i^{'}\cdot f_c)(X,\theta),Y_i]\tag{3} θ∗=θ={θc,θi}argmini∑NLi[fi(X,θ),Yi]=θ={θc,θi}argmini∑NLi[(fi′⋅fc)(X,θ),Yi](3)
θ
∗
\theta^*
θ∗表示最终拟合函数的参数,偏差
Δ
i
\Delta_i
Δi在控制下,为了简单起见,我们在这里和后面的方程式中忽略它。
θ
c
\theta_c
θc和
θ
i
\theta_i
θi分别表示公共层的参数和私有层的第i层分支的参数。
多输出DNN的训练过程与简单DNN的训练过程略有不同。公式3的直接方法是RRBP(循环反向传播),如算法1所示。在RRBP算法中,分别计算每个分支的损失函数,对每一批输入,每个任务依次完成对其私有部分和公共部分的训练。另一种是PPSCBP(parallellprivate和Sum-Common-Backpropagation)。相比之下,PPSCBP定义了一个通用的损失函数:
L
=
∑
i
=
1
N
w
i
L
i
(4)
L = \sum _{i=1}^Nw_iL_i\tag{4}
L=i=1∑NwiLi(4)
L
i
L_i
Li是第i个私有分支的损失函数,
w
i
w_i
wi是分支的权重。然后,相应的优化过程为:
θ
∗
=
a
r
g
m
i
n
θ
=
{
θ
c
,
∑
i
N
θ
i
}
∑
i
N
L
[
∑
i
N
w
i
f
i
(
X
,
θ
)
,
∑
i
N
w
i
Y
i
]
(5)
\theta^* = \underset{\theta = \{\theta_c, \sum_i^N\theta_i\}}{arg\,min}\sum_i^NL[\sum_i^Nw_if_i(X,\theta),\sum_i^Nw_iY_i]\tag{5}
θ∗=θ={θc,∑iNθi}argmini∑NL[i∑Nwifi(X,θ),i∑NwiYi](5)
对于每批训练,计算总损失,并更新所有私有层和公共层。算法1和2对此进行了具体的说明。


对于这两种训练函数,这一建议背后的一个假设是,从数学的角度来看,一次训练多个相关的类将从多维空间的不同方向更新神经网络中的参数。因此,这可能有助于学习不陷入局部最优。
C. 迁移学习
在某些情况下,提出了新的需求,例如新的标签分类任务,但是训练一个新的模型来解决这个问题可能会很昂贵。传统的机器学习方法在为目标任务收集足够的数据的同时,可能会遇到一些困难。我们可能会发现,利用相关任务的数据或使用其他任务先前训练的层来训练新分类器,以加快训练过程。这样的新任务称为目标任务
D
T
D_T
DT,先前训练的任务称为源任务
D
S
D_S
DS。
我们所提出的结构满足了新的流标记的新要求。通常情况下:
m
i
n
θ
=
{
θ
c
,
θ
S
}
∑
i
∈
S
L
i
[
(
f
i
′
⋅
f
c
)
(
X
,
θ
)
,
Y
i
]
(6)
\underset{\theta = \{\theta_c,\theta_S\}}{min}\sum_{i\in S}L_i[(f_i^{'}\cdot f_c)(X,\theta),Y_i]\tag{6}
θ={θc,θS}mini∈S∑Li[(fi′⋅fc)(X,θ),Yi](6)
其中,S是源任务的集合,一个训练过程可以表示为:
θ
∗
=
a
r
g
m
i
n
θ
=
{
θ
c
,
θ
S
,
θ
T
}
{
∑
i
∈
S
L
i
[
(
f
i
′
⋅
f
c
)
(
X
,
θ
)
,
Y
i
]
+
∑
j
∈
T
L
j
[
(
f
j
′
⋅
f
c
)
(
X
,
θ
)
,
Y
j
]
}
(7)
\theta^* = \underset{\theta = \{\theta_c, \theta_S, \theta_T\}}{arg\,min}\{\sum_{i\in S}L_i[(f_i^{'}\cdot f_c)(X,\theta),Y_i]\\+\sum_{j\in T}L_j[(f_j^{'}\cdot f_c)(X,\theta),Y_j]\}\tag{7}
θ∗=θ={θc,θS,θT}argmin{i∈S∑Li[(fi′⋅fc)(X,θ),Yi]+j∈T∑Lj[(fj′⋅fc)(X,θ),Yj]}(7)
T表示目标任务集。换句话说,应该训练公共层,并且需要使用反向传播优化源任务和目标任务中的参数。公式7也可以由等式3重写,类似于等式5。在后面的章节中,我们将使用缩写SCT(训练源层、公共层和目标层)来引用这个方案。
简化上述算法的一种方法是减去先前训练任务的计算:
θ
∗
=
a
r
g
m
i
n
θ
=
{
θ
c
,
θ
T
}
{
∑
j
∈
T
L
j
[
(
f
j
′
⋅
f
c
)
(
X
,
θ
)
,
Y
j
]
(8)
\theta^* = \underset{\theta = \{\theta_c, \theta_T\}}{arg\,min}\{\sum_{j\in T}L_j[(f_j^{'}\cdot f_c)(X,\theta),Y_j]\tag{8}
θ∗=θ={θc,θT}argmin{j∈T∑Lj[(fj′⋅fc)(X,θ),Yj](8)
在OCT(只训练公共层和目标层)的实现中,一种方法是将目标任务直接连接到原始的公共层。但是这种行为可能会对源任务造成一些负面影响。另一种方法是破坏保存记忆的进步——复制训练的公共层中的所有参数,并用它们建立一个新的神经网络。像往常一样训练新的神经网络。
追求一个更清晰和简单的功能,最后一种方法是忽略公共层。
θ
∗
=
a
r
g
m
i
n
θ
T
{
∑
j
∈
T
L
j
[
(
f
j
′
⋅
f
c
)
(
X
,
θ
)
,
Y
j
]
(9)
\theta^* = \underset{\theta_T}{arg\,min}\{\sum_{j\in T}L_j[(f_j^{'}\cdot f_c)(X,\theta),Y_j]\tag{9}
θ∗=θTargmin{j∈T∑Lj[(fj′⋅fc)(X,θ),Yj](9)
如等式9所示,这种训练方案将新任务添加到训练的神经网络中,但只训练新分支的私有层。在这种方法中,公共层和先前的私有层不受OT(仅训练目标层)的影响。它满足了在不影响现有业务的情况下测试新任务的需求。一般来说,源任务学习的公共层倾向于偏向源任务。如果源任务足够多样,则公共层会尝试学习中性的流量表示[30]。图2示出了三个训练方案的简化版本。

D. one-shot 学习
以前的大多数数据挖掘技术都需要大量的数据。然而,往往很难获得大量的训练样本。一次性学习是指用一个非常小的标记训练集进行预测[31]。在流量分类领域,一些标签任务的数据集(如plant flow 或者 mice flow)非常丰富,而需要其他任务(如应用层信息)的数据集很昂贵,或者由于历史遗漏或法律原因过时。
因此,在等式6的条件下,引入了一个新的任务数据集
D
o
=
(
X
o
,
Y
o
)
D_o = (X_o, Y_o)
Do=(Xo,Yo),其中
X
o
⊂
X
X_o\subset X
Xo⊂X和
∣
X
o
∣
≪
∣
X
∣
|X_o| \ll |X|
∣Xo∣≪∣X∣。这里的训练计划与公式7、8和9非常相似。唯一的区别是用
X
o
X_o
Xo和
Y
o
Y_o
Yo分别替换原来的X和Y。
在训练的第一个地方采用大量的训练数据。在融合后,采用相对较小的数据集对目标任务进行训练。并提出了与上一节相同的三种训练方案。
IV. 数据集和特征选择
我们选取了几个实时的网络流量跟踪数据集评估算法。一些重要的特性记录如表1所示。

- WITS:ISPDSL-I和ISPDSL-II是由WITS使用单个DAG 3.7G从新西兰ISP捕获的完全连续的包头流迹[32]。在我们的研究中,我们分别选取了3个流迹档案。该流迹包含ISP客户在两个方向上的所有流量。在传输报头结束后,数据包被截断了4个字节,因此可用于获取第7层的信息。我们收集了所有具有第7层信息的流,其特征是总共有5个以上的包。
- Moore和Zuev[12]使用高性能网络监视器收集了几组流。共有10组公开数据。我们在实验中选择了入口09和入口10。对于每个流记录,包含249个特征,其中包含流可以表征的几乎所有统计信息,信息是基于两个方向和每个方向单独提供的。
对不同流量分类的特征选择进行了充分讨论[33]。本文中,特征提取并不是我们的重点。同时,由于监督学习的识别能力,我们会选择共同的和综合的特征作为输入,为不同的分类任务提供足够的统计信息。因此,我们从之前的研究[5]–[7]中总结并决定实施16个特征,即从特征选择中选择无偏差(已通过矩阵分解方法进行评估,如变分贝叶斯矩阵分解[34]):传输层源端口、目的端口、带有推送标志的数据包数、上传比率下载到达时间和包大小的第一个四分位数,以及到达时间和包大小的统计特性(最小值、最大值、平均值、方差和有根均方值)。
在随后的实验中,讨论了分类的三个任务:持续时间、流量和应用类型。对于前两个任务,我们将它们分成两个具有中值的集合,并分别对它们进行标记。
V. 实验设置
A. 实验环境
我们设计了一系列的实验来评估我们的新流量量分类器使用多输出DNN技术。在这些实验中,我们实现了一个典型的三分支多输出神经网络在评估中讨论,对DNN的所有损失函数进行了交叉熵分析。激活函数是sigmoid函数。在后续的实验中,为了提高神经网络的精度,在构造神经网络时采用了批量归一化的方法。共有层由四个完全连接的层组成,分别有30个神经元。在每个私有分支中,实现两个完全连通的层(第一层神经元数量为30个神经元,输出层神经元数量等于分类数目)。
用于这个实验的平台是:windows10操作系统运行在一台笔记本电脑上,该笔记本电脑配备了英特尔2.4GHz i5-6300U CPU、8GB RAM和一款定制的NVIDIA GeForce GPU,内存为1GB。在以后的实验中,大多数算法的实现都是通过skikit-learn工具完成的[35]。
B. 评估
分类器的性能可以通过精度和时间代价来衡量。
说明分类器的OA(总体准确度)的一个常用方法是通过TP、TN、FP和FN(T和F代表真或假,P和N表示相应的阳性和阴性):
O
A
=
∑
i
=
1
n
T
P
i
∑
i
=
1
n
(
T
P
i
+
F
P
i
)
(10)
OA = \frac{\sum_{i=1}^nTP_i}{\sum_{i=1}^n(TP_i + FP_i)}\tag{10}
OA=∑i=1n(TPi+FPi)∑i=1nTPi(10)
其中n表示类别的数量。在随后的实验中分别讨论了不同分类函数的OA算法。
为了评估时间成本,我们记录每个训练阶段的训练时间。对于DNN,训练过程收敛性的标准被认为是在100个后训练周期中,相对于测试数据集的精度增量不超过0.5%。然后,记录准确度和时间成本,并将其视为最终结果。对于多输出DNN,时间代价被设置为花费最多时间收敛的一个任务。
对于表示流量的知识空间的性能分析,在后面的实验中采用了欧几里德距离。考虑到在多维数学空间中,用
d
i
j
d_{ij}
dij表示到标号j的几何中心的规范化距离,对于有标号i的实例,其perplexity是:
p
e
r
p
l
e
x
i
t
y
=
∑
i
N
d
i
i
s
u
m
i
N
∑
j
N
d
i
j
−
∑
i
N
d
i
i
(11)
perplexity = \frac{\sum_i^Nd_{ii}}{sum_i^N\sum_j^Nd_{ij}-\sum_i^Nd_{ii}}\tag{11}
perplexity=sumiN∑jNdij−∑iNdii∑iNdii(11)
perplexity越少,知识空间越能代表流量。
此外,我们对每个数据集进行随机分割,然后采用保留验证。
VI. 实验结果和分析
A. 多输出DNN
首先通过实验验证了本文提出的算法对多任务流量分类的可行性。以下讨论将讨论三个任务:持续时间、流量和流应用程序分类。我们实现了五种传统的机器学习技术和最近提出的三种技术:kNN(k-最近邻)、SVM(支持向量机)、决策树、线性回归、随机森林、深层神经网络、Maxent[27]、Ensenble Learning[28]。此外,我们在训练前对输入数据进行规范化处理。我们分别构建了三个不同的单dnn,每层有4层,每层30个神经元。
然后,我们继续多输出DNN。为了避免私有层权重过高,从而消除了公共层的有效性问题,我们对每个私有分支采用了一种非常简单的结构,只有一个隐藏层,30个神经元和一个输出层。考虑到这些分类不是很复杂的问题,我们构造了4个共层的多输出DNN,每层有30个神经元。我们测试了两种不同的多输出DNN的训练技术,一种是RRBP(round-robin backpropagation),另一种是PPSCBP(Parallel Private and Sum-Common backpropagation)。
表2说明了用上述工具进行三个分类任务的总体精度结果,以及四个数据集中多输出DNN的两个方案的总体精度。从结果可以看出,KNN是一种很好的应用分类工具。但在其他两项任务中,它并没有得到公平的结果。SVM在TRACE I和TRACE II中的性能相当好,但在Entry09和Entry10中似乎失败了。决策树在Trace II上的流量显示出显著的准确性,尽管它的结果在其他实验中似乎不太好。简单的线性回归似乎不适合这个问题。随机森林算法的稳定性不如DNN算法,特别是在使用Entry09和Entry10的实验中。在所有的实验中,集成学习的性能都是稳定的,比所提出的算法稍差。

就DNN而言,它在三个不同流迹的任务上都保持了非常稳定的性能。除此之外,DNN呈现出最好或次佳的结果所有实验。作为分类的第二步在TRACE I的持续时间内,DNN与最佳值的差值不超过0.2%。因此,与其他机器学习技术相比,DNN在流量分类方面有进步。
对于多输出DNN,从表2中最后两列可以看出,两种训练方案的精度与单个结构的精度大致相等。在大多数情况下,PPSCBP的准确度略高于RRBP,并且通常与单个DNN相联系。这些差异大多在数据集的偏差范围内。因此,多输出DNN应该与单个DNN具有相同的流量分类行为。此外,它在不同的任务和轨迹上的性能稳定显示了它处理多类问题的潜在能力,因此能够很好地满足我们的一些需求。
现在考虑到图3所示的时间成本,不同数据集的不同任务的训练时间变化很大。一般来说,RRBP的成本是Trace I和Trace II中所有三个任务的简单dnn平均标准的3倍多一点,但在Entry09和Entry10中却提高了它们。PPSCBP比单个结构的平均造价高出1~1.5倍。考虑到多输出DNN同时输出三个结果,我们将单个DNN在三个任务上的时间开销进行总结。因此,RRBP训练方案的时间成本与单个结构之和大致相等。另一方面,PPSCBP在收敛速度上比简单结构有优势。此外,特别是在本实验中,使用PPSCBP的多输出DNN可以在节省较少神经元空间的情况下,速度提高2-3倍以上。可以预见的是,DNN训练的任务越多,我们提出的PPSCBP训练方案可以节省更多的时间和内存。在以后的实验中,我们会选择PPSCBP来训练其他多输出DNN。

B. 公共知识
我们讨论了多输出DNN的公共知识抽取问题。使用多输出DNN训练三个任务后,记录多输出DNN中最后一个公共层的值。类似地,我们还记录了简单DNN的最后第二层的值和相应的标签(DNN的值不是事实上的常识,只是作为控制组)。
表3展示了由公共知识表示的不同任务的perplexity。可以看出,在三个任务中,多输出DNN提取的公共知识的perplexity最小。对于相应的训练任务,每个单一的DNN都具有第二最小的perplexity,但是对于其他任务,每个DNN的perplexity相对较高。此外,可以看出,任务的持续时间和流量更相似,而应用任务则有所不同。结果表明,我们提出的算法能够很好地提取网络业务的公共知识。在本实验中,公共知识更能代表单个任务训练对应的知识空间。

我们检查所有神经元的结果空间,并选择其中三个作为代表。如图4所示,在带有三个任务的三维视图中进行了说明。图4a示出在一些训练时段之后,不同标签的值被适当地表示和分别地聚集。作为对比,图4b展示了单个任务训练场景中的知识空间,其中DNN可以提取具有应用类型的知识标签。然而,它在其他两个任务中的表现几乎不令人满意。

C. 迁移学习
多输出DNN的结构在消除时间和内存开销方面具有显著的优势。不过,还有在任何情况下都可以重新绘制,需求字段并不总是常量。在流量分类中,经常有几个任务需要讨论。在前面的研究中,我们应用了三种经典问题。但目前还不清楚多输出DNN是否能够处理一些新的需求。由于数据集的限制,很难设置新的任务标签。因此,我们采用了两阶段策略:首先将两个任务作为源任务进行训练,然后将第三个任务从任务开始并加入到神经网络中。因此,我们评估目标任务的有效性和准确性。
更具体地说,首先,我们应用一个具有4个公共层和2层私有分支的多输出DNN用于两个源任务分类。经过200个训练阶段后,两个任务对测试数据的精确度应该足够稳定。然后,我们添加了目标任务的私有分支,并分别采用了第3节中提到的三种方法。作为标准控制,我们选择了一个简单的神经网络,具有相同的结构数目,即相同的层数和神经元数,并应用相同的学习速率。表4显示了三种方法和标准对照实验的结果。

在结果中,我们可以观察到,在所有的测试中,SCT与单个DNN具有相同的精度,并且时间开销较小。这种现象会导致先前训练的公共层所提取的公共知识会加快新任务的训练过程,并获得公平的结果。此外,与构造一个新的DNN相比,该方案所需内存要少得多。
现在考虑到OCT,它在所有任务和轨迹花费更少的时间的同时,获得比SCT稍好的精度。一般来说,单个DNN收敛的代价是OCT的2~4倍。这是一个了不起的结果。不过,考虑到它对SCT的不利之处,这将是一个折衷的问题。
最后,OT在大多数情况下收敛所需的时间最少。虽然它的精度不如其他两种训练方案和单一的结构,但该方案具有一些特殊功能,可以在不影响当前业务的情况下测试新的分类。它将在实际工业环境中发挥作用。
综上所述,当面临新的流量分类需求时,采用多输出DNN有利于训练过程。SCT是一个很好的解决方案,它实现了我们在本实验中的初步建议。在不考虑源任务的情况下,OCT比传统的DNN方法和其他训练方案具有更高的效率和准确性。此外,OT策略可以作为新需求的快速测试工具。
D. one-shot 学习
对于更真实的实验,某些任务的特征或标签很难获得。同样,我们依次选择持续时间、流量和应用程序作为目标任务,而另一个则执行源任务。采用与上一次实验相同结构的多输出DNN。首先,我们使用所有的数据来训练持续时间和流量任务,从而获得共同的知识。然后,随机选取1%的记录流进行应用分类训练。对三种不同的训练方案进行了测试和比较。同时,构建一个具有相同结构的单一DNN作为标准对照。表5显示了我们的一次性实验的结果。

在数据不足的情况下,神经网络的性能并不理想在某些情况下,准确度为70%到80%在我们一半的测试中都得到了。相比之下,无论采用何种训练方案,多输出DNN的平均精度都在94%左右。更具体地说,SCT在实验中表现得相当好,它不仅表现出更快的收敛速度,而且在大多数情况下比标准控制具有更高的精度。值得注意的是,在某些实验中,与单个DNN相比,精度相差15%。对于OCT,与迁移学习实验类似,它在准确度和节省时间上都超过了SCT。OCT和SCT的精度平均提高了1%到2%。就OT而言,虽然它的精度略低于其他两种方案,但它比单一的DNN有很大的优势。它的收敛速度比其他的快得多。预测流量作为目标任务并使用Entry09,图5示出了不同算法的训练过程的典型情况。

一般来说,多输出DNN对单个DNN的平均精度提升约为5.4%,平均时间缩短到36%左右。在一次性学习实验中,从训练出的公共层得到的公共知识可以提高目标任务训练的总体性能。在这种情况下,我们提出的结构显然大大改进了简单DNN。
VII. 总结
本文提出了一种基于DNN分类器的流量分类结构。首先,我们评估了多输出DNN在流量分类领域的有效性和有效性。我们采用了三个常规任务:预测持续时间、流量和应用类型。与简单的DNN结构相比,PPSCBP训练方案在降低时间开销和节省内存方面是有效的,并且它比其他机器学习工具具有更高的整体精度。然后探讨了公共知识抽取的性能。结果表明,我们提出的结构能够很好地提取业务的公共知识,并且知识空间比所有相应的单任务DNN要少。此外,我们还评估了我们提出的算法在解决新需求方面的潜力。在实验中,这三种训练方案都能更快地满足新分类对相关任务的要求。此外,在一次学习场景中,多输出DNN显示出显著的效果,它可以在常识的支持下获得更高的精度和更快的训练速度。