From b32106a4426149992a7d6ad7fda72496b0a82aea Mon Sep 17 00:00:00 2001 From: MingzheYang Date: Mon, 26 Jan 2026 21:15:39 +0800 Subject: [PATCH] =?UTF-8?q?update=E6=96=B0=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report.md | 351 ++++++++++++++++-------------------------------------- 1 file changed, 101 insertions(+), 250 deletions(-) diff --git a/report.md b/report.md index 77f176f..32c11cc 100644 --- a/report.md +++ b/report.md @@ -2,71 +2,46 @@ # 工业控制系统流量混合扩散生成(HAI 21.03)— 项目报告 ## 1. Project Goal / 项目目标 -Build a **hybrid diffusion-based generator** for industrial control system (ICS) traffic features, targeting **mixed continuous + discrete** feature sequences. The output is **feature-level sequences**, not raw packets. The generator should preserve: -- **Distributional fidelity** (continuous value ranges and discrete frequencies) +Build a **hybrid diffusion-based generator** for ICS traffic features, focusing on **mixed continuous + discrete** feature sequences. The output is **feature-level sequences**, not raw packets. The generator should preserve: +- **Distributional fidelity** (continuous ranges + discrete frequencies) - **Temporal consistency** (time correlation and sequence structure) -- **Protocol/field consistency** (for discrete fields) +- **Field/logic consistency** for discrete protocol-like columns -构建一个用于工业控制系统(ICS)流量特征的**混合扩散生成模型**,面向**连续+离散混合特征序列**。输出为**特征级序列**而非原始报文。生成结果需要同时保持: -- **分布一致性**(连续值范围与离散取值频率) +构建一个用于 ICS 流量特征的**混合扩散生成模型**,处理**连续+离散混合特征序列**。输出为**特征级序列**而非原始报文。生成结果需要保持: +- **分布一致性**(连续值范围 + 离散频率) - **时序一致性**(时间相关性与序列结构) -- **字段/协议一致性**(离散字段的逻辑一致) - -This project is aligned with the STOUTER idea of **structure-aware diffusion** for spatiotemporal data, but applied to **ICS feature sequences** rather than cellular traffic. - -本项目呼应 STOUTER 的**结构先验+扩散**思想,但应用于**ICS 特征序列**而非蜂窝流量。 +- **字段/逻辑一致性**(离散字段语义) --- ## 2. Data and Scope / 数据与范围 -**Dataset used in the current implementation:** HAI 21.03 (CSV feature traces) +**Dataset used in current implementation:** HAI 21.03 (CSV feature traces). -**当前实现使用的数据集:** HAI 21.03(CSV 特征序列) +**当前实现使用数据集:** HAI 21.03(CSV 特征序列)。 -**Data location (default in config):** +**Data path (default in config):** - `dataset/hai/hai-21.03/train*.csv.gz` -**数据位置(config 默认):** -- `dataset/hai/hai-21.03/train*.csv.gz` - -**Feature split (fixed schema):** -- Defined in `example/feature_split.json` -- **Continuous features:** sensor/process values -- **Discrete features:** binary/low-cardinality status/flag fields -- `time` column is excluded from modeling - -**特征拆分(固定 schema):** -- `example/feature_split.json` -- **连续特征:** 传感器/过程值 -- **离散特征:** 二值/低基数状态字段 -- `time` 列不参与训练 +**特征拆分(固定 schema):** `example/feature_split.json` +- Continuous features: sensor/process values +- Discrete features: binary/low-cardinality status/flag fields +- `time` is excluded from modeling --- ## 3. End-to-End Pipeline / 端到端流程 - -**One command pipeline:** +One command pipeline: ``` python example/run_all.py --device cuda ``` -**一键流程:** -``` -python example/run_all.py --device cuda -``` - -### Pipeline stages / 流程阶段 +Pipeline stages: 1) **Prepare data** (`example/prepare_data.py`) 2) **Train model** (`example/train.py`) 3) **Generate samples** (`example/export_samples.py`) 4) **Evaluate** (`example/evaluate_generated.py`) -5) **Summarize metrics** (`example/summary_metrics.py`) -1) **数据准备**(统计量与词表) -2) **训练模型** -3) **生成样本并导出** -4) **评估指标** -5) **汇总指标** +一键流程对应:数据准备 → 训练 → 采样导出 → 评估。 --- @@ -75,178 +50,82 @@ python example/run_all.py --device cuda ### 4.1 Hybrid Diffusion Model (Core) / 混合扩散模型(核心) Defined in `example/hybrid_diffusion.py`. -**Key components:** -- **Continuous branch**: Gaussian diffusion (DDPM style) -- **Discrete branch**: Mask diffusion for categorical tokens -- **Shared backbone**: GRU + residual MLP + LayerNorm -- **Embedding inputs**: - - continuous projection - - discrete embeddings per column - - time embedding (sinusoidal) - - positional embedding (sequence index) - - optional condition embedding (`file_id`) +**Inputs:** +- Continuous projection +- Discrete embeddings +- Time embedding (sinusoidal) +- Positional embedding (sequence index) +- Optional condition embedding (`file_id`) + +**Backbone:** +- GRU (sequence modeling) +- Post LayerNorm + residual MLP **Outputs:** -- Continuous head: predicts target (`eps`, `x0`, or `v`) -- Discrete heads: predict logits for each discrete column +- Continuous head: predicts target (`eps` or `x0`) +- Discrete heads: logits per discrete column -**核心组成:** -- **连续分支:** 高斯扩散(DDPM) -- **离散分支:** Mask 扩散 -- **共享主干:** GRU + 残差 MLP + LayerNorm -- **输入嵌入:** - - 连续投影 - - 离散字段嵌入 - - 时间嵌入(正弦) - - 位置嵌入(序列索引) - - 条件嵌入(可选,`file_id`) - -**输出:** -- 连续 head:预测 `eps/x0/v` -- 离散 head:各字段 logits +**连续分支:** Gaussian diffusion +**离散分支:** Mask diffusion --- -### 4.2 Feature Graph Mixer (Structure Prior) / 特征图混合器(结构先验) -Implemented in `example/hybrid_diffusion.py` as `FeatureGraphMixer`. +### 4.2 Temporal Backbone (GRU) / 共享时序骨干(GRU) +The GRU is the **shared temporal backbone** that fuses continuous + discrete signals into a unified sequence representation, enabling joint modeling of temporal dynamics and cross-feature dependencies. -Purpose: inject **learnable feature-dependency prior** without dataset-specific hardcoding. - -**Mechanism:** -- Learns a dense feature relation matrix `A` -- Applies: `x + x @ A` -- Symmetric stabilizing constraint: `(A + A^T)/2` -- Controlled by scale and dropout - -**Config:** -``` -"model_use_feature_graph": true, -"feature_graph_scale": 0.1, -"feature_graph_dropout": 0.0 -``` - -**目的:**在不写死特定数据集关系的情况下,引入**可学习特征依赖先验**。 - -**机制:** -- 学习稠密关系矩阵 `A` -- 特征混合:`x + x @ A` -- 对称化稳定:`(A + A^T)/2` -- 通过 scale/dropout 控制强度 +GRU 是模型的**共享时序核心**,把连续/离散特征统一建模在同一时间结构中。 --- -### 4.3 Two-Stage Temporal Backbone / 两阶段时序骨干 -Stage-1 uses a **GRU temporal generator** to model sequence trend in normalized space. Stage-2 diffusion then models the **residual** (x − trend). This decouples temporal consistency from distribution alignment. - -第一阶段使用 **GRU 时序生成器**在归一化空间建模序列趋势;第二阶段扩散模型学习**残差**(x − trend),实现时序一致性与分布对齐的解耦。 - ---- - -## 5. Diffusion Formulations / 扩散建模形式 +## 5. Diffusion Formulations / 扩散形式 ### 5.1 Continuous Diffusion / 连续扩散 Forward process: ``` x_t = sqrt(a_bar_t) * x_0 + sqrt(1 - a_bar_t) * eps ``` - Targets supported: -- **eps prediction** (standard DDPM) +- **eps prediction** (default) - **x0 prediction** (direct reconstruction) -- **v prediction** (v = sqrt(a_bar)*eps − sqrt(1-a_bar)*x0) -Current config default: +Current config: ``` -"cont_target": "v" +"cont_target": "x0" ``` -Sampling uses the target to reconstruct `eps` and apply standard DDPM reverse update. - -**前向扩散:**如上公式。 - -**支持的目标:** -- `eps`(噪声预测) -- `x0`(原样本预测) -- `v`(v‑prediction) - -**当前默认:**`cont_target = v` - -**采样:**根据目标反解 `eps` 再执行标准 DDPM 反向步骤。 - ---- - -### 5.2 Discrete Diffusion (Mask) / 离散扩散(Mask) -Forward process: replace tokens with `[MASK]` using cosine schedule: +### 5.2 Discrete Diffusion / 离散扩散 +Mask diffusion with cosine schedule: ``` p(t) = 0.5 * (1 - cos(pi * t / T)) ``` -Optional scale: `disc_mask_scale` - -Reverse process: cross-entropy on masked positions only. - -**前向:**按 cosine schedule 进行 Mask。 -**反向:**仅在 mask 位置计算交叉熵。 +Mask-only cross-entropy is computed on masked positions. --- -## 6. Loss Design (Current) / 当前损失设计 +## 6. Loss Design / 损失设计 Total loss: ``` -L = λ * L_cont + (1 − λ) * L_disc + w_q * L_quantile +L = λ * L_cont + (1 − λ) * L_disc ``` ### 6.1 Continuous Loss / 连续损失 -Depending on `cont_target`: -- eps target: MSE(eps_pred, eps) -- x0 target: MSE(x0_pred, x0) -- v target: MSE(v_pred, v_target) - -Optional inverse-variance weighting: -``` -cont_loss_weighting = "inv_std" -``` +- `eps` target: MSE(eps_pred, eps) +- `x0` target: MSE(x0_pred, x0) +- Optional inverse-variance weighting: `cont_loss_weighting = "inv_std"` ### 6.2 Discrete Loss / 离散损失 Cross-entropy on masked positions only. -### 6.3 Quantile Loss (Distribution Alignment) / 分位数损失(分布对齐) -Added to improve KS (distribution shape alignment): -- Compute quantiles on generated vs real x0 -- Loss = Huber or L1 difference on quantiles - -Stabilization: -``` -quantile_loss_warmup_steps -quantile_loss_clip -quantile_loss_huber_delta -``` - --- -## 7. Training Strategy / 训练策略 -Defined in `example/train.py`. +## 7. Data Processing / 数据处理 +Defined in `example/data_utils.py` + `example/prepare_data.py`. -**Key techniques:** -- EMA of model weights -- Gradient clipping -- Shuffle buffer to reduce batch bias -- Optional feature graph prior -- Quantile loss warmup for stability -- Optional stage-1 temporal GRU (trend) + residual diffusion - -**Config highlights (example/config.json):** -``` -timesteps: 600 -batch_size: 128 -seq_len: 128 -epochs: 10 -max_batches: 4000 -lambda: 0.7 -cont_target: "v" -quantile_loss_weight: 0.1 -model_use_feature_graph: true -use_temporal_stage1: true -``` +Key steps: +- Streaming mean/std/min/max + int-like detection +- Optional **log1p transform** for heavy-tailed continuous columns +- Discrete vocab + most frequent token +- Windowed batching with **shuffle buffer** --- @@ -255,111 +134,83 @@ Defined in: - `example/sample.py` - `example/export_samples.py` -**Export steps:** -- Reverse diffusion with conditional sampling -- Reverse normalize continuous values +Export process: +- Reverse diffusion sampling +- De-normalize continuous values - Clamp to observed min/max - Restore discrete tokens from vocab - Write to CSV --- -## 9. Evaluation Metrics / 评估指标 -Implemented in `example/evaluate_generated.py`. +## 9. Evaluation / 评估指标 +Defined in `example/evaluate_generated.py`. -### Continuous Metrics / 连续指标 -- **KS statistic** (distribution similarity per feature) -- **Quantile errors** (q05/q25/q50/q75/q95) +Metrics (with reference): +- **KS statistic** (continuous distribution) +- **Quantile diffs** (q05/q25/q50/q75/q95) - **Lag‑1 correlation diff** (temporal structure) - -### Discrete Metrics / 离散指标 -- **JSD** over token frequency distribution +- **Discrete JSD** over vocab frequency - **Invalid token counts** -### Summary Metrics / 汇总指标 -Auto-logged in: -- `example/results/metrics_history.csv` -- via `example/summary_metrics.py` - --- ## 10. Automation / 自动化 - -### One‑click pipeline / 一键流程 -``` -python example/run_all.py --device cuda -``` - -### Metrics logging / 指标记录 -Each run appends: -``` -timestamp,avg_ks,avg_jsd,avg_lag1_diff -``` +`example/run_all.py` runs all stages with config-driven paths. --- ## 11. Key Engineering Decisions / 关键工程决策 - -### 11.1 Mixed-Type Diffusion / 混合类型扩散 -Continuous + discrete handled separately to respect data types. - -### 11.2 Structure Prior / 结构先验 -Learnable feature graph added to encode implicit dependencies. - -### 11.3 v‑prediction -Chosen to stabilize training and improve convergence in diffusion. - -### 11.4 Distribution Alignment / 分布对齐 -Quantile loss introduced to directly reduce KS. +- Mixed-type diffusion: continuous + discrete split +- Shared temporal backbone (GRU) to align sequence structure +- Positional + time embeddings for stability +- Optional inverse-variance weighting for continuous loss +- Log1p transforms for heavy-tailed signals --- -## 12. Known Issues / Current Limitations / 已知问题与当前局限 -- **KS remains high** in many experiments, meaning continuous distributions are still misaligned. -- **Lag‑1 may degrade** when quantile loss is too strong. -- **Loss spikes** observed when quantile loss is unstable (mitigated with warmup + clip + Huber). - -**当前问题:** -- KS 高,说明连续分布仍未对齐 -- 分位数损失过强时会损害时序相关性 -- 分位数损失不稳定时会出现 loss 爆炸(已引入 warmup/clip/Huber) +## 12. Code Map (Key Files) / 代码索引 +- Core model: `example/hybrid_diffusion.py` +- Training: `example/train.py` +- Data prep: `example/prepare_data.py` +- Data utilities: `example/data_utils.py` +- Sampling: `example/sample.py` +- Export: `example/export_samples.py` +- Evaluation: `example/evaluate_generated.py` +- Pipeline: `example/run_all.py` +- Config: `example/config.json` --- -## 13. Suggested Next Steps (Research Roadmap) / 下一步建议(研究路线) -1) **SNR-weighted loss** (improve stability across timesteps) -2) **Two-stage training** (distribution first, temporal consistency second) -3) **Upgrade discrete diffusion** (D3PM-style transitions) -4) **Structured conditioning** (state/phase conditioning) -5) **Graph-based priors** (explicit feature/plant dependency graphs) +## 13. Known Issues / Current Limitations / 已知问题 +- KS sometimes remains high → continuous distribution mismatch +- Lag‑1 may fluctuate → distribution vs temporal trade-off +- Continuous loss may dominate → needs careful weighting --- -## 14. Code Map (Key Files) / 代码索引(关键文件) - -**Core model** -- `example/hybrid_diffusion.py` - -**Training** -- `example/train.py` - -**Sampling & export** -- `example/sample.py` -- `example/export_samples.py` - -**Pipeline** -- `example/run_all.py` - -**Evaluation** -- `example/evaluate_generated.py` -- `example/summary_metrics.py` - -**Configs** -- `example/config.json` +## 14. Suggested Next Steps / 下一步建议 +- Add **SNR-weighted loss** for stable diffusion training +- Explore **v‑prediction** for continuous branch +- Consider **two-stage training** (temporal first, distribution second) +- Strengthen discrete diffusion (e.g., D3PM-style transitions) --- ## 15. Summary / 总结 -This project implements a **hybrid diffusion model for ICS traffic features**, combining continuous Gaussian diffusion with discrete mask diffusion, enhanced with a **learnable feature-graph prior**. The system includes a full pipeline for preparation, training, sampling, exporting, and evaluation. Key research challenges remain in **distribution alignment (KS)** and **joint optimization of distribution fidelity vs temporal consistency**, motivating future improvements such as SNR-weighted loss, staged training, and stronger structural priors. +This project implements a **hybrid diffusion model** for ICS feature sequences with a GRU backbone, handling continuous and discrete features separately while sharing temporal structure. The pipeline covers data prep, training, sampling, export, and evaluation. The main research challenge remains in balancing **distributional fidelity (KS)** and **temporal consistency (lag‑1)**. -本项目实现了用于 ICS 流量特征的**混合扩散模型**,将连续高斯扩散与离散 Mask 扩散结合,并引入**可学习特征图先验**。系统包含完整的数据准备、训练、采样、导出与评估流程。当前研究挑战集中在**连续分布对齐(KS)**与**分布/时序一致性之间的权衡**,后续可通过 SNR‑weighted loss、分阶段训练与更强结构先验继续改进。 +本项目实现了基于 GRU 的混合扩散模型,连续/离散分支分开建模但共享时序结构,具备完整的训练与评估流程。主要挑战是**分布对齐(KS)与时序一致性(lag‑1)之间的平衡**。 + +--- + +## 16. Latest Evaluation Snapshot / 最新评估快照 +Computed averages from the latest `eval.json`: +- **avg_ks**: 0.5208903596698115 +- **avg_jsd**: 0.010592151023360712 +- **avg_lag1_diff**: 0.8265139723919303 + +最新评估均值(来自 `eval.json`): +- **avg_ks**:0.5208903596698115 +- **avg_jsd**:0.010592151023360712 +- **avg_lag1_diff**:0.8265139723919303