[FL] Personalized Federated Learning
정의
Personalized FL 은 모든 클라이언트가 동일한 글로벌 모델을 쓰지 않고, 각 클라이언트가 자신의 데이터 분포에 맞춰 조정된 모델 을 학습하는 연합 학습 계열입니다. Non-IID 극심한 환경에서 글로벌 모델을 억지로 수렴시키는 대신, 자연스러운 이질성을 받아들이고 개인화 성능 을 최적화합니다.
McMahan et al. 의 FedAvg 는 단일 글로벌 모델이 목표였지만, 실전에서 키보드 (다국어), 추천, 헬스 등 사용자별 특성이 강한 도메인에서는 개인화가 필수임을 깨닫게 되었습니다.
왜 필요한가
Non-IID 의 근본 딜레마
극심한 non-IID 에서 FedAvg 는 두 가지 문제:
- 글로벌 모델 수렴 실패: Client drift 로 정확도 저하
- 클라이언트별 fit 부족: 수렴해도 각 클라이언트 로컬 분포에는 잘 안 맞음
Personalized FL 은 문제 2 를 정면 공략. 글로벌 모델을 완전히 포기하지 않고, 각 클라이언트가 그 위에 로컬 조정을 얹습니다.
실전 사례
- Gboard: 사용자별 이모지 추천, 단어 예측
- Siri / Google Assistant: 음성 명령 개인화
- Netflix / Amazon 추천: 사용자별 성향
- 의료 wearable: 개인별 정상 baseline
- 헬스케어 fedeated: 환자군 특성 반영
주요 접근법
1. Local Fine-tuning (가장 단순)
Global model 학습 후 클라이언트가 로컬 데이터로 몇 step fine-tune.
w_local = w_global.copy()
for step in range(local_steps):
x, y = local_batch()
w_local = w_local - eta * grad(loss(w_local, x, y))
Trade-off:
- 간단, 파라미터 추가 없음
- 하지만 언제 stop 할지 (overfit vs underfit) 결정 어려움
- 각 클라이언트가 개별 모델 저장 필요
2. Personalization Layers (FedPer, LG-FedAvg)
공유 부분 (representation extractor) + 개인 부분 (classifier head) 로 분리:
- 서버가 학습하는 부분: representation (conv/transformer body)
- 클라이언트가 로컬에 유지: personalization head (fully connected + softmax)
Global: [Body: shared conv/transformer] → aggregated
Local: [Head: personal FC + softmax] → kept per client
FedPer (Arivazhagan et al., 2019): head 만 로컬. LG-FedAvg: 반대로 body 로컬 + head 공유.
Trade-off:
- 명확한 구조 분리, 통신량 감소 (head 안 전송)
- 어느 layer 를 로컬로 할지 도메인 지식 필요
- Head 규모가 크면 로컬 학습 데이터 부족 문제
3. Meta-Learning (Per-FedAvg)
Fallah et al. (2020) 은 MAML (Model-Agnostic Meta-Learning) 스타일로 접근. 글로벌 모델이 “한 step 만 로컬 SGD 를 돌리면 잘 맞도록” 학습.
- : meta-parameter (글로벌)
- : 클라이언트 가 한 step 학습 후의 로컬 파라미터
- 이 로컬 파라미터가 잘 맞도록 를 최적화
배포 시: 각 클라이언트가 를 받아 자기 데이터로 한 step 파인튜닝하면 즉시 개인화.
Trade-off:
- 이론적으로 매우 우아
- Second-order gradient (Hessian) 필요 -> 계산 비용
- FOMAML (first-order approximation) 로 완화 가능
4. Regularized Local Model (pFedMe, Ditto)
pFedMe (T. Dinh et al., 2020): 각 클라이언트가 로컬 모델 를 유지하되 글로벌 근처에 있도록 정규화.
는 서버에서 aggregated 로컬 모델들. 큰 -> 글로벌에 가까움 (드리프트 방지). 작은 -> 개인화 자유.
Ditto (Li et al., 2021): 유사하지만 강건성 + 공정성 초점. Global + local 이중 objective:
Byzantine 공격에도 robust. Fair FL 계열의 대표.
5. Multi-Task Learning (MTL)
각 클라이언트 = 하나의 task. 클라이언트 간 관계 (task graph) 를 학습하며 관련 task 간 정보 공유.
- MOCHA (Smith et al., 2017): dual formulation, 관계 행렬 학습
- FedMTL: 최근 확장
6. Clustered FL
극심한 non-IID 에서는 하나의 글로벌 대신 여러 클러스터 별 모델. 유사 클라이언트끼리 같은 클러스터에 배정.
- IFCA (Ghosh et al., 2020): Iterative Federated Clustering
- HypCluster: Hypothesis-based 그룹핑
Trade-off: 클러스터 수 하이퍼파라미터, 클라이언트가 어느 클러스터 소속인지 privacy 함의.
7. Mixture of Experts / Adapter
Adapter layer 를 로컬로 유지 (LoRA 스타일). 글로벌은 base + shared params. 대형 모델 시대에 자연스러운 확장.
알고리즘 비교
| 방법 | 로컬 저장 | 통신 | 이론 | 대표 논문 |
|---|---|---|---|---|
| Local Fine-tune | 로컬 모델 | 표준 FedAvg | 약함 | (Baseline) |
| FedPer | Head | Body 만 | 중간 | Arivazhagan 2019 |
| Per-FedAvg (MAML) | 없음 (배포 시 1-step) | 표준 FedAvg | 강함 (meta) | Fallah 2020 |
| pFedMe | 로컬 모델 | 표준 | 강함 (Moreau) | T. Dinh 2020 |
| Ditto | 로컬 모델 | 표준 + robust | 강함 (fair/robust) | Li 2021 |
| Clustered | 클러스터 모델 | 클러스터별 | 중간 | Ghosh 2020 |
시각화: 개인화 접근법 구조
flowchart LR
G["글로벌 서버"] --> FA["FedAvg<br/>단일 글로벌"]
G --> FP["FedPer<br/>레이어 분리"]
G --> PF["Per-FedAvg<br/>메타 초기화"]
G --> PM["pFedMe<br/>Moreau 정규화"]
G --> DT["Ditto<br/>공정성 강조"]
FA --> CA["클라이언트: 동일 모델"]
FP --> CB["클라이언트: Head 개인화"]
PF --> CC["클라이언트: 1-step 적응"]
PM --> CD["클라이언트: 로컬 모델 유지"]
DT --> CD
접근법 선택 기준
데이터, 인프라, 목표에 따라 적합한 방법이 달라진다:
| 조건 | 권장 방법 | 이유 |
|---|---|---|
| 신규 프로젝트, 빠른 실험 | Local Fine-tune | 설정 최소, 기준점 수립 |
| 모바일 배포, 통신 절약 | FedPer | Head 만 로컬, Body 공유 |
| 즉시 개인화, MAML 경험 있음 | Per-FedAvg | 배포 후 1-step 으로 즉시 맞춤 |
| Non-IID 심하고 수렴이 목적 | pFedMe | λ 로 글로벌/개인화 균형 조절 |
| 공정성, 악의적 클라이언트 우려 | Ditto | Robust + Fair FL |
| 클러스터 구조 의심 | Clustered FL | 분포 유사 그룹끼리 집계 |
| 대형 모델 기반 | LoRA / Adapter | 파라미터 효율 개인화 |
λ 하이퍼파라미터 선택 (pFedMe, Ditto)
λ 는 글로벌 모델에 얼마나 당겨올지를 결정한다:
- λ → ∞: 로컬 모델이 글로벌 모델로 수렴. FedAvg 와 동일 효과.
- λ → 0: 완전 로컬 학습. 과적합 위험.
- 실전 탐색 범위: λ ∈ {0.001, 0.01, 0.1, 1, 10} 에서 cross-validation.
# pFedMe 로컬 학습 (단순화)
def local_train(w_global, local_data, lam, lr, steps):
theta = w_global.clone()
for _ in range(steps):
x, y = sample(local_data)
grad = compute_grad(theta, x, y)
reg = lam * (theta - w_global) # Moreau 정규화 항
theta = theta - lr * (grad + reg)
return theta
Fine-tune step 수 선택 (Per-FedAvg)
배포 시 몇 step 을 돌릴지 결정 기준:
- 1 step: 논문 기본값. 계산 빠름. 데이터 적은 클라이언트에 안정적.
- 5~10 step: 데이터 충분한 클라이언트는 더 많이 적응 가능.
- 조기 종료: validation loss 모니터링으로 over-adaptation 방지.
- 실전: 클라이언트별 데이터 크기에 비례한 step 수 적용.
평가 프로토콜 표준화
같은 방법도 평가 방식에 따라 숫자가 크게 달라진다. 논문 비교 시 주의:
| 방법 | 평가 시점 | 평가 데이터 |
|---|---|---|
| FedAvg | 글로벌 모델로 | IID test set |
| FedPer | 개인화 Head 적용 후 | 로컬 test set |
| Per-FedAvg | 1-step fine-tune 후 | 로컬 test set |
| pFedMe / Ditto | 로컬 모델로 | 로컬 test set |
비교할 때 항상 동일 프로토콜 을 사용해야 한다. 평균 accuracy 만 보면 개인화 이득을 놓친다. per-client 분포 (min, max, std) 도 함께 보고해야 한다.
평가 지표
중요: Personalized FL 은 글로벌 accuracy 만 보면 오독합니다. 반드시:
- Per-client accuracy 분포: 평균 + std + 최악 (min)
- Fairness metric: q-FFL, EFL 등
- Personalization gain: 로컬 fine-tune 후 vs 전
- Communication cost: 개인화 부분 저장/전송 비용
실전 팁
- 단순부터 시작: FedAvg + Local fine-tune 부터. Meta / pFedMe 는 튜닝 부담 큼.
- 개인화 부분 크기 신중히: Head 만인지 여러 layer 인지가 성능/저장 크게 좌우.
- cold-start client: 새 클라이언트는 데이터가 없어 개인화 어려움. Global 만으로 시작 후 시간 지나 개인화.
- 개인화 모델 크기: 모바일 배포는 로컬 모델 저장 공간 제약. Adapter/LoRA 가 유리.
- 평가 데이터 도 non-IID 하게: 학습과 동일 분포의 로컬 val set 사용.
함정
WARNING
개인화가 항상 이득은 아닙니다. Non-IID 가 mild 하면 FedAvg 만으로도 충분. 개인화가 오히려 overfitting 유발 가능.
CAUTION
개인화 모델의 privacy 함의. 개인 모델을 로컬에 저장하면 device 손실 시 개인 정보 유출 위험. 모델 자체가 학습 데이터의 정보를 포함.
WARNING
Cold client. 데이터가 매우 적은 신규 클라이언트는 개인화가 오히려 성능 저하. Threshold 를 두고 데이터 축적 후 개인화 전환.
IMPORTANT
평가 프로토콜 명확히. Meta-learning 계열은 “1-step 후” 평가하고, pFedMe 는 “로컬 학습 완료 후” 평가. 논문 비교 시 프로토콜 통일 필수.
CAUTION
서버 저장 필요: FedPer 등은 서버가 global body 만 저장, but pFedMe 는 사실상 클라이언트 개별 상태 관리. Cross-device 대규모에서는 클라이언트 side 상태 관리가 부담.
관련 위키
- Federated Learning - 상위 개념
- FedAvg - 기본 알고리즘 (개인화 대비)
- Non-IID Data in FL - 개인화 동기
- Transfer Learning - 파운데이션 모델 + 로컬 fine-tune 개인화의 큰 그림
- Secure Aggregation - 프라이버시 결합
- Differential Privacy - 개인화와 DP 는 tension 가짐
- FL Frameworks - 개인화 지원 프레임워크
이 글의 용어 (7개)
- [FL] FedAvg (Federated Averaging)ml
- 정의 FedAvg (Federated Averaging) 는 McMahan et al. (2017) 이 제안한 연합 학습의 기본 알고리즘 입니다. 원본 데이터를 중앙 서버로 보내…
- [FL] Frameworks (Flower, TFF, NVFlare, FATE, PySyft)ml
- 정의 연합 학습 프레임워크 는 서버-클라이언트 통신, 집계 알고리즘, 프라이버시 도구, 시뮬레이션 환경, 실 배포 인프라를 제공하는 라이브러리/플랫폼입니다. 알고리즘을 직접 구현…
- [FL] Non-IID Data & Client Driftml
- 정의 Non-IID data 는 연합 학습에서 각 클라이언트의 데이터가 서로 다른 분포에서 추출되는 상황을 말합니다. FedAvg 를 비롯한 대부분 FL 알고리즘의 최대 난관이며…
- [FL] Secure Aggregationml
- 정의 Secure Aggregation 은 연합 학습 서버가 개별 클라이언트 업데이트 를 보지 못하고 오직 합 (또는 평균) 만 볼 수 있도록 보장하는 암호학 프로토콜입니다. 서…
- Differential Privacy: (ε, δ) 로 정량화하는 프라이버시 보장ml
- 정의 Differential Privacy (DP, 차분 프라이버시) 는 데이터셋에 대한 질의 (query) 결과에 calibrated noise 를 추가함으로써, 한 개인의 데…
- Federated Learning: 분산 학습 without central dataml
- 정의 Federated Learning (FL) 은 데이터를 중앙에 모으지 않고 각 클라이언트 (edge device, 병원, 은행 등) 가 로컬 데이터로 모델을 학습한 뒤 모델…
- Transfer Learning: pre-training, fine-tuning, domain adaptationml
- 정의 Transfer Learning 은 source task/domain 에서 학습한 지식을 target task/domain 에 재사용 하여 학습 효율을 높이는 패러다임입니다…
💬 댓글