콘텐츠로 이동

실험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).

원본: [0.3, 0.5, ..., 6.0(피크), ..., 0.4] kW
RevIN: [-0.8, -0.7, ..., +2.3(피크), ..., -0.8]

피크 윈도우와 비피크 윈도우의 입력 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%