Source:
report/version10/exp-expert/v10-04_E3_SCINet_RQ_analysis.md
v10-04: E3 SCINet + Residual Quantization — Final 분석 (revision 1)¶
본 보고서는 E3 학습 종료 (round 30 완료, FINISHED) 시점의 최종 판단이다. 모든 수치는 round 30 종료 후 MLflow 기록 기준 점추정이며, seed=42 단일이다. exp-critic CONDITIONAL 판정에 따른 revision 1 cycle 반영본 — 핵심 수정 사항: (1) 잠정 → final 결과 갱신, (2) "C2 dead restart 효과" 가짜 인과 제거, (3) HR@1 baseline 출처 (Phase1 NF Local) 정정, (4) L1 dead 3원인 교집합 약화, (5) v9-06 SCINet 대비 후퇴 정량화.
0. Executive Summary (final)¶
| 항목 | 값 | 판정 |
|---|---|---|
| 진행 상황 | round 30/30 (100%), FINISHED (run_id b7eac626…7667e9) |
— |
| Best val (round 4, step=3) | 0.2974 (peak-weighted L1 + VQ commit, standardized scale) | round 4 이후 26 round 미갱신 (plateau 확정) |
| Final val (round 30) | 0.3142 (best 대비 +5.65%) | mild overfitting |
| Test PAPE | 49.67 | v9-06 SCINet 42.35 대비 +7.32pp 악화 |
| Test HR@1 | 20.21 | v9-06 SCINet 34.48 대비 -14.27pp 악화 |
| Test HR@2 | 31.66 | v9-06 SCINet 46.38 대비 -14.72pp 악화 |
| Test MSE | 0.493 | v9-06 SCINet 0.498 ≈ 동등 (Δ -0.005) |
| Test MAE | 0.443 | — |
| L1 util final | 11.19% | dead 계열 collapse (< 20% threshold, ADR-010 §6) |
| L2 util final | 32.25% | partial collapse (50% 미달) |
| L3 util final (β=0.375 가중) | 36.19% | β 가중 효과 간접 작동, 단 H_β/H_cascade confound (§4.3) |
| 3-level 평균 util | (11.19 + 32.25 + 36.19) / 3 = 26.54% | H10-3 axis 1 FAIL (50% threshold 미달) |
| 통신량 bytes_per_round | 12,288 (3 × M=32 × d=32 × 4) | 4 E* 중 두 번째로 낮음 (E1 33,792 / E2 24,576 / E4 4,096) |
Final 결론: 1. H10-3 conjunctive 평가 FAIL — axis 1 (util > 50%): 26.54% FAIL, axis 2 (test_mse ≤ 0.515): 0.493 PASS. 두 axis를 conjunctive AND로 평가하든 OR로 평가하든 axis 1 FAIL이므로 결합 FAIL (ADR-010 falsification 표기 OR/AND 정합성은 §3.4에서 별도 처리). 2. VQ 이식이 SCINet을 약화시켰음 (확정) — v9-06 SCINet (Watch PASS, 20-model 1위) 대비 PAPE +7.32pp, HR@1 -14.27pp, HR@2 -14.72pp 후퇴. MSE만 동등 (0.493 vs 0.498). v6 R1b PAPE 37.36과 비교하면 v10 phase 전체가 통신/품질 모두 regression. 3. L3 β=0.375 (1.5× peak 가중) 효과는 inconclusive — L3 util 36.19%로 L1 (11.19%)의 3.2배, simple ablation (β uniform 0.25)에서 L3 util 5.63%였던 것과 +30.56pp 차이. 그러나 PAPE Δ(E3 - E3_simple) = -1.09 (E3가 약간만 좋음) → β 단독 peak 품질 효과는 통계적으로 비유의에 가까운 미미한 수준. confound: simple은 C1/C3/M1 동시 변경이라 β 단독 효과 분리 불가. 4. Best round 4 plateau (사후 확정) — 30 round의 13.3% 시점에 수렴. round 4-30 동안 best val 갱신 0건. wait 권고는 사후 정확 — 추가 14 round로 (a) test 메트릭 final 확정, (b) artifact 저장 산출물 회수. 5. L1 dead 원인 — 단일 요인 dominant 분리 불가 — simple ablation (γ uniform 0.95) 결과 L1 util 4.25%로 오히려 악화. 가설 C (γ=0.98 anchoring 단독 기여)는 부호 반대 가능성, 가설 A (SCINet pool 평균화) 와 가설 B (restart_dead_codes 미구현) 는 robust. addendum 1-apt × 8-round one-out-at-a-time ablation 필수 (§5.4).
Critic-corrected disclosure (revision 1):
- E3의 v10 내 상대 우위 (PAPE 49.67 vs E1 55 / E2 85 / E4 67) 는 H10-3 가설 통과를 시사하지 않는다. v10 phase 전체가 partial collapse 상태이므로 E3의 49.67조차 v6 R1b (37.36) / v9-06 SCINet (42.35) 대비 약화. relative ranking을 partial pass로 읽지 말 것.
- "C2 dead restart 효과" 진술은 본 revision에서 제거. residual_quant.py에 restart_dead_codes() 미정의 + vq_base_simple.py:145 no-op return 0 → E3/E3_simple 양쪽 모두 C2 비작동. simple과 full의 차이는 C1 (K-means++ vs torch.randn) + C3 (β=0.375 vs uniform 0.25) + M1 (γ differential vs uniform 0.95) 의 stack 효과.
- HR@1 baseline 출처 정정: v10 FL no-VQ baseline (B0–B4) 은 HR@1 미기록 → E3 HR@1 20.21의 의미는 v10 phase 내부에서 검증 불가. 이전 컨텍스트의 "B3 17.14 / B4 18.57 우위" 는 Phase1 NF Local 베이스라인 (paradigm mismatch) 출처 misalignment였음 (§9.1 정정).
1. 실험 메타데이터¶
1.1 MLflow 식별¶
- Experiment:
v10-multi-model-vq(id 738860791398377455) - Run name:
E3_SCINet_RQ_seed42 - Run ID (full):
b7eac626124342fe84f3c12ecc7667e9 - Status: FINISHED (round 30 / 30, end_time 2026-04-25 17:17:14 KST)
- Start time: 2026-04-25 18:44:39 (KST) — 표기상 이슈 (start > end는 실험 timezone 보정 결과로 추정, MLflow 원본 기록 신뢰)
- 이전 KILLED runs:
47ad331975f2…(round 1까지),56d2f3d116dd…(round 4까지) — 모두 사전 시도, 본 분석 대상은 FINISHED run 1건만.
1.2 핵심 하이퍼파라미터 (MLflow 기록)¶
| Param | Value |
|---|---|
| backbone | SCINet (TSLib) |
| vq_strategy | ResidualQuantization (3 level × M=32 × d=32) |
| commitment_weights | [0.25, 0.25, 0.375] (L3 1.5× peak 가중 = β 주입) |
| ema_decay | 0.99 |
| per_cb_gamma (Memory Alignment) | {L1: 0.98, L2: 0.95, L3: 0.85} |
| memory_delta | 0.7 |
| peak_alpha | 2.0 (peak-weighted smooth L1) |
| fl_rounds | 30 |
| local_epochs | 3 |
| n_train_households | 50 |
| input_size / horizon | 96 / 24 |
| lr / batch_size | 1e-3 / 128 |
| seed | 42 |
| amp | bfloat16 (RTX 5070 Ti) |
| bytes_per_round | 12,288 |
| split_version | v10 (Train 50 + Cold 50) |
1.3 비교 대상 (v10 phase 내, MLflow v10-multi-model-vq 기록 기준)¶
| Run | Status | PAPE | HR@1 | HR@2 | MSE | 비고 |
|---|---|---|---|---|---|---|
| B0_local_DLinear_seed42 | FINISHED | 40.34 | nan | nan | 0.4755 | v10 베이스라인 (사용자 컨텍스트 일치) |
| B1_FedAvg_DLinear_seed42 | FINISHED | 44.56 | nan | nan | 0.7767 | FL DLinear |
| B2_NBEATSx_noVQ_seed42 | FINISHED | 46.38 | nan | nan | 0.8083 | E1 ablation 대조 |
| B3_NHITS_noVQ_seed42 | FINISHED | 44.66 | nan | nan | 0.7732 | E2 ablation 대조 |
| B4_Crossformer_noVQ_seed42 | FINISHED | 41.81 | nan | nan | 0.8397 | E4 ablation 대조 |
| E1_NBEATSx_DecompCB_seed42 | FINISHED | 55.01 | nan | nan | 0.8074 | VQ 추가 → 8.6%p 악화 |
| E2_NHITS_FreqBand_seed42 | FINISHED | 84.97 | nan | nan | 0.4816 | 대실패 (PAPE 84.97) |
| E3_SCINet_RQ_seed42 | FINISHED | 49.67 | 20.21 | 31.66 | 0.493 | 본 분석 대상 (final) |
| E4_Crossformer_PQ_seed42 | FINISHED | 67.59 | 11.30 | 17.44 | 0.7901 | VQ 추가 → 25.8%p 악화 |
외부 비교 (v9-06 recap, 동일 SCINet 구성, 단변량, n=15 = 5-apt × 3-seed): - SCINet (v9-06 Watch PASS): PAPE 42.35 / HR@1 34.48 / HR@2 46.38 / MSE 0.498 (20-model 1위) - 본 E3 의 round 30 test 결과가 위 수치 근방이면 VQ 이식이 SCINet 베이스 성능을 보존, 더 낮으면 v9-06 대비 더 우수, 더 높으면 VQ 가 SCINet 을 약화.
주의: B0/B1/…/B4 는 50가구 전수 평가, v9-06 recap 은 5-apt × 3-seed. n 비대칭으로 직접 비교 위험. ADR-010 §11 R7 가드 — reporter 단계에서 5-apt subset 별도 추출이 정식 비교 방법.
2. Round-by-round 추이 (MLflow 기록, step 0-15 = round 1-16)¶
| step | round | train | val | util_L1 | util_L2 | util_L3 | alig_L1 | alig_L2 | alig_L3 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0.4683 | 0.3174 | 0.0506 | 0.1113 | 0.1406 | 0.0349 | 0.0122 | 0.0147 |
| 1 | 2 | 0.4509 | 0.3070 | 0.0656 | 0.1650 | 0.2112 | 0.0641 | 0.0200 | 0.0215 |
| 2 | 3 | 0.4391 | 0.3003 | 0.0706 | 0.2506 | 0.2644 | 0.0548 | 0.0086 | 0.0131 |
| 3 | 4 | 0.4320 | 0.2974 | 0.0825 | 0.2581 | 0.2956 | 0.0547 | 0.0086 | 0.0096 |
| 4 | 5 | 0.4277 | 0.3000 | 0.0794 | 0.2594 | 0.3131 | 0.0353 | 0.0075 | 0.0077 |
| 5 | 6 | 0.4226 | 0.2978 | 0.0881 | 0.2706 | 0.3144 | 0.0393 | 0.0078 | 0.0063 |
| 6 | 7 | 0.4200 | 0.2988 | 0.0862 | 0.2800 | 0.3019 | 0.0324 | 0.0083 | 0.0058 |
| 7 | 8 | 0.4190 | 0.2988 | 0.0981 | 0.2894 | 0.3319 | 0.0358 | 0.0076 | 0.0051 |
| 8 | 9 | 0.4146 | 0.3000 | 0.0981 | 0.2662 | 0.3444 | 0.0365 | 0.0082 | 0.0058 |
| 9 | 10 | 0.4123 | 0.3022 | 0.1013 | 0.2919 | 0.3300 | 0.0256 | 0.0065 | 0.0061 |
| 10 | 11 | 0.4116 | 0.3014 | 0.0975 | 0.2981 | 0.3287 | 0.0346 | 0.0044 | 0.0054 |
| 11 | 12 | 0.4095 | 0.3009 | 0.1025 | 0.2938 | 0.3387 | 0.0282 | 0.0052 | 0.0057 |
| 12 | 13 | 0.4075 | 0.3022 | 0.1006 | 0.2950 | 0.3544 | 0.0284 | 0.0046 | 0.0057 |
| 13 | 14 | 0.4058 | 0.3030 | 0.1044 | 0.3038 | 0.3469 | 0.0292 | 0.0055 | 0.0064 |
| 14 | 15 | 0.4066 | 0.3049 | 0.0931 | 0.2900 | 0.3450 | 0.0353 | 0.0041 | 0.0064 |
| 15 | 16 | 0.4034 | 0.3025 | 0.1056 | 0.3019 | 0.3450 | 0.0401 | 0.0043 | 0.0060 |
2.1 train_loss 추이¶
- round 1: 0.4683 → round 16: 0.4034 (Δ = -0.0649, -13.9%)
- 단조 감소이나 round 12 이후 감소율 둔화 (round 12 0.4075 → round 16 0.4034, Δ = -0.0041 over 4 round).
- train_loss 는 학습 자체가 진행 중임을 보여주나, val_loss plateau 와 결합 시 overfitting 초기 진입 신호 가능.
2.2 val_loss 추이¶
- round 1: 0.3174 → round 4 (best): 0.2974 → round 16: 0.3025
- best 갱신 11 round 미발생, 추세는 round 4-7 까지 0.298 plateau, round 9-13 에서 0.300-0.302 사이 진동, round 14-16 에서 0.303-0.305 약상승.
- Δ(round 16 - round 4 best) = +0.0051 = +1.71%. 통계 비유의 (단일 seed, 비교 분포 없음) 이나 early stopping 조건이 v9-06 EarlyStopping(patience=5) 였다면 round 9 시점에서 이미 종료.
2.3 Codebook utilization 추이 (핵심)¶
| Level | round 1 | round 4 (best val) | round 16 | Δ(16-1) | β | dead-code 회피 메커니즘 |
|---|---|---|---|---|---|---|
| L1 | 5.06% | 8.25% | 10.56% | +5.50%p | 0.25 | 없음 (residual_quant.py 에 restart_dead_codes() 미구현) |
| L2 | 11.13% | 25.81% | 30.19% | +19.06%p | 0.25 | 없음 (동일) |
| L3 | 14.06% | 29.56% | 34.50% | +20.44%p | 0.375 (1.5×) | 없음 (동일) |
관찰: - L1 < L2 < L3 단조 증가는 RQ 의 정상 패턴 반대. 정상 RQ 는 L1 (coarse) > L2 (mid) > L3 (fine) usage 가 monotonic 이어야 함 (RQ-VAE Lee et al. CVPR 2022). E3 에서는 L1 이 가장 빈약, L3 가 가장 풍부 — inverted hierarchy. - L1 이 32 codeword 중 약 3-4 개만 active (10.56% × 32 ≈ 3.4) — near-dead 계열 collapse. - L3 가 11 codeword active (34.5% × 32 ≈ 11) — β=0.375 가중 + memory_alignment γ=0.85 (L1 의 0.98 보다 낮은 anchoring) 의 협업 효과로 추정.
2.4 Memory Alignment similarity 추이¶
- alignment_sim_mean L1: round 1 0.0349 → round 16 0.0401 (낮음, 0.04 근처 정체)
- L2: 0.0122 → 0.0043 (감소)
- L3: 0.0147 → 0.0060 (감소)
해석: 50 가구 client 간 codebook similarity 는 모든 level 에서 매우 낮다 (< 0.07). 이는 (a) 가구 간 peak 패턴 이질성이 크거나, (b) γ=0.98 (L1) 이 codebook 을 거의 client mean 으로 끌고 가지 못하는 것 — γ 가 1.0 에 가까울수록 server 가 client average 에 더 의존, 반대로 1.0 이면 단순 mean 이므로 0.98 은 아주 약한 anchoring. ADR-010 §11 R9 가드 (γ=0.8 rollback) 의 트리거는 util < 20% 인데 L1 이 정확히 그 임계 (10.56% < 20%) 이므로 rollback 권고 대상이지만 본 run 은 이미 round 15 진행 → 중간 변경은 결과 해석 복잡화.
3. H10-3 Final 검증¶
3.1 ADR-010 H10-3 정의¶
"SCINet + Residual Quantization (RQ, 3 level × M=32) 은 동일 통신량(총 code budget ≈ 96) 조건에서 flat VQ (M=96 단일) 대비 collapse 를 회피한다" - Falsification 조건: 전체 CB util < 50% 또는 MSE > 0.515 (= B0)
OR/AND 표기 정합성 (revision 1): ADR-010 원문은 "또는 (OR)"로 표기. 이전 컨텍스트에 "conjunctive (AND)" 표기 혼선이 있었으나, 어느 해석이든 axis 1 FAIL이므로 결합 FAIL은 동일. 본 보고서는 ADR-010 원문 OR 해석을 기준으로 하되, conjunctive 평가 결과도 §3.4에 병기.
3.2 Axis 1 (util > 50%): FAIL (확정)¶
| 측정값 | round 16 (잠정) | round 30 (final) | Δ |
|---|---|---|---|
| util_L1 | 10.56% | 11.19% | +0.63%p |
| util_L2 | 30.19% | 32.25% | +2.06%p |
| util_L3 | 34.50% | 36.19% | +1.69%p |
| 평균 (3-level) | 25.08% | 26.54% | +1.46%p |
평균 26.54% 는 50% threshold 의 절반 수준. Axis 1 FAIL 확정 — 라운드 16→30 외삽 (25-27%) 정확히 적중 (실측 26.54%).
단순 평균 vs 가중 평균: weighted mean (β-가중: w_L1=0.25, w_L2=0.25, w_L3=0.375 / sum=0.875 정규화) 으로 해석하면: $$ util_{\text{weighted}} = \frac{0.25 \cdot 11.19 + 0.25 \cdot 32.25 + 0.375 \cdot 36.19}{0.875} = \frac{2.80 + 8.06 + 13.57}{0.875} = 27.92\% $$ 단순 평균 26.54% 와 차이 1.38%p. 어떤 해석이든 50% threshold 미달, FAIL 결론 불변.
3.3 Axis 2 (MSE ≤ 0.515): PASS (확정)¶
- test_mse = 0.493 (MLflow
metrics.test_mse,evaluate_household산출) - B0 Local DLinear baseline MSE = 0.4755 → E3 MSE 0.493 > 0.4755 (B0보다 약간 나쁨)
- v9-06 SCINet (5-apt × 3-seed) MSE 0.498 → E3 0.493 ≈ 동등 (Δ -0.005)
- 0.493 ≤ 0.515 → Axis 2 PASS
3.4 결합 판정 (final)¶
| 평가 조건 | Axis 1 (util) | Axis 2 (mse) | 결합 |
|---|---|---|---|
| ADR-010 원문 (OR — 둘 중 하나라도 위반 시 falsified) | FAIL | PASS | falsified → H10-3 FAIL |
| 컨텍스트 conjunctive (AND — 둘 다 충족 시 통과) | FAIL | PASS | AND → FAIL |
→ 두 해석 모두 H10-3 FAIL. axis 1의 압도적 미달 (26.54% << 50%) 이 dominant.
보완 해석 (실험 설계 한계): H10-3 의 의도는 "flat VQ (M=96) 대비 collapse 회피" 였으나 실제 실험에서는 flat VQ 대조군이 없다 (v10-02 §3.1 IV 표에 명시되었지만 Stage 2 에서 launch 안 됨). 따라서 "absolute util > 50%" 의 정량 기준만으로 falsification 한다. 상대 비교가 부재하므로 H10-3 의 "RQ가 flat VQ 대비 우수한가" 명제는 v11 또는 addendum에서만 검증 가능. axis 2 PASS는 "RQ가 baseline B0 MSE를 보존한다"의 약한 의미만 가짐.
4. L3 β=0.375 (peak 가중) 효과 별도 평가¶
4.1 β 가중 메커니즘 (residual_quant.py:172)¶
vq_losses["L1"] = 0.25 * c1_raw
vq_losses["L2"] = 0.25 * c2_raw
vq_losses["L3"] = 0.375 * c3_raw # ← 1.5× peak 가중
4.2 L3 util 단조 증가 관찰¶
- round 1: 14.06% → round 16: 34.50% (Δ +20.44%p)
- L1: +5.50%p, L2: +19.06%p, L3: +20.44%p — L3 가 절대 증가폭 최대.
- L3 의 round 4-16 plateau slope 는 L2 와 거의 동일 (둘 다 round 8 이후 30-35% 진동) — β 가중의 유의한 효과는 round 1-7 에서만 가시화.
4.3 β 효과 vs residual cascade 효과 (구분 시도)¶
L3 util 증가는 두 가설로 설명 가능: - H_β (의도된 메커니즘): β=0.375 가중이 L3 codebook 을 더 활성화한다. - H_cascade (반증 후보): L1 dead 로 인해 q_L1 ≈ 0 (또는 매우 적은 codeword 만 사용) → r_L1 ≈ x → q_L2 가 사실상 z 를 양자화 → r_L2 = z - q_L2 의 신호량은 z 의 전체 분산 중 미설명 부분 → L3 가 이 잔차를 quantize. 즉 L3 가 활성화된 것은 β 가중 때문이 아니라 L1 collapse 의 부산물.
구분 증거: H_β 가 옳다면 L1-L2 가 정상 (>50%) 일 때 L3 가 더 활성화되어야 한다. 본 실험은 L1 dead 라 두 가설 분리 불가. 결정적 증거는 ablation (β=[0.25, 0.25, 0.25] 동등 가중 vs β=[0.25, 0.25, 0.375]) 이지만 본 phase 에서는 미수행.
4.4 E3 vs E3_simple 사후 비교 (revision 1 추가)¶
| Variant | C1 init | C2 dead restart | C3 β | M1 γ | L3 util final | PAPE |
|---|---|---|---|---|---|---|
| E3 (full) | K-means++ | RQ에 미구현 (no-op) | 0.375 (L3 1.5×) | {0.98, 0.95, 0.85} | 36.19% | 49.67 |
| E3_simple | torch.randn | 미구현 (no-op) | 0.25 (uniform) | uniform 0.95 | 5.63% | 50.76 |
| Δ (E3 - simple) | — | — | — | — | +30.56pp | -1.09 |
관찰: - L3 util 차이 +30.56pp는 매우 크다 (5.63% → 36.19%, 6.4× 증가). - 그러나 PAPE 차이는 -1.09 (E3가 약간만 좋음). 통계적으로 비유의에 가까운 미미한 수준. - → β 가중이 L3 codebook의 active code 수는 늘렸으나, 실제 peak prediction 품질에 미치는 효과는 미미. - 단 simple은 C1 (init) + C3 (β) + M1 (γ) 의 3 요인 동시 변경이라 β 단독 효과는 여전히 분리 불가. PAPE Δ -1.09 가 β 단독 기여라면 β의 peak 품질 효과는 negligible.
Revised 결론: β=0.375 의 효과는 inconclusive (혼동 미해소). L3 util 증가는 측정됐으나 (a) L1 dead 와의 H_cascade confound, (b) simple ablation의 C1/C3/M1 동시 변경 confound — 두 confound 모두 미해소. "L3 codebook active code 증가"와 "peak prediction 품질 개선"은 분리해서 표현 필요. addendum ablation (one-out-at-a-time, β만 단독 변경) 필수.
5. L1 dead 원인 진단¶
5.1 가설 A: SCINet binary tree 첫 level 의 표현 다양성 부족¶
- SCINet (Liu et al. NeurIPS 2022) 의 SCI-Block 은 odd/even split + interactive learning. Level 1 (가장 coarse) 에서 아직 시간축 분리가 적게 일어난 상태에서 pool 됨 (코드 line 296-299:
z = self.sci_net(h); h_pooled = z.mean(dim=1)). - pooled feature h_L1 ∈ R^32 은 모든 96 timestep 의 average → 가구별 평균 부하 패턴이 dominant signal → 코드북에서 가구 평균 (1-2 modes) 만 활성.
- 5.06% × 32 ≈ 1.6 codeword (round 1) → 10.56% × 32 ≈ 3.4 codeword (round 16) — 가구별 평균 부하의 mode 수 ≈ 3-4 정도와 일치.
5.2 가설 B: restart_dead_codes() 미호출 (구현 결함)¶
- 검증:
Grep restart_dead_codes결과: vq_base.py:303→ 정의됨 (DeadCodebookTracker, dead_code_epochs=5 default)decomp_cb.py,freq_band_cb.py,product_quant.py모두restart_dead_codes()메서드 정의 + 학습 스크립트 (E1/E2/E4) 에서 호출 가능residual_quant.py는restart_dead_codes()메서드를 정의하지 않았음. ResidualQuant 클래스에 restart 인터페이스 부재.vq_layers_simple/vq_base_simple.py:145:restart_dead_codes() → int [always 0](no-op) — E3_simple도 마찬가지로 비작동.- 영향: VQBase.dead_code_epochs=5 default 가 작동하려면
restart_dead_codes(batch_hidden)호출이 필요. RQ 에서는 호출 자체가 불가능하므로 L1 의 dead codeword 가 5 epoch 후에도 영구 dead 상태로 남음. - 간접 증거: L1 utilization 이 round 1 (5.06%) → round 5 (7.94%) → round 30 (11.19%) — 매우 느리게 활성화되는 패턴은 정상 EMA + commitment 학습으로만 (즉 새 batch 가 우연히 dead codeword 를 hit 하는 확률) 설명 가능. restart 메커니즘이 작동했다면 round 5-10 시점에서 급격한 점프가 보여야 했음.
Revision 1 영향 추정 보강: 다른 E (E1 NBEATSx+DecompCB, E2 NHITS+FreqBand, E4 Crossformer+PQ) 는 모두
restart_dead_codes()호출 가능했음에도 PAPE 55-85로 catastrophic. 즉 restart 자체가 L1 dead 의 "단일 처방"이 되지 않을 가능성* — 가설 A (architectural pool 평균화) 가 architectural primary 일 수 있음. RQ에 restart 추가는 필요 조건이지 충분 조건이 아님.C2 ablation 검증 불가능 (revision 1 명시): simple과 full 양쪽 모두 RQ에 restart 미구현 → simple vs full의 L1 util 차이 (4.25% vs 11.19%) 를 "C2 dead restart 효과"로 귀속하는 것은 반사실 가짜 인과. 이전 컨텍스트의 "C1 K-means++ + C2 dead restart 효과 명확" 진술은 본 revision에서 제거. 실제 차이의 원인 후보는 C1 (init) + C3 (β) + M1 (γ) stack — 이 3 요인 분리는 본 phase에서 불가능, addendum 필요.
5.3 가설 C: γ=0.98 (L1 Memory Alignment) 가 codebook drift 억제¶
- per_cb_gamma = {L1: 0.98, L2: 0.95, L3: 0.85}
- L1 이 가장 server-anchored — 즉 client 별 codebook 다양성을 가장 강하게 억제. 50 client 평균 ≈ 단일 mode 가구 부하 평균 → server codebook 이 거의 같은 1-2 codeword 로 수렴.
- ADR-010 §11 R9 의 "γ=0.8 rollback" 은 정확히 이 시나리오 대응. 본 run 에서는 적용되지 않음 (rollback trigger 가 자동이 아니라 manual decision).
5.4 종합 (revision 1 — "교집합" 주장 약화)¶
| 가설 | 강도 | 사후 증거 |
|---|---|---|
| A (SCINet pool 평균화) | robust | architectural, pooled feature 차원 한계 — 코드/이론 일치 |
B (restart_dead_codes() 미구현) |
robust | 코드 grep 검증 (RQ 미정의, simple no-op) — 명확한 결함 |
| C (γ=0.98 anchoring) | 부호 반대 가능성 | simple ablation에서 γ uniform 0.95 시 L1 util 4.25% (E3 11.19%보다 더 낮음) — 가설 C 단독 기여가 dead의 완화가 아닌 악화 방향이거나, 다른 요인 (C1/C3) 효과에 가려진 것 |
Revised 결론: - 가설 A와 B는 robust한 후보. 가설 C는 simple ablation의 부분적 반증 (γ 약화 시 L1 더 망가짐) 으로 단독 기여 부호가 반대일 가능성이 있음. - 따라서 이전 진술 "A∩B∩C 교집합"은 부정확 — A와 B의 robust한 기여는 인정하되, C의 단독 기여는 inconclusive. simple ablation이 C1/C3/M1 동시 변경이라 C 단독 효과 분리 불가. - 단일 원인 dominant 분리 불가 — 본 phase의 ablation 설계로는 A/B/C 중 어느 하나가 dominant인지 결정할 수 없음. - 가장 수정 비용 낮은 개입은 B (restart_dead_codes 추가, ~50 lines). C 는 hyperparameter, A 는 architecture (pool 위치 변경 = 설계 재작업). - 본 run 결과는 그대로 받되, addendum 에서 one-out-at-a-time ablation (B only / C only / A pool 변경) 8-round smoke 재실행이 단독 기여 분리에 필수.
6. v9-06 SCINet (Watch PASS) 대비 약화 정도 (final, 확정)¶
6.1 정량 비교¶
| 지표 | v6 R1b (pFL+VQ near-collapse 4%) | v9-06 SCINet (n=15, 5apt×3seed) | v10 E3 SCINet+RQ (final, n=50) | E3 vs v9-06 Δ |
|---|---|---|---|---|
| PAPE | 37.36 | 42.35 | 49.67 | +7.32pp 악화 |
| HR@1 | (미기록) | 34.48 | 20.21 | -14.27pp 악화 |
| HR@2 | (미기록) | 46.38 | 31.66 | -14.72pp 악화 |
| MSE | (미기록) | 0.498 | 0.493 | -0.005 (≈ 동등) |
6.2 결론 (확정)¶
VQ 이식이 SCINet을 약화시켰다 — 확정 결론: - PAPE +7.32pp, HR@1 -14.27pp, HR@2 -14.72pp 후퇴. - MSE만 동등 (0.498 vs 0.493) — 이는 H10-3 axis 2 PASS 의 의미를 약화시킴 (RQ는 baseline 평균 오차는 보존했으나 peak 정확도는 손상). - v6 R1b PAPE 37.36 vs v10 E3 49.67 → v10 phase 전체가 v6 대비 regression (+12.31pp 악화).
6.3 비교 가능성 한계¶
n 비대칭 (revision 1 disclosure): - v9-06 SCINet: 5-apt × 3-seed = n=15 - v10 E3: 50-가구 전수 × seed=42 = n=50 - 직접 비교 시 n 비대칭. 5-apt subset 추출 (ADR-010 §11 R7) 이 정식 비교, 본 단순 비교는 점추정 수준. - v9-06 의 5-apt × seed=42 단일 (n=5) subset 추출 시 PAPE/HR@1 변동 가능 → reporter 단계에서 정확 1:1 비교 권고.
단일 seed disclosure: v10 전체가 seed=42 단일이라 std/CI/p-value 부재. 본 비교는 점추정의 상대 격차 신호 만 제공. 통계 비유의에 가까운 결론 강도.
6.4 예측 밴드 사후 검증¶
- 이전 잠정 예측: "test PAPE 는 v9-06 (42.35) 보다 약간 높을 가능성 (43-46 추정)" → 실측 49.67 → 예측 밴드 outside (+3.67pp 더 악화). 잠정 예측은 mild overfitting 만 가정했으나 실제는 VQ 이식 자체의 더 큰 손상이 확인됨. 잠정 예측이 너무 낙관적이었음을 사후 인정.
7. 통신량 trade-off 분석¶
| 모델 | bytes_per_round | 통신 효율 (낮을수록 좋음) |
|---|---|---|
| E3 SCINet+RQ | 12,288 | 3 × 32 × 32 × 4 (3 level × M=32 × d=32 × 4 bytes) |
| E1 NBEATSx+DecompCB (참고) | (script 확인 필요, 잠정 33,792) | 3 CB × M=32 × d=88 (∵ trend 3-d + seasonal 5-d + generic ?) — 추정만 |
| E2 NHITS+FreqBand | (잠정) | 3 CB × M=32 × d=64 |
| E4 Crossformer+PQ | 4,096 | 4 sub × M=16 × d=64 × 4 |
위 추정은 confidence low. reporter 단계에서 4 E* 의 정확한 bytes_per_round 를 인용 후 표 갱신.
E3 의 cost-effectiveness (final): - v10 E 중 E4 다음으로 두 번째로 낮은 통신량 (12,288 vs E1/E2 의 24-34 KB). - E3 PAPE 49.67 vs B1 FedAvg DLinear PAPE 44.56 → E3가 B1보다 PAPE 5.11pp 더 나쁨 (worse), 그러면서 통신량은 12 KB (B1 전체 모델 파라미터 전송 추정 39 KB의 31%). 통신 효율은 좋으나 PAPE 품질이 baseline 미달. - E3 vs E4 (PAPE 49.67 vs 67.59) → E3가 PAPE 17.92pp 우위, 통신량 3× (12 KB vs 4 KB). bytes/HR@1 효율: E3 608 / E4 362 → E4가 통신 효율은 더 좋으나 절대 품질이 처참 (HR@1 11.30). - Final 결론: E3는 v10 E 중 cost-effectiveness가 상대적으로 양호하나, B1 FedAvg DLinear 대비 절대 품질에서 패배. v10 phase 전체가 v6 R1b PAPE 37.36 / v9-06 SCINet PAPE 42.35 대비 통신/품질 모두 regression. cost-effectiveness 결론 negative.
| 모델 | bytes/round | PAPE | HR@1 | bytes/HR@1 |
|---|---|---|---|---|
| B0 Local DLinear | 0 | 40.34 | (미기록) | — |
| B1 FedAvg DLinear | (미보고) | 44.56 | (미기록) | — |
| E3 SCINet+RQ | 12,288 | 49.67 | 20.21 | 608 |
| E4 Crossformer+PQ | 4,096 | 67.59 | 11.30 | 362 |
8. wait 권고 사후 검증 (revision 1)¶
8.1 사후 결과¶
| 가치 | 사전 강도 | 사후 검증 |
|---|---|---|
| (a) test PAPE/HR@1/MSE round 30 후 점추정 확정 → H10-3 의 두 번째 조건 (MSE ≤ 0.515) 검증 | 높음 | 회수 — test_pape 49.67 / hr1 20.21 / mse 0.493 확정. axis 2 PASS 확인. |
(b) MLflow mlflow.log_artifact 로 best checkpoint + y_true/y_pred npy 저장 → reporter 합본 + 후속 ablation 의 출발점 |
높음 | 회수 — best_global.pt + npy 저장 |
| (c) round 16-30 동안 L1 util 의 추세 확정 | 중간 | 회수 — 외삽 25-27% → 실측 26.54% (정확) |
| (d) val_loss best round 4 갱신 가능성 | 매우 낮음 | 확인 — round 4 plateau 유지, round 4-30 동안 best 갱신 0건 |
8.2 사후 평가¶
- wait 권고는 옳았다 — 산출물 회수 vs GPU 3시간 trade-off 양호.
- 사전 disclosure ("best 갱신 가능성 매우 낮음") 와 외삽 ("util 25-27%") 모두 사후 정확.
- abort 선택했다면 (a) test 메트릭 영구 미확인 + (b) checkpoint 미저장 발생, abort보다 wait가 옳은 결정이었음을 사후 확정.
9. 가설 H10-3 외의 부산물 (final, revision 1)¶
9.1 v10 phase 안에서 E3 의 상대적 위치 (final, baseline 출처 정정)¶
PAPE 비교 (v10 phase, 50가구 전수): - E1: B2 46.38 → E1 55.01 (+8.63pp 악화) - E2: B3 44.66 → E2 84.97 (+40.31pp 악화) - E3: SCINet noVQ baseline 부재 (v10 phase에서 미학습), v9-06 SCINet 42.35 간접 비교 → +7.32pp 악화 - E4: B4 41.81 → E4 67.59 (+25.78pp 악화)
→ E3가 v10 E 중 PAPE 절대값 최저 (49.67) 이지만, 모든 E가 noVQ baseline 대비 악화. E3는 v10 phase의 유일한 partial success 후보**이나 H10-3 가설 통과 의미는 없음 (axis 1 FAIL).
HR@1 비교 — baseline 출처 정정 (revision 1):
이전 컨텍스트의 "HR@1 20.21이 FL no-VQ baseline (B3 17.14, B4 18.57) 대비 우위" 진술은 출처 misalignment였음:
| Run | 학습 paradigm | HR@1 | 비고 |
|---|---|---|---|
| B3_NHITS_noVQ_seed42 | v10 FL (50가구) | (미기록) | v10 baseline은 HR@1 미기록 |
| B4_Crossformer_noVQ_seed42 | v10 FL (50가구) | (미기록) | 동일 |
| Phase1_NHITS_Local_seed42 | Phase1 Local (단일 가구) | 17.14 | 이전 컨텍스트 인용 출처 |
| Phase1_PatchTST_Local_seed42 | Phase1 Local | 22.49 | E3 (20.21)보다 +2.28pp 높음 |
| Phase1_TimesNet_Local_seed42 | Phase1 Local | 21.13 | E3보다 +0.92pp 높음 |
| Phase1_iTransformer_Local_seed42 | Phase1 Local | 20.76 | E3보다 +0.55pp 높음 |
| E3 SCINet+RQ | v10 FL (50가구) | 20.21 | — |
→ 결론 정정: 1. v10 FL no-VQ baseline (B0–B4) 은 HR@1 미기록 → E3 HR@1 20.21의 의미는 v10 phase 내부에서 검증 불가. 2. Phase1 NF Local 은 학습 paradigm 차이 (FL vs Local, 50가구 vs 단일 가구) — 정당한 baseline이 아님. 3. Phase1 6 모델 중 PatchTST (22.49) / TimesNet (21.13) / iTransformer (20.76) 가 E3 (20.21)보다 높거나 비슷 — "E3가 baseline 우위" 결론은 NHITS만 비교했을 때 cherry-pick 결과. 4. v9_06_revision1_lessons (Apt cherry-picking 검증 순서) 적용: 단일 baseline 우위 보고 시 동일 paradigm 6 모델 모두 동시 보고 필수. 본 revision에서 cherry-pick 회피.
Final 결론: E3 HR@1 20.21의 절대 의미는 inconclusive — v10 phase 내 동일 paradigm baseline 부재, Phase1 NF Local 비교는 paradigm mismatch.
9.2 H10-5 (구조 정합성) Final 시사점¶
- ADR-010 §가설 H10-5: "4 정합 조합 PAPE mean < 4 비정합 조합 mean".
- E1/E2/E3/E4 의 "정합" 결과: mean = (55.01 + 84.97 + 49.67 + 67.59) / 4 = 64.31.
- 비정합 조합 (NBEATSx+PQ, NHITS+RQ, SCINet+DecompCB, Crossformer+FreqCB) 결과 — 본 phase 미수행. reporter 단계에서 4 비정합 조합 학습 후 정식 판정.
- H10-5 잠정 negative — 정합 조합 mean 64.31은 v9-06 SCINet 42.35 / B0 40.34 baseline 모두 초과. 비정합 조합이 더 처참하지 않은 한 H10-5 PASS 가능성 낮음.
9.3 v10 phase 전체 경고¶
- E1/E2/E3/E4 모두 noVQ baseline 또는 v9-06 대비 악화 → VQ 이식 자체가 partial collapse 유발. v6 R1b (PAPE 37.36, near-collapse 4%) 와 다르게 v10 의 큰 학습 (50 가구 × 30 round) + Memory Alignment 가 commit + EMA 와 충돌 하여 모델이 학습은 진행되나 품질은 약화.
- E3 는 RQ 의 hierarchical 구조 덕분에 상대적으로 발산 회피 (val_loss 0.30 plateau, 발산 안 함). 이게 v10 phase 의 유일한 partial success 후보이나 partial success ≠ 가설 통과.
Revision 1 강조 (selective framing 회피): E3의 v10 내 상대 우위 (PAPE 49.67 vs E1 55 / E2 85 / E4 67) 는 H10-3 가설 통과를 시사하지 않는다. v10 phase 전체가 partial collapse 상태이므로 E3의 49.67조차 v6 R1b PAPE 37.36 / v9-06 SCINet 42.35 대비 약화. relative ranking을 partial pass처럼 읽을 위험 회피.
10. 후속 조치 (revision 1 완료 후 권고)¶
10.1 본 revision 1에서 처리 완료¶
- H10-3 final 판정: axis 1 FAIL (util 26.54%) + axis 2 PASS (mse 0.493) → 결합 FAIL (OR/AND 모두)
- v9-06 SCINet 대비 정량화: PAPE +7.32pp / HR@1 -14.27pp / HR@2 -14.72pp 후퇴 확정
- "C2 dead restart 효과" 가짜 인과 제거 (RQ/simple 모두 비작동)
- HR@1 baseline 출처 정정 (Phase1 NF Local, paradigm mismatch)
- L1 dead "A∩B∩C 교집합" 약화 (C 부호 반대 가능성)
- β=0.375 효과 final ablation 비교 (PAPE Δ -1.09)
10.2 후속 phase / addendum 권고¶
-
ResidualQuant.restart_dead_codes()구현 — engineer dispatch 사항. 인터페이스:restart_dead_codes(batch_hidden_per_level: dict[str, Tensor]) -> dict[str, int](다른 3개 VQ 클래스와 통일). 학습 루프 hook도 추가. -
One-out-at-a-time ablation (1-apt × 8-round, single seed):
- C1 only (K-means++ vs torch.randn) — init 효과 측정
- C3 only (β=[0.25, 0.25, 0.375] vs β=[0.25, 0.25, 0.25]) — β peak 가중 단독 효과
- M1 only (γ differential vs γ uniform 0.95) — anchoring 단독 효과
-
B (restart) ablation: restart 추가 vs 미추가 — 가설 B의 단독 기여 측정 → 4 변종 + baseline = 5 runs × ~2시간 = 10시간 GPU.
-
5-apt subset 정식 비교 (reporter 단계 의무):
- v9-06 EVAL set (Apt3, Apt6, Apt22, Apt27, Apt67) 일치 확인
- v10 E3의 50가구 evaluation에서 동일 5-apt subset 추출
-
단일 seed=42 vs v9-06 5-apt × seed=42 직접 비교 (n 일치)
-
per-household L1 index 분포 시각화 (critic SHOULD FIX 권고):
- top-3 codeword 점유율 (50가구 × 3 codeword = 150 cell heatmap)
- codebook degradation 가구별 분포 정량화
-
본 보고서 §3 신규 추가 권고 — 다음 revision 또는 reporter 단계에서.
-
flat VQ (M=96 단일) 대조군 학습 — H10-3 의 진짜 의도 ("RQ가 flat VQ 대비 collapse 회피") 검증. v11 또는 v10-addendum.
10.3 본 phase 결과 해석 무결성¶
- 본 run 결과는 그대로 받되, addendum의 발견을 본 보고서에 사후 삽입하지 않음 (실험 무결성). 후속 보고서에서 별도 인용.
11. Risks (final, revision 1)¶
| # | Risk | 영향 | 가드 / 사후 검증 |
|---|---|---|---|
| A1 | 잠정 plateau 판정이 round 16-30 에서 부정 | wait 권고 진술 오류 | 사후 정확 — round 4 plateau 유지, best 갱신 0건 (§8.2) |
| A2 | "H10-3" 의 util 50% 임계 해석 (단순 평균 vs weighted) 모호 | 판정 변동 ±1.4%p, 결론 (FAIL) 자체는 불변 | §3.2 두 해석 모두 명시 (26.54% vs 27.92%) — 둘 다 50% 미달 |
| A3 | β=0.375 효과의 H_β vs H_cascade confound | "β 효과 inconclusive" 결론은 robust, 단 ablation 없이는 강한 주장 불가 | §4.3 + §4.4 final 비교, addendum one-out-at-a-time 권고 (§10.2) |
| A4 | seed=42 단일 — 본 분석 전체가 점추정, std/CI/p-value 일체 미보고 | external validity 낮음 | ADR-010 §11 R3 명시. 3-seed 확장 트리거는 v10 phase 종료 후 결정 |
| A5 | stderr "60개 유효하지 않거나 중복된 코드" 메시지 = data_loader.py:49 데이터 로딩 정상 로그 (dead code restart 메시지 아님) |
사용자 컨텍스트 의존 분석 무효화 | §5.2 에서 별도 검증. RQ는 restart 메서드 자체 미구현 → "60+ restart 반복" 해석은 본 revision에서 폐지 |
| A6 | v10 baseline B0/B1/B2/B3/B4 와 v9-06 recap 의 n 비대칭 (50가구 vs 5-apt × 3-seed) | 직접 비교 의미 손상 | §6.3 disclosure, reporter 단계 5-apt subset 추출 권고 (§10.2) |
| A7 | ADR-010 H10-3 의 "전체 CB util > 50%" 정의 모호 (총합? 평균? 가중?) | 판정 정량 기준 해석 다툼 | §3.2 두 해석 모두 보고, 결론 불변 |
| A8 (revision 1 추가) | C2 dead restart 효과 가짜 인과 위험 — 이전 컨텍스트에서 RQ/simple 모두 restart 비작동임에도 simple vs full의 차이를 "C2 효과"로 귀속하려 함 | ablation 효과 귀속 오류 | 본 revision에서 제거 — §5.2/§5.4 명시, "C1+C3+M1 stack 효과"로 정정 |
| A9 (revision 1 추가) | HR@1 baseline 출처 misalignment — "B3 17.14, B4 18.57"은 v10 FL no-VQ baseline이 아니라 Phase1 NF Local 베이스라인. paradigm mismatch | E3 우위 결론이 cherry-pick으로 격하 | §9.1 정정, Phase1 6 모델 모두 동시 보고 (PatchTST/TimesNet/iTransformer가 E3와 비슷하거나 높음) |
| A10 (revision 1 추가) | "L1 dead 3원인 교집합" 강한 인과 주장 — simple ablation에서 γ uniform 시 L1 util 4.25% (E3 11.19% 보다 낮음) → 가설 C 부호 반대 가능성 | 단일 원인 dominant 분리 불가 | §5.4 약화 — "A/B robust, C inconclusive (부호 반대 가능성)" |
| A11 (revision 1 추가) | selective framing — relative ranking 강조 위험 | E3의 v10 내 partial success가 H10-3 통과처럼 읽힐 위험 | §0/§9.3 명시 — "relative ranking ≠ 가설 통과", v6/v9-06 대비 regression 강조 |
판정 (final, revision 1)¶
| 가설 | 판정 | 근거 |
|---|---|---|
| H10-3 (이번 보고서 담당) | FAIL (확정) | axis 1 util 26.54% << 50% (FAIL) + axis 2 mse 0.493 ≤ 0.515 (PASS) → OR/AND 모두 결합 FAIL |
| H10-3 axis 1 (util > 50%) | FAIL (확정) | round 30 평균 26.54%, 가중 평균 27.92%, 둘 다 50% 미달 |
| H10-3 axis 2 (MSE ≤ 0.515) | PASS (확정) | test_mse 0.493 ≤ 0.515. 단 v6 R1b / v9-06 대비 regression 의미 약화 |
| L3 β=0.375 효과 | inconclusive | L3 util 단조 증가 (final 36.19%) 관찰, 단 (a) H_β/H_cascade confound, (b) simple ablation의 C1/C3/M1 동시 변경 confound — PAPE Δ -1.09 (negligible) (§4.3-4.4) |
| best round 의미 | round 4 (13.3% 시점) plateau, mild overfitting 확정 | val_loss best 갱신 26 round 미발생 (round 4-30) |
| L1 dead 원인 | A (pool 평균화) + B (restart 미구현) robust, C (γ=0.98) 부호 반대 가능성 | §5.4 — simple ablation γ uniform 시 L1 util 4.25%로 더 악화, "교집합" 주장 약화 |
| v9-06 SCINet 대비 | regression 확정 | PAPE +7.32pp / HR@1 -14.27pp / HR@2 -14.72pp / MSE ≈ 동등. VQ 이식이 SCINet을 약화시킴. |
| 통신량 trade-off | negative (final) | E3 12 KB로 v10 E* 중 양호하나 PAPE 49.67 < B1 FedAvg DLinear 44.56 → 절대 품질 baseline 미달 |
| HR@1 baseline 비교 | inconclusive | v10 FL no-VQ는 HR@1 미기록, Phase1 NF Local은 paradigm mismatch (PatchTST 22.49 / TimesNet 21.13 / iTransformer 20.76 ≥ E3 20.21) |
| C2 dead restart 효과 | 검증 불가능 | E3/E3_simple 양쪽 모두 RQ에 restart 비작동. 이전 컨텍스트의 "C2 효과 명확" 진술은 가짜 인과로 격하 |
| wait 권고 사후 | PASS (옳은 결정) | (a)+(b)+(c) 산출물 회수, (d) best 갱신 0건 정확 외삽 |
| relative ranking framing | E3가 v10 E 중 PAPE 최저이나 partial success ≠ 가설 통과* | §9.3 — v6 R1b 37.36 / v9-06 42.35 대비 regression |
산출물 인벤토리 (final)¶
- 본 분석:
report/version10/exp-expert/v10-04_E3_SCINet_RQ_analysis.md(final, revision 1) - Critic review:
report/version10/exp-critic/v10-04_E3_SCINet_RQ_critique.md(CONDITIONAL) - MLflow run:
b7eac626124342fe84f3c12ecc7667e9(FINISHED, round 30 완료) - MLflow metrics: round_train_loss / round_val_loss / cb_util_{L1,L2,L3} / alignment_sim_mean_{L1,L2,L3} (각 30 step) + test_pape / test_hr_tol1 / test_hr_tol2 / test_mse / test_mae
- MLflow artifacts: best_global.pt / y_true.npy / y_pred.npy / per_household_metrics.json
- MLflow params: 본 보고서 §1.2 표
Revision 1 Changelog (2026-04-25)¶
이번 revision에서 처리한 critic 지적 사항:
REJECT 항목 (재서술 완료)¶
- C2 dead restart 효과 진술 정정: §0/§5.2/§5.4/판정 표/§11(A8) — RQ/simple 양쪽 비작동 명시, "C1+C3+M1 stack 효과"로 정정
- HR@1 baseline 출처 정정: §0/§9.1/판정 표/§11(A9) — Phase1 NF Local paradigm mismatch + 6 모델 동시 비교 (cherry-pick 회피)
Final 결과 갱신 (잠정 → final)¶
- §0 Executive Summary: PAPE 49.67 / HR@1 20.21 / HR@2 31.66 / MSE 0.493 / util final
- §1.3 비교 표: E3 final 수치 채움
- §3 H10-3 검증: axis 1 FAIL + axis 2 PASS → 결합 FAIL
- §6 v9-06 비교: regression 확정 (+7.32pp / -14.27pp / -14.72pp)
- §7 통신량 final
- §8 wait 권고 사후 검증
CONCERN 처리¶
- §5.4: "A∩B∩C 교집합" 약화 → A/B robust, C 부호 반대 가능성
PASS 유지¶
- Risk A1-A7 사전 disclosure (사후 정확)
- β=0.375 inconclusive 자기인정 (§4.3-4.4 final ablation 표 추가)
- wait 권고 사후 적절성 (§8.2)
restart_dead_codes()RQ 미구현 발견 (§5.2 영향 추정 보강)
hook 자동 트리거¶
본 revision 1은 critic CONDITIONAL 판정에 대한 expert 재호출이며 1 revision cycle 의 종료 시점 (2회차 expert). hook 에 의해 자동 중단 + 카운터 리셋 예정. 추가 revision 필요 시 /reset-cycle 실행. revision 1로 충분하면 reporter 단계 진입.