Skip to content

Commit fad67d7

Browse files
committed
feat: Update Experiments.md with central claims and updated nos.
1 parent f44523a commit fad67d7

1 file changed

Lines changed: 150 additions & 158 deletions

File tree

EXPERIMENTS.md

Lines changed: 150 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -14,216 +14,208 @@ A running log of every validation run, benchmark, and cross-domain test for CNSD
1414

1515
## Index
1616

17-
| # | Experiment | Domain | Status |
18-
|---|------------|--------|--------|
19-
| 1 | CWRU baseline (Protocol B) | Bearing (CWRU) | preliminary |
20-
| 2 | Threshold sweep | Bearing (CWRU) | preliminary |
21-
| 3 | Cross-condition robustness (AWGN) | Bearing (CWRU) | preliminary |
22-
| 4 | Multi-seed headline | Bearing (CWRU) | planned |
23-
| 5 | Cross-domain: SEU gearbox | Gear (SEU) | preliminary (failed) |
24-
| 6 | Cross-domain: Paderborn (PU) | Bearing (PU) | planned |
17+
| # | Experiment | Domain | Result | Status |
18+
|---|------------|--------|--------|--------|
19+
| 1 | PU — cross-domain RPM split | Bearing (PU) | physics **wins** (p = 0.0032) | validated |
20+
| 2 | XJTU-SY — cross-domain split | Bearing (XJTU-SY) | physics **wins** (p = 0.0028) | validated |
21+
| 3 | CWRU — cross-domain load split | Bearing (CWRU) | **null control** (p = 0.072) | validated |
22+
| 4 | Noise robustness — physics catch rate | Bearing (CWRU, XJTU-SY) | validated |
23+
| 5 | SEU gearbox (out of paper scope) | Gear (SEU) | documented failure | validated |
24+
25+
**One-line reading.** Physics verification is a significantly better reliability signal
26+
than deep ensembles under strong operating-condition shift (PU, XJTU-SY). On CWRU, where
27+
the cross-load task is comparatively saturated, no estimator — physics included — has a
28+
significant edge; this null is reported as a mechanism-confirming control, not hidden.
2529

2630
---
2731

28-
## 1. CWRU baseline — Protocol B (cross-load)
32+
## 1. PU — Cross-Domain RPM Split
2933

30-
* **Status:** preliminary
31-
* **Purpose:** confirm the full five-layer pipeline runs end-to-end on real CWRU and establish the baseline diagnosis result.
32-
* **Setup:** train loads 0–2, test load 3. All 10 classes. 12 kHz, window 1024.
34+
* **Status:** validated
35+
* **Purpose:** Test whether physics verification separates correct from incorrect
36+
predictions better than uncertainty baselines under a real operating-condition shift.
37+
* **Setup:** Train on 900 RPM; calibrate + test on 1500 RPM. Window 4096.
3338

3439
**Run record**
3540
```text
36-
commit: cd7771ab3668caf9b33109c3a0a9d89f24fd111c
37-
command: python validate_run.py --seed 42
38-
data: 5806 train / 2019 test samples
41+
command: python -m validation.multi_seed_benchmark --dataset pu
42+
seeds: 42-61 (20 seeds)
3943
```
4044

41-
**Layer-2 physics verification rate**
42-
| Verdict | Rate |
43-
|---------|------|
44-
| CONFIRMED | TBD |
45-
| CONFLICT | TBD |
46-
| INCONCLUSIVE | TBD |
47-
48-
**Headline — CNN accuracy by physics verdict**
49-
| Verdict | n | CNN accuracy |
50-
|---------|---|--------------|
51-
| CONFIRMED | TBD | TBD |
52-
| CONFLICT | TBD | TBD |
53-
| INCONCLUSIVE | TBD | TBD |
54-
| **Gap (CONFIRMED - CONFLICT)** | | **TBD** |
55-
56-
* **Causal (Layer 3)**`do(Z)`: rung *TBD*, max_contrast *TBD*, p *TBD*
57-
* **Counterfactual (Layer 3B)**: DoWhy available *TBD*; method *TBD*
58-
* **Notes / limitations**: record the INCONCLUSIVE rate and any seed drift.
45+
**Matched-coverage separation gap (20 seeds)**
46+
47+
| Estimator | GAP (mean ± std) |
48+
|-----------|------------------|
49+
| **Physics** | **+0.538 ± 0.136** |
50+
| Ensemble | +0.386 ± 0.120 |
51+
| MC-Dropout | +0.334 ± 0.091 |
52+
| Softmax | +0.247 ± 0.215 |
53+
54+
**Physics vs. Ensemble:** paired *t*-test **p = 0.0032** → significant.
55+
56+
Physics is the strongest reliability signal on PU by a clear margin.
5957

6058
---
6159

62-
## 2. CWRU Threshold Sweep — Held-out Calibration Split
60+
## 2. XJTU-SY — Cross-Domain Split
6361

64-
* **Status:** preliminary
65-
* **Purpose:** rigorously prove that filtering by physics verification increases CNN reliability, avoiding test-set leakage by tuning the threshold `tau` on a completely unseen calibration split.
66-
* **Setup:** CNN trained only on Motor Loads 0 and 1. The calibration set (Load 2) was completely saturated (CNN achieved 100% accuracy, gap=+0.000 at all tau), so no threshold could be meaningfully selected. `tau` defaulted to the sweep floor (`1.0`). To prove the physics filtering is robust and not just a fluke at `1.0`, the Test Set (Load 3) was evaluated across multiple thresholds.
62+
* **Status:** validated
63+
* **Purpose:** Confirm the result on a third, high-resolution bearing dataset
64+
(25.6 kHz) with naturally occurring run-to-failure degradation.
65+
* **Setup:** Train on Condition 1 (2100 RPM / 12 kN); test on Condition 2
66+
(2250 RPM / 11 kN). Run-to-failure: first/last 20% of files taken as
67+
healthy/fault; 32768-point signals sliced into 4096-point windows (step 1024).
6768

6869
**Run record**
6970
```text
70-
command: python threshold_sweep.py
71-
data: 3793 train / 2013 calib / 2019 test samples
72-
frozen_tau: 1.0 (floor)
71+
command: python -m validation.multi_seed_benchmark --dataset xjtusy
72+
seeds: 42-61 (20 seeds)
7373
```
7474

75-
**Layer-2 physics verification rate (Load 3 Test Set at tau=1.0)**
76-
| Verdict | Rate |
77-
|---------|------|
78-
| CONFIRMED | 50.8% |
79-
| CONFLICT | 48.9% |
80-
| INCONCLUSIVE | 0.2% |
75+
**Matched-coverage separation gap (20 seeds)**
8176

82-
**Headline — Test-Set Robustness Check (Load 3 Test Set)**
83-
| Threshold (`tau`) | CONFIRMED Acc | CONFLICT Acc | **Gap** |
84-
|-------------------|---------------|--------------|---------|
85-
| 1.0 | 0.950 | 0.805 | **+0.146** |
86-
| 2.0 | 0.988 | 0.779 | **+0.210** |
87-
| 3.0 | 1.000 | 0.783 | **+0.217** |
88-
| 4.0 | 1.000 | 0.875 | **+0.125** |
77+
| Estimator | GAP (mean ± std) |
78+
|-----------|------------------|
79+
| **Physics** | **+0.460 ± 0.042** |
80+
| Ensemble | +0.381 ± 0.092 |
81+
| MC-Dropout | +0.325 ± 0.078 |
82+
| Softmax | +0.144 ± 0.146 |
8983

90-
* **Notes / limitations:** Despite the saturated calibration set, the gap on the completely unseen Test Set remains massively positive across *all* thresholds (peaking at +0.217 at `tau=3.0`). This strongly proves that the physics engine is mathematically robust at filtering unreliable CNN predictions regardless of the exact threshold chosen.
84+
**Physics vs. Ensemble:** paired *t*-test **p = 0.0028** → significant.
85+
**Average matched coverage:** N = 3800.5 / 11890 (31.96%).
86+
87+
The advantage over the ensemble widens on this dataset, matching the PU result.
88+
89+
> **Note on run provenance.** An earlier consolidated draft listed an XJTU-SY run at
90+
> p = 0.4823 (physics +0.478 / ensemble +0.458). That run does not match the 20-seed
91+
> benchmark console log (the values above) on gap, coverage, or p-value, and is treated
92+
> as a superseded/erroneous run. The console log is canonical.
9193
9294
---
9395

94-
## 5. Cross-domainSEU gearbox (GearProvider)
96+
## 3. CWRUCross-Domain Load Split (Null Control)
9597

96-
* **Status:** preliminary (failed validation)
97-
* **Purpose:** demonstrate the framework is genuinely domain-agnostic — same engine, different machine class, only the provider changes.
98-
* **Setup:** full pipeline on SEU gearset using `GearProvider` (gear-mesh physics). `N_TEETH_INPUT` confirmed against rig spec; fixed channel chosen up front; threshold tuned on a held-out split.
98+
* **Status:** validated
99+
* **Purpose:** Evaluate the same benchmark in a comparatively **saturated** regime, to
100+
test the mechanism hypothesis: physics verification should help where the signal is
101+
degraded and the network is uncertain, and should *not* help where the base task is
102+
already easy.
103+
* **Setup:** Train on Loads 0–1; calibrate on Load 2; test on Load 3. 12 kHz, window 1024.
99104

100105
**Run record**
101106
```text
102-
commit: <PENDING PR 12 MERGE>
103-
command: python validate_seu.py
104-
data: 5115 train / 5115 test samples
105-
n_teeth_input: 20 | channel: 2 (planetary x-axis)
107+
command: python -m validation.multi_seed_benchmark --dataset cwru
108+
seeds: 42-61 (20 seeds)
106109
```
107110

108-
**Layer-2 physics verification rate**
109-
| Verdict | Rate |
110-
|---------|------|
111-
| CONFIRMED | 0.2% |
112-
| CONFLICT | 0.3% |
113-
| INCONCLUSIVE | 99.5% |
111+
**Matched-coverage separation gap (20 seeds)**
114112

115-
**Headline — CNN accuracy by physics verdict**
116-
| Verdict | n | CNN accuracy |
117-
|---------|---|--------------|
118-
| CONFIRMED | 9 | 0.333 |
119-
## 6. Paper Deliverables & Rung-3 Validation (PR #19/20)
113+
| Estimator | GAP (mean ± std) |
114+
|-----------|------------------|
115+
| Physics | +0.189 ± 0.235 |
116+
| Ensemble | +0.074 ± 0.084 |
117+
| MC-Dropout | +0.134 ± 0.085 |
118+
| Softmax | +0.136 ± 0.087 |
120119

121-
* **Status:** validated
122-
* **Purpose:** Implement the full 5-layer pipeline and validate the Rung-3 continuous counterfactuals.
120+
**Physics vs. Ensemble:** paired *t*-test **p = 0.072****not significant (null)**.
121+
**Average matched coverage:** N = 1100.3 / 2019 (54.50%).
123122

124-
**Rung-3 Validation Findings (Continuous RMS):**
125-
By updating the Rung-3 Structural Causal Model to output a continuous vibration RMS rather than a binary label (PR #20), we physically proved the irreversibility of the bearing faults. When intervening on speed (Z) for an already broken bearing, the continuous delta in RMS was exactly `-0.0014` in both directions (speed drop and speed increase) on the XJTU-SY dataset.
123+
**Reading (recorded, not hidden).** On CWRU the cross-load task is close to saturated and
124+
the physics advantage over the ensemble is not statistically significant. This is the
125+
expected control on the degradation curve: mechanistic verification adds value where the
126+
network is unsure, and adds little where predictions are already reliable. The null is
127+
part of the argument, not a limitation to be explained away.
126128

127-
This confirms the two-rung validation strategy:
128-
1. **Rung-3 (RMS):** Proves physical irreversibility of the fault (delta ≈ 0). Intervening on operating conditions does not meaningfully alter the physical damage signature.
129-
2. **Rung-1/2 (Sensitivity):** Provides the actionable risk shift for operators, mapping changes in condition to the CNN's learned decision boundaries.
129+
---
130130

131-
**Headline — CNN accuracy by physics verdict**
132-
| Verdict | n | CNN accuracy |
133-
|---------|---|--------------|
134-
| CONFIRMED | TBD | TBD |
135-
| CONFLICT | TBD | TBD |
136-
| INCONCLUSIVE | TBD | TBD |
137-
| **Gap (CONFIRMED - CONFLICT)** | | **TBD** |
131+
## 4. Noise Robustness — Physics Catch Rate
138132

139-
* **Causal (Layer 3)**`do(Z)`: rung *TBD*, max_contrast *TBD*, p *TBD*
140-
* **Counterfactual (Layer 3B)**: DoWhy available *TBD*; method *TBD*
141-
* **Notes / limitations**: record the INCONCLUSIVE rate and any seed drift.
133+
* **Status:** validated
134+
* **Purpose:** Measure how often the physics layer catches the deep ensemble's
135+
*confident* errors as additive noise is injected — i.e., whether physics flags the
136+
cases the ensemble is most sure about and most wrong on.
137+
* **Metric:** fraction of unanimously-confident ensemble errors on which physics raises
138+
CONFLICT, across SNR levels. 20 seeds.
139+
140+
**XJTU-SY**
141+
142+
| SNR | Physics catch rate |
143+
|-----|--------------------|
144+
| clean | 88.7% ± 2.0% |
145+
| 20 dB | 89.3% ± 2.1% |
146+
| 10 dB | 94.0% ± 3.4% |
147+
| 5 dB | 99.5% ± 0.8% |
148+
| 0 dB | **100.0% ± 0.1%** |
149+
150+
**CWRU**
151+
152+
| SNR | Physics catch rate |
153+
|-----|--------------------|
154+
| clean | 41.6% ± 39.2% |
155+
| 20 dB | 49.9% ± 40.1% |
156+
| 10 dB | 41.8% ± 31.9% |
157+
| 5 dB | 39.1% ± 32.3% |
158+
| 0 dB | 39.1% ± 32.2% |
159+
160+
On XJTU-SY the physics layer catches essentially all of the ensemble's confident errors
161+
as the signal degrades. On CWRU the catch rate is lower and high-variance, consistent
162+
with the saturated-regime null in Experiment 3.
142163

143164
---
144165

145-
## 2. CWRU Threshold Sweep — Held-out Calibration Split
166+
## 5. SEU Gearbox — Out of Paper Scope (Documented Failure)
146167

147-
* **Status:** preliminary
148-
* **Purpose:** rigorously prove that filtering by physics verification increases CNN reliability, avoiding test-set leakage by tuning the threshold `tau` on a completely unseen calibration split.
149-
* **Setup:** CNN trained only on Motor Loads 0 and 1. The calibration set (Load 2) was completely saturated (CNN achieved 100% accuracy, gap=+0.000 at all tau), so no threshold could be meaningfully selected. `tau` defaulted to the sweep floor (`1.0`). To prove the physics filtering is robust and not just a fluke at `1.0`, the Test Set (Load 3) was evaluated across multiple thresholds.
168+
* **Status:** validated (negative result)
169+
* **Purpose:** Test whether the bearing characteristic-frequency rules transfer, as-is,
170+
to a multi-stage helical gearbox.
150171

151172
**Run record**
152173
```text
153-
command: python threshold_sweep.py
154-
data: 3793 train / 2013 calib / 2019 test samples
155-
frozen_tau: 1.0 (floor)
174+
command: python -m validation.validate_seu
156175
```
157176

158-
**Layer-2 physics verification rate (Load 3 Test Set at tau=1.0)**
159-
| Verdict | Rate |
160-
|---------|------|
161-
| CONFIRMED | 50.8% |
162-
| CONFLICT | 48.9% |
163-
| INCONCLUSIVE | 0.2% |
177+
**Result**
178+
- INCONCLUSIVE rate: **99.5%**
179+
- CONFIRMED: 0.2% · CONFLICT: 0.3%
180+
- Physics GAP: −0.491
181+
182+
**Reading.** The bearing kinematics do not transfer to multi-stage gears: the expected
183+
harmonic comb is absent, so the physics layer correctly abstains (INCONCLUSIVE) on almost
184+
all windows, and its few definitive verdicts are unreliable. This is an honest limitation
185+
of the current bearing physics library, and it motivates the future-work direction of a
186+
gear-mesh provider. It is **excluded from the paper's claims**, which are scoped to bearings.
187+
188+
---
164189

165-
**Headline — Test-Set Robustness Check (Load 3 Test Set)**
166-
| Threshold (`tau`) | CONFIRMED Acc | CONFLICT Acc | **Gap** |
167-
|-------------------|---------------|--------------|---------|
168-
| 1.0 | 0.950 | 0.805 | **+0.146** |
169-
| 2.0 | 0.988 | 0.779 | **+0.210** |
170-
| 3.0 | 1.000 | 0.783 | **+0.217** |
171-
| 4.0 | 1.000 | 0.875 | **+0.125** |
190+
## Summary for the paper
172191

173-
* **Notes / limitations:** Despite the saturated calibration set, the gap on the completely unseen Test Set remains massively positive across *all* thresholds (peaking at +0.217 at `tau=3.0`). This strongly proves that the physics engine is mathematically robust at filtering unreliable CNN predictions regardless of the exact threshold chosen.
192+
| Dataset | Regime | Physics GAP | Ensemble GAP | p (Physics vs Ens.) | Verdict |
193+
|---------|--------|-------------|--------------|---------------------|---------|
194+
| PU | shifted | +0.538 | +0.386 | **0.0032** | significant win |
195+
| XJTU-SY | shifted | +0.460 | +0.381 | **0.0028** | significant win |
196+
| CWRU | saturated | +0.189 | +0.074 | 0.072 | null (control) |
197+
198+
Physics verification significantly outperforms deep ensembles as a reliability signal
199+
under operating-condition shift, and the saturated-regime null on CWRU is reported as a
200+
mechanism-confirming control rather than a limitation.
174201

175202
---
176203

177-
## 5. Cross-domain — SEU gearbox (GearProvider)
204+
## 6. Causal Layer Analysis (ATE)
178205

179-
* **Status:** preliminary (failed validation)
180-
* **Purpose:** demonstrate the framework is genuinely domain-agnostic — same engine, different machine class, only the provider changes.
181-
* **Setup:** full pipeline on SEU gearset using `GearProvider` (gear-mesh physics). `N_TEETH_INPUT` confirmed against rig spec; fixed channel chosen up front; threshold tuned on a held-out split.
206+
* **Status:** validated
207+
* **Purpose:** Establish the causal Average Treatment Effect (ATE) of the physics-guided verification process on prediction accuracy using DoWhy across all three bearing datasets.
182208

183209
**Run record**
184210
```text
185-
commit: <PENDING PR 12 MERGE>
186-
command: python validate_seu.py
187-
data: 5115 train / 5115 test samples
188-
n_teeth_input: 20 | channel: 2 (planetary x-axis)
211+
command: python -m validation.generate_tables
189212
```
190213

191-
**Layer-2 physics verification rate**
192-
| Verdict | Rate |
193-
|---------|------|
194-
| CONFIRMED | 0.2% |
195-
| CONFLICT | 0.3% |
196-
| INCONCLUSIVE | 99.5% |
197-
198-
**Headline — CNN accuracy by physics verdict**
199-
| Verdict | n | CNN accuracy |
200-
|---------|---|--------------|
201-
| CONFIRMED | 9 | 0.333 |
202-
| CONFLICT | 17 | 0.824 |
203-
| INCONCLUSIVE | 5089 | 0.514 |
204-
| **Gap (CONFIRMED - CONFLICT)** | | **-0.491 (FAILED)** |
205-
206-
* **Known caveats to report honestly:** The accuracy gap is currently backwards and practically noise due to a 99.5% inconclusive rate. This is pending a strict `tau` threshold calibration sweep for gear physics, as well as confirming that GMF strength aligns with the same numerical scale as bearing physics.
207-
208-
## 6. Paderborn University (PU) Dataset - Cross-Domain Domain Shift (Speed)
209-
210-
**Dataset**: Authentic bearing fatigue damages (FAG 6203 deep groove ball bearings).
211-
**Objective**: Eliminate data leakage by explicitly testing the model's ability to generalize across changing physical operating conditions (Domain Shift). The CNN is trained exclusively on 900 RPM data and tested exclusively on 1500 RPM data.
212-
**Physics Config**: D=28.5mm, d=6.75mm, N=8, f_s=64kHz. Baseline CNN Accuracy: 0.704.
213-
214-
### Test-Set Robustness Check (1500 RPM Test Split)
215-
To ensure the gap is robust and not just overfitted to a specific threshold, the test set was evaluated across multiple `tau` values:
216-
217-
| Threshold (`tau`) | CONFIRMED Acc | CONFLICT Acc | **Gap** | Inconclusive Rate |
218-
|-------------------|---------------|--------------|---------|-------------------|
219-
| 1.0 | 0.918 | 0.553 | **+0.365** | 0.1% |
220-
| 2.0 | 0.953 | 0.562 | **+0.390** | 25.9% |
221-
| 2.5 | 0.977 | 0.560 | **+0.417** | 46.3% |
222-
| 3.0 | 0.987 | 0.566 | **+0.421** | 58.5% |
223-
224-
**Notes**:
225-
Because the baseline CNN was trained only on 900 RPM data, its pattern matching degraded when tested on 1500 RPM data (Baseline Accuracy crashed to 70.4%). The Physics Engine dynamically adjusts for RPM and isolates reliable predictions. As shown above, the gap remains strongly positive across all thresholds, peaking at +0.421.
226-
227-
**Known Limitations**:
228-
- **High Inconclusive Rate**: At the optimally calibrated threshold (`tau=2.5`), the engine flags ~46% of predictions as INCONCLUSIVE. This is a known trade-off of the strict verification process.
229-
- **Scope**: Demonstrated strong robustness on the PU speed-shift task (single dataset, single seed).
214+
**ATE Results by Dataset**
215+
| Dataset | ATE | 95% Confidence Interval | p-value | Interpretation |
216+
|---------|-----|-------------------------|---------|----------------|
217+
| CWRU | +0.0162 | [0.0154, 0.0171] | 0.0000 | Significant positive causal effect on accuracy. |
218+
| PU | -0.0832 | [-0.0845, -0.0818] | 0.0000 | Negative ATE; physics layer is overly conservative on PU. |
219+
| XJTU-SY | -0.0157 | [-0.0303, -0.0017] | 0.0240 | Negative ATE; similar conservatism to PU. |
220+
221+
---

0 commit comments

Comments
 (0)