반응형

논문 링크 : LL4AL
Learning Loss for Active Learning 논문 리뷰입니다.

Introduction

Data는 넘쳐나지만, Neural Network는 여전히 많은 데이터를 요구한다. 더 많은 데이터 학습을 위해 semi-supervised learning, unsupervised learning 등 다양한 학습법들이 주목받고 있다. 그러나 주어진 데이터의 양이 고정되어 있을 경우, semi-supervised 또는 unsupervised learning의 성능은 여전히 fully-supervised learning의 성능을 넘지 못한다. semi-supervised learning에 대한 실험 결과는 annotation이 있는 data의 비율이 높을수록 더 뛰어난 성능을 보장함을 보인다. 이로 인해 labeling작업의 노동과 시간 비용에 시달리게 된다.

 

annotation 작업은 분류를 위한 class label 작업은 비교적 저렴하지만 object detection을 위해서는 비용이 많이 드는 bounding box annotation이 필요하다. annotation 작업에 사용할 수 있는 예산은 제한적이다. 이 예산을 효율적으로 사용하기 위해서 모델이 불확실한 data point를 능동적으로 선택하는 active learning을 처음으로 제안하였다.

 

Active learning의 핵심 아이디어는, 무작위로 선택된 data보다 모델 개선에 더 많은 정보를 제공하는 data가 더 유익하다는 점이다.

unlabeled data를 고려할때, 세가지의 접근 방식이 존재한다.

  1. uncertainty-based approach
    • 불확실성을 정량화하고 이를 측정하여 불확실성이 높은 data를 선택
    • 예측된 class의 posterior probability를 이용하여 불확실성을 정의할 수 있다.
    • 예측된 class와 두번째로 높은 probability를 가진 class간의 margin을 기준으로 삼을 수도 있다.
  2. diversity-based approach
    • unlabeled pool 전체의 분포를 대표할 수 있는 다양한 data를 선택
    • data가 주변 data들과 얼마나 가까운지를 고려해, knowledge를 잘 전파할 수 있는 data를 선택할 수 있다.
  3. expected model change
    • 해당 data의 label을 알게 되었을 때 model의 파라미터나 output에 가장 큰 변화를 유발할 data를 선택
    • model 성능 향상을 위한 정교하고 의사결정 이론 기반의 접근법 (gradient, future error, output change 등)

본 논문에서는 task-agnostic하면서 단순하고, Neural Network에서도 좋은 성능을 보이는 AL 기법을 제안한다.

만약 특정 data의 loss를 예측할 수 있다면, 높은 loss가 예상되는 data를 선택하여 학습에 활용할 수 있다. 이러한 data는 현재 model에 더 많은 정보를 제공할 가능성이 크다. 이를 위해, Network에 "loss prediction module"을 부착하여 input data의 loss를 예측하도록 학습시킨다.

이 방법을 통해 human pose estimation, object detection, image classification 세가지 작업을 통해 검증하였다. 각각의 task에서 기존 방법들을 꾸준히 능가하는 성능을 보였다.

 

본 논문에서 제안하는 방법은 불확실성 기반 접근에 속할 수 있지만, input을 바탕으로 loss를 예측한다는 점에서 차별화되며, annotation이 없는 상태에서 작동한다는 점에서 기존의 방법들과 명확히 구분된다.

Method

Overview

  • $\Theta_{target}$ : target model
  • $\Theta_{loss}$ : loss prediction module
  • $\hat{y}=\Theta_{target}(x)$ : prediction
  • $\hat{l} = \Theta_{\text{loss}}(h)$ : loss prediction
  • $\mathcal{U}_{N}$ : a large pool of unlabeled data
    • $N$ : the number of data
    • $K$ : sample data

 

  1. $\mathcal{U}_{N}$에서 무작위로 $K$개의 data를 균일샘플링하여 human oracle이 label을 부여한다.
  2. 초기 labeling data($\mathcal{L}_{K}^{0}$)를 구성
    • unlabeled pool은 $\mathcal{U}_{N-K}^{0}$으로 줄어든다.
      • $0$ : 초기 단계
  3. $\mathcal{L}_{K}^{0}$을 이용해 initial $\Theta_{target}^{0}$과 initial $\Theta_{loss}^{0}$을 joint learning한다.
  4. $\mathcal{U}_{N-K}^{0}$의 모든 data에 대해 $\hat{l}$을 계산한다.
  5. 가장 높은 $K$개의 data를 선택하면 human oracle은 labeling한다.
  6. $\mathcal{L}_{2K}^1$을 만든다.
  7. 이후 $\Theta_{target}, \Theta_{loss}$를 업데이트하며 반복한다.
    • 목표성능에 도달하거나 annotation budget이 소진될때 까지.

Loss Prediction Module

본 논문의 task-agnostic active learning의 핵심 요소로 target model에서 정의된 loss를 모방하도록 학습된다.

목적:

  1. task-specific uncertainty를 새로 정의하는데 드는 비용을 최소화.
  2. Deep Neural Network를 학습시키는데 드는 budget을 추가로 증가시키지 않도록, 모듈 자체의 계산 비용 최소화

이를 위해 loss prediction module은 target model보다 훨씬 작게 구성하였으며, target model과 jointly learning하며 별도의 train 단계가 필요없다.

  • target model의 mid-level block 사이에서 추출한 feature map $h$가 input으로 들어온다.
  • 각 feature map은 global average pooling(GAP)와 fully-connected layer를 통해 고정된 차원의 feature vector로 압축된다.
  • 이후 이 vector를 concat한 후, 또 하나의 FC-layer를 거쳐 scalar value $\hat{l}$를 출력한다.

여러 계층 간 연결을 통해, 모듈은 loss 예측에 유용한 계층간 정보를 선택적으로 활용할 수 있다. 이와같은 two-story module은 target model에 비해 메모리와 계산량이 매우 작다. 또한 이 module을 더 깊고 넓게 만들어도 성능은 크게 개선되지 않는다.

Learning Loss

loss prediction module을 어떻게 학습하는지 설명한다.

$s$번째 active learning 단계가 시작되었다고 가정

  • 라벨링된 데이터셋 $\mathcal{L}_{K\cdot (s+1)}^{s}$ , model set ${\Theta_{\text{target}}, \Theta_{\text{loss}}}$이 주어진다.
  • 이 단계에서의 목표는 모델 세트를 학습하여 ${\Theta_{\text{target}}^s, \Theta_{\text{loss}}^s}$를 얻는 것이다.

주어진 학습 데이터 포인트 $x$에 대해,

  • $\Theta_{\text{target}}$은 예측값 $\hat{y} = \Theta_{\text{target}}(x)$를 출력하고,
  • $\Theta_{\text{loss}}$는 여러 hidden layer로부터 추출한 feature $h$를 입력받아 예측 loss인 $\hat{l} = \Theta_{\text{loss}}(h)$를 출력한다.

data $x$에 대한 정답 label $y$가 주어졌을 때, target model 의 loss는 아래와 같이 계산된다.
$$l = L_{\text{target}}(\hat{y}, y)$$

이때 loss $l$은 feature $h$에 대한 ground-truth loss가 되므로, loss prediction module의 학습을 위해 다음과 같이 계산된다.
$$L_{\text{loss}}(\hat{l}, l)$$

따라서, target model과 loss prediction module을 joint learning하기 위한 최종 loss 함수는 다음과 같이 정의된다.
$$L_{\text{target}}(\hat{y}, y) + \lambda \cdot L_{\text{loss}}(\hat{l}, l) \tag{1}$$

  • $\lambda$ : 두 loss 간의 균형을 조절하는 스케일 상수이다.

loss prediction을 위한 loss는 MSE를 생각할 수 있지만, target model이 학습하면서 $l$의 scale이 감소하기 때문에 이를 맞추기 보다 변화하는 scale에 적응하는데 집중이 된다. 실제로 학습을 했지만, 좋은 loss 예측 성능을 얻는데 실패했다.

 

loss prediction module이 효과적으로 학습되기 위해서는, loss $l$의 전체적인 scale shift를 무시할 수 있어야 한다.

해결책은 샘플 pair를 비교하는 방식이다.

 

$s$번째 학습 단계에서, 라벨링된 데이터셋 $\mathcal{L}^{s}_{K\cdot(s+1)}$로부터 mini-batch $B^s$를 구성한다고 하면, mini-batch의 크기가 $B$일 때, $B$는 짝수여야 하며, 총 $B/2$개의 쌍을 만들 수 있다. 각각의 pair는 ${x^{p}=(x_{i}, x_{j})}$ 로 정의된다.

 

loss prediction module을 학습할 때, pair 사이의 예측 loss 차이에만 주목함으로써 전체적인 loss 스케일 변화를 완전히 제거할 수 있다. 이를 위해 loss prediction module의 loss는 아래와 같이 정의된다.
$$
\begin{align}
L_{\text{loss}}(\hat{l}^{p}, l^{p}) = &\max \left(0, -\mathbb{I}(l_{i}, l_{j}) \cdot (\hat{l}_{i} - \hat{l}_{j}) + \xi \right) \\
&\text{s.t.} \quad \mathbb{I}(l_{i}, l_{j}) = \begin{cases} +1, & \text{if } l_{i} > l_{j} \\ -1, & \text{otherwise} \end{cases} \quad (2)
\end{align}
$$

  • $\xi$ : pre-difined positive margin

예를 들어 $l_i > l_j$인 경우, 모듈이 $\hat{l}_i > \hat{l}_j + \xi$를 만족시킬 때에는 loss가 발생하지 않는다. 즉 $l_{i} > l_{j}$인 경우 $\hat{l}_{i} > \hat{l}_j$가 되도록 학습하는 것이다.

 

$s$번째 active learning 단계에서 주어진 mini-batch $B^s$에 대해, $\Theta_{\text{target}}$과 $\Theta_{\text{loss}}$을 joint learning하기 위한 최종 loss 함수는 다음과 같이 정의된다.


$$\begin{align}
\frac{1}{B} \sum_{(x,y) \in \mathcal{B}^{s}} L_{\text{target}}(\hat{y}, y) + \lambda \frac{2}{B} \cdot \sum_{(x^{p}, y^{p}) \in \mathcal{B}^{s}} L_{\text{loss}}(\hat{l}^{p}, l^{p}) \\
\hat{y} = \Theta_{\text{target}}(x) \\
\text{s.t.} \quad \hat{l}^{p} = \Theta_{\text{loss}}(h^{p}) \quad (3) \\
l^{p} = L_{\text{target}}(\hat{y}^{p}, y^{p}).
\end{align}$$
위 final loss를 최소화함으로써, task-specific한 가정 없이 $\Theta^s_{\text{target}}$과 $\Theta^s_{\text{loss}}$를 동시에 얻을 수 있다.

 

학습 과정은 효율적인데, 그 이유는 loss prediction module $\Theta^s_{\text{loss}}$가 소수의 파라미터만을 가지도록 설계되었으며 동시에 target model의 풍부한mid-level representations $h$를 효과적으로 활용하도록 구성되었기 때문이다. 이렇게 학습된 loss prediction module은 다음 active learning 단계인 $s+1$에서 가장 informative한 데이터 포인트를 선택하고, 이에 대해 human oracle에게 주석을 요청하게 된다.

Evaluation

모든 작업에서 초기 라벨링 데이터셋 $\mathcal{L}^0_K$은 전체 데이터셋 $\mathcal{U}_N$에서 무작위로 $K=1000$개를 샘플링하여 구성한다. 이후 각 active learning 주기에서는, 새로 라벨링된 $K=1000$개의 데이터를 추가하여 모델을 지속적으로 학습한다.

loss 함수 (식 (2))에 정의된 margin $\xi$는 1로 설정하였다. Figure 2에 나타난 FC 구조 중 마지막 FC를 제외한 나머지 층들은 128차원의 feature를 생성하도록 설계하였다.

 

다른 Task (object detection, human pose estimation)는 논문 참고.

Image Classification

이전 연구에서는, $\mathcal{U}_{50{,}000}$처럼 매우 큰 풀에서 불확실성이 높은 $K$개의 샘플만 직접 선택하는 방식은 선택된 $K$개의 이미지들 간에 overlap이 많아 성능이 저하되는 문제를 지적하였다. 이 문제를 해결하기 위해 각 active learning 단계마다 전체 풀 $\mathcal{U}_N$에서 무작위로 하위 집합 $S_M \subset \mathcal{U}_N$을 추출하고 그 중에서 불확실성이 가장 높은 $K$개의 샘플을 선택하는 방식을 제안하였다.

 

본 논문에서는 이를 채택하여 subset의 size를 $M = 10{,}000$으로 설정하였다.
각 active learning 사이클마다 model set ${\Theta^s_{\text{target}}, \Theta^s_{\text{loss}}}$을 200 epoch동안 학습한다. 또한, 120 epoch이후부터는 loss prediction module로부터 target model로의 gradient를 차단한다. loss prediction loss의 스케일 계수 $\lambda=1$로 설정하였다.

Comparison targets

  1. Random sampling
  2. Entropy-based sampling
    • softmax output으로부터 entropy를 계산
  3. Core-set sampling
    • distribution-based approach의 기법
    • K-Center-Greedy 알고리즘을 구현하여 사용


"learn loss"로 표기된 제안한 방법은 모든 active learning 사이클에서 가장 높은 성능을 달성하였다.

  • 마지막 사이클에서 제안 방법은 Accuracy 0.9101을 기록하였다.
    • entropy 방법보다 0.42%, core-set 방법보다 0.91% 더 높은 성능이다.

분류 작업에서는 entropy 기반 방법과의 성능 차이가 작지만, 제안된 방법은 보다 복잡하고 다양한 타겟 작업에 효과적으로 확장 가능하다.

loss prediction module의 성능을 측정하기 위한 평가 지표를 정의하였다.

  • 데이터 포인트 쌍 기준
    • 예측된 ranking이 실제 순서와 일치하면 1점
    • 그렇지 않으면 0점을 부여한다.

이렇게 얻은 binary score들을 모든 쌍에 대해 평균하여 ranking accuracy라는 값으로 표현한다.

loss prediction module의 ranking accuracy가 라벨링 데이터가 추가됨에 따라 점점 향상되는 모습을 보여준다.
최종적으로는 0.9074의 ranking accuracy에 도달한다.

반면, $\lambda=0.1$로 설정하여 MSE를 사용해 loss prediction module을 학습한 경우

  • Figure 5에서 loss 예측 정확도가 낮다.
  • Figure 4에서 active learning 효율도 떨어지는 결과를 보였다.

Limitations and Future Work

  • 본 논문에서는 현재의 딥 네트워크와 다양한 작업에 적용 가능한 새로운 active learning 방법을 제안하였다.
  • 제안 기법이 제공하는 불확실성 점수(uncertainty score)는 효과적이었지만, 데이터의 diversity이나 density는 고려되지 않았다.
  • object detection이나 human pose estimation과 같은 복잡한 과제에서는 loss 예측 정확도가 상대적으로 낮았다.

향후 연구

  • data distribution을 반영하는 방법을 탐색
  • loss prediction module의 정확도를 향상시킬 수 있는 architecture 및 objective function를 설계하는 방향으로 연구를 지속할 계획
반응형