연합 학습(Federated Learning), 그리고 챌린지

scalalang2
CURG
Published in
13 min readNov 8, 2020

연합 학습(FL: Federated Learning)은 다수의 로컬 클라이언트와 하나의 중앙 서버가 협력하여 데이터가 탈중앙화된 상황에서 글로벌 모델을 학습하는 기술이다. 여기서 로컬 클라이언트는 사물 인터넷 기기, 스마트 폰 등을 말한다. 이 연합학습은 McMahan 외 공저자 4명이 2015년에 처음 논문[1]으로 발표한 이후, 2017년 구글 AI 블로그[2]에서 공식적으로 소개되고 실제로 모바일 G Keyboard에 적용 되고 있는 기술로서 많은 주목을 받기 시작했다.

연합학습은 데이터 프라이버시 향상커뮤니케이션 효율성, 이 두 가지 장점 때문에 유용하게 쓰일 수 있다. 연합학습을 이용하면 병원의 임상 데이터와 같은 환자 개인정보가 보호되어야 하는 상황에서 데이터 유출 없이 학습이 가능하다. 그리고 수 만개의 로컬 디바이스의 데이터를 모두 중앙 서버로 전송하게 되면 네트워크 트래픽과 스토리지 비용이 증가하는데 연합학습을 사용하면 로컬 모델의 업데이트 정보만을 주고 받으므로 커뮤니케이션 비용이 상당히 줄어들게 된다.

이런 연합학습의 중요성과 가능성은 산업계와 학계의 주목을 받아 현재 기술 개발과 연구 활동이 꾸준히 일어나고 있는데 비교적 새롭게 탄생한 학문이기 때문에 아직 해결하지 못한 많은 문제(챌린지)들이 존재한다. 2019년 6월 17–18일에는 “연합 학습과 분석 워크숍 (Workshop on Federated Learning and Analytics)" 이 구글 시애틀 본사에서 개최되었는데, 이 때 참석한 많은 연구자들은 연합 학습 분야에 존재하는 미해결 과제들을 정리할 필요성을 느꼈다.

그리고 시간이 지나, 무려 107 페이지에 달하는 “Advances and Open Problems in Federated Learning” 논문[3]을 발표하게 된다. 이번 글에서는 이 논문에서 소개된 미해결 과제들을 간략하게 정리해서 소개하고자 한다. 이 글이 연합학습 분야에서 연구하게 될 연구자들에게 이정표 역할을 할 수 있길 바란다.

구성

  • 완전 탈중앙 학습
  • 분산학습과 연합학습
  • 효율성 높이기
  • 실패와 공격에 대한 안전성

완전 탈중앙 학습 (Fully Decentralized Learning)

연합학습의 기본적인 아이디어는 중앙 서버에서 로컬 업데이트를 받아 글로벌 모델을 수정하는 방법으로 진행된다. 하지만, 중앙 서버의 존재는 때때로 문제가 되기도 하는데 단일 서버 모델이기 때문에 단일 장애 지점 (Single Point of Failure) 문제가 있고, 항상 서비스 가능한 상태가 아니기 때문에 장기적으로 보면 문제가 발생할 수도 있다.

[그림 1] 중앙 서버가 존재하는 연합 학습의 구성도

완전 탈중앙 학습 (Fully Decentralized Learning)은 이 문제를 해결하기 위해 네트워크의 커뮤니케이션 방식을 Peer-to-Peer Network 형태로 변경하는 방법이다. 네트워크의 모든 노드는 그래프 형태로 연결되어 있고 한 번의 학습 단계마다 자신의 로컬 업데이트를 연결된 이웃 노드와 교환하는 방식으로 글로벌 모델을 생성한다. 이 탈중앙 학습에서는 P2P 네트워크를 이용하기 때문에 직면하게 되는 몇가지 문제가 존재한다.

  1. 네트워크 토폴로지 및 비동기 통신 문제
    탈중앙 학습에서는 제한된 가용성이 주어진 환경에서도 학습을 잘 해야 한다. P2P 네트워크에서는 참여 및 이탈이 자유롭기 때문에 네트워크 구성이 매번 바뀔 수 있고, 특정 노드가 통신이 불안정한 상황에 있을 수 있고, 메시지는 항상 지연이 발생하는 비동기 상황에 있다. 이를 일반화 하면 모든 노드는 완전하게 연결되어 있지만 메시지가 특정 확률로 도달하지 않는 상황에서도 견고함(robustness)를 가져야 한다. 이를 다루는 대표적인 논문으로 MATCHA[4] 가 있다.
  2. 탈중앙 SGD의 로컬 업데이트 문제
    연합 학습에서는 로컬 디바이스가 글로벌 모델과 커뮤니케이션 하기 전에 몇 번의 로컬 업데이트를 발생할 것인지 결정하는 건 중요한 문제다. 일반적으로 한번의 로컬 업데이트 이후 다른 기기와 통신해서 모델을 결합하는게 Non-IID 데이터 환경에서 수렴이 잘 된다고 알려져 있다. 하지만, 이 경우 통신 비용이 증가하기 때문에 빠르게 수렴을 하는 것은 어렵다.
  3. 신뢰 문제
    참여와 이탈이 자유로운 P2P 네트워크로 구성된 탈중앙 연합 학습에서는 악의적인 공격자와 신뢰할 수 없는 데이터를 가지고 학습하는 상황을 생각해서 모델을 만들어야 한다. 이와 관련된 내용은 CURG의 이전에 작성된 글인 인공지능에도 시빌공격이 있다. 에서도 잘 소개되어 있다.
  4. 개인화 (Personalization)
    개인화란 FL로 생성된 글로벌 모델을 각 로컬 디바이스의 용도에 따라 변형하여 사용할 수 있어야 한다는 특징이다. next-word prediction 언어 모델을 생성한다고 할 때, 각 로컬 디바이스는 서로 다른 언어를 사용하기 때문에 글로벌 모델을 로컬에 적용할 때 다른 feature를 가진 모델이 필요할 수도 있다. 개인화를 적용하기 위해 간단하게는 User Context 값을 입력값에 추가하는 방법이 있다. 최근에는 글로벌 모델을 로컬에서 Fine-Tuning 해서 모델을 변경하는 방법이 연구되고 있다.

해당 논문에서는 완전 탈중앙 학습의 문제를 해결하기 위해 블록체인과 스마트 컨트랙트를 잠재적 해결책의 후보군으로 언급하기도 했다.

분산학습과 연합학습

연합학습은 로컬 디바이스 혹은 공동체가 협업해서 학습한다. 기업 혹은 단체가 연합하는 것과 로컬 디바이스가 연합하여 학습하는 것은 상황이 조금 다르기 때문에 여기서는 용어를 분리한다. 전자를 Cross-silo FL이라 부르고 후자를 Cross-device FL이라 부른다. 분산학습이란 데이터가 분산서버에 저장 되어있는 환경에서 모델을 학습하는 상황을 말한다. [그림 2]는 이 세 가지 학습 환경의 특징을 표로 보여준다.

[그림 2] 분산 ML, Cross-silo FL, Cross-device FL학습의 차이점, 표 내용은 논문의 [표 1]의 내용을 번역한 것이다.

위 [그림 2]의 내용을 보면 Cross-device FL에서는 클라이언트가 익명으로 존재하고 본인의 이익이 최대화 되는 방향으로 행동할 수 있다. 가령 이기적으로 연산력을 아껴서 각 라운드에 거짓 정보를 제출하거나, 모델을 공격할 목적으로 악의적인 정보를 제출할 수 있다. 그리고 네트워크가 불안정하기 때문에 각 학습 단계마다 원활한 통신이 안될 수 있다. 이런 상황에서도 견고한 연합학습 알고리즘을 만드는 것이 연합학습 연구자의 주요 과제 중 하나이다.

효율성 높이기 (Improving Efficiency)

연합학습은 데이터는 공유하지 않으면서 모든 데이터셋을 학습한 글로벌 모델을 만드는 것이 최종 목표이다. 하지만, 연합학습 상황에서는 학습 하는 데이터가 Non-IID(Independent and Identically Distributed)이기 때문에 글로벌하게 최적화된 모델을 만드는 데 어려움을 겪고 있다. 그래서 대부분의 연합학습 연구는 Non-IID 상황에서도 좋은 성능의 모델을 만드는데 많은 관심을 두고 있다.

Non-IID 데이터란 클라이언트가 가지고 있는 각 데이터가 독립 + 동일한 확률 분포를 가지고 있지 않다는 의미이다. 스마트폰으로 예를 들면, 대한민국에 거주하고 있는 우리들의 앨범에는 동양인의 사진이 많을 것이다. 다양한 국가에서 FL을 수행하면 각각의 로컬 업데이트 값의 차이가 크게 생성된다. 아래 [그림 2]는 연합 학습에서 Non-IID 상황을 보여준다. 각 로컬 디바이스는 MNIST 데이터 셋의 특정 클래스 데이터만을 가지고 있다. 이런 상황에서도 Universial 한 MNIST Classifier를 만들 수 있을까? 이것이 연합학습이 직면한 문제 중 하나이다.

[그림 3] 연합학습에서 Non-IID 데이터를 가진 상황

이 문제를 해결하기 위해 실용적인 측면에서 사용할 수 있는 방법은 각 클라이언트가 데이터의 일부분을 중앙 서버에 제출해서 사용할 수 있는 공용 데이터 셋을 만드는 방법이다. 하지만, 이 방법은 데이터의 보안성을 지킨다는 원래 취지를 훼손하므로 적절한 방법이 아니다. 그래서 최근 CURG에서 다룬 데이터 셋 증류(Dataset Distillation)가 Non-IID 문제의 해결 방법 중 하나로 언급되고 있다. 연합학습의 효율성을 높이기 위해서 고려할 사항은 Non-IID 말고도 커뮤니케이션 비용 문제도 있다. 모바일 디바이스는 네트워크 대역폭이 낮고 불안정한 상황에서 통신하기 때문에 레이턴시 때문에 학습 속도가 급격하게 낮아질 수 있다. 현재 이 효율성 문제를 해결하기 위한 대표적인 연구로는 Google에서 발표한 FedAvg: Federated Averaging[5]가 있다. FedAvg는 분류 모델 연구에서 항상 비교군으로 등장하는 ResNet, GoogLeNet 등과 어깨를 나란히 하는 위상을 가지고 있다.

실패와 공격에 대한 안정성

머신러닝 시스템은 다양한 종류의 실패에 취약할 수 있다. 여기서 실패란, 단순한 버그, 노이지한 학습 데이터, 비신뢰 환경으로 인해 발생하는 것과 적대적인 공격(adversarial attacks)을 포함한다. 머신러닝 분야에서 적대적인 공격에 대한 연구는 다양한 관점에서 꾸준히 이루어져 왔다. 이런 공격은 마찬가지로 연합학습 에서도 공격이 가능한데, 여기서 연합학습에서는 한 가지 특징 때문에 새로운 공격 벡터가 존재할 수 있다.

머신러닝 시스템은 외부 공격이 이루어질 때, 공격자는 기본적으로 모델 파라미터를 직접 관찰할 수 없는 블랙박스(Black-box)시스템이다. 공격자는 입력값과 출력값만을 관측해서 모델을 추론하는 반면, 연합학습에서는 중앙 서버가 모든 클라이언트에게 모델 값을 브로드 캐스팅 하므로 공격자는 모델 파라미터를 직접 관측할 수 있는 화이트박스(White-box)시스템이다. 현재로서는 크게 진행된 연구는 없지만, 이러한 특징 때문에 연합학습에서만 통하는 잠재적인 공격 벡터가 존재할 수 있다. 연합학습을 비롯한 머신러닝 공격은 크게 Model update poisoning, Data poisoning, Evasion attack 이 세 가지 종류로 나뉜다. 지금부터 연합학습 관점에서 위 세가지 공격에 대한 내용을 소개한다.

공격 1. Model update poisoning

모델 파라미터 자체를 수정하는 공격이다. 이 때, 크게 전체적인 성능은 높지만 특정 입력값에 대해서만 성능을 저하시키는 targeted attack과 모델 자체의 성능을 저하시키는 untargeted attack을 수행할 수 있다. targeted attack의 하나의 예시는 자율주행 자동차가 정지 표지판만을 잘못 인식 하도록 만들 수 있는데 특정 클래스의 성능만 저하시키므로 연합 학습 관점에서는 적은 공격자만으로도 성공적으로 공격에 성공할 수 있고 모델의 파라미터 값만을 공유하는 연합학습의 특성상 누가 공격자인지 발견하기도 쉽지는 않다.

How To Backdoor Federated Learning[6] 논문에서는 단 한번의 공격 시도 만으로 글로벌 모델을 백도어-공격을 성공한 사례를 소개했고, Analyzing Federated Learning through an Adversarial Lens[7]에서는 전체 10%의 로컬 디바이스가 비잔틴인 경우 연합학습을 공격하는 방법을 소개한다. 이런 비잔틴 공격에 내성을 가진 학습 방법을 만드는 연구가 꾸준히 이루어지고 있지만, 아직 연구 초기인 만큼 언제든 새로운 공격 패턴이 발견될 수 있다.

공격 2. Data poisoning

학습 단계 이전에 발생하는 공격으로, 학습 데이터 자체를 오염시켜서 모델이 의도되지 않은 방향으로 학습하도록 만드는 공격이다. 이 공격 또한 targeted & untargeted attack을 수행할 수 있다. 이 공격의 가장 흔한 패턴은 특정 뉴런을 학습 단계에서 제외시키는 네트워크 프루닝(network pruning) 방법을 사용한다. 이미지를 생각해 보면 특정 영역을 흰색 혹은 검은색 스티커를 붙이기만 해도 디지털로는 0~255의 사이의 숫자로 표현되므로 뉴런이 활성화 되는 정도를 결정할 수 있게 된다. 이런 문제를 해결하기 위해 학습 데이터셋에서 중독된 데이터를 제거하는 Data Sanitization 방법이 연구되고 있다.

[그림 4] 네트워크 프루닝 공격의 한 예시 [8]

하지만, 연합학습 관점에서는 전체 학습 프로세스를 다루는 중앙 서버는 클라이언트의 데이터에 접근할 수 없으므로 데이터를 제거하는 방법은 사용할 수 없다. 또한, 중앙-서버가 아닌 클라이언트가 공격당해서 데이터 중독 공격을 당할수도 있는데 마찬가지로 중앙-서버에서는 이를 알 수 없다. 따라서 현재 연합학습 환경에서 클라이언트가 가진 데이터가 중독된 데이터인지 선별하는 연구가 미해결 과제로 남아있다.

공격 3. Evasion attack

Evasion attack은 배포된 모델에 통과시킬 데이터 샘플을 조정해서 의도되지 않은 결과를 만들어내는 공격 방법이다. 이 방법에서 주로 연구된 내용은 “Adversarial examples”으로 사람의 눈으로는 구별할 수 없지만 약간의 노이즈를 이미지 혹은 음성에 추가해서 모델의 손실함수값을 최대화 한다. 특히 연합학습에서는 공격자가 전체 네트워크에 공유된 모델-파라미터를 관측할 수 있으므로(White-box) 이 공격을 수행하는데 있어 훨씬 수월하게 할 수 있다. 따라서, 현재 블랙박스 머신러닝 중심의 Evasion attack에서 화이트박스 환경인 연합학습에서의 공격 방어 연구도 필요 과제 중 하나이다.

결론

연합학습은 딥러닝 연구 분야의 한 주제로 비교적 최근에 주목을 받았다. 그래서 아직 부족한 부분도 많고 연구할 영역도 다양하다. 이 분야를 지금 깊게 들여다 보기 시작하는 연구자라면, 꽤 좋은 기회가 될 수 있다는 생각을 한다.

레퍼런스

[1] Communication-Efficient Learning of Deep Networks from Decentralized Data
[2] Federated Learning: Collaborative Machine Learning without Centralized Training Data
[3] Advances and Open Problems in Federated Learning
[4] MATCHA : Speeding Up Decentralized SGD via Matching Decomposition Sampling
[5] Communication-Efficient Learning of Deep Networks from Decentralized Data
[6] How To Backdoor Federated Learning
[7] Analyzing Federated Learning through an Adversarial Lens
[8] Fine-Pruning: Defending Against Backdooring Attacks on Deep Neural Networks

--

--

scalalang2
CURG
Writer for

평범한 프로그래머입니다. 취미 논문 찾아보기, 코딩 컨테스트, 언리얼 엔진 등 / Twitter @scalalang2 / AtCoder @scalalang