基于深度学习的半监督对抗鲁棒网络入侵检测系统
1. 研究背景与问题
-
背景:
网络入侵检测系统(NIDS)是识别异常网络流量的关键工具,但现有基于深度学习的方法存在两大瓶颈:
- 依赖监督学习:需大量标注数据,但实际场景中未标记数据难以利用。
- 对抗攻击脆弱性:深度学习模型易受对抗样本攻击(如FGSM、IDSGAN),导致误判。
-
研究目标: 提出一种半监督学习框架,有效利用标记和未标记数据,同时增强模型对抗攻击的鲁棒性。
2. 方法创新
整体流程
- K-Means聚类与软标记:
- 聚类:对未标记数据执行K-Means聚类,聚类中心数为训练集的1/25(共5,038个),迭代300次。
- 软标记规则:
- 若某聚类中某类已标记样本占比超50%且其他类占比≤10%,则将该聚类未标记样本软标记为该类。
- 正常类需聚类内所有已标记样本均为正常类。
- 作用:提升未标记数据利用率,并增强对抗鲁棒性。
- 决策树构建:
- 基于CART算法,结合标记和软标记数据构建决策树。
- 叶节点约束:最小样本数为总标记数据的1/50,防止过拟合并分割不平衡数据。
- 优势:将数据划分为子集,后续训练专用模型,提高分类精度与鲁棒性。
- 自动编码器预训练:
- 结构:编码层(96→64→32)、解码层(64→96),嵌入维度32。
- 训练:使用全部数据(含未标记)训练,学习率0.001,80个epoch。
- 作用:降维以减少过拟合和对抗攻击敏感性。
- 多层感知机(MLP)训练:
- 全局MLP:基于自动编码器的低维特征预训练3层MLP(隐藏层16→8),学习率0.001,200个epoch。
- 叶节点MLP:每个决策树叶节点训练独立3层MLP,学习率0.0005,200个epoch。
- 初始化:叶节点MLP参数继承自全局MLP,避免小样本过拟合。
推断机制
- 聚类信息修正:若样本属于已知攻击类聚类,排除其正常类概率。
- 少数类优先:依次检查U2R、R2L等少数类,若任一MLP预测则采纳。
- 最终决策:结合全局MLP和叶节点MLP的输出,优先叶节点模型结果(多数类)或全局模型(少数类)。
2.1整体流程
流程图:
- 输入数据 → K-Means聚类 → 软标记 → 决策树构建
- 所有数据 → 自动编码器预训练 → 全局MLP预训练
- 决策树叶节点数据 → 叶节点MLP训练 → 最终预测
2.2核心组件详述
K-Means聚类与软标记
目标:利用未标记数据的聚类结构生成伪标签。
步骤:
- 聚类参数:
- 聚类数:训练数据的1/25(NSL-KDD中为5,038个簇)。
- 迭代次数:300次,收敛容差:1e-4。
- 软标签分配规则:
- 条件1:若簇中某类已标记样本占比 >50%。
- 条件2:其他类样本占比 ≤10%。
- 例外处理:若簇包含某少数类 >10%的标记样本,则不分配软标签。
- 软标签应用:
- 符合条件的簇中,所有未标记样本被赋予对应类别的软标签。
伪代码:
for cluster in clusters:
labeled_samples = get_labeled_samples(cluster)
majority_class = argmax(class_distribution(labeled_samples))
if (ratio(majority_class) > 0.5) and (max(other_classes_ratio) <= 0.1):
assign_soft_label(cluster.unlabeled, majority_class)
2.3决策树构建(CART算法)
目标:分割数据空间,为叶节点训练专用MLP。
参数:
- 最小叶节点样本数:标记+软标记样本总数的1/50。
- 分割准则:基尼不纯度最小化。
流程:
- 输入:标记数据 + 软标记数据。
- 递归分割,直至叶节点样本数 < 阈值。
- 输出:决策树结构,每个叶节点对应一个数据子集。
2.4 自动编码器与MLP训练
自动编码器结构:
- 编码器:输入层 → 全连接层(96→64) → 嵌入层(32维)。
- 解码器:嵌入层 → 全连接层(64→96) → 输出层。
- 训练参数:
- 学习率:0.001,周期:80,损失函数:MSE。
MLP结构:
- 全局MLP:
- 输入:32维嵌入特征 → 隐藏层(16→8) → 输出层(5类)。
- 预训练参数:学习率0.001,周期200。
- 叶节点MLP:
- 结构同全局MLP,但仅用对应叶节点数据微调。
- 训练参数:学习率0.0005,周期200。
2.5 推断机制
步骤:
-
聚类检查:
- 若样本属于已知攻击类簇,置正常类概率为0。
-
双模型预测:
- 全局MLP预测概率:PglobalP_{\text{global}}Pglobal
- 叶节点MLP预测概率:PleafP_{\text{leaf}}Pleaf
-
少数类优先逻辑:
if "U2R" in [P_global, P_leaf]: final_class = "U2R" elif "R2L" in [P_global, P_leaf]: final_class = "R2L" else: final_class = argmax(P_leaf) # 默认取叶节点MLP结果
2.6. 对抗鲁棒性设计
2.7 抗FGSM攻击机制
- 非线性推断:聚类检查引入非决策树/MLP的额外判断层。
- 局部模型隔离:叶节点MLP仅关注局部数据,对抗扰动难以跨叶节点传播。
2.8 抗IDSGAN攻击机制
- 功能特征约束:自动编码器降维过滤非功能特征扰动。
- 软标签数据增强:K-Means生成的伪标签扩展训练集多样性。
2.9. 关键参数表
| 组件 | 参数 | 值 |
|---|---|---|
| K-Means | 聚类数 | 5,038 |
| 决策树 | 最小叶节点样本数 | 总样本数 / 50 |
| 自动编码器 | 嵌入维度 | 32 |
| MLP预训练 | 学习率 / 周期 | 0.001 / 200 |
| 叶节点MLP训练 | 学习率 / 周期 | 0.0005 / 200 |
3. 实验与结果
数据集与评估指标
- 数据集:NSL-KDD(攻击类型:Normal、DoS、Probe、R2L、U2R)。
- 训练集125,973样本,测试集22,544样本,U2R和R2L为少数类(训练集分别995、52样本)。
- 指标:
- 准确率(Accuracy)、宏平均F1(平衡少数类权重)。
- 类别的精确率(Precision)、召回率(Recall)、F1值。
性能对比
- 监督学习(100%标记数据):
- 准确率80%,宏平均F1 0.57,优于RNN、DNN等基线。
- 关键类表现:Probe(F1=0.81)、R2L(F1=0.27)、U2R(F1=0.07)。
- 半监督学习(50%标记数据):
- 准确率77%,宏平均F1 0.56,显著优于现有半监督方法(如Fuzziness-SSL的F1=0.51)。
- 对少数类检测提升:R2L(F1=0.23)、U2R(F1=0.15)。
消融实验验证
- 关键组件作用:
- K-Means软标记:提升R2L和U2R的F1(分别+0.17和+0.08)。
- 决策树分割:叶节点MLP专注局部数据,提高对抗鲁棒性(对抗准确率+5.24%)。
- 自动编码器:Probe类F1提升至0.81(对比无编码器的0.66)。
对抗鲁棒性测试
- 攻击方法:
- 黑盒FGSM:扰动输入特征(λ=0.3),生成对抗样本。
- IDSGAN:生成符合攻击功能约束的对抗流量(噪声大小27,训练5个epoch)。
- 结果:
- FGSM攻击:
- 监督学习下对抗准确率76.3%,半监督下68.3%,显著高于基线(如Fuzziness-SSL的48%)。
- IDSGAN攻击:
- 对DoS攻击的检测率89%,Probe攻击81%,优于决策树单独模型(DoS检测率仅36%)。
- 鲁棒性来源:
- 聚类引入非线性推断,抵抗特征扰动。
- 叶节点MLP专注局部数据,降低全局模型脆弱性。
- FGSM攻击:
4. 主要贡献
- 半监督框架:首次结合聚类软标记、决策树分割和自动编码器,高效利用未标记数据。
- 对抗鲁棒设计:
- 通过聚类修正和叶节点MLP,抵御FGSM和IDSGAN攻击。
- 自动编码器降维减少对抗敏感性。
- 广泛实验验证:
- 在NSL-KDD上超越监督和半监督基线,尤其在少数类检测和对抗场景中表现优异。
- 开源与可复现性:代码与数据集公开,提供完整实验复现支持。
5. 局限与未来方向
- 局限:
- 少数类检测仍不足(如U2R的F1仅0.15)。
- 未验证大规模流量下的实时性能。
- 未来方向:
- 结合少样本学习提升少数类检测。
- 探索动态对抗训练(如自适应对抗样本生成)。
- 扩展至更复杂数据集(如CIC-IDS2017)和实际网络环境。
6. 结论
本文提出了一种创新的半监督对抗鲁棒NIDS框架,通过K-Means软标记、决策树分割和自动编码器特征学习,显著提升了模型在标记数据不足场景下的性能,并在对抗攻击下展现出优越鲁棒性。实验表明,该方法在NSL-KDD数据集上的准确率(监督80%、半监督77%)和对抗检测率(FGSM 76.3%、IDSGAN 89%)均优于现有方法,为实际网络安全应用提供了新思路。未来工作将聚焦于少数类优化和实时部署验证。
[tzpranto/NIDS_NSYSS_23](github链接)