brunch

You can make anything
by writing

C.S.Lewis

by 마인즈앤컴퍼니 Mar 24. 2022

[캐글탐험대] PetFinder 대회 (2편)

Kaggle PetFinder 대회 수상 후기와 인사이트 총 정리!

안녕하세요. 1편에 이어 Kaggle Petfinder 대회 수상후기와 인사이트를 정리해드리려고 합니다! 

저번 편에서 Transformer 모델에 대해서 소개해 드렸는데요, 이번 편에서는 Multi-head  모델과 

BCE Loss 를 활용하여 학습했던 이야기를 해보려고 합니다. 




Insight 2 - Multi-head model is powerful!

해리포터에 나오는 케르베로스

그리스 신화에 나오는 케르베로스처럼, 하나의 몸에 여러 개의 머리가 달린 모델을 만들면 더 강력하지 않을까요? 실제로 이번 대회에서는 하나의 backbone (feature extractor)에 5개의 Head (predictor)를 붙여 사용했습니다. 이와 같은 Multi-head 모델을 4개 사용해서, 총 20개의 Head의 예측 결과를 앙상블 했습니다.


사용한 Head List   

Bayesian Neural Network Head (with BCE Loss) → 기본 헤드 (링크)

BCE Head (with BCE Loss)

Elastic Net Regression Head (링크)

Support Vector Regression Head (링크)

Quantile Regression Head (링크)




이러한 Multi-head 모델을 학습하기 위해서, 먼저 위와 같이 Image backbone과 이에 가장 기본적인 형태의 Head를 붙여 학습합니다.





그리고 두 번째 Head를 붙여 학습을 진행합니다. 이때 backbone은 freeze 하여 update가 일어나지 않도록 해줍니다. 이런 식으로 계속해서 덧붙여 여러 개의 Head를 fine-tuning 해주는 것입니다.




최종적으로 예측할 때는 Backbone으로부터 추출된 image embedding을 모든 Head에 통과시켜 결과 값을 뽑아내고, 예측치들의 평균을 최종 결과값으로 사용합니다. 이번 대회에서는 이 방법을 통해 약 1.3% 가량의 성능을 향상 시킬 수 있었습니다.




Tips!

1. 매번 Backbone을 다시 통과해야 하는 시간을 줄이기 위해 Backbone에서 도출된 image embedding들을 저장해두고, 이를 재활용 해 2nd Head를 학습하기!

2. Optuna, Hyperopt 등의 툴을 활용해 2nd Head의 Hyper-parameter를 튜닝하기!



Insight 3 - Regression 문제를 Classification처럼 푼다?

본 대회의 Target 값인 Pawpularity가 1~100 사이의 정수 값이다 보니 처음에는 자연스럽게 Regression에서 주로 활용되는 Loss를 활용했습니다. Mean Square Error (MSE)나 Mean Absolute Error (MAE)로 학습을 진행했습니다.


그런데 대회가 진행되면서, 이 문제를 마치 Binary classification task 처럼 모델링 하는 것이 더 좋다는 이야기가 생겼습니다. 실제로, Binary cross entropy (BCE) Loss를 활용해 학습했더니 약 2% 가량의 성능 개선이 있었습니다.


BCE Loss를 사용하기 위해 1~100 사이의 target 값을 100으로 나눠 0과 1 사이의 값으로 normalize해줍니다. 이 normalize된 값을 target 값으로 사용합니다. 실제로, Binary classification task의 label은 0과 1값으로 주어지는데 학습이 과연 잘될까 싶었지만 잘됩니다! 개인적인 의견으로는, 마치 모델 일반화 테크닉 중 하나인 label smoothing과 같은 형식으로 학습 되는 효과가 있다고 생각합니다.


Label Smoothing이란? : 참고 링크


왜 BCE Loss가 더 좋은지 이유는 확실하지 않지만, Regression task를 Classification task로 변환해 풀어낼 수 있는 유연함을 배울 수 있는 좋은 기회였습니다.


Summary

이미지 전반이 target 변수에 영향을 미칠 경우 Transformer로 접근해보자!

Multi-Head를 적극 활용해 앙상블 효과를 거둬보자!

Regression Task를 Classification Loss를 사용해 학습할 수 있다!



해당 대회는 마인즈앤컴퍼니의 캐글 마스터이신 Tech leader 명대우 파트너님과 AI CONNECT 사업부의 Data scientist 박기돈 매니저, 이녕민 매니저, 김태훈 매니저가 합심해 수상 실적을 거뒀습니다. 

마인즈앤컴퍼니는 빠르게 성장하는 회사와 더불어, 우리 소중한 AI 인재들도 같이 성장할 수 있도록 

이처럼 내부에서도 다양한 AI 스터디와 프로젝트를 진행하고 있습니다. 

앞으로도 다양한 소식 자주 들려드리겠습니다! 



마인즈앤컴퍼니는 적극 인재 채용 중입니다. 많은 관심과 지원 바랍니다.  

https://mnc.ai/?p=16


작가의 이전글 [캐글탐험대] PetFinder 대회 (1편)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari