Focal Loss : Class Imbalance가 있는 경우, 맞춘 확률이 높은 class는 약한 loss를, 맞춘 확률이 낮은 class는 큰 loss를 줌으로서 balance 조정함.
Label Smoothing Loss : target의 validty가 항상 100%일 수 없다; class target label을 one hot encoding(e.g. [0,1,0, ...])하기 보단 조금 soft하게 표현, 일반화 성능을 높임(e.g. [0.025, 0.9, 0.025, ...]
Step LR
- 특정 step마다 LR 감소
CosineAnnealingLR
- Cosine 함수 형태처럼 LR을 급격히 변경
- local minima 탈출에 긍정적
- 도전적인 학습 방법
ReduceLROnPlateau
- 모니터링하며 더 이상 성능 향상이 없을 때 LR 감소
- 보편적으로 많이 씀
- 안정적인 학습 방법
Classification : Accuracy, F1-score, precision, recall, ROC&AUC ...
Regression : MAE, MSE ...
Ranking : MRR, NDCG, MAP ...
현업에선 metric을 결정해주는 사람이 없다; 데이터 상태에 따라 metric을 직접 설정하는 연습을 해야 한다. 대회의 metric들을 경험하면서 공부하자!
Accuracy : class 별로 밸런스가 적절히 분포
F1-score : class 별 밸런스가 좋지 않아 각 class 별 성능을 잘 낼 수 있는지 확인 필요
Dropout
, BatchNorm
, etc.
.zero_grad()
가 필요optimizer.step()
과 optimizer.zero_grad()
는 2번의 step마다 수행