Federated Learning에 대한 짧은 고찰
개인정보 보호가 중요한 시대 Federated Learning이 솔루션이 될 것으로 판단된다. 하지만 어느정도 단점 또한 존재한다.
Federated Learning은 구글이 처음 그 개념을 소개하였다. 원래 AI 학습은 데이터셋을 중앙 서버에서 수집한 뒤 학습을 하는 것이 일반적이지만 의료와 같이 개인정보 보호가 매우 중요한 곳에서 Federated Learning이 활발하게 연구되고 있다. Federated Learning은 모델 학습 시 학습 데이터셋이 공개되지 않길 원하는 곳에서 사용된다.
Federated Learning의 원리
Federated Learning의 원리는 그리 어렵지 않다. 구글은 아래 Google 키보드인 Gboard의 학습을 통해 Federated Learning을 설명하고 있다.
- Step A: 최신 공유 모델을 다운로드 받은 후 사용자의 휴대폰의 로컬 패턴을 학습
- Step B: 로컬에서 학습된 모델을 암호화하여 클라우드로 전송
- Step C: 클라우드는 공유 모델을 개선하기 위해 다른 사용자에 의해 업데이트된 모델들과 함께 평균화
사용자의 휴대폰은 Federated Learning 시 Step A~C를 반복 실시하며 모든 학습 데이터는 사용자의 디바이스에 있고 클라우드에 사용자의 데이터셋이나 모델이 남아있지 않는다.
Federated Learning의 분산 아키텍처 사례
NVIDIA의 CLARA SDK와 EGX 시스템은 Federated Learning을 구현하기 위한 서버-클라이언트 아키텍처기반으로 작동한다. Federated Learning의 서버와 클라이언트는 다음과 같이 동작한다.
- 서버: Global Model을 관리하고 Federated Learning에 참여하고자 하는 클라이언트의 인증을 담당하며 N개의 클라이언트가 학습한 N개의 Local Model을 수신하여 aggregation을 담당한다. 서버는 Federated Learning의 round 수를 제어할 수 있으며 Federated Learning에 참여하는 클라이언트를 추가하거나 제거할 수 있다.
- 클라이언트: 중앙서버로부터 수신한 Global Model을 기반으로 모델 학습을 진행하고 모델 학습 후 중앙서버에 학습된 Local Model을 송신하는 것을 반복한다.
Federated Learning의 시스템 아키텍처
서버 세션은 학습 round를 시작하는데 필요한 최소한의 클라이언트의 수와 round에 참여할 수 있는 최대 클라이언트 수를 제어한다. 서버가 Federated Learning에 참여할 클라이언트 승인부터 서버가 설정된 최대 라운드가 완료될 때까지 과정은 다음과 같다.
- (1) Federated Learning round에 참가 신청(클라이언트): 클라이언트는 서버에 로그인을 요청을 보내 학습 참여를 신청한다. 서버는 클라이언트를 인증한 후 Federated Learning token을 클라이언트를 보내며 클라이언트를 인증할 수 없다면 인증 거부한다.
- (2) Federated Learning 수행(클라이언트): 각 round 동안 실행할 epoch 수를 제어할 수 있으며 현재 학습 round가 끝나면, 서버로 받은 token을 이용하여 업데이트된 모델을 서버로 보낸다.
- (3) Model aggregation 수행(서버): 서버는 모든 참여 클라이언트로부터 업데이트된 모델을 수신후, 가중치 알고리즘기반의 Model aggregation을 실시하고 클라이언트는 서버가 업데이트한 학습 Model을 수신하면 현재 round가 종료된다. 현재 round가 끝나면 다음 round가 트리거되며 서버가 설정한 최대 round까지 (2)-(3)번을 반복한다.
Federated Learning의 문제점
앞에서 소개한 것처럼 Federated Learning은 중앙 서버가 Remote에 존재하고 학습 데이터셋이 Local에 있다는 점을 제외하고 우리가 흔히 아는 Parameter Server(이하 PS)와 크게 다르지 않다. 하지만 Federated Learning은 몇가지 문제점을 가지고 있다.
1.Federated Learning은 PS 방식에 비해 서버와 클라이언트간의 거리가 멀어서 Communication 비용이 높다. 또한 서버와 클라이언트의 네트워크 연결이 보장되지 않을 뿐 아니라 클라이언트를 신뢰할 수 없어 Federated Learning 중 클라이언트가 임의로 Federated Learning에서 빠질 수 있다.
2.Federated Learning에 참여하는 클라이언트 시스템의 컴퓨팅 리소스가 모두 다른 Heterogeneous 환경으로 Federated Learning시 모델 학습 시 synchronous 하게 Model Aggregation한다면 학습 속도가 가장 낮은 컴퓨팅 리소스에 의존할 수 밖에 없다.
3. Federated Learning은 중앙에서 학습 데이터셋등을 통제할 수 없기 때문에 다음과 같은 문제점이 예상된다.
- 데이터셋의 불균일 및 라벨링의 일관성 문제: Andrew Ng 교수님의 최근 강의에서 언급한 문제로 Labeler마다 라벨링의 기준이 달라 라벨링의 일관성이 없는 경우 데이터셋의 품질이 떨어지는 문제이다. 또한 수집한 데이터 중에 필요한 데이터가 long tail에 위치할 경우 데이터셋의 불균일이 발생한다.
- 데이터셋과 Local Parameter를 신뢰할 수 있느냐의 문제: 중앙에서 통제가 안되니 각 클라이언트가 학습 시 다른 Hyper-parameter를 사용하는 경우, 악의적인 목적으로 Parameter를 왜곡하는 것을 방지해야 하는 문제가 여전히 존재한다.
Federated Learning의 데이터셋 불균일 문제에 대해서 테스트한 논문 결과가 있는데 놀랍게도 데이터셋 불균일 문제는 크게 문제가 안된다고 한다. ([3] 참고할 것. MNIST를 대상으로 테스트함)
- (1) Basic FL: 각 클라이언트에 같은 수의 랜덤한 MNIST 데이터가 있은 경우 (e.g., 클라이언트 #1에 600개의 MNIST 데이터, 클라이언트 #2에 600개의 MNIST 데이터 …)
- (2) Imbalanced FL: 각 클라이언트에 서로 다른 수의 MNIST 데이터가 분포되어 있는 경우(e.g., 클라이언트 #1에 42개의 MNIST 데이터를 가지고, 클라이언트 #2 에는 245개의 MNIST 데이터를 가지고 있는 경우 …)
- (3) Skewed FL: 각 클라이언트에 동일한 숫자의 MNIST 데이터가 분포되어 있는 경우(e.g., 클라이언트 #1은 ‘0’에 해당하는 MNIST 데이터만, 클라이언트 #2는 ‘1’에 해당하는 MNIST 데이터만 가지고 있는 경우 …)
- (4) Imbalanced FL + Skewed FL: (2)+(3) 케이스
맺는 말
Federated Learning은 아직은 모바일폰의 UX나 의료와 같이 개인 정보 보호가 필요한 한정적인 분야에서 사용될 것으로 보인다. 하지만 Federated Learning이 개인정보 보호를 위한 학습 방식 뿐만이 아니라 SETI@home이 외계 지적 생명체를 탐구하기 위해 분산 컴퓨팅을 이용하듯, 공익적인 목적을 위해 학습 리소스를 공여받기 위해 Federated Learning을 사용할 수 있을 것으로 생각한다. 위에서 지적한 Federated Learning의 단점은 미래에 동형 암호등을 통해 개인정보 데이터를 보호한 후 PS 방식으로 학습을 하는 것도 고려해볼 수 있다.
Reference
[1] https://ai.googleblog.com/2017/04/federated-learning-collaborative.html
[2] http://developer.nvidia.com/blog/federated-learning-clara
[3] http://sooyongshin.wordpress.com/2020/11/22/federated-learning