Source:
report/version6/exp-expert/v6_0415_exp6_phase3_residual_analysis.md
실험6 Phase 3: Residual Path 심층 분석 및 DLinear Residual 설계¶
1. Phase 3 결과 요약 (Residual MLP)¶
H6-3: FAIL¶
| P1 (Phase 2 최선) | R1 (Phase 3) | Δ | |
|---|---|---|---|
| MSE | 0.543 | 0.539 | -0.004 (유사) |
| PAPE | 42.67% | 45.70% | +3.03%p (악화) |
| HR | 27.8% | 28.5% | +0.7 |
| CB Util | 3.8% | 4.1% | +0.3 |
Residual MLP(96→48→24, ~5K params)가 PAPE를 악화시킴.
2. VQ vs Residual Magnitude 분석¶
MLflow에서 추출한 Phase 3의 |Y_q| (VQ path) vs |Y_r| (Residual MLP) magnitude:
| Apt | |Y_q| (VQ) | |Y_r| (Res) | VQ 기여율 | 추세 | |-----|-----------|-----------|-----------|------| | Apt6 | 0.395 | 0.190 | 68% | VQ 증가, Res 감소 | | Apt15 | 0.322 | 0.188 | 63% | VQ 증가, Res 감소 | | Apt30 | 0.260 | 0.161 | 62% | VQ 증가, Res 감소 | | Apt51 | 0.278 | 0.171 | 62% | VQ 증가, Res 감소 | | Apt88 | 0.275 | 0.163 | 63% | VQ 증가, Res 감소 | | 평균 | 0.306 | 0.174 | 64% | — |
학습 추세¶
- VQ: early(0.28) → late(0.33) — 시간이 갈수록 VQ 기여 증가
- Residual: early(0.18) → late(0.16) — 시간이 갈수록 Residual 기여 감소
- → Residual이 점차 소극적으로 수렴. VQ를 보완하지 못함.
critic 우려 검증¶
exp-critic이 "Residual이 전체 예측을 지배할 위험"을 경고했으나: - 실제로는 VQ가 64%로 지배적 - Residual은 36%에서 점차 감소 - 오히려 반대 문제: Residual이 무의미한 보정으로 수렴하면서 VQ에 간섭만 함
3. Residual MLP 실패 근본 원인¶
3-1. RevIN 후 피크 정보 소실¶
Residual MLP의 입력은 RevIN 정규화된 시퀀스 (mean=0, std~1).
피크 윈도우와 비피크 윈도우의 입력 variability 차이: - Peak windows std: 0.985 - NonPeak windows std: 0.907 - 비율: 1.09x (거의 동일)
→ Residual MLP는 피크/비피크 윈도우를 구분할 수 없음.
3-2. 용량 부족¶
96→48→24 = ~5K params로는 24개 시점 각각에 대한 세밀한 보정 불가. 전체적인 평균 수준 보정만 학습.
3-3. Smoothing 메커니즘¶
모든 윈도우에서 비슷한 크기의 보정 적용: - 피크 윈도우: 피크를 깎음 (smoothing) - 비피크 윈도우: 약간 증가 - → PAPE 악화
4. DLinear Residual 설계 (Phase 3b)¶
4-1. 동기¶
DLinear는 Residual MLP의 3가지 문제를 모두 해결:
| 문제 | Residual MLP | DLinear Residual |
|---|---|---|
| 피크 구분 | RevIN 후 정보 소실 | Trend/Seasonal 분해로 피크 포착 |
| 검증 | 미검증 | B0에서 MSE=0.522, PAPE=42.55% 검증 |
| 구조 | 단순 FC (96→48→24) | 분해 → 각 성분 Linear(96→24) |
| 입력 | 정규화 공간 | z-score 정규화 데이터 (RevIN 전) |
| 파라미터 | ~5K | ~4.6K (유사) |
4-2. 아키텍처¶
입력 x [B, 96, 1] (z-score 정규화된 데이터)
│
├── VQ Path (FL 공유)
│ RevIN → CNN Encoder → VQ Codebook → FC Decoder
│ → y_vq [B, 24, 1]
│
└── DLinear Path (로컬 유지)
Series Decomposition → trend Linear + seasonal Linear
→ y_dlinear [B, 24, 1]
│
결합: y_combined = y_vq + y_dlinear [B, 24, 1]
│
RevIN 역정규화 → y_pred [B, 24, 1]
│
Loss: loss_decode + peak_weighted_loss_all + vq_loss
4-3. 학습률 차등¶
| 경로 | 파라미터 | lr | 근거 |
|---|---|---|---|
| VQ path (encoder+PMR+decoder) | ~180K | 1e-5 | 원본 기본값 |
| DLinear (로컬) | ~4.6K | 1e-6 | VQ가 먼저 주 예측을 담당하도록 속도 조절 |
출력 scaling이 아닌 학습률로 역할 분담을 조절하는 이유:
- 출력 scaling (lambda * y_dlinear)은 정보를 인위적으로 제한
- 학습률 차등은 "누가 먼저 학습하느냐"를 제어 → 자연스러운 역할 분담
- VQ가 공통 패턴을 먼저 학습 → DLinear가 남은 가구별 잔차를 느리게 보정
4-4. FL 통신¶
- 교환 대상: codebook만 (기존과 동일)
- DLinear 파라미터: 로컬 유지 (FL 비공유)
- Privacy: DLinear에 가구별 개인정보 포함 가능 → 교환하지 않으므로 안전
4-5. 학습률 옵션 비교¶
| DLinear lr | 예상 효과 | 위험 |
|---|---|---|
| 1e-5 (동일) | DLinear가 빠르게 B0 수준 학습 → VQ 무시 | VQ codebook 무의미화 |
| 1e-6 (1/10) | VQ 먼저 학습 → DLinear 잔차 보정 | 균형 (권장) |
| 1e-7 (1/100) | DLinear 거의 안 배움 | Phase 3 MLP과 비슷한 결과 |
| 0 (frozen) | B0 가중치 고정 → VQ가 DLinear 잔차 학습 | VQ 역할이 "오차 보정"으로 변질 |
4-6. 성공 기준¶
- H6-3b: R1b mean PAPE < P1 mean PAPE (42.67%)
- MSE ≤ 0.55 (P1 대비 악화 없음)
- |Y_d|/|Y_q| 비율: 30~50% (DLinear가 적절히 기여)
- VQ codebook utilization 유지 또는 증가
5. Beta+Alpha Sweep 결과 (대기 중)¶
별도 병렬 실행 중: - beta={3.0, 4.0} (alpha=2.0 고정) - alpha={3.0, 5.0} (beta=2.0 고정)
결과 확인 후 이 보고서에 추가 예정.
6. 전체 실험 진행 현황¶
| Phase | 설정 | MSE | PAPE | 판정 |
|---|---|---|---|---|
| 1 (V1) | Vanilla FeDPM (원본) | 0.579 | 49.77% | FAIL (> B1 0.505) |
| 2 (P1) beta=0.1 | Peak Loss alpha=2.0 | 0.579 | 52.83% | FAIL |
| 2 (P1) beta=0.5 | Peak Loss alpha=2.0 | 0.562 | 46.68% | — |
| 2 (P1) beta=1.0 | Peak Loss alpha=2.0 | 0.543 | 45.48% | — |
| 2 (P1) beta=2.0 | Peak Loss alpha=2.0 | 0.543 | 42.67% | 현재 최선 |
| 3 (R1) | + Residual MLP | 0.539 | 45.70% | FAIL |
| 3b (R1b) | + DLinear Residual (lr=1e-6) | — | — | 실행 중 |
비교 대상: - B0 (Local DLinear): MSE=0.522, PAPE=42.55% - B1 (FedAvg+DLinear): MSE=0.505, PAPE=43.55%