논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Matching Networks for One Shot Learning

1 Introduction

2 Model

  • One-shot learning 문제를 풀기 위하여 논문에서 제안하는 non-parametric 방법을 2개의 부분으로 나누어 설명하고자 한다.
  • 첫번째는 최근 제안된 Neural networks augmented with memory의 방법을 이용하여, support set $S$가 주어졌을 경우, 함수 $c_S$를 정의하도록 하는 매핑 함수 $S \rightarrow c_S(\cdot)$을 찾는 것이다.
  • 두번째는 support set $S$로부터 one shot learning을 하기 위한 학습 전략을 구축한 것이다.

2.1 Model Architecture

  • 이 논문의 기여는 one-shot learning 문제를 set-to-set 프레임웍에 맞춘 것이다.
  • 중요한 점은, Matching Networks가 네트워크에 별다른 수정 없이 그동안 보지 않았던 클래스의 레이블을 탐지할 수 있도록 하는 것이다.
  • 좀더 정확하게 말하면, 적은 수 $k$개의 support set 이미지 쌍 $S = \{ (x_i, y_i) \}_{i=1}^k$이 주어졌을 때, 이것을 분류기 $c_S(\hat{x})$으로 매핑하도록 한다. 이 분류기는 테스트 이미지 $\hat{x}$가 주어질 경우, 출력 $\hat{y}$에 대한 확률 분포를 정의한다.
  • 이 매핑 $S \rightarrow c_S (\hat{x}) $을 여기에서는 $P(\hat{y}|\hat{x}, S) $로 정의하고, $P$로써 파라미터화된 신경망을 사용하였다.
  • 따라서 one-shot learn을 하기 위해 새로운 support set $S'$가 주어졌을 때, 신경망 $P$를 이용해서 각 $\hat{x}$에 맞는 적절한 $\hat{y}$을 $P(\hat{y}|\hat{x}, S')$을 이용하여 추정할 수 있도록 한다.
  • 보통, unseen 샘플과 support set $S$가 주어졌을 경우, $\arg \max_y P(y | \hat{x}, S)$으로 선택한다.
  • 논문에서 사용한 모델은 간단한게 다음과 같이 계산한다.

$$ \hat{y} = \sum_{i=1}^k a(\hat{x}, x_i) y_i $$

  • 여기서 $x_i, y_i$는 support set $S = \{ (x_i, y_i) \}^k_{i=1}$의 각 샘플과 레이블을 의미한다.
  • $a$는 attention mechanism으로 뒤에서 설명할 것이다.
  • 위 식에서 $a$는 support set의 label들의 선형 결합으로 출력을 사용하고 있다. 만약 $a$가 $X \times X$ 공간에서의 커널이라고 한다면, 위 식은 kernel density estimator의 한 종류라 할 수 있을 것이다. 또, 어떤 주어진 distance metric을 사용하였을 때 $a$를 $\hat{x}$에서 멀리 떨어진 $b$개의 $x_i$는 0으로 그렇지 않은 경우 적당한 상수의 값으로 계산한다면 위 식은 $k-b$-nearest neighbours로 볼 수도 있다. 따라서 위 시근 KDE나 kNN 방법을 포함한다고 이야기 할 수 있다.
  • 또 다른 관점으로는 $y_i$를 $x_i$에 연결되어있는 연관 메모리(associative memory)로 생각한다면, support set의 한 샘플을 가리켜(point) 레이블을 추출하는 역할이라고 생각할 수도 있다.
  • [2]의 연구와는 달리 non-parametric 방법이기 때문에 분류기 $c_S(\hat{x})$는 더 유연하고 어떠한 support set에도 잘 적용할 수 있다.

2.1.1 The Attention Kernel

  • $a$를 정하는 방법이 결국 분류기를 정의하는 방법인데, 여기에서는 가장 간단한 것으로 다음과 같이 cosine distance $c$의 softmax를 사용하였다.

$$ a(\hat{x}, x_i) = e^{c(f(\hat{x}), g(x_i))} / \sum_{j=1}^k e^{c(f(\hat{x}), g(x_j))} $$

  • 여기서 $f$와 $g$는 $\hat{x}, x_i$를 임베딩하기 위한 함수로 신경망을 사용한다. $f=g$으로 사용해도 된다.
  • 실험에서는 $f, g$를 VGG나, Inception, 그리고 언어 분야에서 사용하는 간단한 폼으로 실험하였다.
  • Metric learning과 관련지어보자면, 분류 함수는 discriminative하다. $S$와 $\hat{x}$가 주어졌을 경우, 분류기는 $\hat{x}$가 $y'=y$인 $(x', y') \in S$은 충분히 정렬되고(aligned), 나머지들은 비정렬(misaligned) 되기만 하는 것으로도 그 역할을 충분히 한다.
  • 이러한 로스는 Neighborhood Component Analysis (NCA), triplet loss, large margin nearest neighbor와 관련된다.
  • 하지만 one-shot classification을 이후새ㅓ 여러 클래스에서 정교하게 정렬하는 것이 최적화 목적이므로 이것들보다는 잘 될것이라 기대한다.
  • 또한 이 loss는 간단하고 미분 가능하기에 최적화 파라미터를 end-to-end로 학습할 수 있다.

2.1.2 Full Context Embeddings

  • 이 논문의 특징은 기존의 neural networks with external memories 프레임워크를 one-shot learning으로 재해석한 것이다.
  • Metring learning과도 관련된 임베딩 함수 $f, g$는 앞의 식에 의한 분류 정확도를 최고 끌어올리기 위하여 특징 공간 $X$로 끌어올리는 역할을 한다.
  • 분류 작업은 $P(\cdot | \hat{x}, S)$ 과 같이 support set에 의해 완전히 조건지어져(fully conditioned) 있음에도 불구하고, 각 요소 $x_i$는 support set의 다른 요소들에 관계없이 비종속적으로 오직 $g(x_i)$에 의해서만 임베디드 되며, 때문에 적용하였던 cosine similarity는 근시안적으로 작동된다.
  • 더군다나 $S$는 $f$를 통해 테스트 이미지 $\hat{x}$를 어떻게 임베딩할지도 변경할 수 있어야 한다.
  • 따라서 $g$를 $g(x_i, S)$로 만들어 $x_i$뿐 아니라 $S$ 모두를 입력 받도록 하여 어떻게 $x_i$를 임베딩할지도 변경할 수 있도록 하였다.
  • 이렇게 하면 어떤 요소 $x_j$가 $x_i$에 매우 가까워 차라리 임베드 하는 함수를 바꾸는게 유리할 경우를 처리할 때 유용하다.
  • 이를 위해 bidirectional Long-Short Term Memory (LSTM)을 이용하여 support set $S$의 컨텍스트 안에서 $x_i$를 임베드 하도록 하였다. 이때 $S$는 순차 데이터로 간주하엿다.
  • 또한 $f$ 함수에서도 LSTM을 통한 read-attention을 적용하였다.

$$ f(\hat{x}, S) = \text{attLSTM}(f'(\hat{x}), g(S), K) $$

  • 여기서 $f'(x)$는 LSTM의 입력으로 들어가는 특징인데, 각 타임 스텝마다 일정한 값을 사용한다.
  • $K$는 고정된 값으로 STM의 언롤링 스텝이다.
  • $g(S)$는 $g$에 의해 임베딩된 우리가 attend할 대상이다.
  • 이 방법을 통해 support set의 어떤 요소들은 무시할 수 있는 능력과 attention 계산에 깊이를 추가하는 효과가 있다.

2.2 Training Strategy

  • 앞에서 이야기한 것처럼 Matching Networks는 $S \rightarrow c(\hat{x})$의 매핑 작업을 수행한다.
  • 이 모델은 학습 중에 한번 도 보지 않았던 클래스를 포함하는 support set $S'$ 을 사용할 때에도 잘 작동하여야 한다.
  • 우리가 해야할 작업을 $T$이라고 하고 가능한 레이블들을 $L$이라고 하자. 각 레이블은 일정한 데이터들을 가지며, 적은 수의 샘플들로 구성되어잇다고 하자.
  • 한번의 그래디언트를 계산하고 모델을 업데이트하기 위한 한 번의 에피소드(episode)는 다음과 같이 진행한다.
  • 먼저 $T$로부터 $L$을 샘플링하고, $L$을 이용해서 support set $S$와 batch $B$를 샘플링한다.
  • Matching Net을 batch $B$의 레이블을 support set $S$의 조건하에 에러를 줄이도록 최적화한다.
  • 이것은 마치 meta-learning처럼 동작하는데, 명시적으로 학습하는 방법을 배우는 것과 같은 작업이기 때문이다.
  • Matching Nets은 다음의 목적 함수를 최적화한다.

$$\theta = \arg \max_\theta E_{L \sim T} \big[ E_{S \sim L, B \sim L} \big[ \sum_{(x, y) \in B} \log P_\theta (y | x, S) \big] \big]$$

  • 이렇게 학습된 모델은 새로운 레이블의 다른 분포 $S' \sim T'$에서도 잘 작동한다.
  • 더군다나 이 모델은 학습에 사용되지 않았던 클래스에 대해서 파인튜닝하지 않아도 된다.
  • 하지만 $T'$가 $\theta$를 학습할 때 사용했던 $T$에서 멀어져 발산하게 되면 당연하게도 이 모델은 잘 동작하지 않는다.

3 Related Work

4 Experiments

  • 모든 실험은 N-way k-shot learning 작업을 수행하였다.
  • 각 방법들은 학습할 때 보여주지 않았던 $N$개의 클래스에서 $k$개의 레이블링된 샘플을 입력 받아 이들을 N개 클래스중 하나로 분류하는 작업이다.
  • 따라서 랜덤하게 찍는 성능은 $1/N$이 될 것이다.
  • $L'$은 one-shot에서만 쓰이는 레이블로 특별한 언급이 없는 한 학습은 $\neq L'$에 대해서만 이루어졌으며, 테스트는 $L'$에서 one-shot mode로 이루어진다.
  • Omniglot, ImageNet, Penn Treebank 세개의 데이터셋에 대해서 실험하였다.

4.1 Image Classification Results

  • 픽셀을 직접 쓰는 방법, discriminative 특징에서 수행되는 방법(Baseline classifier), MANN, Convolutional Siamese Net 4개의 베이스라인을 가정하였다.
  • Baseline classifier을 학습할 때 N개의 클래스를 빼는 것은 공평하지 않기 때문에 네트워크의 마지막 레이어를 이용해서 nearest neighbor matching을 사용하도록 하였다. Siamese Net 또한 마찬가지 방식을 사용하였다.
  • 파인 튜닝은 $L'$에서 뽑은 $S'$에 대해서 수행하였다. 이 방법은 오버피팅을 낳을 수 있찌만, 이 네트워크에서는 highly regularized되어 높은 성능을 얻을 수 있었다.
  • 파인튜닝이 되더라도 one-shot 환경이 될 수 있도록 $L'$의 클래스 당 하나의 샘플만을 사용하였다.

5 Conclusion

 


Add a Comment Trackback