📘 今天的工作复盘 —— ETBERT论文阅读与理解
🗓 日期:2025年4月9日
📌 一、ETBERT论文阅读与分析
✅ 今日阅读内容
今天主要关注Datagram2Token Traffic Representation的理解和拆解:
🔹 3.2.1 BURST Generator
-
核心概念:
BURST 是指在一个网络流(flow)中,按照传输方向(源→目的或目的→源)连续出现的数据包集合。 -
理解到的关键点:
- 同一个五元组(5-tuple)定义一个流(flow)。
- 在一个流中,按照数据包的方向连续性进行分段,形成多个 BURST。
- 方向发生切换时,即开始一个新的 BURST。
- 这类似于“一问一答”的对话结构 —— 一方说话直到另一方回应。
-
实现层面:
- 基于 PyShark 撰写了一个 Python 脚本,可以从
.pcap
文件中:- 提取每个流(5-tuple 区分);
- 识别每个流中的 BURST(基于方向变化);
- 输出每个 BURST 的方向、时间、包数量等信息。
- 基于 PyShark 撰写了一个 Python 脚本,可以从
🔹 3.2.2 BURST2Token
-
核心目标:
将 BURST 转换为 Transformer 可接受的 token 序列,用于预训练。 -
关键步骤梳理:
- 提取 BURST 中的 payload 字节流;
- 将字节转换为十六进制表示;
- 采用 bi-gram 编码,每两个字节合成一个 16-bit 的整数(范围 0–65535);
- 使用 Byte-Pair Encoding(BPE) 构建 token 词典(最大大小为 65536);
- 添加特殊 token:
[CLS]
,[SEP]
,[PAD]
,[MASK]
; - 将 BURST 均分为两个子片段 sub-BURST A 和 sub-BURST B,用于 SBP(Sub-BURST Pair)任务。
-
理解要点:
- 这一步相当于将网络数据流“语言化”,让模型以类 NLP 的方式学习流量语义。
[CLS]
表示整个序列的摘要,[SEP] 分割两个 sub-BURST,Segment Embedding 用于区分 AB 段落。
🧠 总结体会
- 通过分析 BURST 的定义与结构,更好理解了 ETBERT 在流量建模中的语义单位。
- BURST→Token 的转换过程展示了网络流量如何被构造成类似自然语言的输入格式,启发性很强。
- 初步实现了 BURST 分段工具,为后续的数据预处理和模型输入做好准备。
✅ 下一步计划建议
- 实现完整的
BURST2Token
编码模块,将 payload 转为 bi-gram 序列并使用 BPE。 - 收集和构建用于预训练的 token 数据集。
- 阅读论文后续部分:如 SBP 任务细节、预训练目标与损失函数设计。
📌 二、科研交流:加密流量识别
交流对象:一位从事加密流量识别方向的科研人员。
1. 研究内容:
- 主要聚焦在HTTPS、DoH(DNS over HTTPS)与恶意DoH流量的分类问题。
2. 关键收获:
- 当前无公开可用的数据集;
- 对方花费约1000元成本自行抓包并构建训练数据;
- 数据集构建仍是该领域模型训练的关键瓶颈;
- 可考虑未来是否联合构建数据集。
📌 三、考古图像分类项目推进
任务背景:与一位考古方向合作伙伴联合进行的考古纹样识别项目。
1. 当前方法:
- 使用ResNet50作为基础特征提取器;
- 对鸟纹/非鸟纹图像进行分类;
- 目前使用全参数微调策略完成训练。
2. 今日进展:
- 探讨了引入**小样本学习(Few-shot Learning)**方法的可行性;
- 分析Few-shot可能在样本数量受限的考古图像中带来优势;
- 尚未进行实验,但计划开展原型探索。
3. 成果展示:
- 绘制了当前的图像分类工作流程图,展现:
- 数据增强 → 预训练模型 → 两种微调策略(全参微调 & 冻结部分参数) → 精度评估 → 最终分类器。