HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

실용적인 AI/Active Learning

Active Learning을 위한 딥러닝 - Learning Loss for Active Learning

KM-Hana 2021. 2. 2. 00:04

kmhana.tistory.com/4?category=838050

 

Active Learning 이란 - 기본

dsgissin.github.io/DiscriminativeActiveLearning/about/ About An introduction to the active learning framework, from classical algorithms to state of the art methods for neural networks. A new method..

kmhana.tistory.com

을 우선 보시는걸 추천드립니다.

 

2. Active Learning을 위한, 딥러닝 

   - Core-set

   - Loss for Active Learning

   - Discriminative Active Learning

 

Loss for Active Learning에 대해서 소개하고자 합니다.

arxiv.org/pdf/1905.03677.pdf

 

※ 저자가  설명해주신 리뷰 영상입니다.

www.youtube.com/embed/9oWC8S2gpyk?start=1

 

1시간 정도니깐 한번 보시는것도 좋을거 같습니다.

 

루닛(Lunit)에서는 CBAM(Convolutional Block Attention Module)논문과 더불어 지속적으로 좋은 논문을 내고 있습니다.

 

아쉽게도 루닛 블로그에는 이 Loss for Active Learning의 리뷰가 없어,

 

이 논문에 대해서 리뷰를 하고자 합니다.

 


종합 : ⭐⭐⭐

1. 논문 중요도 : 5점

2. 실용성 : 5점

설명 : 2019년도 제 기준 인상깊은 논문 중 하나 입니다.

   - 딥러닝으로 학습 과정에서 End-to-End로 Active Leaning을 진행합니다.

   - 굉장히 좋은 아이디어를 사용했습니다.

   - 실용성도 좋습니다. Task에 무관(Task-agnostic)하며, AL을 위한 추가 Cost가 필요 없습니다.

   - 단, Diversity관점에서는 약점이 있습니다.

 

( * 개인적인 의견이며, 제 리뷰를 보시는 분들에 도움 드리기 위한 참고정도로 봐주세요)

 

Loss for Active Learning 의의

딥러닝이 AL을 같이 학습하자! 

   1. Task와 무관(Task-agnostic)한 AL

      → Classification 뿐만아니라, Detection, Human Pose estimation에서도 사용가능

      

   2. 딥러닝 모델을 End-to-End로 학습하여, AL을 할 수 있음

      ∵ Loss Prediction Module( Margin Ranking loss로 구성) 제안

 

 

Introduction

AL에서는 3가지 접근법이 있다. 

※ 참고자료: kmhana.tistory.com/5?category=838050

 

   1. Uncertainty-based

     - 간단하다.

     - Task 별로 Uncertainty를 정의해야한다(Task에 의존된다).

      

   2. Diversity-based

     - Task에 덜 의존하지만, Feature space에 대한 수정은 필요하다

 

   3. Expected Model Change

     - 작은 모델에서만 실용적으로 쓸수 있음

 

아이디어

배경 : 어떤 Task던지 어떤 Model 이던지, Loss를 통해서 학습

         → 이 Loss를 이용한 AL이라면, Task-agnostic하지 않을까?

 

발전 : 데이터의 Loss를 예측(Prediction)할 수 있다면

         → 이 Loss가 높은 데이터를 고르면 되지 않을까?

 

제안 : Loss Prediction Module

     - Uncertainty 접근법으로 볼 수 있으나, 통계적으로 Uncertainty를 추정하는 것이 아니라

       Input data에 대해 추정된 Loss에 기반함

* hard example mining과의 차이 : hard example mining은 레이블링 있는 데이터 중 어려운것을 고르는 Task

 

Loss Prediction Module 그림

모델 개요

Loss Predicted Module 구성:  

   - Global Average Pooling(GAP) 를 통해 모델 중간 Block들의 Output을 압출

      * Loss Prediction Module에서 각 Mid Block - GAP 사이에 Conv를 추가해 보았으나, 성능 향상은 없었음 

   - Concat → FC → Loss 예측값 (scalar인 \( \hat{l} \)  ) 추론

실제 세부 모델 구성도

수식 :  

   -  \( \Theta_{target} \) : Target Model

   -  \( \Theta_{loss} \) : Loss Prediction Module

   -  \( \hat{y} = \Theta\left ( x \right ) \) : Targe Task 수행 (ex : Classification, Detection 등 ) 

   -  \( \hat{l} = \Theta_{loss}\left ( h\right ) \) : Predicted Loss

   -  \( h \) : Feature set of \( x \) from \( \Theta_{target} \)

   -  \( \mathit{L}_{K}^{0}  \) : 0-회차에 사람이 레이블링 한 K개의 데이터

   -  \( \mathit{U}_{N-K}^{0} \) :  0-회차에 사람이 미-레이블링된 N-K개의 데이터

   -  \( \lambda \) : Scaling을 위한 값 ( \( \lambda = 1 \) )

 

  • target model과 Loss predicted Module 결합된 최종 Loss

$$ L_{target}\left ( \hat{y},y \right ) + \lambda \cdot L_{loss}\left ( \hat{l},l \right ) $$

 

저자는 최종 Loss 중 Predicted Loss \( \hat{l}  \) 를 어떻게 구현할지 고민하게 된다.

 

MSE vs Ranking Loss :  

MSE \( \left ( \hat{l} - l \right )^2 \) 는 적합하지 않았다.

  • Loss Prediction Module을 학습하기 위한, Label ( Target Model의 Loss 값 \( l \) )

      딥러닝 모델이 학습이 진행되는 동안 특정 값(S)으로 수렴하게된다.

  • MSE로 학습 경우, Predicted Loss가 특정 값(S)을 예측하도록 학습이 된다.

  • Loss Prediction 결과로는 중요한 데이터를 뽑을 수 없음(실험 : 성능 저하됨)

Ranking Loss(Margin Ranking loss) : Mini-Batch내의 샘플간의 비교를 사용

   -  \( \xi \) : Marigin 값 (  \( \xi = 1 \) 사용 )

 

  • \( x^{p} = \left ( x_{i}, x_{j} \right ) \) : Batch size B 일 때, B/2 data pair를 만든다.

  • \( \hat{l_{i}}, \hat{l_{j}} \) Loss 추론 값 간의 Gap이 Margin(  \( \xi \) ) 만큼 차이나도록 학습

학습을 위한 최종 Loss :  

실험 설정

Classification 중심으로 정리했습니다

* 궁금하신 분은 Object Detection과 Pose Estimation 결과는 논문에서 보시면 좋을거같습니다.

 

   - 초기 데이터 구성 : K = 1000 (label된 데이터)

   - 1회 시, 선별할 데이터 수 : 1000 건

   - FC hidden Node : 128-dim

   - Random Subset : M = 10,000

     ※ 전체 데이터에서 바로 뽑지 않고 Subset(M)을 우선 추출한 후, 그 안에서 Top-K를 추출한다.

         1. 선별된 데이터간 Correlation 문제를 해결

         2. Diversity 확보를 위해서

    - Model : ResNet-18

더보기

* 사용 모델

www.youtube.com/watch?v=9oWC8S2gpyk

 

   - Mini-batch : 128  / Epoch : 200

   - 학습 스케줄 : Loss Prediction Module은 120 Epoch까지만 학습

   - 5회 반복 실험

      ※ Active Learning은 편차가 발생하기 때문에 반복 실험을 진행합니다.

 

실험 결과

실험결과

그림 4(Fig. 4) 결과 :

  • Loss for Active learning(Ranking loss)의 결과가 가장 좋음

  • Loss for Active learning(MSE)는 Random보다는 좋았으나, 다른 방법론의 성능이 더 좋았음

 

그림 5(Fig. 5) 결과 :

  • Loss의 예측(Prediction)이 잘되고 있는지를 보여주는 그림이다.

  • Ranking acc는 순위가 맞으면 1, 틀리면 0 인 Binary score로 Test 정확도를 측정

  • Loss의 Ranking을 0.9 이상으로 맞출 수 있음

  • 단, Task가 어려워질 경우, Ranking acc는 저하됨


  • Loss for AL : 실제 Loss와 예측된 Loss와 비교시 높은 상관성(Correlation = 0.68) 이 나왔으며,

     * 저자는 Loss for AL이 더 효과적으로 informative data point를 뽑는 증거라고 설명합니다.

  • Uncertainty : 실제 Loss가 작은 data도 선별합니다. 

 

한계점

  • Diversity와 Density는 고려되지 않았음.
  • 어려운 Task일 수 록, Loss Prediction Accuracy와의 연관성이 떨어짐 

     * Loss Prediction Acc ↑ = 높은 Loss가 학습하기 좋은 Data Point (Informative)

  • 향후 : 데이터의 분포를 고려하면서, Loss Prediction Accuracy를 높히는 연구 계획

 

리뷰를 마치며..

    • Loss를 예측하는 Loss라니!

    • 간단하면서도 성능이 좋은, 너무 좋은 아이디어 였다.

    • 다음 연구가 기대가 된다.