problem : 학습 시에는 클래스당 데이터 개수가 불균형하고 test시에는 균형인 경우의 문제가 long-tail.
idea : classifier의 margin이 클래스당 개수가 많은 곳에서 더 커진다. margin을 조정해줄수 있도록 beta를 곱해주고 gamma를 더해준다. 이 과정을 그냥 전체 imbalance 데이터로 학습시킨 다음에 beta와 gamma에 대해서만 다시 학습한다.
objective : cross entropy loss + loss re-weighting
baseline : softmax, data re-sampling, loss function engineering, decision Boundary Adjustment ...
data : CIFAR-LT, ImageNet-LT, Places-LT, iNaturalist-LT
result : SOTA!
contribution : 아주 간단한 구현으로 SOTA!
limitation or 이해 안되는 부분 : test시에도 train과 같은 클래스 분포를 가질 때도 성능이 좋아지는지 모르겠음!
Details
Related Work
data re-sampling
head 클래스를 undersampling, tail 클래스를 oversampling
loss function engineering
클래스별로 loss가 더 균형있게 부과되도록 loss re-weighting. 또는 logit을 조정
decision boundary adjustment
원래 데이터 분포대로 학습하는 것이 좋은 표현을 만들지만 classifier 부분이 성능의 병목이다는 분석이 있음.
학습은 원래대로 하고 classifier를 조정하는 방법론들, Platt scaling 같은 방법을 쓰는 방법들이 있음.
Paper details
margin
margin을 아래와 같이 표현 가능
logit은 margin에 대한 식으로 표현 가능 -> n이 커지면 margin이 커지고 logit도 커짐
paper
TL;DR
Details
Related Work
Paper details
margin
margin을 아래와 같이 표현 가능
logit은 margin에 대한 식으로 표현 가능 -> n이 커지면 margin이 커지고 logit도 커짐
제안하는 방법론(MARC)의 pseudo-code
loss re-weighting도 적용했다고 함
전체 학습 과정에 대한 pseudo-code
Result