gusdlf93 / Paper_Survey

4 stars 1 forks source link

[2022 arXiv] Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time #20

Open gusdlf93 opened 2 years ago

gusdlf93 commented 2 years ago

앙상블 모델을 만드는 방법은 여러가지가 있는데, 대표적인 방법은 bagging이나 boosting입니다. 딥러닝 모델에서는 특이하게도 Weight Averaging이라는게 존재하는데, 해당 방법을 통해 Sota를 찍은 논문입니다.

모델을 만들 때에는 하이퍼 파라미터에 따라 다양한 버전들의 모델들이 만들어 지게 되는데, 특정 데이터셋에 대해서 Sota를 달성하지 못한 모델들은 폐기됩니다.

특정 조건만 맞추면, 이렇게 폐기되는 모델들을 버리지 않고 모델의 성능 향상을 위해서 사용할 수 있는데,

  1. 초기 가중치가 이미 성능이 잘 나오는 경우
  2. 초기 가중치로부터 Fine Tuning해서 모델들이 만들어진 경우.

해당 논문에서는 CLIP이나 ALIGN에서 사용하는 Zero Shot Initialization으로 모델의 가중치를 초기화합니다. Zero shot은 한번도 보지 못한 물체에 대한 분류 성능을 측정하는 방식인데, 여기서는 다른 데이터셋에서 학습한 후, 현재 데이터셋에서 성능을 측정하는 것을 의미합니다. CLIP 3억개의 이미지와 텍스트 쌍에서 pair로 학습한 후, 이미지넷에서는 이미지와 클래스를 넣어서 어떤것과 유사한지를 찾는 문제로 해결하였습니다.

이렇게 하면, 이미지넷에 대해서 zero-shot 성능이 76.2%가 나온다고 합니다.

Weight Averaging은 모든 모델의 가중치들을 단순히 평규내는 앙상블 기법입니다. 수많은 모델들을 어떻게 더해줄지(뭐랑 뭐를 고를지) 에 따라 Uniform, Greedy, Ensemble, Learned Soup, Best on validation으로 나뉘는데, Greedy방법이 가장 편하고(?) 이상적입니다. Greedy는 단순히 모델의 가중치를 더했을 때, validation acc가 오르는 모델들을 고르는 방식입니다. image 앙상블이 성능이 가장 많이 오르지만, 앙상블은 연산량이 모델 갯수만큼 늘어나게됩니다. Greedy 방식은 모델이 적지만 않다면 항상 Sota이상의 성능을 보장한다고 합니다.

Model Soup는 Augmentation의 영향을 꽤 많이 받는 편이기 때문에, Option을 잘 주는 것이 중요합니다. 또한, Model soup는 이미지, 텍스트, 생성모델에서 성능 향상을 보고받았기 때문에, 아마 도메인에 관계가 없이 성능이 증가되는게 아닌가 싶습니다. image

성능이 잘 나오는 이유 : Weight Averaging은 단순히 모델들의 가중치를 더하는 것이 아니라, 새로운 학습 방법으로서 정의하는게 맞다고 봅니다. image -> 누군지는 모르겠지만... 대혁씨 그림 감사합니다.

초기 가중치가 빨간색 위치라고 가정하고, 파란색 위치들이 학습방법에 따라 성능이 바뀐, 임의의 모델들이라고 가정하겠습니다. 그럼, 우리가 모델을 학습할 때에는 원래 한가지 방향으로밖에 학습을 할 수 없지만, 다양한 방향으로 학습을 진행한 후, 가장 validation 성능에 영향을 주기 좋은 방향으로 모델의 가중치들을 더해줄 수 있다는 것입니다. 즉, Weight Averaging은 새로운 Land Scape Search 기법이라고 보여집니다.

보다 자세한 내용은 ppt를 참고해 주세요.

gusdlf93 commented 2 years ago

ppt link