Skip to main content

math-validator

Validate that M2G-NET code (src/fusion.py, src/model.py, src/interaction.py) matches the documented math in docs/MATHEMATICAL_FORMULAS.md. Use whenever editing model architecture, loss, gate computation, calibration, or metrics.

ソース情報

リポジトリ
Cuki2910/M2G-NET
ソースの最終更新活動
2026年5月14日 17:58
検出された SKILL.md の言語
英語
スター
1
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
math-validator
description
Validate that M2G-NET code (src/fusion.py, src/model.py, src/interaction.py) matches the documented math in docs/MATHEMATICAL_FORMULAS.md. Use whenever editing model architecture, loss, gate computation, calibration, or metrics.
tags
["m2g-net","math","validation","fusion","model"]
version
1.0.0
user-invocable
true
allowed-tools
["Bash","Read","Grep"]
# Math Validator — M2G-NET Structural cross-check between `docs/MATHEMATICAL_FORMULAS.md` (the specification) and `src/` (the implementation). Produces a pass/fail report with specific mismatches. ## When to Use - After editing `src/fusion.py`, `src/model.py`, `src/interaction.py`, or `src/loss.py` - When adding or modifying a loss term, gate weight, or calibration step - When translating a new formula from the paper into code - Before submitting any commit that touches model math --- ## Validation Workflow ### Step 1 — Load the specification ``` Read("docs/MATHEMATICAL_FORMULAS.md") ``` Extract and list every named formula with its: - Symbol and domain (e.g., `g_k ∈ ℝ^V`, sparsemax output) - Tensor shape contract (e.g., `[batch, V]` → `[batch, K, V]`) - Key operations (softmax vs. sparsemax, temperature, masking) ### Step 2 — Map formulas to code | Formula section | File to check | |----------------|--------------| | §1 View Encoding `h_i = f_i(x_i)` | `src/views.py` | | §2 Site-Aware Representation | `src/views.py` (site embedding block) | | §3 Cross-Level Interaction | `src/interaction.py` | | §4 Gated Fusion (sparsemax, prior smoothing) | `src/fusion.py` — `ResidualGatedFusion`, `RegularizedTaskGate` | | §5 Multi-Task Loss + mask `m_k` | `src/loss.py` | | §6 Temperature Scaling / Calibration | `src/calibration.py` | | Metrics (ROC-AUC, ECE) | `src/metrics.py` | ### Step 3 — Run the automated check ```bash python scripts/verify_math.py ``` This script checks tensor shapes and key invariants. Review its output first before doing manual inspection. ### Step 4 — Manual spot-checks (for each changed formula) For each formula that was modified, verify: 1. **Shape contract**: Do tensor dimensions match the formula subscripts? - e.g., gate weights `g` should be `[batch, K, V]` if formula says `g_k ∈ ℝ^V` per task 2. **Operation identity**: Is the implementation using the right operation? - sparsemax ≠ softmax — check import and call site in `src/fusion.py` - Temperature scaling: is `τ` applied before or after the gate? 3. **Mask correctness**: Is `m_k^(n)` applied correctly in the loss? - Loss should be zeroed for unobserved labels, not included in mean 4. **Prior smoothing**: Gate prior `π` should blend uniformly, not collapse weights - Check `gate_prior_strength` parameter in `RegularizedTaskGate` 5. **Out-of-site mode**: When site ID is unknown, `h_rand = 0` (zeroed embedding) - Verify in `src/views.py` site-aware block ### Step 5 — Concrete numerical check (for critical changes) When changing loss, calibration, or gate computation, run a sanity check with known values: ```bash python -c " import torch from src.fusion import RegularizedTaskGate # Smoke test: uniform input should produce near-uniform gate weights gate = RegularizedTaskGate(num_views=5, num_tasks=4) x = torch.zeros(2, 128) # batch=2, hidden=128 g = gate(x) print('Gate shape:', g.shape) # expect [2, 4, 5] print('Gate sum per task:', g.sum(dim=-1)) # expect ~1.0 per task (sparsemax) " ``` --- ## Output Format After completing Steps 1–5, report as: ```markdown ## Math Validation Report **Formula sections checked**: [list] **Files inspected**: [list] **verify_math.py result**: PASS / FAIL (paste relevant output) ### Findings | Formula | Code location | Status | Note | |---------|--------------|--------|------| | Sparsemax gate g_k | src/fusion.py:L42 | ✅ PASS | Shape [B,K,V] correct | | Loss mask m_k | src/loss.py:L18 | ⚠️ WARN | Mean includes masked zeros | | Temperature τ | src/calibration.py:L31 | ✅ PASS | Applied post-logit | ### Action Required [List any FAIL or WARN items with specific fix] ``` --- ## Key Invariants to Never Violate | Invariant | Where enforced | |-----------|---------------| | sparsemax (not softmax) for gate weights | `src/fusion.py` | | Gate weights sum to ≤ 1 per task (sparse) | sparsemax property | | Loss masked by `m_k` — never average over unobserved | `src/loss.py` | | `h_rand = 0` for unknown sites | `src/views.py` | | Temperature `τ > 0` enforced (softplus or clamp) | `src/fusion.py` | | `docs/MATHEMATICAL_FORMULAS.md` is source of truth | All of `src/` |
GitHubで見る