Federated Learning 실험 보고서: Phase 2 & Phase 3
- 작성일: 2026-04-13
- 브랜치:
claude/federated-learning-student-teacher-rcllW
- 작성: Peak Analysis Research Team
- 상태: Final
1. 실험 목적 및 배경
1.1 연구 맥락
본 프로젝트는 Knowledge Distillation 기반 경량 피크 예측 모델을 on-device BESS(Battery Energy Storage System)에 배포하기 위한 파이프라인을 구축하는 것을 목표로 한다. 기존 Ver3까지의 접근(Chronos Teacher → DLinear Student KD)에서 통계적으로 유의미한 성능 향상을 달성하지 못한 점이 확인되었으며, 이에 대한 대안으로 Federated Learning(FL)을 통해 다수 가구의 데이터를 프라이버시를 보존하면서 활용하는 방향을 탐색하게 되었다.
1.2 실험 목적
- Phase 2: Local-Only 학습과 Federated 학습(FedAvg, FedProx, FedDF) 간 성능 비교를 통해 FL의 가치를 정량적으로 검증
- Phase 3: FL로 학습된 글로벌 모델의 신규 가구(cold-start) 적용 가능성 평가, few-shot 시나리오에서의 효과 분석
2. 실험 설계
2.1 공통 설정
| 항목 |
값 |
| 모델 |
DLinear (univariate) |
| 입력 길이 (seq_len) |
96 timesteps |
| 예측 길이 (pred_len) |
24 timesteps |
| 채널 수 |
1 |
| Random Seed |
42 |
| GPU |
NVIDIA RTX 5070 Ti (bfloat16) |
| 프레임워크 |
PyTorch 2.x, MLflow |
2.2 평가 메트릭
| 메트릭 |
설명 |
| MSE |
Mean Squared Error — 전반적 예측 정확도 |
| MAE |
Mean Absolute Error — 절대 오차 평균 |
| PAPE (%) |
Peak Absolute Percentage Error — 피크 시점의 예측 오차율 (낮을수록 좋음) |
PAPE 정의: PAPE = mean(|peak(y_true) - peak(y_pred)| / peak(y_true)) × 100. 피크 시점의 상대 오차이므로 낮을수록 피크 예측이 정확하다.
2.3 Phase 2: Local vs Federated Baseline
| 항목 |
설정 |
| Federation 구성 |
24가구 (20 random + 5 eval, EVAL_HOUSEHOLDS 포함) |
| 평가 대상 |
Apt6, Apt15, Apt30, Apt51, Apt88 |
| FL 라운드 수 |
10 |
| 로컬 에폭 |
5 |
| 학습률 |
1e-3 |
| 배치 크기 |
32 |
비교 조건 (5가지):
| ID |
방법 |
설명 |
| L1 |
Local-Only |
각 가구 데이터만으로 독립 학습 |
| F1 |
FedAvg |
10 round FedAvg 글로벌 모델 직접 적용 |
| F3 |
FedAvg + FT(10ep) |
FedAvg 후 각 가구 데이터로 10 epoch fine-tuning |
| F4 |
FedProx (mu=0.01) |
Proximal term 추가로 non-IID 대응 |
| F5 |
FedDF |
Data-Free Distillation 기반 연합 학습 |
2.4 Phase 3: Cold-Start Evaluation
| 항목 |
설정 |
| Federation Pool |
EC50 중 45가구 (hold-out 제외) |
| Hold-Out Pool |
5가구 (EVAL_HOUSEHOLDS) |
| FL 알고리즘 |
FedAvg, 10 rounds |
| Few-shot 비율 |
data_fraction ∈ |
비교 조건:
| ID |
조건 |
설명 |
| CS0 |
Scratch |
신규 가구 데이터만으로 처음부터 학습 (50 epoch) |
| CS1 |
Fed-Direct |
FL 글로벌 모델 zero-shot 적용 (fine-tuning 없음) |
| CS2 |
Fed-FT-10 |
FL 모델 + 10 epoch fine-tuning |
| CS3 |
Fed-FT-50 |
FL 모델 + 50 epoch fine-tuning |
3. 실험 결과
3.1 Phase 2: 가구별 상세 결과
3.1.1 MSE (낮을수록 좋음)
| Household |
L1: Local |
F1: FedAvg |
F3: FedAvg+FT |
F4: FedProx |
F5: FedDF |
| Apt6 |
0.7743 |
0.7790 |
0.7764 |
0.7771 |
0.7788 |
| Apt15 |
0.1553 |
0.1506 |
0.1551 |
0.1508 |
0.1504 |
| Apt30 |
0.0876 |
0.0830 |
0.0883 |
0.0831 |
0.0831 |
| Apt51 |
0.6478 |
0.5754 |
0.6252 |
0.5727 |
0.5784 |
| Apt88 |
0.9121 |
0.9092 |
0.9141 |
0.9068 |
0.9093 |
3.1.2 MAE (낮을수록 좋음)
| Household |
L1: Local |
F1: FedAvg |
F3: FedAvg+FT |
F4: FedProx |
F5: FedDF |
| Apt6 |
0.6152 |
0.6201 |
0.6176 |
0.6191 |
0.6199 |
| Apt15 |
0.2855 |
0.2810 |
0.2850 |
0.2812 |
0.2808 |
| Apt30 |
0.2240 |
0.2185 |
0.2252 |
0.2186 |
0.2191 |
| Apt51 |
0.5522 |
0.5196 |
0.5482 |
0.5185 |
0.5201 |
| Apt88 |
0.6866 |
0.6811 |
0.6899 |
0.6801 |
0.6806 |
3.1.3 PAPE (%) (낮을수록 좋음)
| Household |
L1: Local |
F1: FedAvg |
F3: FedAvg+FT |
F4: FedProx |
F5: FedDF |
| Apt6 |
40.74 |
47.59 |
40.92 |
47.21 |
47.53 |
| Apt15 |
38.11 |
39.26 |
37.85 |
39.01 |
39.22 |
| Apt30 |
42.99 |
42.82 |
42.70 |
42.55 |
42.65 |
| Apt51 |
46.23 |
41.98 |
44.19 |
41.45 |
42.17 |
| Apt88 |
44.47 |
46.32 |
44.42 |
45.95 |
46.29 |
3.1.4 평균 요약
| Method |
Avg MSE |
Avg MAE |
Avg PAPE (%) |
| L1: Local |
0.5154 |
0.4727 |
42.51 |
| F1: FedAvg |
0.4995 |
0.4641 |
43.60 |
| F3: FedAvg+FT(10ep) |
0.5118 |
0.4732 |
42.02 |
| F4: FedProx(mu=0.01) |
0.4981 |
0.4635 |
43.24 |
| F5: FedDF |
0.5000 |
0.4641 |
43.57 |
3.2 Phase 3: Cold-Start 결과
3.2.1 FL 수렴 상태
- 45가구 FedAvg, 10 rounds 수행
- Loss: 0.4128 (Round 1) → 0.4122 (Round 10)
- Round 3부터 사실상 수렴 — 추가 라운드의 한계 효과 극히 미미
3.2.2 Few-Shot 평균 결과 (5가구 평균)
| 조건 |
Frac |
Avg MSE |
Avg MAE |
Avg PAPE (%) |
| CS0: Scratch |
0.1 |
0.5732 |
0.5205 |
35.46 |
| CS0: Scratch |
0.3 |
0.5408 |
0.5037 |
37.25 |
| CS0: Scratch |
0.5 |
0.5254 |
0.4892 |
39.04 |
| CS0: Scratch |
1.0 |
0.5130 |
0.4720 |
42.33 |
| CS1: Fed-Direct |
all |
0.4993 |
0.4644 |
43.55 |
| CS2: Fed-FT-10 |
0.1 |
0.5236 |
0.4870 |
38.96 |
| CS2: Fed-FT-10 |
0.3 |
0.5288 |
0.4981 |
37.83 |
| CS2: Fed-FT-10 |
0.5 |
0.5179 |
0.4863 |
39.20 |
| CS2: Fed-FT-10 |
1.0 |
0.5133 |
0.4728 |
42.09 |
| CS3: Fed-FT-50 |
0.1 |
0.6170 |
0.5624 |
31.17 |
| CS3: Fed-FT-50 |
0.3 |
0.5574 |
0.5252 |
34.82 |
| CS3: Fed-FT-50 |
0.5 |
0.5208 |
0.4889 |
38.72 |
| CS3: Fed-FT-50 |
1.0 |
0.5111 |
0.4733 |
41.89 |
3.2.3 가구별 Cold-Start 상세 (frac=0.1, 극단적 few-shot)
| Household |
Scratch MSE |
Fed-Direct MSE |
Fed-FT-10 MSE |
Fed-FT-50 MSE |
| Apt6 |
0.8775 |
0.7797 |
0.7994 |
0.9208 |
| Apt15 |
0.1885 |
0.1501 |
0.1576 |
0.2089 |
| Apt30 |
0.1160 |
0.0830 |
0.1021 |
0.1386 |
| Apt51 |
0.6434 |
0.5756 |
0.6008 |
0.6556 |
| Apt88 |
1.0411 |
0.9082 |
0.9582 |
1.1611 |
4. 분석 및 해석
4.1 Phase 2 핵심 분석
MSE/MAE 관점: FL이 소폭 우세
- FedProx가 MSE 기준 최고 성능: Local 대비 MSE 3.4% 개선 (0.5154 → 0.4981)
- FL 방법들(FedAvg, FedProx, FedDF) 간 성능 차이는 극히 미미 (MSE 차이 < 0.002)
- Apt51에서 FL 효과가 가장 극적: Local MSE 0.648 → FedProx MSE 0.573 (약 11.6% 개선)
- Apt6와 Apt88에서는 Local과 FL 간 차이가 거의 없음
PAPE 관점: Fine-Tuning의 중요성
- FedAvg+FT(10ep)가 PAPE 기준 최고 (42.02%) — 가장 낮은 피크 오차
- Local(42.51%)보다 소폭 개선, 순수 FL(FedAvg 43.60%)보다 확실히 우수
- Apt6 anomaly: Local PAPE 40.74% → FedAvg PAPE 47.59% (악화). FedAvg+FT로 40.92%로 회복
- Apt6의 고유한 피크 패턴이 FL 글로벌 모델의 일반화에 의해 희석됨. Fine-tuning이 이를 부분적으로 복원
- Apt51: Local PAPE 46.23% → FedAvg PAPE 41.98% (개선)
- Apt51은 FL을 통해 다른 가구의 피크 패턴 지식을 전이받아 피크 예측이 개선됨
MSE vs PAPE 트레이드오프
FL은 MSE/MAE(전반적 예측 정확도)를 개선하지만, PAPE(피크 오차)는 오히려 악화시키는 경향이 관찰된다. 구체적으로:
- MSE 기준 순위: FedProx(0.498) > FedAvg(0.500) > FedDF(0.500) > FedAvg+FT(0.512) > Local(0.515)
- PAPE 기준 순위: FedAvg+FT(42.02%) > Local(42.51%) > FedProx(43.24%) > FedDF(43.57%) > FedAvg(43.60%)
MSE가 좋은 방법일수록 PAPE가 나쁘고, PAPE가 좋은 방법(FedAvg+FT)은 MSE에서 상대적으로 약하다. 이는 FL의 글로벌 모델이 다수 가구의 평균적 패턴에 수렴하면서 개별 가구의 첨두(spike) 특성을 희석시키기 때문으로 판단된다. Fine-tuning은 이 희석된 피크 정보를 부분적으로 복원하는 역할을 한다.
4.2 Phase 3 핵심 분석
Fed-Direct(zero-shot)의 MSE/MAE 우위
- 모든 data_fraction 구간에서 Fed-Direct가 MSE/MAE 최고 성능
- frac=0.1 (극단적 few-shot): Fed-Direct MSE 0.4993 vs Scratch MSE 0.5732 → 12.9% 개선
- frac=1.0 (full data): Fed-Direct MSE 0.4993 vs Scratch MSE 0.5130 → 2.7% 개선
- 데이터가 적을수록 FL 글로벌 모델의 가치가 극대화됨
Fine-Tuning의 역설적 효과 (MSE 관점)
- Fed-FT-10: Scratch보다는 좋지만, Fed-Direct보다 일관되게 나쁨
- Fed-FT-50: frac=0.1에서 오히려 Scratch보다도 나쁨 (MSE 0.617 vs 0.573)
- 적은 데이터로 과도한 fine-tuning을 수행하면 FL 글로벌 모델이 학습한 일반적 지식을 catastrophic forgetting으로 잃음
- 데이터 부족 상황에서는 fine-tuning을 하지 않는 것이 MSE 기준 최선이라는 반직관적 결론
MSE vs PAPE Trade-off (Cold-Start)
Phase 2와 동일한 MSE↔PAPE 트레이드오프가 Cold-Start에서도 뚜렷하게 관찰된다:
| Condition |
Frac |
MSE (↓) |
PAPE (↓) |
| CS_Fed-Direct |
all |
0.499 (최선) |
43.55 (최악) |
| CS0_Scratch |
0.1 |
0.573 |
35.46 |
| CS_Fed-FT-10 |
0.1 |
0.524 |
38.96 |
| CS_Fed-FT-50 |
0.1 |
0.617 (최악) |
31.17 (최선) |
- MSE가 가장 좋은 Fed-Direct가 PAPE에서는 가장 나쁘다 (43.55%)
- PAPE가 가장 좋은 Fed-FT-50(frac=0.1)이 MSE에서는 가장 나쁘다 (0.617)
- Fine-tuning은 MSE를 악화시키지만 피크 오차(PAPE)는 개선한다
- 이 트레이드오프는 FL 글로벌 모델이 전반적 예측력은 높지만 피크 특성을 희석하고, fine-tuning이 그 피크 정보를 복원하는 구조로 설명된다
- ESS 운영 관점: 피크 예측 정확도(PAPE)가 비용 절감에 직결되므로, MSE만으로 방법론을 선택하면 최적이 아닐 수 있음
4.3 가구별 특성 요약
| Household |
특성 |
FL 효과 |
| Apt6 |
높은 MSE (고변동성), 고유한 피크 패턴 |
MSE 중립, PAPE 악화 (40.7→47.6%) — FL이 피크 희석 |
| Apt15 |
낮은 MSE (안정적 패턴) |
MSE/PAPE 모두 소폭 개선 |
| Apt30 |
매우 낮은 MSE (예측 용이) |
MSE 소폭 개선, PAPE 중립 |
| Apt51 |
높은 MSE, 개성 강한 패턴 |
MSE 크게 개선 (11.6%), PAPE도 개선 (46.2→42.0%) |
| Apt88 |
가장 높은 MSE (난이도 최고) |
MSE 소폭 개선, PAPE 악화 (44.5→46.3%) |
5. 기술적 이슈 및 해결
5.1 MLflow Active Run 충돌
- 문제: 중첩된 MLflow run이 활성 상태로 남아 후속 실험 기록에 충돌 발생
- 해결:
mlflow.end_run() 호출을 명시적으로 추가하고, context manager 패턴으로 전환
5.2 FedDF deepcopy Non-Leaf Tensor
- 문제:
torch.nn.utils 기반 FedDF 구현에서 deepcopy 시 non-leaf tensor에 대한 gradient 오류 발생
- 해결:
model.state_dict() 기반 복사로 전환하여 tensor graph 의존성 제거
6. 한계점
6.1 실험 설계 한계
- 평가 가구 수 제한: 5가구만으로 통계적 일반화에 한계 (Apt6, Apt51의 이상치가 평균에 큰 영향)
- 단일 모델 아키텍처: DLinear만 평가하여, 다른 경량 모델(PatchTST-tiny, TimesNet 등)과의 비교 부재
- Non-IID 정도 미측정: 가구 간 데이터 분포 이질성을 정량화하지 않아, FL 효과의 원인 분석이 제한적
- FL 라운드 수 고정: 10 rounds만 실험하여, 더 많은 라운드에서의 효과 미확인 (단, Phase 3에서 Round 3부터 수렴 관찰)
6.2 메트릭 한계
- MSE와 PAPE의 트레이드오프: 두 메트릭이 상반된 결론을 제시하며, BESS 운영 관점에서 어떤 메트릭이 더 중요한지에 대한 분석이 필요
- PAPE 값의 절대 수준: 모든 방법에서 PAPE가 31~48% 수준으로, 피크 예측 정확도가 전반적으로 낮음
6.3 재현성 관련
- 가구 샘플링(20 random households)에 seed를 고정했으나, 다른 random sample에서의 일관성은 미검증
- FedDF의 public dataset 구성에 대한 민감도 분석 미수행
7. 결론
7.1 Phase 2 결론
- FL은 Local-Only 대비 MSE/MAE에서 소폭 개선 (FedProx 기준 3.4%)을 달성하나, 그 차이는 크지 않다.
- PAPE(피크 포착) 관점에서 FL의 가치는 불명확하며, 가구 특성에 따라 개선/악화가 갈린다.
- FedAvg, FedProx, FedDF 간 성능 차이는 무시할 수준이므로, 가장 단순한 FedAvg를 기본 알고리즘으로 채택하는 것이 합리적이다.
- Fine-tuning(F3)은 FL의 일반화 이점을 상쇄하여, Phase 2 맥락에서는 추가 가치가 미미하다.
7.2 Phase 3 결론
- Cold-start 시나리오에서 FL의 가치가 명확히 입증되었다. Fed-Direct(zero-shot)가 MSE/MAE 기준 모든 조건에서 최고 성능.
- 데이터가 적을수록 FL 모델의 이점이 극대화된다 (frac=0.1에서 MSE 12.9% 개선).
- MSE↔PAPE 트레이드오프가 Cold-Start에서도 재현: Fed-Direct는 MSE 최선이나 PAPE 최악(43.55%). Fine-tuning은 MSE를 악화시키지만 PAPE를 개선.
- Fine-tuning은 데이터 부족 시 MSE 기준 해로움: catastrophic forgetting으로 인해 MSE 악화. 단, PAPE 기준으로는 fine-tuning이 피크 예측을 개선.
- 실용적 시사점: MSE 최적화(일반 예측)와 PAPE 최적화(피크 예측)를 분리하여 고려해야 하며, ESS 운영에서는 PAPE가 더 직접적인 비즈니스 가치를 가질 수 있다.
7.3 종합 판단
FL은 cold-start 문제 해결에 가장 뚜렷한 가치를 제공하며, 기존 가구에 대해서는 marginal improvement에 그친다. 단, MSE와 PAPE가 상충하는 트레이드오프가 Phase 2와 Phase 3 모두에서 일관되게 관찰되므로, 최적 방법론은 운영 목표에 따라 달라진다:
- 일반 예측 정확도(MSE) 우선: Fed-Direct(zero-shot) 배포
- 피크 예측 정확도(PAPE) 우선: Fed 모델 + Fine-tuning (적절한 epoch 탐색 필요)
BESS 최적화 파이프라인에서는 피크 시점의 정확한 예측이 비용 절감에 직결되므로, PAPE를 1차 메트릭으로 설정하고 FT 전략을 최적화하는 방향이 연구적으로 유의미하다.
8. 향후 과제
- N-ablation 실험 (Phase 2 Experiment B): federation 참여 가구 수(N)에 따른 성능 변화 분석
- Non-IID 정량화: 가구 간 데이터 분포 이질성 측정 및 FL 효과와의 상관관계 분석
- Personalized FL: Per-FedAvg, FedBN 등 개인화 FL 알고리즘으로 PAPE 트레이드오프 해소 가능성 탐색
- BESS 시뮬레이션 연계: FL 모델의 예측 결과를 MILP 기반 BESS 스케줄링에 투입하여 실제 비용 절감 효과 검증
- KD-FL 결합: Chronos Teacher → FL-DLinear Student 경로의 타당성 재검토
부록
A. 실험 로그 파일 위치
| 파일 |
설명 |
outputs/fed_learning/logs/fed_train_local_20260413_135136.csv |
Phase 2 - Local baseline |
outputs/fed_learning/logs/fed_train_fedavg_20260413_133700.csv |
Phase 2 - FedAvg (no FT) |
outputs/fed_learning/logs/fed_train_fedavg_20260413_140534.csv |
Phase 2 - FedAvg + FT(10ep) |
outputs/fed_learning/logs/fed_train_fedprox_20260413_141408.csv |
Phase 2 - FedProx |
outputs/fed_learning/logs/fed_train_feddf_20260413_142334.csv |
Phase 2 - FedDF |
outputs/fed_learning/logs/fed_cold_start_20260413_154834.csv |
Phase 3 - Cold-Start 전체 |
B. 모델 체크포인트
| 파일 |
설명 |
outputs/fed_learning/models/fed_global_model.pt |
Phase 2 글로벌 모델 |
outputs/fed_learning/models/fed_coldstart_fedavg_R10.pt |
Phase 3 글로벌 모델 (45가구) |
C. 실험 스크립트
| 파일 |
설명 |
experiments/FedLearning/fed_train.py |
Phase 2 실험 스크립트 |
experiments/FedLearning/fed_cold_start.py |
Phase 3 실험 스크립트 |
src/fed_learning/trainer.py |
FederatedTrainer 구현 |
src/fed_learning/aggregators.py |
FedAvg, FedProx, FedDF aggregator |
src/fed_learning/config.py |
FL 전용 설정 |