프로젝트를 진행하며 느낀 딥러닝 프로젝트에서의 다양한 방법론을 팀원들이 말하는데 잘 못알아 듣는 내용들이 있었다. 다음 프로젝트때 걸림돌이 되지 않으려면 이런 용어들을 공부해두려고 따로 정리해야겠다.
Off-line vs On-line 학습
팀원들이 데이터에 대해 Off-line으로 데이터를 학습하자. 등의 말을 했는데, 그게 뭔지 몰랐었기 때문에 정리.
오프라인 학습
모델을 학습 시킨 뒤, 더 이상의 학습 없이 시스템에 적용하는 것.
새로운 데이터가 생성되면 전체 데이터셋을 통해 모델을 다시 학습해야 한다.
모든 데이터를 1개의 배치로 생각해 배치 학습이라고도 한다.
온라인 학습
미니 배치 단위에서 데이터를 사용해 학습하는 방법. 미니-배치 학습이라고도 한다.
실시간 반영이 중요한 시스템에서 사용된다.
학습률을 통해 변화하는 데이터에 맞춰 얼마나 빠르게 적응할 것인지 정할 수 있다.
우리 프로젝트의 경우 주어진 데이터를 통해 예측을 진행하는 대회였고, 새로운 데이터가 들어올 일이 없었으며
모든 데이터를 train/valid로 나누어 학습을 진행해야 했기에 오프라인 학습을 진행하고 있었다.
60대의 데이터를 Off-line으로 mix-up하자는 의견은 60대에 해당하는 사람들의 데이터 '전체'를 사용해 랜덤하게 두 사람의 데이터를 mix-up해 data augmentation을 진행하자는 의견이었다.
Undersampling vs Oversampling
Undersampling은 불균형 데이터 셋에서 높은 비율을 차지하는 클래스의 데이터 수를 줄임으로서 불균형을 해소한다.
하지만 학습에 사용되는 전체 데이터 수가 감소함으로서 성능이 떨어질 수 있다.
우리는 19,320장 정도의 데이터밖에 없었기 때문에 안그래도 딥러닝 치고 적은 데이터 양에서 undersampling을 진행하면 성능을 볼 수 없을 것 같아 진행하지 않았던 것 같다.
Oversampling은 낮은 비율 클래스의 데이터 수를 늘림으로서 불균형을 해소하는 아이디어이다.
우리같은 경우는 위에서 사용한 Off-line을 통한 60대 데이터 mix-up, Cutmix, remove background 데이터 추가 등 상대적으로 적은 60대의 데이터를 최대한 늘리려고 많은 방법을 적용했는데 이렇게 60대에 대해 새로운 데이터를 만듦으로서 Oversampling이 되었다. 즉 Oversampling은 부족한 클래스에 대한 'Data Augmentation'이라고 봐도 될 것 같다.
SMOTE
낮은 비율 클래스 데이터들의 K-nbn 최근접 이웃을 통해 새로운 데이터를 생성하는 기법.
KNN 이후 데이터와 K개 이웃들의 차이를 일정 값으로 만들어 기존의 데이터와 약간 차이가 나는 새로운 데이터를 생성하는 방법.
하지만 이는 정형 데이터에서 '값'으로 이루어진 데이터들에 가능한 방법인 것 같다.
이미지 데이터를 사용하는 방법에서는 CutMix, Mix-up, 다양한 augmentation을 통한 데이터 생성이 맞는 것 같다.
Imbalanced sampler
클래스 불균형이 있는 전체 dataset에서 많은 클래스에서 더 적은 비율의 sample을, 적은 클래스에서 더 많은 비율의 sample를 추출하는 방식.
프로젝트에서는 Class에 가중치를 두어 batch 단위에 존재하는 class 분포를 같게 만들었다.
Sampler 미사용 시 많은 데이터를 가진 클래스 위주로 batch가 구성된다. (3, 4번 클래스의 경우가 더 많이 뽑힌다)
Sampler 사용 이후 모든 클래스에 대해 비슷한 단위의 데이터가 뽑힌다.
'네이버 부스트캠프 학습 정리 > 7주차' 카테고리의 다른 글
7주차 회고 (0) | 2023.04.24 |
---|---|
[P-stage 1] Swin Transformer (2) | 2023.04.21 |
[P-stage 1] DenseNet (0) | 2023.04.19 |