본문 바로가기
대학원 공부

AI : Self Supervised Learning

by 월곡동로봇팔 2020. 8. 27.

우리는 머신러닝 기법 중에 크게 두 가지로 나뉜다.

 

  1. Supervised Learning
  2. Un-Supervised Learning

Supervised Learning 은 labeling이 이미 되어있는 data들을 학습시키는 것을 말한다.

Un-Supervised Learning labeling이 안되어있는 data들을 학습시키는 것을 말한다.

 

우리는 Supervised Learning이 성능이 좋은 것을 알지만, Labeling을 하는 것도 사람의 노동력이 필요하기 때문에, 비용이 많이 든다. 그리고 labeling data들이 모두 맞다고 할 수는 없다. 

 

따라서 우리는 labeling 할 필요가 없는 Un-Supervised Learning을 선호한다.

 

하지만 우리는 여기서 물음을 던질 수 있다.

 

"labeling이 되어있지 않은 data들을 스스로 labeling 하게 할 수는 없을까?"

 

그렇게 Self-Supervised Learning 이 태어난다. 두둥


What is Self-Supervised Learning

  • supervised data를 학습하는 것 처럼 보이는 unsupervised learning
  • 일반적으로 data의 일부분을 발췌, 그 부분적인 data를 학습시킨다.
  • 일반적인 loss가 아니라, proxy (대리인) loss를 얻어서 학습한다.

Why?

  • 굳이 labeling을 하지 않아도 모델을 학습, 적용할 수 있다.
  • 의료계나 특정 지식을 요구하는 분야에서는 labeling 자체가 힘들 수 있다.
  • labeling 되어있지 않은 data들이 대부분이다.
  • 요즘은 이미지나 비디오 데이터가 많기 때문에 데이터가 대용량이다. labeling 할 비용, 시간이 없다.
  • 좋은 feature들을 학습 가능하다.

SSL's Structure

SSL Structure

보통은 우리가 고양이 사진을 한 번에 input으로 넣어서 학습을 했지만, SSL은 다르다.

 

Center를 기준으로 n개의 구역을 만든다. n을 hyperparameter이다.

n개의 data들을 나누게 된다면, labeling이 되어있지 않은 data이지만, part를 나누어서 1부터 8까지라는 labeling 이 되어있는 것이다.

 

SSL의 NN 구조

NN 구조

그래서 먼저 Center로 잡은 data를 CNN을 통과시켜 feature를 뽑고, Center를 제외하고 다른 부분적인 data를 CNN을 통과시킨다. 그리고 Classifier를 통과시킨다. 이 때 Center 주위에 있는 labeling이 되어있는 data의 label을 loss에 포함시킨다. 따라서 그 데이터가 전체 사진에서 어느곳에 들어갈지 test를 하는 것이다.

 

즉, Self Supervised Learning을 해서 고양이 사진을 부분적으로 학습을 해서 실제로는 이 사진이 고양이인지를 판별할 수 있도록 하는 효과를 가진다.


Example

SSL을 사용해서 Input 한 사진도 어떤 사진에서 일부만 떼어내서 input한 방법이다. 따라서 Input한 부분적인 data와 비슷한 사진들을 찾은 예시이다.

 

SSL을 통해 학습한 모델에게 회색의 사진을 주고 색을 칠해봐라 라고 주는 문제이다.

 

사진 자체가 RGB라는 3차원 구조로 이루어져있고, 이는 회색의 사진 자체가 원본의 부분적인 data를 의미한다.

따라서 사진 원본을 input 하는 것이 아니라 부분적인 data를 입력해서 원본을 맞춰라 라고 제시한 문제이다.

이 문제 또한 SSL을 이용한 것이다.

 

또한 오른쪽 그림을 보면 아시아인을 살구색으로 색칠한 것을 보면, SSL을 통한 CNN 구조가 아시아인의 피부색과 얼굴 형태와의 관계까지 학습한 것을 볼 수 있다.

 

이로써 SSL을 통해서 단순히 간단한 문제를 푸는 것 뿐 만 아니라, 데이터들의 관계까지 학습하는 것을 볼 수 있다.

Colorization 구조

CNN 에서는 MaxPooling은 하지 않고 오로지 conv 만 거친다. a채널과 b채널을 output으로하여, 처음 input L 채널과 합치면 원본이 나오도록 이들을 학습한다.

 

Colorization은 regression에서는 좋은 효과를 보지 못해서, 오른쪽 그림과 같이 Quantization, 즉 양자화, 객관식 문제를 풀 듯이 구간을 나눠서 진행하는 것이 효과가 더 좋게 나왔다고 한다.

 

여기서 color의 갯수는 313개로, color들을 맞춰라 라는 문제로 주었고, 이를 cross_entropy를 이용하여 loss function 을 적용하여 학습하였다.

 

 

실제로 SSL을 적용한 CNN이 원본보다 더 좋아서 사람들을 속일 정도라고 한다.

 

또한 오른쪽 그림처럼 SSL을 응용해서, 데이터들을 나눠놓고 순서를 맞히라고 하거나, 빈칸을 뚫어두고 맞추라고 하거나 하는 문제도 거뜬히 푼다.


Denoising AutoEncoder

순서도 SSL과 동일하다.

 

  1. 처음 x 라는 데이터를 주고,  임의로 데이터를 소실시킨다.
  2. 소실된 데이터를 이용해서 원래 데이터로 복원하는 작업을 한다.
  3. input 은 원래 데이터
  4. label 은 원래 데이터

Example

이 예시는 비디오를 보고, 이 영상이 시간 순서대로 된건지, 아니면 역순으로 이루어진건지 판단하는 모델을 만들고자 한 것이다.

 

그래서 오른쪽의 구조를 보면 RGB + Optical Flow (데이터가 흐르는 방향) 을 CNN에 넣고, Proxy Loss는 fwd or bwd.

즉 binary classification을 진행한 것이다.

 

즉, 이 방법은 영상에서의 중력, 인과관계, 시간, friction, 등등 기계들은 전혀 알지 못하는 개념들을 데이터로써 이해하는 하나의 방법이다. Action Recognition에 잘 적용할 수 있다.

'대학원 공부' 카테고리의 다른 글

Ai : Search (Manual, Grid, Random)  (0) 2020.09.16
Ai : Transfer Learning  (0) 2020.08.30
Ai : Meta Learning  (0) 2020.08.28
Ai : Few shot Learning  (0) 2020.08.28
AI : Continual Learning  (0) 2020.08.27

댓글