데이터를 한곳에 모으지 않고 모델이 데이터가 있는 곳으로 가서 학습한 뒤, 모델 업데이트만 모아 합치는 학습 방식이다. 병원의 환자 기록, 금융 정보, 스마트폰 속 개인 메시지처럼 밖으로 내보내기 어려운 데이터로 AI를 학습시켜야 할 때 쓴다.
| 항목 | 일반 학습 | 연합학습 |
|---|---|---|
| 데이터 위치 | 서버 한곳에 모음 | 각 기기·기관에 그대로 |
| 서버로 가는 것 | 원본 데이터 | 모델 업데이트만 |
| 운영 난이도 | 단순하다 | 통신·기기 관리가 복잡하다 |
연합학습은 아래 과정을 한 라운드로 삼아 여러 번 반복한다. 서버가 업데이트를 합치는 가장 기본적인 방법은 참여자들의 결과를 데이터 양에 맞춰 평균 내는 것(FedAvg)이다. Google은 Android 키보드의 다음 단어 예측을 이렇게 학습시켰는데, 사용자가 친 문장은 폰 밖으로 나가지 않았다.
| 단계 | 하는 일 |
|---|---|
| 1. 배포 | 서버가 현재 모델을 참여 기기에 보낸다 |
| 2. 로컬 학습 | 각 기기가 자기 데이터로 모델을 조금 학습한다 |
| 3. 업로드 | 바뀐 가중치만 서버로 보낸다 |
| 4. 집계 | 서버가 업데이트를 합쳐 새 모델을 만든다 |
처음에는 실제 기기 없이 컴퓨터 한 대에서 여러 참여자를 흉내 내는 시뮬레이션으로 시작하는 게 보통이다. Flower(flwr)는 기존 PyTorch·TensorFlow 학습 코드를 감싸 클라이언트와 서버를 만들 수 있고, TensorFlow Federated는 TensorFlow 기반으로 연합 알고리즘을 실험하는 라이브러리다. PySyft도 프라이버시 보호 학습 실험에 쓰인다.
순서는 데이터를 참여자별로 나누고, 로컬 학습 코드를 정하고, 집계 방식과 라운드 수를 정해 돌려 보는 식이다. 참여자마다 데이터 성격을 일부러 다르게 나눠 봐야 실제 환경에 가까운 결과가 나온다.
업데이트에도 원본 데이터의 흔적이 남아서, 이를 분석해 일부 정보를 되살리는 공격이 알려져 있다. 그래서 업데이트에 잡음을 섞는 차등 프라이버시나, 서버가 개별 업데이트를 보지 못하고 합계만 보게 하는 보안 집계를 같이 쓰는 게 안전하다.
| 주의할 점 | 왜 문제인가 | 대응 |
|---|---|---|
| 업데이트로 정보 유출 | 기울기로 데이터를 추정할 수 있다 | 차등 프라이버시, 보안 집계 |
| 통신 비용 | 매 라운드 모델을 주고받는다 | 업데이트 압축, 라운드 줄이기 |
| 데이터 불균형 | 참여자마다 데이터 성격이 다르다 | 집계 방식 조정, 참여자별 맞춤 |
데이터를 한곳에 모을 수 있고 규제 부담도 없다면, 일반 학습이 훨씬 단순하고 성능을 내기도 쉽다. 연합학습은 데이터를 모을 수 없거나 모으면 안 될 때 고르는 방식이다.
가장 흔한 쓰임은 두 갈래다. 수많은 스마트폰의 사용 기록으로 기기 속 모델을 개선하는 경우와, 데이터를 서로 넘길 수 없는 여러 기관이 함께 모델 하나를 키우는 경우다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 스마트폰 키보드 | 입력한 문장은 폰에 두고, 다음 단어 예측 모델의 업데이트만 모아 개선한다 |
| 병원 공동 연구 | 병원마다 자기 환자 데이터로 학습하고, 업데이트만 합쳐 진단 보조 모델을 만든다 |
| 금융 기관 협업 | 고객 정보를 공유하지 않고 이상 거래 탐지 모델을 여러 기관이 함께 학습한다 |