본 시리즈에서는 필자가 'RokafNet'이라는 팀으로 운 좋게 준우승을 했던 2023년 국방 AI 경진대회(MAICON)의 후기를 다룬다.
기록도 남길 겸, 올해 대회를 준비하시는 분들께 조금이나마 도움이 되고자 글을 써본다. 다만 대회에 참여한지 꽤 되었다보니 디테일한 내용은 부정확할 수 있다는 점 양해바란다. 또한, 대회에 대한 분석보단 배우고 느낀 점이 주를 이루니 이 또한 고려해서 읽어주시길 바란다.

할 것도 딱히 없어 전역만을 기다리던 2023년 9월 말, 국방 AI 경진대회가 열린다는 소식을 듣게 되었다. AI에 관심은 있었지만 이렇다할 경험은 없었던지라, 좋은 기회라 생각하여 지원했다.
예선 대회 개요는 위와 같았다. 시간도 지식도 없었기에, 효율적으로 공부하고자 개요를 열심히 분석해 보았다.
이를 고려하여 한 달간 공부했던 내용은 아래와 같다.
Computer Vision Masterclass(Udemy) 수강
'머신러닝/딥러닝 문제해결 전략' 공부 & Kaggle 노트북 필사
교육을 신청하니 레벨테스트 후 이수 과정을 정해줬다. 기억상 레벨테스트는 이론 평가+코테였는데, python 기초 문법과 AI 관련 기본 지식 정도만 다뤘어서 수월하게 풀었던 것 같다.
배정받은 과정은 '고급-자연어처리'였다. 위에서 언급했듯 마침 CV 관련 내용을 따로 공부하고 있던지라, NLP까지 넓게 공부할 수 있게 되어 좋았다.
- 용도별 목적대화 데이터 활용 화자 의도 분류
- 법원 판결 요약문 카테고리 분류
각 응시자들이 PC 환경을 체크할 수 있도록, 엘리스는 예선 전 테스트 대회를 개최했다.
대회 페이지에 접속하니 응시 전 PC 환경 관련 체크리스트를 제시했는데, 그 중 탭 전환 방지나 화면 최대화 강제 등 검색을 통제하려는 항목들이 있었다. 코테가 있는데 검색을 못하게 한다니... 이렇게까지 해야하나 싶었다.
응시 페이지에 들어가니 실제 예선과 마찬가지로 이론 문제와 코딩 테스트가 출제되었다. 이론 문항은 머.. 잘 모르는 것도 있었지만 테스트 대회니까 대충 찍고 넘겼다.
코딩 테스트에서는 다이아몬드 가격 예측 task가 주어졌다. task 해결 과정을 쪼개 3개의 세부 문항으로 만들었으며, 각 문항별로 EDA, 데이터 전처리, 모델 학습 및 테스트를 다뤘다. 문항 관련 몇 가지 특징은 다음과 같았다.
1. 독립된 문항들
2. 외부 데이터 / pseudo labeling
3. 채점 방식
4. 시간 제한
잘 알려진 task이고, 잘 몰랐어도 쉽게 구글링이 가능했다. 적합한 모델로 알려진 Random Forest를 돌리니 꽤 성능이 나왔다. MSE 값을 보니 위에서 언급한 가 가장 작은 급간에 속하기도 했고, 테스트 대회였기 때문에 바로 제출했다.
비록 Kaggle에서 원본 데이터셋을 찾을 수 있을 만큼 잘 알려진 주제가 나오긴 했지만, 테스트 대회니까 대충 한 거겠지 하고 넘겼다.
테스트 대회 이후, 본 예선 때는 그래도 어려운 문제가 나올 거라는 생각에 Kaggle에서 다른 대회들도 건들며 배경지식의 폭을 넓히려 노력했다. 그런 노력이 어느 정도 의미있으리라 생각했다. 예선 문항을 보기 전까지는.
일단 이론 문제에서 출제된 내용은 다음과 같았다.
엘리스의 AI 교육에서 출제됐던 문항들과 대체로 비슷했다. 동일한 문항들도 있었다. 역시 교육 듣길 잘했다는 생각이 들었고, 5분 컷을 낸 뒤 코딩테스트 문제를 열었다. 그런데...
"이거 왜 테스트 대회랑 똑같지?"
테스트 때 봤던 코테 문항이 그대로 있었다. 토시 하나 안 틀리고 말이다. 어이가 없었지만 일단 예선을 통과해야 하니 풀긴 풀었다. 점수도 그때와 별반 다르지 않게 잘 나왔다. 문제는 점수를 더 올리기가 대단히 어려웠다는 것. Random forest는 Kaggle tutorial에 있을 정도로 잘 알려져있고 활용하기 쉬운 모델인데, 그러니 다들 활용했을 것이다. 따라서 점수를 유의미하게 올려야 본선에 안정적으로 나갈텐데 그럴 여지가 전혀 보이지 않았다. 결국, 거의 그대로 제출했다...
예선 결과 발표일, 휴가 중이었던 나는 PC방에서 발표 시간이 되기만을 기다렸다. 그런데, 뜻밖에도 발표 2시간 전쯤 걸려온 한 전화가 통과 소식을 미리 알려주었다. 공본의 한 간부님께서 거신 전화였고, 예선 합격자 대상 집체교육을 하려는데 혹시 가능한지 물어보는 내용이었다. 약간 당황했지만 바로 행복해졌다~~ 다만, 집체교육의 경우 휴가 중이라 내 부서와 협의가 됐는지 알 수 없었기에 일단 복귀 후 다시 연락드리겠다고 했다.
아무튼 합격~~
예선 준비과정은 참 유익했고 재밌었지만, 예선은 그닥 그렇지 못했다. 앞으로 열릴 대회에서는 다음의 문제점들이 개선되길 바란다.
1. 테스트 대회와 동일한 문항
이건 9월 모의고사에서 수능 문제를 낸 것과 마찬가지다. 형평성 문제는 당연하고, 사실상 문제 유출이다.
2. 공개된 task
비록 응시 PC 내에서는 검색할 수 없도록 환경 통제를 했으나, 카메라도 없이 비대면으로 보는 시험에선 다른 기기로 검색하면 그만이었다. 그런데 이런 잘 알려진 문제를 내버리면 AI 코테로서의 의미가 사라진다. 찾아보면 다 나오는데 누가 직접 짤까? 응시 환경의 특성상 문제가 조금 허술할지언정 직접 출제했어야 한다고 생각한다. 그래야 설령 검색하더라도 조금이나마 의미가 있지..
3. 변별력이 매우 작음
후기에서 얘기했듯 이론 문제는 교육 들으면 5분 컷이고, 코테는 사실상 Random Forest 원툴이었다. 이론을 대부분 다 맞췄다는 전제하에, 코테로 차이나는 점수는 소수점 단위였다. 그 소수점도 의미있는 차이가 아니라 운에 따른 차이였다.
4. 교육 미이수는 곧 불합격?
이렇게 응시자 간 점수차가 작다보니, 교육 이수 여부에 따른 가산점(무려 5점!)이 아주 결정적인 변별 요소가 되었다. 교육을 듣지 않았다면 암만 잘해도 불합격이라는 얘기다. 정말 배보다 배꼽이 더 큰 상황이었다.
2편이 필요합니다...