roberto-fernandez-barrios/Validate-Before-Commit

GitHub: roberto-fernandez-barrios/Validate-Before-Commit

该项目提出了一个标签高效的提交前验证门控机制,用于在网络入侵检测系统遭遇概念漂移时,安全地决定是否部署重训后的候选模型,避免盲目更新带来的性能损害。

Stars: 0 | Forks: 0

# 提交前验证 **用于网络入侵检测中漂移触发分类器更新的标签高效提交决策** ![status](https://img.shields.io/badge/status-under%20review-blue) ![reproducible](https://img.shields.io/badge/results-reproducible-success) ![pre-specified](https://img.shields.io/badge/protocol-pre--specified-important) ![python](https://img.shields.io/badge/python-3.11-blue) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21322256.svg)](https://doi.org/10.5281/zenodo.21322256) ![图示摘要](https://static.pigsec.cn/wp-content/uploads/repos/cas/1a/1a8fc6033da3a59bb2bb6b5f86c4a306d732973b488f9da2693e4ff58a77e56a.png) 机器学习入侵检测器在**网络概念漂移**下会发生性能退化,因此自适应系统会重新训练其分类器。该领域将模型更新视为一个**漂移检测**问题:触发监控器,基于警报进行重训,然后部署。本代码仓库表明,不受约束的步骤是*部署*:总是部署重训后的候选模型是不完善的,并且有时是有害的 —— 而一个简单的提交时检查即可解决这个问题。 ## 摘要 - 在**三个公开基准测试**(CICIDS2017、UNSW-NB15、ToN-IoT)和多种攻击场景中,漂移触发重训的价值在**+19.5 到 −4.5 个平衡准确率点**之间。对于脆弱的下游模型而言,*从不适应*甚至可能击败所有触发的策略。 - 更新是否有益,与**当前部署模型的退化程度**密切相关:重训会将准确率恢复到几乎与场景无关的水平,因此其收益体现了部署模型的*上升空间* —— 这是漂移检测器分数无法衡量的量(在单次触发的决策中,分层模型给出 β_deg = −1.02 [−1.17, −0.87],而 β_score ≈ 0)。无论是经典的两组检验还是量子核 MMD 检测器,在我们评估的任何场景中都**不是关键杠杆**:改进监控器并没有改善更新决策。 - **危害是一种条件,而不是数据集固有的:**一项*预注册预测检验*(在运行前锁定)证实了这一解释最尖锐的结论 —— 在温和漂移下(即现有模型保持健康时),总是部署的策略在**所有三个基准测试**中均会呈现负面影响(CICIDS −0.46,UNSW −0.15,ToN −0.65;在 UNSW 和 ToN 中具有统计学显著性),而门控机制则保持在其预注册的容差范围内,并在每个测试中均优于天真策略。 - 简单的确认/冷却策略和 50/50 的重放策略**并不能**解决这个问题(预指定的负面结果)。 - **候选模型治理,而不仅仅是漂移检测:**一个**提交前验证门控** —— 循环像往常一样重训其候选模型,然后由门控机制决定**是否部署**:仅当候选模型在小型带标签探测集(32 条流 —— 即该*决策*的增量成本;候选模型本身每次触发消耗约 1,024 个标签,已完全计入)上击败现有模型时才提交。漂移警报是一个*提议生成器*,而不是部署证据:无论是什么产生了提议 —— 真实的漂移、误报或计划内的重训 —— 挑战者模型在取代现有模型之前都应该经过验证。一个**零漂移控制**实验证明了这一点:即使在完全没有漂移的情况下,强制更新健康的模型也是净有害的(门控机制虽然减少了这种替换成本,但并不能完全消除)。这一点已通过在执行前预注册的**复现实验**得到证实(该实验在强化的测试平台上跨两种检测器和四种下游模型进行),并得到了**因果实验组**(仅从观测流量中进行候选、探测和检测器重校准)的进一步证实。 - **诚实的边界:**在深入位于收益区间的真实时间序列流中,与总是部署策略相比,门控机制在平衡准确率上支付了可衡量的“保险费”,同时在相同的流上其整体准确率*优于*总是部署策略。一项注册的分层探测检验驳斥了我们最初的(组成成分)解释;在快速漂移下探测集的*陈旧度*是当前存活的假设,我们如实报告了这一点。在现有模型保持健康的地方(即门控机制价值集中的地方),在我们测量的所有范围内它都是净正向的。 ## 关键发现 **1 — 重新适应具有场景依赖性,且有时是有害的。** ![场景光谱](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/9024f2b894d4c86b27ce79e27b7a5361efc98387c853ae1aa79785d65b6279f2.png) **2 — 重训将准确率恢复到几乎与场景无关的水平,因此更新的收益体现了部署模型的上升空间。单次触发、非耦合的测试(强化测试平台):触发前的现有模型退化程度可以预测未来的提交价值,而相同触发条件下的检测器分数则没有显示出一致的信号(KS-max 和 QK-ZZ 均如此;论文中报告了 QK/PortScan 中的一个微小例外)。耦合感知分析见 §5.3;分层模型见 §5.10。** ![单次触发机制](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/89066fb863e105b5dc5f26b1c4e3065b194aca20317dc9fb1c724f7684064f87.png) **3 — 在三个受控场景中,提交前验证门控保留了收益,避免了净损害,并在有害场景中优于天真重训策略 —— 且对于经典(KS-max)和量子(QK-ZZ)检测器表现出相同的符号模式。它不是一个占优策略:没有任何策略能够在准确率-标签-更新这三个维度上全面占优(论文表 5)。** ![门控结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/20/202dbba5f13578150f9b5e47bbb7160cd9ec1cc8d8a59cc4385b20097dafeb1d.png) **4 — 在带有随机损坏的验证标签下,门控机制具有避免损害的特性:在高达 40% 的标签被翻转的情况下,它在有害场景中仍显著优于天真策略;相对于不适应策略的净收益可持续到 25%(强化测试平台的详细数据见论文 §5.10)。** ![对抗性探测](https://static.pigsec.cn/wp-content/uploads/repos/cas/a6/a68450ad485af3cb596fb612844693689a6cc69bb4b54e2564ef6972a44b6de4.png) ## 结果概览 (ToN-IoT 有害场景 — 已注册的复现实验, 测试平台 v2, 原始种子 104–133) | 检测器 | 天真策略 (总是部署) | **提交前验证门控** | 门控 vs 天真 (CI95) | 门控 vs 不适应 (CI95) | |---|---:|---:|---|---| | KS-max (经典) | −1.64 | **+0.79** | +2.43 [1.53, 3.43] | +0.79 [0.53, 1.07] | | QK-ZZ (量子) | −2.91 | **+0.72** | +3.63 [1.66, 6.38] | +0.72 [0.44, 0.99] | 平衡准确率点(相对于共享的不适应基线;严格配对:所有组处理位级相同的流)。v2 **标签预算扫描**将操作点设置在 b = 32:在 b = 8 时,门控仍然能减少损害(比天真策略高 +1.22),但相对于不适应策略不再具有净正向收益 —— 因此对初始研究中“8 个标签即足够”的说法进行了相应修正。一种**两阶段**变体首先在不相交的半部分探测集上对现有模型进行健康检查,*然后*才训练候选模型(早期重用探测集的版本存在乐观偏差,现已被取代):它将总标签消耗量减少到大约为天真策略的一半(每个流 1,341 vs 2,594),并显著高于天真策略(+1.79 [0.69, 2.92])—— 然而在 30 个种子下,其相对于不适应策略的净增益如实报告为尚未得出确切结论(+0.15 [−0.15, 0.46])。在**外部时间序列流**上(按流开始时间排序的原始 UNSW-NB15 捕获数据),现有模型保持健康(82.3% BA),且门控机制**无需支付任何额外成本**(对比天真策略 +0.16 [−0.31, 0.63])—— 这意味着在提交决策真正具有不确定性的地方,这份“保险”是免费的。 ## 方法 每次触发漂移时,循环都会像往常一样重训一个**候选**模型;门控机制决定**是否部署**:仅当候选模型在从当前流量中提取的小型带标签探测集(默认为 32 条流)上击败现有模型时才提交;否则保持现有模型。一种**两阶段**变体在训练*之前*对现有模型使用相同的探测集进行测试,并在现有模型健康时跳过候选模型的构建 —— 从而对训练决策本身(及其约 1,024 个标签的消耗)进行门控。消融实验划定了该方法的边界:在所有评估的门控机制中,无标签变体(分歧、ATC、DoC)要么失败,要么牺牲了收益;一个经过适当*校准*的软集成模型是最强的无标签更新规则(在任何地方都能避免损害,在边缘场景中优于门控机制),但它每次触发都会提交,无法拒绝更新;简单的 **k-of-n / 冷却** 策略之所以失败,是因为它们基于分布变化采取行动,而不是基于模型估计的改进。完整规范详见 `manuscript/` §3(算法 1)。 通过 v2 运行器上的参数标志启用 (`src/experiments/run_paper2_readaptation_v2.py`): `--adaptation-gate {none,labeled_probe,labeled_probe_holdout,labeled_probe_lcb,labeled_probe_mcnemar,labeled_probe_seq,labeled_probe_seqav,unsup_disagree,atc,doc,two_stage}`, `--probe-size`, `--probe-latency`, `--probe-flip-frac`, `--probe-source {pools,observed}`, `--probe-prevalence`, `--recal-source {pools,observed}`, `--gate-margin`, `--two-stage-delta`, `--health-ref-mode {static,per_incumbent}`, `--seqav-alpha`, `--adapt-strategy {full_replace,ensemble,ensemble_cal,sliding_window}`, `--adapt-size-per-class`, `--trigger-mode {detector,performance,ddm,adwin,ddm_river,adwin_river,random}`, `--trigger-prob`, `--max-severity`, `--downstream-model {svc_rbf,random_forest,logreg,mlp}`. **观测数据(因果)门控**的配置为 `--probe-source observed --adapt-strategy sliding_window --recal-source observed`;**零漂移控制**的配置为 `--trigger-mode random --max-severity 0`;**随时有效的序列门控**的配置为 `--adaptation-gate labeled_probe_seqav`。 ## 仓库结构 ``` manuscript/ Manuscript draft (§1–§8) + references.bib src/experiments/ Progressive-drift readaptation runner (detectors, gate, downstream models) src/analysis/ Reproducible aggregation, statistics, tables and figures results/ Generated tables/figures (git-ignored; rebuilt by the scripts) data/ Public benchmark datasets (git-ignored; see Data availability) docs/img/ Figures used in this README notes/ Protocols, pre-registrations, and checkpoints REPRODUCE.md One-command regeneration of every table and figure ``` ## 复现结果 ``` conda create -n paper2 python=3.11 -y && conda activate paper2 pip install -r requirements.txt # 将数据集放在 data/ 下(见下文),然后: python -m src.analysis.make_paper2_paper_tables # Tables 1–6 (Markdown + LaTeX) python -m src.analysis.make_paper2_figures # Figures 1–4 python -m src.analysis.make_paper2_budget_curve # label-efficiency frontier python -m src.analysis.make_paper2_gate_robustness # latency / harm-breadth / margin / poison (v1) python -m src.analysis.aggregate_paper2_v2_replication # registered replication verdict (v2) python -m src.analysis.aggregate_paper2_amendment_004 # robustness suite, cost table, temporal streams python -m src.analysis.paper2_decision_quality_004 # decision metrics + hierarchical model python -m src.analysis.validate_monitors_vs_river # DDM/ADWIN vs reference implementations ``` 用于精确复现的 `requirements-lock.txt`(产生这些结果的环境的 pip freeze 记录)随 `requirements.txt` 一并提供。 完整细节,包括精确的实验命令和声明到产物的映射,位于 [`REPRODUCE.md`](REPRODUCE.md) 中。**确证性证据是已注册的 v2 复现实验**:协议在任何确证性种子运行之前已公开打上标签(`harness-v2-protocol`),并包含了运行前注册的修订([002](notes/paper2_harness_v2_amendment_002.md)、[003](notes/paper2_harness_v2_amendment_003.md)、[004](notes/paper2_harness_v2_amendment_004.md) —— 后者还修复并重新运行了时间序列流实验)。初始的阶段 2 协议已在 [`notes/paper2_phase2_gated_readaptation_preregistration_001.md`](notes/paper2_phase2_gated_readaptation_preregistration_001.md) 中预指定。 ## 数据可用性 这里**不分发**这三个公开的基准测试数据集(请将它们放在 `data/` 目录下): - **CICIDS2017** — Sharafaldin, Lashkari & Ghorbani, *ICISSP* 2018. - **UNSW-NB15** — Moustafa & Slay, *MilCIS* 2015. - **ToN-IoT** — Alsaedi et al., *IEEE Access* 2020. ## 论文手稿 工作手稿(§1–§8)及其参考文献位于 [`manuscript/`](manuscript/) 中。每个派生表格、图表和数值声明都可以从本代码仓库重新生成(运行 `make reproduce`,然后运行 `src/analysis/audit_paper2_claims.py` 再次验证所有 240 多个固定数值);用于从公开数据集填充 `results/raw/` 的实验命令在 [`REPRODUCE.md`](REPRODUCE.md) 中列出。 ## 引用 该论文正在审稿中;请按如下方式引用。如果要引用**软件产物**本身,请使用 Zenodo DOI [10.5281/zenodo.21322256](https://doi.org/10.5281/zenodo.21322256)(元数据见 `CITATION.cff`)。 ``` @unpublished{fernandezbarrios2026validate, title = {Validate Before Commit: Label-Efficient Commit Decisions for Drift-Triggered Classifier Updates in Network Intrusion Detection}, author = {Fern{\'a}ndez-Barrios, Roberto and Pastor-L{\'o}pez, Iker and Pikatza-Huerga, Amaia and Garc{\'i}a Bringas, Pablo}, year = {2026}, note = {Under review} } ``` ## 许可证 代码脚本基于 **MIT License** 发布(详见 [`LICENSE`](LICENSE))。 该产物的引用元数据位于 [`CITATION.cff`](CITATION.cff) 和 `.zenodo.json` 中。
标签:Apex, Python, 无后门, 机器学习, 概念漂移, 模型自适应, 网络安全, 逆向工具, 隐私保护