🌌 Deep Learning/논문 리뷰 [KOR]

[딥러닝 논문리뷰] Decoupling Representation and Classifier for Long-Tailed Recognition (ICLR 2020)

복만 2021. 12. 19. 00:00

논문: https://arxiv.org/abs/1910.09217

코드: https://github.com/facebookresearch/classifier-balancing

[ENG] https://bo-10000.tistory.com/110

 

[Review] Decoupling Representation and Classifier for Long-Tailed Recognition (ICLR 2020)

Paper: https://arxiv.org/abs/1910.09217 Code: https://github.com/facebookresearch/classifier-balancing [KOR] https://bo-10000.tistory.com/109 [딥러닝 논문리뷰] Decoupling Representation and Classi..

bo-10000.tistory.com

 

 

ICLR 2020에 발표된, long-tailed dataset 관련 논문이다. 신기하게도 딱 1년 전 long-tailed dataset에 관련된 논문을 리뷰한 적이 있는데(CVPR 2019), 그때까지만 해도 class imbalance를 해결하는 방법으로 re-samplingre-weighting (class-balanced loss) 두 가지를 소개했는데, 이 논문에서 representation learning과 classification을 분리하는 two-stage method를 제안한 이후로 해당 방향으로 연구가 많이 진행된 모양이다.

 

 

 


 

 

Long-tailed dataset (class imbalance)

 

 

x축은 class index (class에 속하는 데이터 수가 많은 순으로 정렬) / y축은 각 class에 속하는 데이터 수

 

딥러닝 모델 학습을 위한 대다수의 데이터셋은 각 class에 속하는 데이터의 수가 고르게 분포되어 있다. 그러나 현실세계의 데이터는 그 분포가 고르지 않고, 일부 class에 속하는 데이터 수만 매우 많고 나머지 class에 속하는 데이터 수는 매우 적은 경우가 대부분이다. 이렇게 데이터 전체의 대부분을 차지하는 dominant한 class들을 head class라고 하고, 데이터 수가 매우 작은 class들을 tail class라고 한다. Long-tailed dataset, 혹은 class imbalance 문제를 해결하기 위한 많은 연구들이 진행되어 왔다.

 

 


 

Previous works

 

Long-tailed dataset을 해결하기 위한 방법들은 크게 세 가지로 분류할 수 있다.

 

  • 첫 번째는 Data distribution re-balancing이다. Data resampling이라고 생각하면 되는데, 쉽게 말하자면 class 별 데이터 수가 고르지 않으니, 이를 고르게 만들어주도록 하는 sampling이다. Minor class의 데이터들을 중복하여 사용하는 over-sampling이 있고, major class의 데이터들을 일부 제거하여 사용하는 under-sampling 방법 등이 있다. 당연히 데이터 하나하나가 중요한 역할을 하는 딥러닝에서, 효과적이지 못하다. Over-sampling은 overfitting의 위험이 있고, under-sampling은 데이터를 버린다는 점에서 각각 문제점이 있다.

https://www.kaggle.com/rafjaa/resampling-strategies-for-imbalanced-datasets

 

 

  • Class imbalance를 해결하기 위한 Class-balanced loss를 이용하는 방법도 있다.
    • 가장 유명한 것은 object detection을 위하여 제안된 Focal loss이다. Focal loss는 sample-wise classification loss를 재조정하는 것으로, 높은 probability로 예측한 sample의 loss에 가중치를 주어 더 어려운 sample을 보다 잘 학습할 수 있도록 도와주는 것이다. 아래 수식에서 $h_i$는 sample의 예측값(확률)이다.
      • $\mathcal{L}_\text{focal}:=(1-h_i)^\gamma \mathcal{L}_{CE}=-(1-h_i)^\gamma log(h_i)$
    • 이 외에도, 속한 데이터 개수가 작은 few-shot class가 더 넓은 margin을 가지게끔 하는 LDAM loss 등이 있다. 아래 수식에서 $\Delta_j$는 class의 margin을 의미한다.
      • $\mathcal{L}_\text{LDAM}:=-log\frac{e^{\hat{y_j}-\Delta_j}}{e^{\hat{y_j}-\Delta_j}+\sum_{c \neq j}e^{\hat{y_c}-\Delta_c}}$

(left)  Lin, Tsung-Yi, et al. "Focal loss for dense object detection." Proceedings of the IEEE international conference on computer vision. 2017. / (right)  Cao, Kaidi, et al. "Learning Imbalanced Datasets with Label-Distribution-Aware Margin Loss." Advances in Neural Information Processing Systems 32 (2019): 1567-1578.

 

 

  • 마지막 방법은 head class에서 tail class로의 transfer learning을 이용하는 것이다. 이 방법은 충분한 데이터를 포함한 head class에서 얻은 feature을 이용해, 데이터 수가 충분하지 않은 tail class의 representation learning에 이용하는 것이다. 단 이러한 방법들은 external memory 등, 특수한 module들을 필요로 하는 경우가 대다수이다.

Liu, Ziwei, et al. "Large-scale long-tailed recognition in an open world." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.

 

 


 

Motivation

 

앞서 소개한 다양한 방법들은 long-tailed recognition 문제의 성능을 효과적으로 높여왔다. 그러나 본 논문에서는 이러한 성능 향상이, 더 나은 representation을 학습함에서 오는 것인지, classifier의 decision boundary를 조정함으로써 data imbalance 문제를 해결했기 때문인지에 대한 의문을 던진다. 이 질문에 대한 답을 위해, 저자들은 long-tail recognition을 representation learningclassification 두 가지로 분리하여 실험을 진행하고 그 효과를 관찰하기로 한다.

 

  • Representation learning을 위해서, 우선 다양한 sampling strategy를 이용해 모델을 학습시킨다. Loss re-weighting을 이용하는 방법도 있으나, 본 논문에서는 이 방법은 사용하지 않는다. (그 이유는 loss re-weighting은 train과 reproducing 과정이 쉽지 않고, 대부분의 방법들이 dataset-specific하고 대규모의 hyper-parameter tuning을 포함하고 있기 때문이다. 그러나, 일반적으로 sampling strategy를 이용한 방법이 loss re-weighting보다 더 성능이 좋지 않음에도 불구하고 본 논문에서 제안하는 방법을 이용하면 SOTA loss re-weighting 방법들보다 비슷한 수준의 성능을 보인다고 말한다.)

 

  • 이후 classification을 위해, 학습된 representation들을 이용해 classifier의 decision boundary를 재조정한다. 다시 말해 위에서 학습된 모델에서 classifier (fc layer) 부분을 제거하고 해당 부분을 nearest neighbor classifier로 교체하거나, 해당 부분의 weight를 re-train하거나 재조정하는 것이다. 여기서 재조정이라 함은, 학습 단계를 거치지 않고 weight 값을 수정하는 것이다.

 

이로써 long-tail recognition 문제를 representation learning과 classification, 두 단계로 분리할 수 있다.

 

 

실험의 결과를 미리 정리하자면 다음과 같다.

  1. 예상과는 달리, 특별한 sampling strategy를 사용하지 않는 instance-balanced sampling이 가장 generalizable한  representation을 학습할 수 있다.
  2. Representation learning 이후에, classifier의 decision boundary를 재조정함으로써 long-tailed recognition의 성능을 높일 수 있다.
  3. 이러한 decoupling learning scheme을 이용함으로써, 훨씬 복잡하고 정교한 기존의 SOTA 모델들 (OLTR, LDAM 등)보다 더 높은 성능을 낼 수 있다.

 


 

Methods

Notation.

우선 본 논문에서 사용하는 notation을 정리한 후, representation learning에서 사용하는 4가지의 sampling strategy와 4가지의 classification model을 소개하겠다.

 

  • $X=\{x_i,y_i\}$, $i\in\{1,...,n\}$: training set
    • $x_i$:, $y_i$: label
    • $n_j$: class $j$에 속하는 training sample의 개수
      • $n=\sum_{j=1}^Cn_j$: training sample의 총 개수를 의미한다. ($C$: class의 개수)
      • class index는 각 class에 속하는 sample의 개수가 많은 순서대로 정렬되어 있다고 하면,
      • long-tail setting에서 $n_1 >> n_C$를 만족한다.

 

Representation learning과 classification stage를 분리하였으므로, 각 단계의 notation은 다음과 같다.

 

  • $f(x;\theta)=z$ : representation for $x$
  • $\tilde{y}=\text{argmax} g(z)$ : final class prediction
    • 일반적인 경우 $g(z)=W^Tz+b$이다. 

 

 

 

Sampling strategies.

Representation learning의 영향을 조사하기 위해, 4가지의 sampling strategy를 사용해 모델을 학습시켰다.

 

class $j$에서 data가 추출될 확률은 다음과 같이 표현된다.

 

$p_j=\frac{n^q_j}{\sum_{i=1}^Cn_i^q}$

 

이때 $q$는 0과 1 사이의 값으로, sampling strategy에 따라 결정된다.

$n_j$는 앞서 설명했던 바와 같이 class $j$에 속하는 sample의 갯수이다.

 

  1. Instance-balanced sampling
    • 일반적인 sampling이다. 각 sample은 속하는 class와 관계없이 추출될 확률이 모두 동일하다.
    • $q=1$
    • 이 경우 class $j$에 속하는 sample이 추출될 확률은 해당 class의 sample 갯수 $n_j$에 비례한다.
  2. Class-balanced sampling
    • 각 class는 추출될 확률이 모두 동일하다.
    • $q=0$, 즉, $p_j=1/C$.
    • 이는 two-stage sampling strategy로 볼 수도 있는데 - 우선 class가 uniform하게 선택되고, 이후 선택된 class 내에서 sample을 uniform하게 추출하는 것이다.
  3. Square-root sampling
    • 위의 두 sampling 방법의 중간이라고 생각하면 된다.
    • $q=1/2$
  4. Progressively-balanced sampling
    • 처음에 instance-balanced sampling으로 시작하였다가, train이 진행됨에 따라 점차적으로 class-balanced sampling으로 변해가는 방법이다.
    • $p_j^{\text{PB}}(t)=(1-\frac tT)p_j^{\text{IB}}+\frac tT p_j^{\text{CB}}$
      • $t$: current epoch, $T$: total number of epochs

4 Sampling strategies. (Left) Instance-balanced sampling은 class에 속하는 sample의 개수와 상관없이 모든 sample에 대해 같은 확률로 추출하기 때문에 class에 속하는 sample 수와 class가 추출될 확률이 비례하지만, class-balanced sampling은 각 class가 추출될 확률이 모두 동일하다. (Right) Progressively-balanced sampling은 epoch=0일 때에는 instance-balanced sampling과 동일하나 epoch가 진행되어 갈수록 class-balanced sampling과 같이 변화한다.

 

 

 

Classification for long-tailed recognition.

Representation learning에서 사용된 classifier은 $W$와 $b$로 구성된 linear classifier으로, 다음과 같다. (Appendix B.6, B.7에서 다른 종류의 classifier에 대한 실험도 진행한다)

 

$W^Tf(x_i;\theta)+b$

 

여기에서는 이 classifier을 다른 것으로 교체하거나, weight을 재조정하는 4가지의 방법을 소개한다. 그리고 이들은 classifier을 재조정하지 않은 Joint learning scheme과 비교된다.

 

  1. Classifier Re-training (cRT)
    • representation model $f$는 고정한 채로, classifier weight $W$, $b$를 random하게 re-initialize한 후 class-balanced sampling을 이용하여 적은 수의 epoch동안 classifier을 재학습시킨다.
  2. Nearest Class Mean classifier (NCM)
    • representation model $f$에서 얻은 각 class의 mean feature representation을 계산하고, 이를 이용해 nearest neighbor search를 한다. Distance metric은 cosine similarity나 Euclidean distance를 이용한다.
    • 추가적인 training이 필요없다.
  3. $\tau$-normalized classifier ($\tau$-normalized)
    • Instance-balanced sampling을 이용한 joint learning (representation learning+classifier learning) 이후, classifier의 각 weight의 norm $||w_j||$가 class에 속하는 sample의 수 $n_j$와 연관성이 있음을 발견했다. (이에 대한 분석은 아래 Experiment에서 진행한다.)
    • 그리고 이를 class-balanced sampling을 이용해 classifier을 re-training 시켰을 때 (cRT), norm들이 서로 비슷해짐을 발견했다.
    • 따라서, classifier re-training을 거치지 않고, 단순히 이 norm 값들만 재조정해준다면 그에 준하는 효과가 있지 않을까 라는 발상이다.
    • classifier weight norm을 다음과 같이 조정해 준다.
      • $\tilde{W}=\{\tilde{w_j}\}$, $\tilde{w_i}=\frac{w_i}{||w_i||^\tau}$
      • 이때 $\tau\in(0,1)$는 "temperature"라는 이름의 hyperparameter로,
      • $\tau=1$이면 L2-normalization과 동일해지며,
      • $\tau=0$이면 scaling을 하지 않는 것과 같다.
    • 역시 추가적인 training이 필요하지 않다.
    • 본 논문에서는 validation set을 이용해 $\tau$를 탐색했다. 각 dataset 별로 사용된 값은 다음과 같다. 
      • ImageNet_LT: 0.7 / iNaturalist: 0.3 / Places-Lt: 0.8
  4. Learnable weight scaling (LWS)
    • 위의 $\tau$-normalization을 다르게 생각하면, 각 class에 상응하는 weight의 magnitude를 re-scaling해주는 과정이라고 볼 수 있다.
      • $\tilde{w_i}=f_i*w_i$, where $f_i=\frac{1}{||w_i||^\tau}$.
    • 이 때 $f_i$를 learnable 한 parameter로 설정하는 방법을 생각해볼 수 있다.
    • cRT와 마찬가지로, class-balanced sampling을 이용하여 $f_i$만 learnable parameter로 두고 re-training을 시키는 것이 이 방법이다.
    • 이 경우 representation은 마찬가지로 고정해두고 $f_i$만 train시킨다.

 


 

Experiments

Experimental setup.

  • Dataset. Places-LT, ImageNet-LT, iNaturalist 2018
  • Evaluation Protocol. top-1 accuracy를 사용했으며, 모든 class (All), 100장 이상 image를 포함한 class (Many-shot), 20~100장의 image를 포함한 class (Medium-shot), 20장 이하의 image를 포함한 class (Few-shot)로 분류하여 결과를 report했다.
  • Implementation. PyTorch를 이용했으며, ResNet, ResNext 등을 backbone으로 사용했다. Representation learning stage에서는 90 epoch, cRT나 LWS 등 classifier의 학습이 필요한 경우에는 10 epoch동안 훈련시켰다. 더 자세한 implementation detail은 논문을 참고바람.

 

 

Result-1. Sampling strategies and decoupled learning.

실험결과는 위의 그림과 같고 그에 대한 분석은 다음과 같다.

  1. Sampling matters when training jointly.
    • Joint training의 경우를 보면, 더 나은 sampling strategy를 이용할수록 성능이 향상되었다. (P>S>C>I)
    • 이는 더 나은 sampling method를 제안하는 방향으로 연구되어 온 기존의 연구들과 일치한다.
  2. Joint or decoupled learning?
    • Decoupled method를 사용하는 것이 항상 더 좋은 결과를 보였다.
    • Representation과 classifier을 분리하는 방법의 타당성을 보다 증명하기 위해, network의 각 부분을 fine-tuning 해 보았다. 결과는, 전체 network를 fine-tuning하는 것이 가장 낮은 성능을 보였으며 본 논문에서 제시한 바와 같이 representation을 frozen하는 것이 가장 좋은 결과를 보였다.
  3. Instance-balanced sampling gives the most generalizable representations
    • 놀랍게도, instance-balanced sampling을 이용해 representation을 학습한 경우가 classifier을 재조정 이후 가장 좋은 성능을 보였다.
    • 이는 data imbalance가 좋은 representation을 학습하는 데에 큰 영향을 미치지 않을 수도 있음을 의미한다.

 

 

Discussion - How to balance your classifier?

  • Training 과정이나, data imbalance 해소를 위한 추가적인 sampling strategy의 사용을 필요로 하지 않는 NCM과 $\tau$-norm이 cRT와 비슷하거나 더 높은 성능을 보이는 것은 놀라운 일이다.
  • 이는, 각 class의 decision boundary를 재조정한다는 점에서부터 얻은 이득일 것으로 예상된다.
  • Joint classifier의 weight norm은, method에서 언급했던 바와 같이, 상응하는 class에 속하는 sample의 수와 상관관계가 있다. Weight norm이 크다는 것은, feature space에서 더 넓은 classification boundary를 가지고 있다는 것과 같다. 따라서 이 경우 더 많은 sample을 가진 class가 더 넓은 classification boundary를 가지게 되고, 이러한 class들에서 더 높은 accuracy를 갖게 되는 것이다.
  • Effect of $\tau$: $\tau$가 커질수록, many-shot accuracy가 급격히 감소했으며 few-shot accuracy가 급격히 증가하였다.

 

 

Result-2. Comparison with the state-of-the-art on long-tailed datasets.

  • OLTR을 비롯한 다양한 SOTA method들과 비교한 결과이다.
  • Training이 필요하지 않는 NCM method 조차 대부분의 SOTA method들보다 더 높은 성능을 보이고,
  • classifier weight을 re-balancing하는 $\tau$-normalized, LWS는 그 방법이 매우 간단함에도 불구하고 모든 SOTA method들보다 더 높은 성능을 보인다.

 


 

Conclusions

  • long-tailed recognition과 관련된 많은 learning scheme들을 조사하고 실험하였다.
  • Representation과 classifier의 joint learning과, 다양한 decoupled method를 비교하였다.
  • Joint learning의 경우 sampling strategy가 유의미한 영향을 끼쳤으나, 무작위 추출인 instance-balanced sampling이 가장 generalizable representation을 학습할 수 있었으며 복잡한 loss나, memory unit 등 없이도 classifier weight의 re-balancing이후에 SOTA 성능을 보였다.
  • 3개의 long-tailed benchmark에 새로운 SOTA 성능을 기록했다.
반응형