网络流量分类中的多任务学习

写在前面:
本文翻译供个人研究学习之用,不保证严谨与准确
github链接:https://github.com/WithHades/network_traffic_classification_paper
本文原文:S. Rezaei and X. Liu, “Multitask learning for network traffic classification”, arXiv:1906.05248, 2019

网络流量分类中的多任务学习

摘要
  流量分类在当今互联网上有着各种各样的应用,从ISP中的资源分配、计费和QoS,到客户端中的防火墙和恶意软件检测。经典的机器学习算法和深度学习模型被广泛应用于解决流量分类问题。然而,训练这样的模型需要大量的标记数据。在构建分类器时,标记数据通常是最困难和最耗时的过程。为了解决这一难题,我们将流量分类重新构造为一个多任务学习框架,在该框架中,流量的带宽需求和持续时间将与流量类别一起预测。这种方法的动机有两个:首先,带宽需求和持续时间在许多应用中都很有用,包括路由、资源分配和QoS。其次,这两个值可以很容易地从每个流中获得,而无需在受控和隔离的环境中对流进行人工标记或捕获。结果表明,在带宽和持续时间预测任务中,使用大量容易获得的数据样本,而在流量分类任务中只使用少量的数据样本,可以获得较高的精度。因此,我们提出的多任务学习框架避免了对大标记流量数据集的需求。我们使用ISCX和QUIC公共数据集进行了两个实验,并展示了我们的方法的有效性。

  关键词: 多任务学习监督学习网络流量分类QUIC协议分类

I. 介绍

  网络流量分类在当今Internet上有着广泛的应用,如资源分配、QoS、isp计费、异常检测等。最早的解决网络流量分类的方法是使用端口号或未加密的包有效负载。这些方法依靠人工不断地在未加密的有效载荷或匹配的端口号中寻找模式。由于效率低、精度低,出现了基于经典机器学习算法的新方法,如随机森林(RF)和k近邻(KNN)。
  多年来,经典的机器学习算法在流量分类任务中取得了最先进的精度。然而,这些相对简单的方法无法捕获当今互联网流量中存在的更复杂的模式,因此,它们的准确性已经下降。近年来,深度学习模型在流量分类方面取得了最新的成果。它们学习复杂模式和执行自动特征提取的能力使它们成为流量分类的理想选择。
  虽然深度学习方法可以达到很高的精度,但它们需要大量的标记训练数据。在网络流量分类任务中,标记是一项耗时且繁琐的任务。为了正确地标记每个流,研究人员通常在一个背景流量很小的受控环境中单独捕获每个类的流。这一过程费时费力。此外,在受控环境中观察到的流量模式可能与实际流量存在显著差异,这使得推断不准确。
  为了减少对大量标记训练样本的需求,我们提出了一种多任务学习方法,它可以执行三个预测(任务),其中只有一个预测需要人工努力,标记的环境是受控的。分别是带宽、持续时间和流量类预测任务。对于任何捕获的数据,无论它是否在隔离的受控环境中捕获,都可以轻松地计算每个流的总带宽和持续时间,而无需人为标记。因此,在一个多任务学习框架中,通过将大量模型参数共享到所有任务中,可以训练出带宽和持续时间任务数据量大,而流量等级预测任务只有少量标记样本的模型。此外,对于各种应用,例如资源分配或QoS,带宽和持续时间预测是非常有用的。

II. 相关工作

  在深度学习模型广泛出现之前,经典的机器学习方法已经被广泛应用于网络流量分类[1]。这些方法通常依赖于有监督的学习方法,如支持向量机(SVM)[2]、[3]、C4.5[4]、[5]、朴素贝叶斯[6]、[7]、k近邻[8]、[9]等,或无监督的聚类方法,如k均值[10]、[11]或高斯混合模型[12]。然而,由于简单、手动特征提取(在当今高度加密的流量下变得更加困难)以及缺乏捕获更复杂模式的高学习能力,它们的准确性最近有所下降。
  近年来,随着图像分类、语音识别、翻译等多种问题的深入学习方法取得了可喜的成功,网络研究人员最近将这些方法应用于流量分类中[13]。在文献[14]中,1998年设计的用于手写体数字识别的LeNet-5卷积神经网络(CNN)模型被用于流量类型分类。许多统计特征被重新排列成二维图像作为模型的输入。他们报告的准确性很高,但该模型不能用于在线应用程序[15],因为它需要观察整个流才能获得统计特征。在文献[16]中,作者使用统计特征和有效载荷数据对QUIC协议进行流量分类。他们首先使用统计特征和随机森林算法来区分聊天和语音呼叫与其他类。如果检测到其他类,它们将有效负载数据与CNN模型一起用于对视频流、文件传输和Google音乐进行分类。它们的第一个阶段需要观察整个流程,因此,它只适用于离线应用程序。有效载荷信息虽然是加密的,但也被用于其他论文中。在[17]中,CNN和堆叠自动编码器(SAE)一起用于ISCX数据集,以分类流量类型和应用。这些方法使用深层神经网络作为黑盒,而不需要识别人类可理解的特征。
  在文献[18]中,利用Reproducing Kernel Hilbert
Space(RKHS)将每个流的时间序列特征转化为二维图像。生成的图像用作CNN模型的输入。他们比较了CNN模型和经典的机器学习方法,包括支持向量机、决策树和朴素贝叶斯。CNN模型的精度达到99%以上,优于经典的机器学习方法。在[19]中,卷积神经网络、长短期记忆(LSTM)模型和各种组合被用于对多种服务(如YouTube和Office365)进行分类。当时间序列特征和标题特征与CNN/LSTM体系结构一起使用时,它们的准确率达到96%左右。在[20]中,CNN和CNN+LSTM模型用于识别80个移动应用程序。它们使用原始数据包头和有效负载,并对大量类实现高精度。他们首次使用阻塞分析来阐明深度学习模型如何对加密流量进行分类。研究表明,SSL/TLS协议中的未加密握手字段可以有效地用于应用程序的识别。然而,他们使用在运营ISP捕获的大型数据集来训练这样的大型模型。
  在[15]中,提出了一个通用框架,为任何流量分类任务提供了直接的指导和方向。以前的大多数工作都是在一般框架下进行的。然而,这些方法都依赖于监督学习,需要大量的标记数据进行训练。对于深度模型来说,这变得更加困难,因为它们需要比经典机器学习方法多得多的训练数据。
  唯一一项研究解决了对大型标记数据集的需求是[21]。该方法由一种半监督学习方法组成,其中CNN模型是从采样数据包中预测多个统计特征的预先训练方法。它们使用采样包的时间序列特征。然后,它们用新的层替换最后几层,然后用一个标记的小数据集重新训练。这种方法的优点是不需要人为地标记预先训练的数据集,因为当整个流可用时,统计特征可以很容易地计算出来。然而,他们的方法采用采样数据包,这意味着在执行不适合在线应用的分类之前,它需要观察流的很大一部分。在本文中,我们提出了一个多任务学习的方法,它优于单一任务学习和迁移学习。

III. 深度学习背景

A. 卷积神经网络(CNNs)

  卷积神经网络(CNNs)是一类由若干层卷积运算构成的深度学习模型。CNN模型的结构灵感来自于动物视觉皮层的组织。CNNs由几个卷积层、池化层和全连接(FC)层组成,如图1所示。在卷积层中,使用一组具有少量可学习参数的小内核来从前一层的输出捕获模式。为了生成输出,卷积层在整个输入上使用相同的内核集。通过在一个层中使用相同的内核集,可学习参数的数量大大减少。此外,在整个输入上使用这些内核有助于模型更容易地捕获移位不变的特征。例如,在图像分类任务中,无论老虎在图像中的位置如何,捕获虎皮图案的内核都可以检测到该图案。这对于具有固有的移位不变性的任务尤其有用,包括网络流量分类,其中一些模式可能出现在流的前几个包、流的末尾或可能出现在流的任何部分。CNN模型中通常使用的另一层是池化层,它主要负责子采样。在卷积和池化层集合的末尾,通常使用一组全连接层来捕获输入的高级特征。

B. 多任务学习(MTL)

  多任务学习(Multi-task learning,MTL)的目标是在任务不完全独立、可以提高学习效率的前提下,同时完成多个学习任务。例如,检测危险目标和基于距离的危险评估是自动驾驶的两项重要任务。由于这两个任务是相关的,并且可以从共享表示中受益,因此可以定义多任务学习方法来共同学习这些任务[22]。
  最常见的多任务学习方法是硬参数共享,其中一些深度学习模型的参数在任务之间共享,一些参数保持任务特定[23]。我们的硬参数共享模型在第4-D节中进行了说明。多任务学习模型比多个单任务学习模型更有效,因为在MTL数据集中,所有任务都可以帮助更好地学习所有其他任务。在本文中,我们将证明,使用多任务学习方法可以提高流量分类任务的准确性,在这种方法中,其他任务的数据很容易获得,即预测流量的带宽和持续时间。因此,在训练MTL框架时,当使用大量其他任务的数据时,流量分类任务的准确性显著提高。

IV. 方法

A. 动机

  本文的研究动机是:首先,流量分类任务很难获得足够的标记训练数据。同时,还有其他的预测任务需要进行资源分配,具有易于获取的标签,可以用来提高流量分类任务的准确性。因此,我们有动机通过多任务学习来共同解决这两个问题。
  首先,捕获一个足够大的标记数据集用于流量分类以训练深层模型是一项耗时且繁琐的任务[15]。此外,正确标记捕获的数据也是一项挑战,特别是在捕获期间存在背景流量或多个流量类时。另一方面,未标记的数据通常非常丰富,而且容易捕获。因此,希望能够使用大量未标记的数据来显著减少训练所需的标记数据的数量。本文在一个多任务学习框架中,使用一个大的未标记数据集和一个小的标记数据集来解决这个问题。
  我们方法的第二个动机是,ISP或数据中心经常执行流量分类,以进行计费、资源分配或QoS目的。因此,流量类别和其他流量特征,如带宽需求和持续时间,可以显著改善ISPs的资源分配、QoS等决策。本文提出了一种多任务学习方法,该方法利用流的前几个时间序列特征,执行三个预测任务:带宽、服务质量和服务质量,持续时间和流量等级。不仅带宽和持续时间预测是有用的,它们不需要人工标注,而且可以捕获大量流,然后轻松计算它们的带宽和持续时间。

B. 数据集

1. QUIC数据集

  QUIC数据集[21]是在加州大学戴维斯分校捕获的。它包含5个Google服务的QUIC流量:Google Doc(1251个流量)、Google Drive(1664个流量)、Google Music(622个流量)、Youtube(1107个流量)、Google Search(1945个流量)。数据集包含时间序列特性:数据包长度、相对时间和方向。数据集已预处理。根据[21],所有少于100个包的短流都被删除。注意,数据集中的所有流都被标记。然而,为了评估我们的多任务学习方法,我们只在训练期间使用一小部分的类标签。

2. ISCX VPN-nonVPN 数据集

  ISCX数据集[24]在新不伦瑞克大学捕获,它包含几个流量类型的原始pcap文件。数据集提供细粒度的标签,允许不同的分类:基于应用程序(如AIM chat、Gmail、Facebook等)、基于流量类型(如聊天、流媒体、VoIP等)和VPN/非VPN。在本文中,我们将数据集分为5类,它们具有不同的QoS要求和带宽/持续时间特性:聊天、电子邮件、文件传输、流和VoIP。数据集中同时存在UDP和TCP通信。对于TCP流,我们寻找FIN包来标识TCP流的结束。对于UDP流,我们使用15秒的流超时来标记UDP流的结束。与QUIC数据集类似,所有流都与一个流量类型标签相关联,但我们只使用一小部分标签来预测多任务学习的流量类。

C. 输入特征和预测输出

  一般来说,现代网络流量分类器使用一种或四种输入特征的组合:时间序列、报头、有效载荷和统计特征[15]。由于报头信息的准确性不高,目前很少使用。统计特征是从整个流中获得的,因此,不适合于当流量出现时需要预测的在线分类。当资源分配、QoS或路由决策依赖于预测输出时,在线分类是必要的。有效载荷数据已被证明对一些数据集、特殊业务类型和加密方法有用[17]、[26]。这些方法的成功源于TLS 1.2握手阶段的未加密字段[21]。然而,现代加密方法,如QUIC和TLS 1.3,尽可能减少未加密字段的数量。因此,对于新的和更强大的加密协议,有效载荷信息本身可能没有那么有用。注意,许多接近的流量分类使用了整个流量流的统计特征。流的带宽需求和持续时间也可以看作是通过观察整个流而获得的统计特征。然而,在我们提出的方法中,我们预测带宽和持续时间,因为我们只能观察前几个包,而不能观察整个流。因此,我们将带宽和持续时间作为单独的任务作为输出,而不是使用这些值作为输入的常见流量分类方法。
  在本文中,我们使用了前k个包的三个时间序列特征,即包长度、到达间隔时间和方向。我们的模型的输入是一个长度为k的向量,有两个通道。第一信道包含第一k个分组的到达时间,第二信道包含长度和方向的组合。如[21]所示,对于第二信道,正值表示正向(从客户端到服务器)的分组长度,负值表示反向的分组长度。此外,我们通过假设长度的最大值为1434字节来规范化数据。
  流量分类的常用方法通常侧重于预测流量类型、应用程序、操作系统、用户操作等。除了此类类标签之外,我们还旨在预测可用于资源分配、路由或QoS目的的流量的持续时间和带宽需求。本文将带宽和持续时间预测问题描述为分类问题,而不是回归问题。在我们的实验中,当带宽和持续时间任务被定义为回归问题时,该模型需要很长时间才能收敛,并且表现不好。此外,粗粒度预测通常足以用于路由或QoS目的。因此,我们将这些任务重新定义为分类任务。
  带宽和持续时间类定义的标签如表1所示。我们将带宽和持续时间值分为五个类。我们称之为 [ b w 1 , . . . , b w 4 ] [b_{w1}, ..., b_{w4}] [bw1,...,bw4] [ d 1 , .

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值