v10-04: E3 SCINet+RQ 보고서 적대적 검토¶
본 검토는 expert 보고서가 round 16 시점 잠정 작성된 후, round 30 종료 (FINISHED, end_time 2026-04-25 17:17:14 KST)가 확인된 시점에서 수행한다. 잠정 결과로 작성한 정성적 framing 일부는 final 결과로 갱신해야 하며, 일부 인과 주장은 ablation 설계 결함 때문에 약화되어야 한다.
0. Executive Summary¶
| 항목 | 판정 |
|---|---|
| 잠정 보고 작성 자체 (round 16 시점) | PASS — Risk A1–A7 사전 disclosure 양호, plateau 외삽이 final과 부합 |
| H10-3 conjunctive 적용 (util AND mse) | PASS — OR/AND 표기 혼선 1건 외에는 정확 |
| L1 dead 3원인 교집합 주장 | CONCERN — A·B·C가 개별로 입증되지 않은 채 "교집합" 주장 |
restart_dead_codes() 미구현 발견 |
PASS — 코드 검증 일치, 그러나 영향 추정 부재 |
| β=0.375 효과 inconclusive 자기인정 | PASS — H_β / H_cascade confound 정직히 명시 |
| simple ablation 해석 ("C1 K-means++ + C2 dead restart 효과") | REJECT — C2는 E3/E3_simple 양쪽 모두 작동 안 함, 이를 효과로 귀속 불가 |
| HR@1 baseline 우위 주장 (사용자 컨텍스트) | REJECT 근거 — B3=17.14, B4=18.57은 v10 FL no-VQ baseline이 아니며 Phase1 NF Local 베이스라인 수치 |
| "wait 권고" 사후 평가 | PASS — 추가 14 round에서 best 갱신 0건 (round 4 plateau 확정), 그러나 산출물 (a) test 메트릭 (b) artifact 가치 회수됨 |
| "v10 4 모델 중 상대 안정" 강조 | CONCERN — relative ranking을 H10-3 partial pass처럼 읽힐 위험 (보고서가 §3.4에서 한 번 명시했지만 §0/§9에서 반복 강조) |
| 잠정→final 갱신 필요성 | REQUIRED — §10 갱신 사항 미반영 상태 |
전체 verdict: CONDITIONAL. expert 보고서의 메소드는 견고하나 (1) ablation 효과 귀속 1건 오류, (2) baseline 비교 출처 1건 misalignment, (3) final 결과로 §0–§3·§6 수치 갱신 필요.
1. 잠정 → Final 결과 갱신 (요구)¶
1.1 MLflow 최종값 (run b7eac626…7667e9, status FINISHED)¶
| 지표 | round 16 잠정 | round 30 final | 차이 |
|---|---|---|---|
| test_pape | (미확정) | 49.67 | — |
| test_hr_tol1 | (미확정) | 20.21 | — |
| test_hr_tol2 | (미확정) | 31.66 | — |
| test_mse | (미확정) | 0.493 | — |
| test_mae | (미확정) | 0.443 | — |
| cb_util_L1 final | 10.56% | 11.19% | +0.63%p |
| cb_util_L2 final | 30.19% | 32.25% | +2.06%p |
| cb_util_L3 final | 34.50% | 36.19% | +1.69%p |
| 3-level 평균 util | 25.08% | 26.54% | +1.46%p |
| round_val_loss best | 0.2974 (round 4) | 0.2974 (round 4 변동 없음) | 0 |
| round_val_loss final | 0.3025 (round 16) | 0.3142 (round 30) | +0.0117 |
1.2 H10-3 final 판정 (확정)¶
- 첫 번째 axis (util > 50%): 26.54% → FAIL (확정)
- 두 번째 axis (MSE ≤ 0.515): test_mse = 0.493 → PASS
- ADR-010 falsification 조건이 OR (둘 중 하나라도 위반 시 falsified) 라면 → H10-3 FAIL
- 그러나 expert 보고서 §3.1은 "OR" 라 적었지만 user 컨텍스트는 "conjunctive" (AND, 둘 다 만족 시 PASS)로 표기. ADR-010 원문 재확인 필요. 어느 해석이든 utilization FAIL 이므로 결론은 동일하지만 표기 정합성 손볼 것.
1.3 round 16 외삽 정확성 (사후 검증)¶
expert §3.2 외삽: round 30 평균 util 25–27% → 실제 26.54% → 외삽 정확. wait 권고 동기 (best 갱신 가능성 매우 낮음) 도 확인됨 (round 4 plateau 유지, round 16→30 동안 0건 갱신).
2. 주장별 PASS / CONCERN / REJECT¶
2.1 [PASS] H10-3 conjunctive 평가 적용¶
expert는 §3.1–§3.4에서 두 axis를 분리 평가하고 첫 번째 axis FAIL → 결합 FAIL 결론으로 갔다. final 결과 (mse 0.493 PASS / util 26.54% FAIL) 반영 시 결합 FAIL 결론은 불변. 단: - expert §3.1의 "OR (둘 중 하나라도 위반)" vs user 컨텍스트의 "conjunctive (AND)" — 표기 다툼을 피하기 위해 ADR-010 원문 재확인 + 정정 1줄 추가 권고. - §3.4 "두 번째 조건과 무관하게 H10-3 잠정 FAIL" 결론은 final에서도 robust.
2.2 [CONCERN] L1 dead 3원인 교집합 주장 (§5.4)¶
expert §5.4 "가설 A (SCINet pool 평균화) + 가설 B (restart 미구현) + 가설 C (γ=0.98 anchoring) 의 교집합" 표현은 3 원인이 동시 작용한다는 강한 인과 주장이다. 그러나 본 phase의 어떤 ablation도 이 3 원인을 분리해서 측정하지 않았다.
simple ablation (E3_simple) 결과를 참고하면:
| Variant | C1 init | C2 dead restart | C3 β | M1 γ | L1 util final |
|---|---|---|---|---|---|
| E3 (full) | K-means++ | RQ에 미구현 (no-op) | 0.375 | {0.98,0.95,0.85} | 11.19% |
| E3_simple | torch.randn | 미구현 (no-op) | 0.25 | uniform 0.95 | 4.25% |
→ E3_simple의 L1 util 4.25%는 E3의 11.19%보다 낮다. 이것은 expert §5의 가설 B (restart 미구현) 가 E3와 E3_simple 양쪽에서 동일하게 미구현임을 감안하면, L1 util 6.94%p 차이는 가설 A (SCINet pool, 두 변종 동일) + 가설 B (동일) 와 무관한 C1/C3/M1 효과로만 설명된다. 즉 "L1 dead 원인이 A∩B∩C 교집합"이라는 §5.4 주장의 C 부분은 simple ablation에서 부분적으로 반증된다 (γ=0.98 → uniform 0.95 변경 시 L1이 더 망가짐, anchoring 강도가 dead의 주원인이라면 반대 방향이어야 함).
권고: §5.4를 다음으로 약화 — "가설 A는 architectural, B는 구현 결함으로 robust한 후보. C (γ=0.98 anchoring) 는 simple ablation에서 γ uniform 0.95 시 L1 util이 더 낮아짐 (4.25%) 을 관찰, 따라서 C 단독 기여는 작거나 부호 반대일 가능성. addendum ablation 필수."
2.3 [REJECT] simple ablation 해석에 "C2 dead restart 효과" 포함 (사용자 컨텍스트 진술)¶
사용자 컨텍스트 본문에 "C1 K-means++ + C2 dead restart 효과 명확 (simple이 즉시 collapse, util 4-11%)" 라고 적혀 있다. 그러나 코드 검증 결과:
- src/peak_analysis/vq_layers/residual_quant.py 에 restart_dead_codes() 미정의 — E3 (full)에서 호출 불가
- src/peak_analysis/vq_layers_simple/vq_base_simple.py:145 restart_dead_codes(...) -> int [always 0] — E3_simple에서도 no-op
- 학습 스크립트 experiments/federated/v10_e3_scinet_rq.py 에 restart_dead_codes grep 결과 0건
→ C2 (dead restart)는 E3 / E3_simple 양쪽에서 동일하게 비작동. simple과 full의 util 차이를 C2로 귀속하는 진술은 반사실 (counterfactual) 가짜 인과.
E3 vs E3_simple 차이의 진정한 원인 후보는: - C1 (K-means++ vs torch.randn init): 가능성 높음 - C3 (L3 β=0.375 vs uniform 0.25): 작은 효과 (PAPE 1.09%p, util 부분 영향) - M1 (γ differential vs uniform 0.95): 가능성 높음 (특히 L3 anchoring 약화 효과)
이 3 요인을 분리하려면 추가 ablation (one-out-at-a-time) 필요. expert가 §10에서 권고한 1-apt × 8-round addendum이 이 분리에 적합.
권고: 사용자 컨텍스트 및 expert 보고서의 향후 갱신본에서 "C2 효과" 표현을 완전히 제거, "C1+C3+M1 stack 효과"로 정정.
2.4 [PASS] β=0.375 효과 inconclusive 자기인정 (§4.3)¶
expert §4.3은 H_β (의도된 효과) vs H_cascade (반증, L1 dead 부산물) confound 를 정직하게 명시했다. simple ablation을 통한 사후 비교:
| Variant | L3 β | L3 util final | PAPE |
|---|---|---|---|
| E3 | 0.375 | 36.19% | 49.67 |
| E3_simple | 0.25 (uniform) | 5.63% | 50.76 |
L3 util 차이 +30.56%p는 크지만 PAPE 차이는 1.09 (E3가 약간 좋음). 이는 (a) β 가중이 L3 codebook의 active code 수는 늘렸으나 (b) 실제 peak prediction 품질에 미치는 효과는 거의 없다는 신호다. 단 simple은 C1/C3/M1 동시 변경이라 β 단독 효과는 여전히 분리 불가. expert §4.3 결론 "β=0.375 효과 inconclusive"는 final 결과로도 robust.
권고: §4.3에 final 비교 표 1줄 추가 — "PAPE Δ(E3 - E3_simple) = -1.09 가 β 단독 기여라면 β의 peak 품질 효과는 통계적으로 비유의에 가까운 미미한 수준."
2.5 [REJECT] HR@1 baseline 우위 주장 (사용자 컨텍스트)¶
사용자 컨텍스트는 "HR@1 20.21은 FL no-VQ baseline (B3 17.14, B4 18.57) 대비 우위" 라고 적었다. 그러나 MLflow 검증 결과:
B3_NHITS_noVQ_seed42 | HR@1=(empty) — 미기록
B4_Crossformer_noVQ_seed42 | HR@1=(empty) — 미기록
Phase1_NHITS_Local_seed42 | HR@1=17.14 ← 사용자 인용 수치 출처
Phase1_PatchTST_Local_seed42 | HR@1=22.49 — E3보다 높음
Phase1_TimesNet_Local_seed42 | HR@1=21.13 — E3보다 높음
Phase1_iTransformer_Local_seed42 | HR@1=20.76 — E3보다 약간 높음
→ "B3 17.14"는 v10-multi-model-vq 의 B3 (FL no-VQ NHITS) 가 아니라 Phase1 NF Local NHITS (단일 가구 local 학습) 의 수치다. 두 베이스라인은: - 학습 데이터: B3=50가구 FL, Phase1_NHITS_Local=apt별 단일 (federated 아님) - 평가 set: B3=50가구 전수, Phase1=일부 apt subset - n: 비대칭
E3 vs Phase1 NF Local 비교는 학습 paradigm 자체가 다르므로 정당한 baseline이 아니다. 또한 Phase1의 PatchTST (22.49), TimesNet (21.13), iTransformer (20.76) 가 E3 (20.21) 보다 높거나 비슷 — E3가 "우위"라는 진술은 cherry-picked baseline (NHITS, NBEATSx) 에서만 성립.
권고: 1. 사용자 컨텍스트의 "B3 17.14, B4 18.57 baseline 우위" 출처 재확인. v10 FL no-VQ 베이스라인은 HR@1 미기록이므로 공정 비교 불가. 2. expert 갱신본에 추가 시: "v10 FL no-VQ baseline (B0–B4) 은 HR@1 미기록 → E3 HR@1 20.21의 의미는 v10 phase 내부에서 검증 불가" 라는 한계 명시. 3. Phase1 NF Local 비교를 한다면 학습 paradigm 차이 (federated vs local, 데이터 양) 명시 + 전체 6 모델 모두 비교 (cherry-pick 회피). 4. memory feedback (v9-06 revision 1 교훈) — Apt cherry-picking 검증 순서: 절대 1-2 apt 우위만 보고 strong 결론 금지. Phase1 6개 모델 중 PatchTST/TimesNet/iTransformer가 E3보다 높다는 점을 동시 보고할 것.
2.6 [PASS] restart_dead_codes() RQ 미구현 발견¶
expert §5.2가 발견한 코드 결함은 본 검토에서도 코드 grep으로 재확인:
- src/peak_analysis/vq_layers/residual_quant.py — restart_dead_codes 미정의 (확인)
- freq_band_cb.py:224, product_quant.py:211, decomp_cb.py:180 — 각 정의 (확인)
- vq_layers_simple/residual_quant_simple.py — restart_dead_codes no-op (return 0)
이는 명백한 구현 누락이다. 그러나 expert 보고서에는 수정 후 영향 추정이 부재. 권고:
- engineer dispatch 시 (1) ResidualQuant.restart_dead_codes(batch_hidden_per_level) 추가 (다른 3개와 인터페이스 통일), (2) 학습 루프에 호출 hook 추가, (3) addendum 1-apt × 8-round smoke로 L1 util 변화 측정.
- 추정 영향 (정성): 다른 E* (E1/E2/E4)는 restart 호출이 가능했음에도 PAPE 55–85로 catastrophic — 즉 restart는 RQ에 추가해도 "L1 dead 단독 해결책"이 되지 않을 가능성. 가설 A (SCINet pool 평균화) 가 architectural primary 일 수 있음.
2.7 [PASS / CONCERN] "v10 4 모델 중 상대 안정" 평가¶
expert §0.2, §6, §9.1에서 "E3 PAPE 49.67은 v10 VQ 4 모델 중 best (E1=55, E2=85, E4=67)" 강조. 이는 사실이지만: - PASS 측면: E3가 v10 phase의 유일한 partial-success 후보임을 강조하는 것은 reporter 단계에서 정직한 신호다. - CONCERN 측면: relative ranking이 H10-3 통과를 시사하지 않음을 expert §3.4에서 한 번 명시했지만, §0/§6/§9에서 반복 강조하면 선택적 framing (정량 FAIL을 정성 우위로 덮음) 위험. 사용자 컨텍스트도 "E3가 v10에서 유일하게 HR@1 baseline 우위"라 적었지만 §2.5에서 언급한 baseline 출처 오류로 약화됨.
권고: §0 Executive Summary에 다음 주의 1줄 추가 — "E3의 v10 내 상대 우위는 H10-3 가설 통과를 시사하지 않는다. v10 phase 전체가 partial collapse 상태이므로 E3의 49.67조차 v6 R1b PAPE 37.36 / v9-06 SCINet 42.35 대비 약화."
2.8 [PASS] "wait 권고" 사후 적절성¶
사후 검증: - round 16 → round 30 (14 round 추가) 동안 best val 갱신: 0건 (round 4 plateau 유지) - round 16 cb_util 평균 25.08% → round 30 26.54%: +1.46%p (외삽 25–27% 범위 내) - 산출물 가치 회수: test_pape/hr/mse 확정 (a 충족), best_global.pt + npy artifact 저장 (b 충족)
→ "best 갱신 가능성 매우 낮음" 진술 사후 정확. wait 권고는 옳았다 (산출물 회수 vs GPU 3시간 trade-off 양호).
2.9 [PASS] Risk A1–A7 사전 disclosure¶
A1 plateau→실제 plateau (정확), A2 util 해석 모호→두 해석 모두 25–27% (불변), A4 단일 seed→여전히 한계, A5 stderr 메시지 정정 (사용자 컨텍스트 "60개 무효 코드" = data_loader 정상 로그) — expert가 이를 잘 잡았다. A6 (n 비대칭 v9-06 vs v10) 도 §2.5의 baseline 오류와 같은 맥락에서 reporter 단계 5-apt subset 추출 권고 유지.
3. 누락된 분석 (필수 보강)¶
3.1 v6 R1b / v9-06 SCINet 대비 후퇴 정량화¶
| 지표 | v6 R1b (pFL+VQ, near-collapse 4%) | v9-06 SCINet (n=15, 5apt×3seed) | v10 E3 SCINet+RQ (final) | E3 vs v9-06 Δ |
|---|---|---|---|---|
| PAPE | 37.36 | 42.35 | 49.67 | +7.32%p worse |
| HR@1 | (미기록) | 34.48 | 20.21 | -14.27%p worse |
| MSE | (미기록) | 0.498 | 0.493 | -0.005 (≈ 동등) |
→ E3는 v9-06 SCINet 대비 PAPE 7.3%p 악화, HR@1 14.3%p 악화. MSE만 비슷. VQ 이식이 SCINet을 약화시켰다가 확정 결론. expert §6 "잠정 미확정"을 final로 갱신 권고.
3.2 L1 util "near-dead" 운영적 의미¶
L1 11.19% × M=32 ≈ 3.6 active codeword (round 30). 이는 50가구의 coarse pattern을 3-4 modes로 압축한다는 의미다. 만약 50가구의 실제 부하 패턴 군집 수가 4보다 크다면 (예: weekday/weekend × 계절 = 8 modes 추정) L1 codebook이 정보 손실 발생 중. addendum: per-household L1 index 분포 시각화 (top-3 codeword 점유율) → 가구 간 codebook degradation 정량화.
3.3 통신량 trade-off final (§7 갱신)¶
E3 12,288 bytes/round × 30 round = 368,640 bytes total codebook traffic. 이를 PAPE/HR@1로 나눈 cost-effectiveness:
| 모델 | 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 |
→ E3는 E4보다 bytes/HR@1 효율 ↓ (더 많은 통신으로 더 많은 hit). 그러나 둘 다 v6 R1b의 PAPE 37.36 대비 후퇴. v10 phase 전체가 통신 효율 측면에서 v6 대비 regression임을 final 보고서에 명시 권고.
4. 갱신 권고 사항 (expert revision 1로 전달)¶
MUST FIX (revision 통과 조건)¶
- §0 Executive Summary: round 16 잠정 표기를 round 30 final로 갱신. 핵심 수치 (PAPE 49.67, HR@1 20.21, MSE 0.493, L1/L2/L3 util final) 반영.
- §3 H10-3 판정: final로 확정 ("잠정 FAIL" → "FAIL"). axis 1 (util) FAIL, axis 2 (mse) PASS, OR/AND 정합성 ADR-010 원문 재확인 후 정정.
- §5.4 L1 dead 원인: "A∩B∩C 교집합" 주장을 약화 — simple ablation에서 γ uniform 시 L1 util이 오히려 낮아짐 (4.25% < 11.19%) 을 인용, 가설 C 단독 기여 부호 반대 가능성 명시.
- §2.3 (본 검토) 반영: "C2 dead restart 효과" 진술 제거. simple과 full 모두 RQ에 restart 미구현 (full은 메서드 부재, simple은 no-op return 0). E3 vs E3_simple 차이는 C1/C3/M1 stack.
- §6 v9-06 비교: final 수치로 정량화. PAPE +7.32%p, HR@1 -14.27%p 후퇴 명시. "VQ가 SCINet을 약화"가 확정 결론.
- HR@1 baseline 출처 정정: "B3 17.14 / B4 18.57" 출처는 v10 FL no-VQ baseline이 아니라 Phase1 NF Local 베이스라인. 학습 paradigm 차이 (FL vs Local) 명시. Phase1 6개 모델 중 PatchTST/TimesNet/iTransformer가 E3보다 높음을 동시 보고 (cherry-pick 회피).
SHOULD FIX (개선 권고)¶
- §4.3에 final β ablation 비교 표 1줄 추가: PAPE Δ(E3 - E3_simple) = -1.09 → β 단독 효과 미미 신호.
- §5.2
restart_dead_codes()미구현에 영향 추정 1단락 추가: 다른 E* 는 호출 가능했음에도 PAPE 55–85로 실패 → restart는 L1 dead 해결의 단일 처방이 아닐 가능성. - 새 §3.2 본 검토 제안 추가: per-household L1 index 분포 시각화 (top-3 점유율) — codebook degradation 정량화.
- §7 통신량 final 갱신: bytes/HR@1 효율 표, v6 R1b 대비 regression 명시.
MAY DEFER (다음 phase로)¶
- addendum 1-apt × 8-round one-out-at-a-time ablation (C1 only / C3 only / M1 only / restart_dead_codes 추가) — engineer dispatch 사항. v10 phase 종료 후 v11 또는 v10-addendum.
-
ResidualQuant.restart_dead_codes()구현 — engineer dispatch 사항.
5. exp-expert에게 전달하는 한 줄 요약¶
v10-04 보고서는 잠정 단계 메소드 (Risk disclosure, conjunctive 분석, β confound 인정)는 PASS 수준이나, (a) round 30 final 수치 갱신, (b) "C2 dead restart 효과" 가짜 인과 제거, (c) HR@1 baseline 출처 (Phase1 NF Local 미명시) 정정, (d) v9-06 SCINet 대비 후퇴 정량화 — 4건 fix 후 reporter 진입 가능. revision 1 cycle 1회 권고.
6. 판정 (최종)¶
| 항목 | 판정 |
|---|---|
| 전체 verdict | CONDITIONAL (revision 1 cycle 후 reporter 진입 가능) |
| H10-3 final | FAIL (axis 1 util 26.54% << 50%, axis 2 mse 0.493 PASS — OR 조건이면 falsified) |
| 잠정 보고서 메소드 (Risk disclosure / β confound) | PASS |
| ablation 효과 귀속 (C2 진술) | REJECT — 코드상 양 변종 비작동 |
| HR@1 baseline 우위 주장 | REJECT — 출처 misalignment |
| L1 dead 3원인 교집합 | CONCERN — C 단독 기여 부호 반대 가능성 |
restart_dead_codes() 미구현 발견 |
PASS (영향 추정 보강 권고) |
| wait 권고 사후 평가 | PASS (round 4 plateau 정확 외삽, 산출물 회수) |
| 잠정 → final 갱신 | REQUIRED |
7. memory feedback 적용¶
본 검토는 다음 기존 memory를 적용했다:
- v9_06_revision1_lessons — Apt cherry-picking 검증 순서: Phase1 6 모델 중 PatchTST 22.49 / TimesNet 21.13 / iTransformer 20.76 (모두 E3 > 또는 ≈) 동시 보고 권고. denominator manipulation 격하 — 사용자 컨텍스트의 "B3, B4 베이스라인 우위" 표기는 베이스라인 출처 misalignment에 해당.
- figure_design_uncertainty_hiding — single-seed (seed=42) 결과를 final 비교에 사용 시 multi-seed CI 부재를 명시 권고. v10 전체가 단일 seed phase, 통계 비유의 disclosure 필수.
- gating_threshold_post_hoc_relaxation — H10-3 falsification 조건 (util > 50% AND/OR mse ≤ 0.515) 의 OR/AND 표기 다툼이 사후 임계 완화 패턴으로 발전하지 않도록, ADR-010 원문 1줄 인용 + 갱신본에서 임계 변경 금지.