ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료 읽기] Unsupervised Visual Representation Learning Overview: Toward Self-Supervision
    자료 읽기 2022. 3. 16. 09:49

    출처 : https://hoya012.github.io/blog/Self-Supervised-Learning-Overview/

     

    Unsupervised Learning 연구 분야 중에 하나인 Self-Supervised Learning 에 대해 소개

     

    * Self-Supervised Learning 이란?

    Supervised Learning(지도 학습)은 2010년대에 접어들면서 굉장히 높은 성능을 달성하였지만 그러한 성능을 달성하기 위해선 무수히 많은 양의 데이터가 필요하고, 데이터를 사용하기 위해선 각 샘플마다 labeling을 해주어야 하는 점이 많은 시간과 비용을 필요로 하게 됩니다.

     

    이러한 단점들을 해결하기 위해 여러가지 연구 주제들이 나오고, 활발하게 연구가 진행이 되고 있습니다. 유사한 task에서 학습된 network의 weight를 가져와서 target task에 적용하는 Transfer Learning, Domain Adaptation 사례와, 가지고 있는 데이터셋 중에 일부만 labeling을 하여 학습을 시키는 Semi-Supervised Learning 사례, 주로 Segmentation에서 기존의 label (segmentation mask) 보다 적은 비용으로 얻은 label (class, point, scribble, bounding box 등)을 이용하여 학습을 시키는 Weakly-Supervised Learning 등이 있습니다. 이 외에 아예 label을 이용하지 않는 Unsupervised Learning이 있고, 쉽게 유추하실 수 있듯이 가장 성능을 내기 어려운 분야입니다.

     

    우선 Unlabeled 데이터들을 이용하여 사용자가 새로운 문제를 정의하며 정답도 사용자가 직접 정해줍니다. 이 때, 사용자가 정의한 새로운 문제를 논문에서는 pretext task 라고 부르고, 앞으로도 이렇게 부를 예정입니다. Network로 하여금 만든 pretext task를 학습하게 하여 데이터 자체에 대한 이해를 높일 수 있게 하고, 이렇게 network를 pretraining 시킨 뒤 downstream task로 transfer learning을 하는 접근 방법 이 Self-Supervised Learning의 핵심 개념입니다. 아직 정확히 와 닿지 않으실 거라 생각합니다. 그래서 실제 논문들이 제안한 pretext task들을 소개를 드리며 이해를 도울 예정입니다.

     

    * Pretext Tasks in Self-Supervised Visual Representation Learning

    Self-Supervised Learning 주제로 나온 논문들의 리스트를 잘 정리해 놓은 repository

    awesome-self-supervised-learning

     

    - Exemplar, 2014 NIPS

    Discriminative unsupervised feature learning with exemplar convolutional neural networks

    학습 데이터로부터 Considerable한 gradient를 가지고 있는 영역이 object가 존재할 법한 위치라고 판단하여 해당 영역을 patch로 crop하여 가져옵니다. 이렇게 하나의 image로부터 얻어온 patch를 Seed patch라 부릅니다. 각 image마다 얻어온 Seed patch에 저희가 일반적으로 augmentation에 사용하는 transformation들을 적용하여 patch의 개수를 늘려줍니다. 그 뒤, Classifier로 하여금 하나의 Seed patch로부터 생성된 patch들을 모두 같은 class로 구분하도록 학습을 시킵니다. 이 때 주목해야할 점은 하나의 image가 하나의 class를 의미하게 되는 것입니다.

     

    - Context Prediction, 2015 ICCV

    Unsupervised Visual Representation Learning by Context Prediction

    Context Prediction 또는 Relative Patch Location 라는 이름의 pretext task

    Patch 간의 상대적인 위치를 예측하는 Pretext task를 의미하며, 한 장의 Image로부터 가로 3칸, 세로 3칸, 총 9칸의 Patch를 얻은 뒤, 가운데 Patch를 기준으로 나머지 패치가 어느 위치에 있는지를 classifying 하도록 학습을 시킵니다. 예를 들면 고양이의 얼굴(파란 네모)과 왼쪽 귀(빨간 점선 네모) 2개의 Patch를 network에 넣어주면 network는 1 이라는 출력을 하도록 학습을 하게 됩니다. 전체 Image에서 지엽적인 두 개의 patch만 보고 상대적인 위치를 맞추는 문제이다 보니 사람에게 물어봐도 높은 정확도를 달성할 수 없는 어려운 문제이며, 이를 잘 풀기 위해선 Image에 대해 전반적인 이해를 할 수 있어야 합니다.

     

    - Jigsaw Puzzle, 2016 ECCV

    Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles

    Jigsaw Puzzle 이라는 이름의 pretext task

    뒤죽박죽 섞어 놓고 원래의 배치로 돌아가기 위한 permutation을 예측하는 문제를 의미

    9개의 patch로 만들 수 있는 순열(permutation)은 9! = 362,880 개로 굉장히 많은 경우의 수가 존재하고, 이를 모두 학습에 이용한다면 Classifier는 362,880 class classification을 배워야 하는 문제가 발생합니다. 본 논문의 저자는 순열의 특성 상 비슷한 값을 가지는 순열이 많기 때문에 (ex, 123456789, 123456798) 모든 경우의 수를 다 이용하지 않고, 유사한 순열은 제거하면서 딱 100개의 순열을 사용하여 100-class classification을 학습시키도록 변화를 주었다고 합니다.

     

    - Autoencoder-Base Approaches

     Autoencoding 방식으로 진행된 4가지의 논문을 간략하게 소개 드리겠습니다.

    우선 Denoising Autoencoder 는 워낙 유명한 방식이며 input image에 random noise를 주입한 뒤 복원을 하도록 학습을 시키는 방식입니다.

    다음 소개드릴 Image Colorization 은 2016년 ECCV에서 발표된 논문이며 1channel image로부터 3channel color image로 생성해내는 것을 학습시키는 방법을 제안하였고 이 때 사용한 Encoder를 가져와서 Self-supervised learning task에 적용을 한 결과를 제시하고 있습니다.

    다음 Context Autoencoder 는 2016년 CVPR에서 발표된 논문이며 image의 구멍을 뚫은 뒤 그 영역을 복원하는 것을 학습시키는 방식을 제안하고 있습니다.

    마지막으로 Split-Brain Autoencoder 논문은 2017년 CVPR에 발표된 논문이며 Image Colorization의 후속 연구라고 할 수 있습니다. 다채널 image에서 channel을 쪼갠 뒤, 각각 channel을 예측하도록 학습을 시키는 방식에서 Split-Brain 이라는 이름이 붙게 되었으며, 예를 들면 RGB-D image에 대해 RGB image를 F1에 넣어서 Depth image를 예측하도록 학습을 시키고, Depth image를 F2에 넣어서 RGB image를 예측하도록 학습을 시킨 뒤 두 결과를 종합하는 방식으로 학습이 진행이 됩니다.

     

    - Count, 2017 ICCV

    Representation Learning by Learning to Count

    Count 라는 pretext task입니다.

    앞선 Context Prediction, Jigsaw Puzzle, Autoencoding 방식들은 input image에 무언가의 변형을 준 뒤 이를 원 상태로 돌아오도록 학습을 하는 방식을 이용했다면, 이 방식은 이러한 패러다임에서 벗어나서 image로부터 특징 값들을 vector 형태로 추출하여 비교하는 방식을 제안하였습니다. 이해를 돕기 위해 논문의 그림을 보며 자세한 설명을 드리겠습니다.

     

    - Multi-task, 2017 ICCV

    Multi-task Self-Supervised Visual Learning

    Multi-task Learning 방식입니다.

    Multi-task Learning이란 여러가지의 task를 동시에 학습하면서 상호 보완적인 효과를 보는 학습 방법을 의미합니다.

    총 4개의 pretext task를 동시에 학습시켜서 기존 방식들보다 좋은 성능을 달성할 수 있음

     

    Rotation, 2018 ICLR

    Unsupervised representation learning by predicting image rotations

    Rotation 이라는 pretext task

    Input image가 있으면 이 image에 0도, 90도, 180도, 270도 회전을 random 하게 준 뒤, 원본을 기준으로 이 image가 몇도 rotation이 적용되었는지를 구분하는 4-class classification 문제입니다.

     

    * Task & Dataset Generalization of Self-Supervised Learning

    pretext task로 network를 학습을 시키는 이유는 단지 그 pretext task를 잘 풀기 위함이 아니라, 이러한 방식으로 Unsupervised pretraining을 시켜서 다음에 이어질 task인 downstream task에 이용하기 위함입니다.

    그래서 unsupervised pretraining의 효과를 확인하기 위해 논문 들에서는 Self-Supervised Learning으로 Network를 pretraining 시킨 뒤 모든 weight들을 freeze 시킵니다. Pretraining을 통해 얻은 weight들이 얼마나 feature를 잘 뽑는지, representation을 얼마나 잘 배웠는지 에 초점을 두기 때문입니다.

    그 뒤 마지막 layer에 linear classifier를 붙여서 logistic regression을 통해 downstream task를 학습을 시켜줍니다. 이 때 downstream task는 supervised learning 방식으로 학습이 진행

     

    - Task Generalization: ImageNet Classification

    label이 있으면 그냥 처음부터 Supervised Learning으로 학습을 시키면 되지 않느냐는 질문이 나올 수 있는 부분

    weight를 freeze 시키는 점에 주목을 하면 결과가 이해가 잘 될 수 있습니다. Weight를 freeze시킨다는 건 feature extractor를 고정시킨다는 것과 동일한 뜻이며, 여기에 굉장히 단순한 linear layer 하나만 붙여서 학습을 시켜서 좋은 성능을 내기 위해선 전적으로 feature extractor가 많은 역할을 수행하여야 합니다. 즉 feature extractor가 얼마나 성능이 좋은지 를 간접적으로 확인할 수 있는 방법이 위의 방법이라고 생각하시면 될 것 같습니다.

    label을 쓰지 않고 Conv layer들을 학습시켜도 label을 사용하였을 때의 feature extractor와 어느 정도는 비슷한 품질을 보일 수 있음에 의의를 둘 수 있습니다.

     

    Dataset Generalization: PASCAL VOC

     

     

     

     

     

     

     

     

     

     

     

Designed by Tistory.