본문 바로가기

ML

통계데이터 인공지능 활용대회 참여 후기

http://www.aitimes.kr/news/articleView.html?idxno=24442 

 

통계청, 통계데이터 이용한 인공지능 활용 대회 공모...'자연어 기반 AI 활용 산업분류 자동화' -

통계청(청장 류근관)은 데이터의 잠재적 가치를 제고하기 위해 통계 데이터의 새로운 활용 분야인 \'통계데이터 인공지능 활용대회\'를 개최한다. 참가 신청은 7일부터 21일까지이며, 참가자는

www.aitimes.kr

INTRO

2022 3월 23일부터 4월 14일까지 약 20일간

통계청, 통계 데이터 센터가 주관하는 '통계데이터 인공지능 활용대회'에 참여했다.

 

대회에 팀원을 모집하시던 일구님과, 참여하신 승윤님 그리고 나 이렇게 셋이 한 팀을 이루어 참가했다. 

 

이번 대회의 training data는 총 100만개로 산업장에 대한 간단한 설명이 어디에서-누구에게-무엇 의 형식으로 주어졌고, 대분류-중분류-소분류 label로 classification하는 것이 본 대회의 task였다.

 

우선 팀원분들 모두 나보다 대회 참여 경험이 많아 진행을 리드해주셨는데, 승윤님의 구현능력이 뛰어나기 때문에  pretrained BERT에 학습 데이터를 fine-tuning한 Baseline코드를 빠르게 작성할 수 있었다.

 

KoBERT는 accuracy, f1-score에 대해 각각 89.64/77.27의 스코어를 기록했다.

 

EDA

데이터의 전처리는 다음의 처리가 있었다.

- Nan값의 빈 칸(' ')화

- 데이터가 중복되는 경우 1개만 남기고 삭제

- 한글 spacing 라이브러리인 'quickspacer'를 이용해 데이터 띄어쓰기 전처리

 

Inference 결과에 대해선 다음의 처리가 있었다.

- 라벨링이 잘못 된 경우 (ex. 124는 C에 속해야 하지만 G로 라벨링 된 경우)

=> 1. 대분류로 분류하기 2. 소분류로 분류하기 => score방식에 소분류의 weight가 더 높기 때문에 2번 방법을 택했다.

- 데이터가 중복되지만 예측값이 다른 경우

=> 1. 무시하기 2. 더 많은 비율의 라벨로 통일 => 2번 방법이 성능이 올라가는 것을 확인하고 선택했다.

- 명백히 잘못 분류한 값에 대해 rule-based inference하기

=> 초기 단일 모델 수준에서는 소수 존재했으나 앙상블 단계에서 모두 걸러짐.

 

Modeling

최종 제출 모델은

(1) roberta-large와

(2) 데이터 형식에 맞게 roberta-large에 custom loss를 추가한 고유 모델을 각각 training한 결과

를 앙상블한 (1)+(2)모델이다.

 

custom model에 대한 내용은 너무 길어지기 때문에 자세하게 설명하지는 않겠다.

 

BERT모델을 baseline으로 활용해 데이터 전처리와 같은 여러 실험을 진행한 후, 대회 막바지에 large model로 갈아타고, 마지막에 기존 모델들을 앙상블하는 작전이 아주 주효했다.

 

최종 score는 91.24/81.85로 중간에 이틀동안 1등을 달성한적도 있고, 마지막 3일은 3위를 유지하고 있었으나,

하루 하나 제출이 가능한 대회임에도 마지막 날 새로운 모델을 제출하는 용감한 팀이 등장하는 바람에 acc 스코어 0.001차이로 4위를 기록했다.

 

다만 3위에 비해 f1-score가 0.5 앞서는데다가 1차 선발 이후 2차 심사에서 보고서를 제출했는데, 팀원분들이 아주 보고서를 잘써주셨기 때문에 3등 탈환도 기대하고 있다.

 

후기

이번 대회에 참여하면서 모델을 짜고, 데이터 전처리와 로더를 만들고, 학습시키는 과정을 본격적으로 배웠고, 해보았다.

모델링과 학습도 소중한 경험이었지만, competition에 직접 참여해보아야만 알 수 있는, "모델을 데이터에 맞게 잘 학습시키는 법" 과 "competition에서 이기는 법"을 배운 것이 이번 대회에서 배운 가장 특별한 소득이라고 생각한다.

 

이 모든 것은 두 팀원분들께 배웠는데, 두 분다 너무 뛰어난 분들이다 보니 내가 contribution한 부분이 적어 안절부절했다. 나름대로 contribution하기 위해 ML기반 모델링을 시도해보기도 했고, tf_idf+lstm, fasttext 등등 기존에 해봤던 것들을 열심히 조합해보려고 했으나 결과도 좋지 않았고, contribution 할 만한 능력이 부족했다. 

 

이번 대회를 통해 많이 배우고, 느낄 수 있었으며 성과까지 얻어가면서 정말 뜻 깊은 3주를 보냈다.

 

다시 한번 두 분께 감사드리며, 이번 경험을 바탕으로 앞으로도 competition에 참여할 생각이다.