`[연합학습 기본] FedSGD & FedAVG `에 이어지는 내용입니다.
과연...?!
뭐 이런 방법으로 원본 자료에 대한 프라이버시는 잘 지켜지는것을 잘 알겠습니다.... 그런데, 그냥 weight를 평균낸건데 과연 잘 작동 할까요..? 아래의 그림은 MNIST data set을 학습한 두개의 모델에 대해 weight를 평균내었더니 더 잘 결과가 나왔(오른쪽 plot)더라는 내용입니다.
해석해보면 각 plot에서 x축 맨 왼쪽은 첫번째 모델의 weight, 맨 오른쪽의 결과는 두번째 모델의 weight만으로 loss를 구한게 되겠고, 가운데로 갈수록 단순평균 낸 꼴이 됩니다.
그저 단순히 평균내면 잘 나오는게 아니라, 각 모델의 intialization point가 같아야 (오른쪽 plot) 나중에 업데이트되어 나온 weight들을 평균내었을때 이 방식이 잘 작동한다는걸 보입니다. 왼쪽의 plot은 initialization point가 달라 기존의 모델들보다 성능이 나빠진다는 이야기입니다.
FL로 학습시 매 round 마다 학습의 시작점이 모두 공통적으로 가장 최신에 update된 weight라, 이 내용이 적용됩니다.
(아래 참고)
Example code
약간 사기같다는 생각을 품은채 시뮬레이션을 돌려봤습니다. MNIST subset에 대해 다른 두 모델을 만들고, $\theta$에 따라 loss를 test dataset으로 평가해보았습니다.
사실이었다(!!) 기존의 두 모델보다 더 좋은 성능을 보입니다...!! ㄷㄷ
그럼 시작점 다르게하면 더 나쁠까요...?
진짜 더 나쁘다...!! 신기하다... 누가 증명좀!!!
그렇다면 NON-IID에 대해서도 더 좋으려나? 일단 진짜 간단하게 모델 1은 train set에 1,2,7만 들어가고 모델 2는 나머지 digit이 들어가게하고, 샘플 수 또한 3:7로 불균형하게 해보았습니다. 그 결과 역시 평균낸게 기존의 방법보다 더 좋게 나옵니다!
첨부된 코드로 한번 해보세요!
'통계 & 머신러닝 > 연합학습' 카테고리의 다른 글
[Split Learning] 기본 구조 (0) | 2024.08.11 |
---|---|
[연합학습 기본] 결과 (0) | 2024.08.06 |
[연합학습 기본] FedSGD & FedAVG (0) | 2024.08.06 |
[연합학습 기본] 구조와 고려 사항 (0) | 2024.08.06 |
[연합학습 기본] 개념 (0) | 2024.08.06 |