brunch

You can make anything
by writing

C.S.Lewis

by Extreme Code Jun 19. 2021

Self-Supervised Learning 에 관하여

Computer Vision 분야도 SSL이 대세가 될것인가?

  Facebook AI Research의 아이콘이자 딥러닝 구루 중 한명인 Yann Lecun이 몇 개월 전에 FAIR 블로그에 을 작성했습니다. Computer Vision 분야에서의 Self-supervised learning 에 관한 글이고, 최근 어떤 부분에 관심을 갖고 연구하고 있는지를 알 수가 있습니다.


새로 진행된 연구를 소개하는 그런 글이라기보다는, Computer Vision 분야에서의 Self-supervised learning 이 최근 좋은 성과를 내고 있고, 앞으로 이 방향으로 나아가야 한다는 내용입니다. 그리고 곁가지로 FAIR에서 최근까지 발표한 다양한 연구들도 추가로 소개하고 있습니다. 그래서 해당 글에서 말하고자 하는 바를 간단히 정리해 보겠습니다. 간단히 정리한 것이라서 자세한 내용은 해당 글과 언급한 논문 등을 참고하는게 좋을 거 같습니다.





Self-supervised learning 이 필요한 이유

  딥러닝은 많은 발전을 가져왔지만, 아직 한계가 많습니다. 특히 가장 많이 사용되는 Supervised Learning 방식은 한계가 명확하죠. 사람의 아기는 세상을 관측하고, 행동하고, 피드백을 얻고 다시 관측하는 과정을 반복하며 학습 해 나갑니다. 그러면서 common sense 를 획득하게 되죠. 이런 common sense 를 어떻게 학습하는 것인가에 대해서는 아직도 연구가 많이 필요한 부분입니다.


사람이나 동물은 이 common sense 를 통해서 빠르게 새로운 학습을 할 수 있습니다. 예를 들어 AI에게 젖소 사진을 여러개 보여주어 학습하도록 한 후, 젖소 사진을 보여주면 인식이 가능하지만, 해변가에 누워있는 젖소 사진을 보여주면 가능은 하겠지만 인식률이 떨어질 것입니다. 사람의 경우 이런 처음 보는 것이더라도 기존의 지식들을 종합적으로 활용하여 가능합니다. 이 문제를 해결하기 위해서 많은 방법들이 연구되고 있는데, 해당 블로그 글에서는 Self-supervised learning (SSL) 이 좋은 해결책 중 하나라고 말하고 있습니다.


참고로 SSL은 정답 데이터가 없다는 측면에서 Unsupervised learning 이라고 볼 수도 있겠지만, 정답이 없다기 보다는 데이터 내의 feedback signal 을 사용하는 것이기 때문에 UL 과는 조금 다릅니다. 사실 이 정의가 아직까지도 완전히 명확한 건 아니라서 사람에 따라서 UL의 한 갈래로 보는 경우도 있지만, UL은 clustering이나 dimensionality reduction 과 같이 데이터 자체의 값만을 사용해서 특정 task를 해결해 나가는 것이고, SSL은 데이터 내의 값을 사용해서 학습을 하기 때문에 조금 다른 방식이라고 볼 수 있겠습니다.



SSL의 성과와 한계

  SSL은 Computer Vision (CV) 보다는 Natural Language Processing (NLP) 분야에서 많은 성과를 보여주었습니다. NLP쪽에 관심있다면 다들 알고 있을 BERT가 대표적 예시입니다. (물론 BERT 이전에 ELMo 와 같은 모델들이 먼저 사용한 방식이긴 합니다만) 이런 모델들은 SSL 방식으로 unlabeled data에 먼저 학습을 한 후, downstream 으로 task에 맞는 정답이 존재하는 데이터에 fine-tuning 하는 방식으로 이뤄져 있습니다. 이 때 SSL 학습은 정답이 없고 텍스트만 있기 때문에, 문장 중간에 단어(토큰)를 masking을 한 후, 해당 단어를 예측하여 컨텍스트에 맞는 답을 찾아내도록 학습을 시킵니다.


이렇게 학습된 모델을 downstream task dataset에서 fine-tuning하면 아주 소량의 데이터 만으로도 엄청나게 좋은 성능을 보여주고, 이 과정이 사람의 인식체계 처럼 기본 지식을 학습하고 이걸 활용해서 새로운 환경이나 task에서 빠르게 적응하는 과정과 비슷하기 때문에 AI 의 미래가 여기 있다고 생각하는 사람들도 많은 것 같습니다. NLP 분야에서는 BERT 이후로 많은 비슷한 모델들이 쏟아져 나왔고, GPT, 특히 최근의 GPT-3 에서 보여준 것 처럼 이 방법은 굉장한 성능과 가능성을 보여주었습니다. 그리고 이것의 가능성을 본 수 많은 회사들 (미국 뿐 아니라 중국, 한국 등) 도 미친듯이 모델 사이즈를 키워 이런 방식으로 모든 NLP문제에 적용을 하려고 하고 있습니다.


이렇게 잘 되는 테크닉이지만, CV 쪽에서는 적용하는 것이 쉽지 않고 SSL이 좋은 결과를 잘 못보여 주고 있습니다. 가장 큰 이유는 이미지에서 uncertainty 를 표현하기가 word에 비해 쉽지 않기 때문입니다. 또한 일반적으로 SSL 기반 모델들은 매우 큰 사이즈를 가지는데 이런 큰 스케일 모델을 이미지에 적용하여 학습하기가 runtime/memory 측면에서도 쉽지 않은 문제들이 있습니다. (그러면서 깨알같이 이런 문제를 해결하기 위해 FAIR에서 발표한 RegNets 연구를 추천하네요)


예를 들어서, 텍스트에서는 "사바나에서 X가 동물을 먹고 있다" 라는 문장의 경우 X에 들어갈 단어에 대해서 "치타", "사자", 그 외 맹수들에서는 높은 점수를 주고 다른 것에 대해서는 낮게 주는 식으로 할 수 있습니다. 하지만 이미지 내에서는 특정 부분을 지우는 missing patch 방식이나, 비디오 내에서 특정 frame을 지우는 missing frame 방식을 사용하고 이를 예측하도록 하는 것은 매우 어렵습니다. 경우의 수가 무한하기 때문이지요. 

NLP와 CV의 dim/uncertainty 비교

이런 문제를 해결하기 위해서는 NLP와 CV쪽 차이를 살펴봐야 합니다. NLP 에서는 missing word를 찾을 때 많은 후보군이 있긴 하지만, possible word가 어느정도 정해져 있습니다. 일반적인 머신러닝 시스템에서는 이러한 prediction 문제를 classification task 로 치환하여 softmax layer를 통해 단어들 간에 probability distribution을 구하여 그 중에 가장 높은 확률을 갖는 값을 추출해 내는 방식으로 사용합니다. 결과적으로 정해진 숫자의 possible outcome을 얻을 수 있습니다.


하지만 CV나 Speech 분야에서는 Missing part (video에서는 frame, image에서는 patch, speech에서는 segment) 이것을 찾기 굉장히 어렵습니다. 왜냐면 discrete outcome이 아니라 high dimensional continuous object 이기 때문입니다. 따라서 무한대의 경우의 수가 있고, predictive socre를 매길 수가 없으며 이러한 무한대 경우의 수를 갖는 space에서 probabiltiy distribution을 계산하는 것은 불가능에 가깝습니다.


물론, CV나 Speech 가 continuous 하기 때문에 GAN과 같은 테크닉을 적용하는 것이 비교적 수월하다는 장점도 있기는 합니다. (NLP는 discrete space이기 때문에 GAN과 같은 테크닉을 학습하기가 꽤 난해하죠.) 아무튼 CV에서도 SSL을 하기 위해서 Energy based model (EBM) 을 사용한다고 합니다.



CV 분야에서의 SSL

  여기서는 video 에 대해서 EBM을 사용하는 예시를 들고 있습니다.

Video 에서의 EBM

위의 이미지에서 (x, y)라는 두 개의 입력이 있습니다. x는 비디오 클립이며, y는 다른 비디오 클립입니다. y가 x의 연속된 값인지 판별하는 모델을 만드려면, EBM 을 활용하여 energy 가 낮으면 y가 x다음에 오기 좋은 내용이고 높으면 어울리지 않는 내용이 되도록 학습하면 됩니다.


EBM을 학습하는 것은 두 가지 파트로 이뤄집니다.

1) 어울리는 x - y 가 low energy 값을 갖도록 학습합니다.

2) 어울리지 않는 x - y 에 대해서 비교적 high energy 값을 갖도록 학습합니다.


여기서 1번 과정은 간단합니다. 그냥 비디오 클립을 가져다가 적절하게 나누어서 학습하면 됩니다. 2번은 어렵습니다. 어울리지 않는 것을 어떻게 매칭하고 얼마나 high energy를 가지도록 할지가 난해합니다.  이미지를 예로 들자면, (x, y) 에 각각 이미지를 입력 받는데 x, y 가 동일하고 약간만 변경한 것 (distort, rotate, shift, color 변경, shadow 등) low energy를 갖고 많이 달라질 수록 high 를 갖도록 한다고 보면 될 것 같습니다.


이런 것을 하기 위한 방법 중 하나는 Siamese network 이나 joint embedding 아키텍쳐 입니다. 샴 네트워크의 경우 차이값을 비교하는 모델에 이미 많이 적용되고 있는 추세입니다. joint embedding 은 동일한 두 개의 네트워크가 (x, y) 입력을 받아서 최종 출력으로 embedding 을 뽑는 방식이며, 이 값이 (x, y) 의 차이를 표현하는 벡터이고, 그 다음 있는 모듈이 이 차이를 계산하게 됩니다.

이미지에서의 joint embedding

여기서 학습 시 어려운 점은 high energy 를 갖도록 하는 것입니다. 예를 들어, 학습 시 (x, y) 가 완전히 다를 때도 항상 동일한 입력이라고 판단하여 low energy를 갖게 되는 model collapse가 발생할 수 있습니다. 이런 collapse 를 방지하기 위해서 contrastive method나 regularization method를 사용하게 됩니다.


Contrastive energy based SSL은 NLP에서도 사용이 되는 방식입니다. 학습 텍스트에서 임의의 문자열로 치환한 corrupted text의 경우 더 높은 energy를 갖도록 합니다. SSL계열 NLP에서 아주 많이 쓰이는 유명한 방법입니다. 하지만 이것은 이미지에서 사용할 수가 없기 때문에 Latent-variable predictive architecture를 사용합니다.

Latent-variable predictive model

여기에서는 추가적인 변수인 z 값을 포함하고 있습니다. 전혀 관측이 된 적 없는 latent variable 입니다. 이 방법은 contrastive method와 같이 학습될 수 있으며 이것의 좋은 예는 GAN 입니다. GAN에서 critic (discriminator) 는 input y가 좋아 보이는지를 energy 값으로 판별하기 때문입니다. 하지만 contrastive method는 문제가 있는데, 학습이 잘 안되고 비효율적이라는 것입니다. 예를 들어, 이미지 같은 high dimensional space 에서는 다양한 방법으로 다르게 보일 수 있으며 이런 것들을 모두 커버하는 것은 불가능 합니다. 


그래서 최근에는 Non-contrastive energy based SSL 이 연구되고 있다고 합니다. Non-contrastive method 가 joint embedding architecture에 적용되는 것은 최근 CV분야에서 가장 핫한 토픽 중에 하나라고 합니다. 앞으로 몇 년간 image, video, speech 분야에서 Latent-variable energy model을 위한 Non-constrastive method를 활용하여 unlabled dataset 에 학습한 후, downstream task 에 fine-tuning 하는 방식이 많이 시도될 것이라고 하네요.


그러면서 관련된 몇가지 다양한 연구를 소개하고 있습니다.

DeeperCluster : https://openaccess.thecvf.com/content_ICCV_2019/html/Caron_Unsupervised_Pre-Training_of_Image_Features_on_Non-Curated_Data_ICCV_2019_paper.html

ClusterFit : https://arxiv.org/abs/1912.03330

Moco-v2 : https://arxiv.org/abs/2003.04297

SwAV : https://arxiv.org/abs/2006.09882

SimSiam : https://arxiv.org/abs/2011.10566

BYOL : https://arxiv.org/abs/2006.07733

SEER : https://ai.facebook.com/blog/seer-the-start-of-a-more-powerful-flexible-and-accessible-era-for-computer-vision


특히 최근 진행된 SEER 라는 연구가 SSL 방식의 CV 모델이라고 하며, 이미지에 대한 metadata 나 annotation 없이도 대량의 데이터에 대해 학습할 수 있다고 합니다. 해당 연구에서는 인스타그램에서 추출하여 큐레이션 하지 않은 public image 에 대해서 pretraining 을 진행하였고, 이를 ImageNet data에 fine-tuning 을 하였는데 SOTA를 달성했다고 합니다.




Yann Lecun은 CV 도메인에서 SSL 패러다임이 곧 올 것이라고 이야기 하고 있습니다. 이 방법이 human level intelligence 로 가기 위한 길 중 하나라고도 말하고 있구요. 저도 굉장히 유망한 방법이고 NLP에서 그랬던 것 처럼 CV, Speech 분야에서도 이런 방법이 많이 활성화 될 것 같습니다. 근데 아직은 인간의 지능에 비해서는 뭔가 많이 부족한 느낌입니다. 하지만 수 많은 뛰어난 과학자들이 열심히 연구중이니, 앞으로 또 어떤 것들이 나올지 정말 흥미롭습니다.



참고자료

블로그 : https://ai.facebook.com/blog/self-supervised-learning-the-dark-matter-of-intelligence

리뷰 유튜브 : https://youtu.be/Ag1bw8MfHGQ





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari