Federated Learning
연합 학습은 원시 데이터를 로컬에 보관하는 여러 디바이스나 조직에서 하나의 모델을 학습하며, 모델 업데이트만 서버와 공유합니다.
연합 학습은 머신러닝 모델 하나를 여러 기기 또는 조직에 걸쳐 학습하는 방법으로, 각 참여자는 학습 데이터를 수집된 장소에 그대로 보관합니다. 조정 서버는 현재 모델을 참여자에게 보내고, 각 참여자는 자체 데이터로 모델을 학습한 다음, 개선된 공유 모델을 만들기 위해 결합할 모델 업데이트만 서버로 돌려보냅니다. Google 연구진은 사용자 모바일 기기에 남아 있는 데이터로 학습하기 위한 연합 평균(FedAvg) 알고리즘을 소개한 2016년 논문 분산 데이터로 심층 네트워크를 효율적으로 학습하기에서 이 접근 방식을 명명했습니다. 모델을 데이터가 있는 곳으로 가져오면 개인정보 보호 규정, EU의 GDPR과 같은 규제 또는 단순히 방대한 규모 때문에 하나의 데이터 레이크에 모을 수 없는 정보를 휴대전화, 병원, 은행에서 학습에 활용할 수 있습니다.
연합 학습의 작동 방식#
학습은 라운드 단위로 진행됩니다. 서버는 사용 가능한 클라이언트 그룹을 선택하고 전역 모델 가중치를 전송합니다. 각 클라이언트는 로컬 데이터에 대해 경사 하강법을 몇 에포크 실행한 다음 업데이트된 가중치를 반환합니다. FedAvg는 반환된 가중치를 각 클라이언트의 학습 예제 수에 비례해 가중 평균하고, 그 결과를 다음 라운드의 전역 모델로 사용합니다. 여러 로컬 단계를 통신 사이에 수행하면 FedAvg 실험에서 동기화된 확률적 경사 하강법과 비교해 통신 라운드 수를 10~100배 줄일 수 있었습니다. 다음 코드는 데이터 양이 서로 다른 세 클라이언트에서 선형 모델의 FedAvg를 시뮬레이션합니다:
import torch
torch.manual_seed(0)
true_w = torch.tensor([2.0, -3.0])
# Three clients with private datasets of different sizes; raw data never leaves a client
clients = []
for n in (50, 200, 500):
X = torch.randn(n, 2)
clients.append((X, X @ true_w + 0.1 * torch.randn(n)))
global_w = torch.zeros(2)
for r in range(1, 6):
weighted = []
for X, y in clients:
w = global_w.clone()
for _ in range(5): # local gradient descent steps on the client's own data
w -= 0.1 * 2 * X.T @ (X @ w - y) / len(y)
weighted.append(len(y) * w)
# FedAvg: average the client weights, weighted by each client's number of samples
global_w = sum(weighted) / sum(len(y) for _, y in clients)
print(f"round {r}: global weights {[round(v, 3) for v in global_w.tolist()]}")이 코드는 라운드 1 이후의 전역 가중치 [1.354, -2.023], 라운드 3 이후의 [1.935, -2.898], 라운드 5 이후의 [1.995, -2.99]를 출력하며, 서버가 각 클라이언트의 가중치만 받았음에도 실제 값 [2, -3]으로 수렴합니다.
크로스 디바이스 및 크로스 사일로 연합 학습#
연합 학습은 제약 조건이 서로 다른 두 가지 설정에서 실행됩니다. 크로스 디바이스 학습은 데이터가 적은 수백만 대의 휴대전화나 센서를 대상으로 하며, 이들 기기는 오프라인이거나 배터리 전원으로 작동하는 경우가 많습니다. 따라서 각 라운드에서는 일부 기기만 사용하고 이탈을 감내해야 합니다. Google의 Gboard 키보드는 이러한 방식으로 다음 단어 예측 모델을 학습합니다. 크로스 사일로 학습은 병원이나 은행처럼 대규모 데이터셋을 안정적인 서버에 보유한 소수의 조직을 연결합니다. 연합 종양 분할 연구에서는 6개 대륙의 71개 의료 기관이 6,314명의 환자로부터 확보한 MRI 스캔 25,256개를 공유하지 않고 교모세포종 분할 모델을 학습했습니다. 이 연합 모델은 수술 대상으로 삼을 수 있는 종양을 공용 데이터로 학습한 모델보다 33% 더 정확하게 구분했습니다. 적합한 설정은 데이터가 어디에 있는지에 따라 달라집니다:
같은 학습 루프는 비전 모델에도 적용됩니다. 각 병원, 공장 또는 매장은 현재 전역 YOLO26 가중치를 불러오고, 표준 Ultralytics YOLO 학습 모드를 사용해 자체 이미지로 파인튜닝한 뒤, 서버가 평균을 계산할 수 있도록 업데이트된 가중치만 반환하면 됩니다. Flower와 NVIDIA FLARE와 같은 오픈 소스 프레임워크는 두 설정 모두에서 클라이언트 선택, 통신, 집계를 처리합니다.
개인정보 보호 및 보안#
데이터를 로컬에 보관하는 것만으로는 학습을 비공개로 유지할 수 없습니다. 모델 업데이트에는 업데이트를 생성한 데이터에 관한 정보가 포함되기 때문입니다. 그래디언트로부터의 심층 유출과 같은 그래디언트 역산 공격은 공유된 그래디언트에서 학습 이미지와 레이블을 복원했으며, 멤버십 추론 공격은 특정 레코드가 사용되었는지 검사합니다. 프로덕션 시스템은 두 가지 방어책을 추가합니다. 보안 집계는 업데이트를 암호화하여 서버가 합계만 알 수 있도록 하고, 차등 개인정보 보호는 각 업데이트를 클리핑하고 보정된 노이즈를 추가하여 특정 사용자의 기여를 복구할 수 없게 합니다. Google은 연합 학습으로 훈련하는 Gboard의 다음 단어 예측 신경망 언어 모델 전체가 이제 차등 개인정보 보호를 보장한다고 보고했습니다. 또한 서버는 한 클라이언트의 영향력을 제한하는 좌표별 중앙값과 같은 강건한 집계 규칙을 사용해 오염된 업데이트를 보내는 클라이언트에 대응해야 합니다. 한 병원의 스캐너와 다른 병원의 스캐너처럼 참여자 간 클라이언트 데이터가 크게 다르면 로컬 모델이 서로 다른 방향으로 벗어나고 수렴이 느려집니다.
연합 학습과 관련 용어 비교#
- 분산 학습: 중앙에 저장된 데이터셋을 한 데이터센터의 여러 GPU에 분산해 학습 속도를 높입니다. 연합 학습은 데이터를 이동할 수 없으며, 참여자는 더 느리고 안정성이 낮고 데이터 분포도 서로 다릅니다.
- 분할 학습: 네트워크 자체를 클라이언트와 서버 사이에 나누고 중간 활성값을 주고받습니다. 반면 연합 학습에서는 모든 클라이언트가 전체 모델을 보유하고 가중치를 주고받습니다.
- 데이터 개인정보 보호: 개인정보를 보호하기 위한 더 광범위한 목표입니다. 연합 학습은 이를 위한 한 가지 기법이며 일반적으로 차등 개인정보 보호 및 보안 집계와 함께 사용됩니다.
- 엣지 AI: 기기에서 모델을 실행합니다. 크로스 디바이스 연합 학습은 해당 기기에서 모델도 학습하여 이 개념을 확장합니다.










