aleazk/chimera-logical-anomaly-detection

GitHub: aleazk/chimera-logical-anomaly-detection

一个基于神经符号逻辑的异常检测研究原型,通过跨样本操作数混合的Chimera训练方法,在无需真实违规异常数据的情况下学习检测逻辑约束违规。

Stars: 0 | Forks: 0

# 用于逻辑异常检测的 Chimera 训练 [![Python](https://img.shields.io/badge/Python-3.10%2B-blue)](#安装说明) [![PyTorch](https://img.shields.io/badge/PyTorch-2.1%2B-orange)](#安装说明) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-research%20prototype-yellow)](#适用范围与局限性) 一个神经符号异常检测器,它学习评估逻辑约束,**而无需在训练期间出现真实的违规异常**。 规则是基于感知概念的显式有向无环图。其内部逻辑节点是学习到的神经门。**Chimera 训练**通过组合来自不同正常样本的子树操作数,并分配相应算子的精确 Boolean 目标,从而创建缺失的真值配置。

Chimera logical anomaly detection architecture

## 核心思想 许多异常不仅仅是罕见的输入。它们是对语义期望的违背: - 一个动作的发生没有前置条件; - 存在一种关系,但没有相应的对象; - 当其上下文处于活动状态时,缺少时间上的结果; - 一张图像同时展示了互斥概念的证据。 该系统将感知与结构化评估分离开来: 1. 一个**叶概念库**将图像或视频映射为概念概率和编码器特征。 2. 每条规则都被编译成一个包含 `AND`、`OR`、`IMPLIES`、`IFF` 和边取反的逻辑 DAG。 3. 内部的**子树门**将子特征映射到父表示和满足概率。 4. 基于概念标签的精确 Boolean 传播在每个内部节点提供局部监督。 5. 规则违规被聚合成一个异常分数,并带有规则和子公式级别的归因。 ## 为什么需要 Chimera 训练 正常的同图像数据可能会遗漏唯一具有信息量的配置。对于一个蕴含式 $$ A \Rightarrow B $$ 违规的赋值 $A=1$ 和 $B=0$ 可能在训练期间永远不会出现。因此,同图像学习器可能会退化成一种平凡的永远正常的解决方案。 对于一个二元节点,Chimera 训练从不同的样本中选择操作数。混合操作数为 $u_i^{\mathrm{chim}} = [h_L(x_i), h_R(x_{\pi(i)})]$。 其目标精确计算为 $t_i^{\mathrm{chim}} = \mathrm{op}(t_L(y_i), t_R(y_{\pi(i)}))$。 该目标**不是插值生成的**。也没有合成任何异常图像。该构造直接干预逻辑算子的操作数。

Operand-level Chimera construction

## 当前论文结果 在当前报告的规则集上的平均规则级异常 AUROC: | 数据集 | 独立事件评估器 | 同图像语义训练 | Chimera 神经评估器 | |---|---:|---:|---:| | CLEVRER | 0.750 | 0.500 | **0.833** | | OpenImages | 0.821 | 0.500 | **0.899** | | VidOR | 0.490 | 0.500 | **0.724** | 目前的消融实验表明,Chimera 反事实监督是主导的实证贡献。模块化规则 DAG 评估器增加了局部语义监督、可检查的子公式分数以及可重用的学习子树,且相对于经过 Chimera 训练的单体预测器没有实质性的损失。 详细数值见 [`results/table2.csv`](results/table2.csv)。 ## 安装说明 建议使用干净的 Python 3.10 或 3.11 环境。 ``` python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate python -m pip install --upgrade pip ``` 使用适合本地 PyTorch/CUDA 配置的 wheel 安装 DGL,然后安装本项目: ``` pip install -e ".[all]" ``` 仅使用 CPU 的用户通常可以使用: ``` pip install dgl pip install -e ".[dev,video]" ``` ## 快速定性演示 ### MNIST:禁止的合取 `1 AND 7` MNIST 是单标签的,因此 `1 AND 7` 在真实图像中永远不会出现。Chimera 训练通过将一个正常样本中的 `1` 操作数与另一个样本中的 `7` 操作数相结合,获取正合取样本。 ``` python demos/mnist_forbidden_conjunction.py \ --pairs "1,7" \ --negatives chimeras_only ``` 该脚本会下载 MNIST,训练或加载共享概念库,训练合取门,并将按分数排序的网格和 CSV 文件写入 `runs/mnist_1_7/`。 对于一个真实的数字 7 图像,异常分数为 $$ s(x)=\widehat{P}(1\land 7\mid x) $$ 得分离的样本是那些表示中同时带有异常强烈的类似于 1 的证据的数字 7。 ### CIFAR-10:禁止的合取 `cat AND dog` ``` python demos/cifar10_forbidden_conjunction.py \ --pairs "cat,dog" \ --negatives chimeras_only \ --augment \ --eval_leaf ``` CIFAR-10 比 MNIST 更难且噪声更多。叶库的测试准确率也会与任何定性结果一同报告。 ### 比较同图像与 Chimera 训练 ``` python demos/compare_training_modes.py \ --dataset mnist \ --pair "1,7" ``` 该包装器使用普通的同图像监督和仅使用 Chimera 的监督运行相同的实验,然后将生成的极值分数网格组合成一张对比图像。 **备注。** 在轻量级的 MNIST 和 CIFAR-10 演示上,仅正常的训练可能仍保留一些判别信号,因此 Chimera 的优势虽可见,但不如在 CLEVRER、OpenImages 和 VidOR 上那么显著,因为在这些数据集上,同图像训练会退化至接近随机的性能。 ## 完整实验 大型实验驱动程序保存在 `experiments/` 下: ``` experiments/ ├── clevrer/train.py ├── openimages/train.py └── vidor/train.py ``` 这些是研究脚本,而不是轻量级的演示。它们需要单独下载的数据集、大量的存储空间以及特定于实验的预处理。有关预期的布局和示例命令,请参见每个实验目录。 代表性的规则类型包括: - `collide(A,B) => collide_before_half(A,B)`; - `relationship => subject_object_present`; - `(A1 AND A2) => B`; - `A => (B1 OR B2)`; - VidOR 中的上下文人物-对象关系规则。 ## 包结构 ``` src/chimera_logic/ ├── semantics.py # exact Boolean targets ├── chimera.py # reusable operand-level mixing helpers ├── evaluator.py # hard propagation and neural DAG evaluation └── trainer.py # bottom-up gate training and lineage-aware caching ``` 规则图遵循以下约定: | 字段 | 含义 | |---|---| | `ndata['mask']` | 概念叶为 `1`,内部节点为 `0` | | `ndata['x']` | 叶节点处的概念 ID | | `ndata['y']` | `1=IFF`,`2=IMPLIES`,`3=AND`,`4=OR` | | `edata['neg']` | 取反的子边为 `-1`,否则为 `+1` | | `edata['pos']` | 蕴含式的可选操作数顺序 | ## 可重用的子树门 训练器可以使用包含以下内容的谱系感知密钥来缓存学习到的子树: - 算子和完整的子树结构; - 蕴含式的有序操作数; - 交换算子的规范化操作数; - 边取反; - 特征维度和架构标签; - 上游编码器参数的指纹。 这可以防止在特征表示的语义发生变化后被无意间错误重用。 ## 输出 演示和实验脚本会生成以下内容的组合: ``` manifest.json metrics.json scores_*.csv per_rule_metrics.csv grids/*.png checkpoints/*.pt ``` 检查点、数据集、缓存和运行目录被刻意排除在版本控制之外。 ## 测试 不需要 DGL 的测试: ``` pytest tests/test_semantics.py tests/test_chimera.py ``` 安装 DGL 后的完整测试: ``` pytest ``` ## 适用范围与局限性 该方法假设: - 存在足够的概念接口; - 有意义的规则或合理的规则挖掘程序; - 有足够的支持度来训练基础概念预测器; - 仔细验证规则,以避免将数据集偏差编码为正常状态。 MNIST 和 CIFAR-10 演示说明了机制和定性排序。基准测试的声明是基于结构化的 CLEVRER、OpenImages 和 VidOR 实验,而不是基于这些玩具演示。 ## 引用 如果您使用了本代码仓库,请引用: **Alejandro Ascarate, Leo Lebrat, Rodrigo Santa Cruz, Clinton Fookes, and Olivier Salvado.** *When Rule Violations Are Rare: Chimera Training for Logical Anomaly Detection.* arXiv:2605.26171, 2026. [arXiv 上的论文](https://arxiv.org/abs/2605.26171) ``` @article{ascarate2026chimera, title = {When Rule Violations Are Rare: Chimera Training for Logical Anomaly Detection}, author = {Ascarate, Alejandro and Lebrat, Leo and Santa Cruz, Rodrigo and Fookes, Clinton and Salvado, Olivier}, year = {2026}, eprint = {2605.26171}, archivePrefix = {arXiv}, primaryClass = {cs.LG}, url = {https://arxiv.org/abs/2605.26171} } ``` 本代码仓库包含 [`CITATION.cff`](CITATION.cff),用于提供软件引用元数据。 ## 许可证 MIT。详见 [`LICENSE`](LICENSE)。
标签:Apex, PyTorch, 人工智能, 凭据扫描, 异常检测, 机器学习, 用户模式Hook绕过, 神经符号, 逆向工具