본문 바로가기
Paper review

Learning to Compare Relation Network for Few-Shot Learning(RelationNet, 2018) 리뷰

by Yonghip 2024. 1. 6.

Few shot learning 서베이 논문 중 episode training부분이 이해가 잘 안됐다. 확실히 이해하기 위해 이 테크닉을 사용하는 논문 중 그나마 짧고 쉬워 보이는 RelationNet을 읽어보았다.

 

기존 episode training모델들과 구현상에 큰 차이는 없으며 RelationNet보다는 episode training에 조금 더 중점적으로 리뷰해보겠다.

 

Abstract & Introduction

Abstract에서는 이 논문에는 contribution을 크게 두 가지로 서술한다.

  1. end-to-end 학습이 가능
  2. Few-shot learning과 Zero-shot learning에서 기존에 비해 높은 성능 달성

이후 이 논문에서 사용한 episode training방법에 대해 간략히 설명한다.

First an embedding module generates representations of the query and training images. 
Then these embeddings are compared by a relation module

임베딩 모듈에는 CNN을 relation module에는 Linear layer를 사용했다.

 

Methodology

1. How to make episode

이 파트에서는 Meta learning방법에 대해 상세히 설명한다.

 

먼저 Dataset을 training set, support set, testing set으로 나눈다.(support set은 valid set과 동일한 의미라 생각하면 된다)

 

Support set은 C개의 클래스에 클래스당 K개의 샘플을 가지도록 구성하며 이를 C-way K-shot이라한다. 이 표기는 논문에서 사용한 것이고 N-way K-shot이라 표기하는게 일반적이다.

 

학습 시 데이터를 iterating하는 방식을 episode라고 하는데 train set에서 support set과 동일하게 N-way K-shot의 데이터를 뽑으며 이를 sample set(support set)이라 한다. 이후 같은 label을 가진 데이터를 예측하고 싶은 만큼 뽑고 그를 query set이라한다.

 

논문에서는 sample/query set으로 사용했지만 support/query set으로 표기하는게 일반적이다. 

 

2. Few shot Learning

모델은 학습하는 과정은 위에서 언급한 embedding module $f_{\varphi }$과 relation module $g_{\phi }$를 사용한다.

 

1. 먼저 support set과 query set을 이용해 feature map을 만든다.  [$f_{\varphi}(x_i),  f_{\varphi}(x_j)$]

2. 두 개의 feature map을 depth차원으로 concat한다.  [$C(f_{\varphi}(x_i),  f_{\varphi}(x_j))$]

3. combined feature map을 relation module로 보내 0~1을 출력한다.  [$g_{\phi } (C(\cdot ,\cdot ))$]

 

전체적인 과정을 그림으로 나타내면 아래와 같다.

Eposode training in RelationNet paper

분류 task임에도 loss function으로 MSE를 사용했는데 FSL을 분류가 아닌 relatiol score를 예측하는 회귀개념으로 다루고 싶어 사용하였다고 한다.

 

3. Architecture

embedding 모듈로는 conv block을 relation module로는 Linear layer를 사용하였으며 최종 출력함수로 Sigmoid를 사용하였다. 아래의 사진을 통해 전반적인 아키텍쳐를 볼 수 있다.

RelationNet Architecture

Experiment

실험을 위해 쓴 Hyper parameter setting은 아래와 같다.

  • Optimizer: Adam
  • Learning rate: 1e-3

몇 episode를 학습시켰는지 정확히 기재되어 있지 않았고 100,000에피소드마다 LR을 반으로 줄인다고 한다.

 

이 글에서는 여러 실험 중 Omniglot에 대한 FSL task만 설명하겠다. 옴니글로는 총 1623개의 클래스와 클래스당 20개의 샘플로 이루어져 있다.

 

Training할때 query는 5-way 1-shot에는 19개, 5-way 5-shot에는 15개, 20-way 1-shot에는 10개, 20-way 5-shot에는 5개를 사용했다.

 

예를 들어 5-way 1-shot with 19 queries는 19 * 5 + 1 * 5 = 100개의 데이터를 사용해 한 에피소드를 구성했다고 보면 된다. 1000개의 episode를 통해 성능을 평가한 결과 아래 표와 같은 결과를 얻었다고 한다.

 

 

Conclusion

contribution에서 언급한 부분과 거의 동일하다.

 

FSL과 ZSL에서 높은 성능, embedding과 relation module을 이용한 end-to-end학습을 재강조했다. 


Episode training이 궁금해서 찾아본 논문이었고 학습과정과 컨셉은 어느정도 이해하였다. 논문을 읽기 전에는 최근 트렌드가 많은 데이터를 잘 요약하는 모델을 만들면 이게 결국 FSL, ZSL에도 좋다는 느낌이라 생각했었다. 

 

하지만 FSL을 위한 평가 dataset은 기존에 알지 못했던 것들이었고 SOTA사이트에서 찾아보니 episode 방법론과 embedding을 섞은 논문이 상위에 많이 있는것을 보면 적어도 이 도메인을 위해서는 꼭 짚고 넘어가야하는 개념이라고 생각한다.

 

논문링크: https://arxiv.org/abs/1711.06025