TrafficGPT: Breaking the Token Barrier for Efficient Long Traffic Analysis and Generation
文章目录
研究内容
面临标记数据依赖,以及生成遵循真实模式的流量样本问题。预训练的深度神经网络已成为解决这些问题的强大工具,通过从大型未标记数据集中学习稳健的数据表示来提供更好的性能。但现有的预训练模型面临着令牌长度限制等挑战,这限制了它们在综合流量分析和现实流量生成方面的有用性。 TrafficGPT深度学习模型,使用线性注意机制的生成预训练,使令牌容量从 512 提高至 12032。在生成任务中,与真实流量相似,JS 散度低,F1 分数接近 0.5(代表随机猜测)。
研究方法
(一)模型架构
模型的目标是学习和表示特征,以网络流作为基本单元,拥有两个应用场景:流量分类、流量生成。模型先将网络流转换为令牌表示,然后进行预训练,最后测试并评估。其中,令牌表示阶段,具备精细的设计,与数据包之间存在可逆关系,保证信息的完整性。在预训练阶段,模型使用未标记的流进行自我监督学习,采用自回归方法对网络流量进行综合特征表示。最后的应用阶段,进行了生成和微调的策略。TrafficGPT基于线性注意机制,通过集成局部注意策略和Reformer中的可逆网络来增强,有效地优化内存使用。令牌移位是加快模型收敛的策略选择,模型隐藏层维度为 512,包含 12 个注意力头,24 层深度。
(二)词语切分/令牌化
关键创新:将时间信息集成到令牌中。使TrafficGPT能够为pcap文件生成时间戳间隔,通过将时间数据合并到标记化策略中,能对 pcap 文件中包含的信息进行更原生和全面的表示。
令牌分层结构:流令牌(包令牌(包开始令牌、链路令牌:不同链路层协议固有格式不一致、时间间隔令牌:距离上一个数据包的时间间隔、十六进制令牌:包头和有效载荷))
(三)预训练
GPT-2自回归方法:序列增量生成,模型逐渐预测后续词汇标记,利用先前生成的内容作为上下文。自回归方法特别擅长生成任务,允许模型生成具有上下文连贯性和语义一致性的文本。该模型根据序列中的前一个标记预测下一个标记的概率分布,该概率分布使用 softmax 激活函数确定,损失函数为交叉熵损失,按令牌分类计算,量化了预测概率分布和实际分布之间的差异。
(四)流量生成
在流量生成任务中,通过手动提供起始令牌或一组预定义的初始令牌来启动。这些初始标记作为生成过程的基础,输入至预训练模型中,提示按顺序预测后续标记,直到达到终止标记,完成训练的模型可以生成具有大量标记的序列。生成的序列的长度很容易超过训练阶段建立的最大窗口长度,这个限制由可用的 GPU 内存决定。最大令牌长度集在训练阶段限制了模型视角,但始终根据其视角窗口内的前一个令牌生成令牌(最近数据内容?)。
使用top-k采样提高生成序列的质量和多样性。Top-k 采样是生成阶段使用的概率方法,用于从模型的概率分布中选择下一个标记,不是从左到右选择前k个令牌,而是涉及从概率最高的前k令牌采样,k为超参数。将选择限制在较小范围的高概率中。
逆向生成pcap包,利用数据包开始令牌作为每个数据包的分隔符来实现,随后解析链接类型和十六进制表示等。当协议不一致而无法正确解析的数据包时,例如存在未定义的数据包头字段或长度超过协议定义的限制,则丢弃“非法”的数据包,生成从前一个数据包的开头重启(?),以保证连贯性。
(五)微调
微调即调整预先存在的预训练模型参数,以更好地适应特定任务需求。该文方法与ET-BERT [14] 和 NetGPT [17]进行对比,关注网络流分类任务。采用一种简单而有效的微调方法,第一步,在流的令牌列表的开头引入了一个 [cls] 令牌承担分类任务。随后,[cls] 令牌和流的令牌被输入到模型中,这使模型利用下一个输出作为分类标签,如图1所示。模型一次可以处理总共260个不同的令牌,使用单个bit可以对 260 个不同的类进行分类,可以通过使用多个比特来扩展这种能力。例如,使用两个位可以促进多达 2602 个类的标记。
评估
数据集描述
五个公开数据集,共189G大小,ISCXTor2016、USTCTFC2016、ISCXVPN2016、DoHBrw2020和CICIoT2022。涵盖了在TCP/IP框架内运行的各种网络流量类型。这包括终端用户互联网活动、虚拟专用网络(VPN)流量、Tor网络流量和物联网(IoT)通信。值得注意的是,一些数据集同时提供流量特征文件和标签以及 pcap 或 pcapng 文件。我们在分析中的唯一重点是原始数据包,我们的研究忽略了任何补充数据。
数据预处理方法
构造网络流,使用相同五元组。对于不属于 TCP 或 UDP 类别的流量,例如地址解析协议 (ARP) 和动态主机配置协议 (DHCP) 数据包,我们采用类似于 ETBERT [14] 的方法,简单地丢弃它们,因为它们与正在传输的特定内容无关。删除小于 5KB 的流文件并丢弃数据不足的类。之后,将 99% 的流量分配给预训练过程,而其余 1% 留出用于测试。
超参数设置的设置
令牌标记数量:260;前馈维度: 512;注意力头个数:12;深度: 24 层;满足长度为 3072 (3k) 和 12032 (12k) 标记的序列;dropout:0.1 (减轻过拟合);该模型利用了 256 的嵌入维度和 256 的头维度,由 8 个局部注意力头和 256 的本地窗口补充,增强了模型对相关局部序列段的关注。架构是可逆的,从 Reformer [48] 中汲取灵感,以进一步提高内存效率。GLU 变体用于增强非线性。此外,应用令牌移位来提高收敛性(?)。训练方案包括 1e−4的学习率、4batch 和 750000 step。
Batch(批次):
一个 batch 是指在训练过程中一次性输入模型的一组样本。这组样本被同时传递给模型进行前向传播和反向传播,用于更新模型的参数。例如,如果数据集中有 1000 个样本,而将它们划分为大小为 50 的 batch,那么就有 20 个 batch。
Step(步骤):
一个 step 是指模型在训练过程中执行一次参数更新的过程。在一个 step 中,一个 batch 的数据被输入到模型中,模型进行前向传播计算损失函数,然后进行反向传播以计算梯度并更新参数。因此,一个 step 包含了一个 batch 的处理。
Epoch(周期):
一个 epoch 是指模型在整个训练数据集上进行一次完整的训练过程。在一个 epoch 中,模型会依次处理数据集中的每个 batch,对整个数据集进行前向传播、反向传播和参数更新。一个 epoch 结束时,模型已经“看过”整个数据集了一次。
关系:一个 epoch 由多个 step 组成,每个 step 处理一个 batch 的数据。在一个 epoch 中,step 的总数等于数据集中样本数量除以 batch 大小。
分类评估
生成评估
定义适合流量的评估框架
JS散度:源于信息论,表示两个概率分布的相似度,范围在 0 到 1 之间,0 表示完全相似,1 表示完全不相似。
为了全面评估数据包头生成,对几个关键字段进行评估,包括 IP 地址、端口、数据包长度和 TTL。
CDF函数:CDF是累积分布函数的缩写,用于描述随机变量的分布。CDF函数通常用来计算随机变量小于或等于某个给定值的概率。
为了进一步评估生成模型,建立鉴别器,用以判断生成流量和真实流量。如果鉴别器难以有效区分真实数据和生成数据,这表明生成模型已经成功地捕获了真实数据集中的复杂模式和特征。在实验中,生成 1000 个流样本并将其存储为 pcap 文件,然后对测试数据集中相同数量的随机选择的流进行二元分类测试。TrafficGPT(3k) 模型得到 0.6634(±0.0412) 的 F1-Score,而 TrafficGPT(12k) 模型得分略高,为 0.6683(±0.0232) 。结果表明判别模型在区分真实流和生成的流方面遇到挑战,生成的数据具有高度的真实性。
测试RWKV、RetNet两个在NLP较为成功的模型
待扩展
未考虑流和流之间的相关性,协议栈较为局限于TCP/IP
[14] X. Lin, G. Xiong, G. Gou, Z. Li, J. Shi, and J. Yu, “Et-bert: A contextualized datagram representation with pre-training transformers for encrypted traffic classification,” in Proc. ACM WWW, 2022.
[17] X. Meng, C. Lin, Y. Wang, and Y. Zhang, “NetGPT: Generative Pretrained Transformer for Network Traffic,” arXiv preprint arXiv:2304.09513, 2023.
后面的评估比较泛读,就不是很详细。前面的方法也还存在一些没读懂的地方…欢迎同好指点!