안녕하세요. 카카오브레인에서 콘텐츠 제작을 담당하고 있는 사만다입니다. :)
따끈함과는 다소 거리가 있을 수는 있습니다. 카카오브레인 AutoML 연구팀이 관련 대회에서 종합 1위에 올랐다는 소식은 이미 지난 7월에 소개한 바 있습니다. 좀 더 구체적으로 말씀드리면, 카카오브레인은 AutoCV에 참가한 84팀 중 1위, AutoCV2의 34개 참가팀 중 1위라는 성적을 거뒀습니다.
하지만 결과뿐만 아니라 과정을 공유하는 일 또한 중요하다고 생각합니다. 어떤 기법을 왜, 어떻게 써서 이런 성과를 낼 수 있었는지에 대한 이야기도 쓰게 된 배경이에요. 이번 글에서 AutoCV는 어떤 대회인지, 카카오브레인이 도입한 다양한 기법에 대한 이야기를 실었습니다.
https://www.kakaobrain.com/blog/105
일단 기본적으로 AutoCV는 여타 다른 딥러닝 대회와는 달리 제약이 너무나 많았습니다.
1)최종적으로 모델 추론에 이르기까지 최대 20분만 쓸 수 있습니다. 보통 딥러닝 프로젝트에선 성능 고도화를 위해 수십 시간 또는 수일을 투자하는데요? ㅠㅠㅠ 이런 이유로 카카오브레인에서는 데이터 전처리와 모델 훈련, 초매개변수 미세조정뿐만 아니라 데이터를 효율적으로 입출력하는 데 있어서 시간을 대폭 줄이는 데 집중했습니다.
2)모두가 다 그런 건 아닌데요, 어떤 경우에 따라서는 사람이 임의로 테스트셋에 과적합된 모델을 만드는 데 개입한다고도 해요. 그러면 진정한 의미의 AutoML라고 볼 수는 없죠. 이런 이유로 참가자가 제출한 코드를 주최 측이 직접 가동해보면서 모델의 성능을 평가했다고 합니다. 참가자들이 만든 딥러닝 모델의 계산 환경은 다 똑같을 수밖에 없게 되겠죠.
3)약간 2번과도 비슷한 맥락이에요. 테스트할 데이터셋이 뭔지 알면 여기에 적합한 모델이 나오도록 개입이 가능하거든요. 하지만 모델의 성능을 최종적으로 테스트할 데이터셋을 모른다면 이런 개입도 사실상 어려워요. 그래서 아예 이 테스트 데이터셋을 외부에 공개를 안했어요.
이런 상황에서 카카오브레인은 대회에 적합한 모델을 만들기 위해 다양한 걸 고민했어요. 결과론적으론 '최소한의 시간으로 최대한의 성과를 내기 위한' 걸 목적으로 한다는 건 같습니다. 다만 저는 개인적으로 '굳이 그렇게까지 한 이유'가 궁금하더라고요. "다른 모델도 많은데 굳이 ResNet-18을 선택한 이유가 뭐예요?" "Fast AutoAugment의 탐색공간을 줄이는 데 있어서 그 속성값의 범위를 한정한 이유가 뭐예요?" 대답을 들으면서 그 모듈 또는 기능 안에선 굉장히 사소할 수는 있어도 이런 사소한 터치들이 모여서 최종 성능에 많은 영향을 미친다는 점을 알게 됐습니다.
자세한 이야기는 블로그를 보시면 알 수 있습니다. :)