월간 데이콘 운동 동작 분류 AI 경진대회

private 12위, 0.50834 / 1D CNN + LSTM 모델, 모델 자동 탐색

2021.02.24 00:33 7,162 조회 language

이번 경진대회를 준비하기 위해 신경 쓴 부분은 크게 아래의 4가지입니다.

1. data augmentation
몇 가지 라벨을 제외하고 데이터의 수가 매우 부족했기 때문에, 일반화를 위해서 data augmentation이 필수적이라고 생각을 했고 dataloader 클래스를 활용해 신호의 길이와 크기를 랜덤하게 늘리거나 줄이는 식으로 augmentation을 수행했습니다.

2. windowing 기반 앙상블
선행 연구 중 운동 동작과 횟수를 counting하는 연구를 보고 운동 동작 분류가 12초(600포인트)보다 적은 시간의 데이터로 가능할 것으로 생각해 10초(500 포인트)의 데이터를 학습하도록 dataloader를 구성했습니다. 이렇게 모델을 만들어 하나의 데이터에 대해서 100번의 예측을 반환할 수 있게 됐습니다. 이 100번의 확률 예측을 앙상블 해 성능을 향상할 수 있었습니다.

3. 하이퍼 파라미터 최적화를 활용한 모델 생성 자동화
kerastuner 라이브러리를 활용해 모델에 필요한 많은 파라미터를 최적화해 좋은 모델을 찾을 수 있었고, 최적화 과정에서 좋았던 다수의 파라미터를 활용한 모델들을 앙상블 해 성능을 향상시켰습니다. 

4. 10 fold cross validation 및 앙상블
데이터가 적은 상태에서 한 세트의 train, validation 데이터로 학습했을 때, 각 라벨의 특징을 충분히 학습하기 어려울 것으로 생각해 10 fold cross validation을 수행하며 전체 데이터의 정보를 활용한 예측을 만들도록 했습니다.

마지막으로 가장 큰 노력이 들어간 것은 모델의 예측 결과를 보며 약한 라벨을 보완하기 위해 class weight를 조정했던 것이고 대회 막바지에 성능 향상을 만들어주었습니다.
다른 분들도 모두 고생하셨습니다.

---------------------------------------------------------
참고로 제출된 노트북에서 제일 아래 class들을 먼저 실행해야 코드가 돌아가게됩니다.

코드