加密流量分类-论文3: FS-Net_ A Flow Sequence Network For Encrypted Traffic Classification
本文于 613 天之前发表,文中内容可能已经过时。
0、摘要
FS-Net是一个端到端的分类模型,它从原始流中学习代表性特征,然后在一个统一的框架中对它们进行分类。采用多层编码器-解码器结构,可以深入挖掘流的潜在序列特征,并引入重构机制,提高特征的有效性。
1、问题引入
传统的基于统计特征加上机器学习的流量分类,太依赖与专业经验,即人类的特征工程,特征工程的好坏直接影响分类性能。以往的基于DL的流量分类方法如Deep Packet:,只使用了网络流量的有效载荷进行分类,没有考虑到流量中的其他信息。因此提出基于DL的端到端的分类模型,尝试设计一种新的适合流序列特征的神经网络结构,可以直接从原始输入中学习特征,学习到的特征以真实标签为指导,从而提高性能。因此,它可以节省设计和验证功能的人力。
2、问题定义
- FS-Net是基于网络流量的应用分类,即应用识别。
一个原始流量可以表示为不同的类型序列,如消息类型序列或者包长度序列,本文将一个原始流量看作包长度序列。具体的,Xp表示第p个样本的序列表示:
其中n是Xp的长度,L~i~^p^是时间步长i的数据包值。
3、模型结构
3.1总览
类似于AE半监督的思想,模型由五大块组成
- 嵌入层
- 编码层
- 解码层
- 重构层
- 分类器
3.2 嵌入层
- 任务:将L~1~到L~n~的序列信息转化为e~1~到e~n~的向量表示。如果有K个数据,且嵌入向量的维度为d,那么K个数据经过嵌入层将转化为一个矩阵E^K*d^,矩阵E是可以在模型训练过程中训练出来的,矩阵的每一个行向量都对应着一个数据样本的嵌入向量表示。
使用嵌入向量的优点:
- 输入为嵌入向量,输出压缩后的特征
- 编码采用的是堆叠的Bi-GRU神经网络模型。低层的编码器学习到局部特征,高层的编码器学习到相对全局的特征,最后将所有层的最终前向与后向的隐藏状态串联Z~e~作为编码器压缩后的特征。此时,Z~e~就包含了整个编码流程序列的双向上下文信息,将会作为分类器的输入的一部分。(既有局部的,又有全局的)
3.4 解码层
- 解码器的结构如同编码器一样,为折叠的Bi-GRU网络结构。
输入为Z~e~,输出由两个部分组成
1.第一部分类似于编码器的输出,为解码器所有层的前向状态与后向状态的拼接,称之为,Z~d~这部分输出将会作用与最终的分类器输出的一部分。
2.第二部分则是最后一层解码器的自身输出,这部分将会送入重构层,进行重构,重构目标是还原起初的模型输入。3.5 分类器
- 分类器之前,设置了Dense层对分类器的输入(即Z~e~与Z~d~向量的拼接)进行压缩,得到新的特征向量z.
然而,z的维度还是太高,使用两层带Selu的激活函数的MLP对z进行降维得到Z~c~,降维过后能有效避免过拟合问题。
公式中的W1,b1,b2都是可以学习的参数。 - 输入为Z~c~,经过softmax分类器,得到预测标签A^-^,与真实标签A之间构造一个交叉熵损失L~C~
- 在重构器后面,解码器中的Bi-GRU经过重构,输出的L~i^~与原始的输入特征L~i~之间可以构造另外一个交叉熵损失L~R~
因此,最终的损失函数
α是超参数。
4、实验
- 实验设置:以报文长度序列作为FS-Net的输出,嵌入向量维度d设置为128,GRU的隐藏状态维度也是128,α设置为1,dropout设置为0.3,Adam优化器的lr设置为0.0005
- 与其他模型结果实验对比的结论:加密流分类任务中,报文长度比消息类型更具有代表性。主要原因可能是[11]发现的不同应用程序的消息类型序列高度重叠。有更多的信息蕴含在包长度集合中而不是消息类型的集合中。
对FS-Net的一些分析:
- 摒弃解码器层、重构层和重构损失,即只将基于编码器的特征向量Z~e~传递到密集层进行分类。该变体称为FS-ND.此时FS-Net与其变体FS-ND的默认输入仍旧为包长度序列(The packet length sequence)。
个人感觉这种变体特别像BERT,BERT就是只使用了Transformer的编码器结构,经历预训练后,在诸多下游任务中均获得了不错的效果。当然,BERT是有MLM与NSP的预训练任务的,而此处的FS-ND貌似并没有提及,只是单纯砍掉了解码器与重构器那一部分。
- 因为传统的消息类型马尔可夫方法(FoSM、SOCRT、SOB)以消息类型序列(The message type sequences)作为输入。为了便于比较,FS-Net和FS-ND也结合消息类型序列进行测试,对应的方法记为FS-Net- s和FS-ND- s。
- 采用多属性序列(消息类型序列和报文长度序列)来提高性能。即同时关注包长度序列(The packet length sequence)与消息类型序列(The message type sequences),这两种不同的模型被称为FS-Net-SL和FS-ND-SL。
- 结果分析:
- 重构机制(即包含解码层、重构层)有用,提高分类性能。与不同序列比较,FS-Net的FTF性能始终优于FS-ND,提高了0.01左右。利用重构机制,引导从编码器学习到的特征存储更丰富的信息。
- 重构机制有用,但是对比FS-ND提示不大,并且加了那么多结构,有点不太划算。变体模型FS-ND也优于现有的模型,而且FS-Net和FS-ND之间的性能差距不大。然而,FS-ND模型比FS-Net需要更少的层,可以更快地训练。
- 报文长度序列的信息比消息类型序列的信息更丰富。消息类型序列的信息几乎被合并到包长度序列中。从FS-Net到FS-Net- sl的改进不显著(如FTF为0.0005)。FSND和FS-ND-SL之间也存在类似的现象。
- 摒弃解码器层、重构层和重构损失,即只将基于编码器的特征向量Z~e~传递到密集层进行分类。该变体称为FS-ND.此时FS-Net与其变体FS-ND的默认输入仍旧为包长度序列(The packet length sequence)。
调参分析:
- 模型结构,类似与NLP中的Seq2Seq结构,可否在中间的编码器与解码器之间照葫芦画瓢加上Attention机制来进一步优化捏?
- 去除解码器与重构器,模型复杂度减少,并且实验证明在数据集上的表现FS-ND也跟FS-Net差之无几,能否在FS-ND上做出改进,使之效率与复杂度要比现在的模型好。