roberto-fernandez-barrios/Validate-Before-Commit
GitHub: roberto-fernandez-barrios/Validate-Before-Commit
该项目提出了一个标签高效的提交前验证门控机制,用于在网络入侵检测系统遭遇概念漂移时,安全地决定是否部署重训后的候选模型,避免盲目更新带来的性能损害。
Stars: 0 | Forks: 0
# 提交前验证
**用于网络入侵检测中漂移触发分类器更新的标签高效提交决策**




[](https://doi.org/10.5281/zenodo.21322256)

机器学习入侵检测器在**网络概念漂移**下会发生性能退化,因此自适应系统会重新训练其分类器。该领域将模型更新视为一个**漂移检测**问题:触发监控器,基于警报进行重训,然后部署。本代码仓库表明,不受约束的步骤是*部署*:总是部署重训后的候选模型是不完善的,并且有时是有害的 —— 而一个简单的提交时检查即可解决这个问题。
## 摘要
- 在**三个公开基准测试**(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 — 重新适应具有场景依赖性,且有时是有害的。**

**2 — 重训将准确率恢复到几乎与场景无关的水平,因此更新的收益体现了部署模型的上升空间。单次触发、非耦合的测试(强化测试平台):触发前的现有模型退化程度可以预测未来的提交价值,而相同触发条件下的检测器分数则没有显示出一致的信号(KS-max 和 QK-ZZ 均如此;论文中报告了 QK/PortScan 中的一个微小例外)。耦合感知分析见 §5.3;分层模型见 §5.10。**

**3 — 在三个受控场景中,提交前验证门控保留了收益,避免了净损害,并在有害场景中优于天真重训策略 —— 且对于经典(KS-max)和量子(QK-ZZ)检测器表现出相同的符号模式。它不是一个占优策略:没有任何策略能够在准确率-标签-更新这三个维度上全面占优(论文表 5)。**

**4 — 在带有随机损坏的验证标签下,门控机制具有避免损害的特性:在高达 40% 的标签被翻转的情况下,它在有害场景中仍显著优于天真策略;相对于不适应策略的净收益可持续到 25%(强化测试平台的详细数据见论文 §5.10)。**

## 结果概览 (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, 无后门, 机器学习, 概念漂移, 模型自适应, 网络安全, 逆向工具, 隐私保护