안녕하세요.

 

지난 글에서는 representation learning에 대해서 알아보았다면, 이번 글에서는 unsupervised learning으로 학습시킨 representation model을 어떻게 pretraining model로써 사용했는지 알아보도록 하겠습니다.

 

우리는 보통 supervised learning 기반의 Deep Neural Network (DNN) 모델deep supervised network라고 합니다. 이러한 deep supervised network는 이미지 분야, 시계열 분야 등 다양한 task 도메인에 따라 CNN, RNN 같은 모델로 확장되어 왔죠. (기존 DNN이 naive한 모델이라고 한다면, CNN과 RNN 같은 모델은 convolution, recurrence 와 같은 DNN에 비해 architectural specializations 한 모델이라고 일컫습니다)

 

하지만, 이러한 CNN, RNN이 아닌 오로지 fully connected layer로 구성된 DNN 방식으로 supervised task에 잘 동작하게 만든 학습 방법이 등장합니다.

 

그림출처: https://paperswithcode.com/methods/category/convolutional-neural-networks

 

 

"이 학습방법은 unsupervised learning 방식으로 pretraining 모델을 만들고, 해당 pretraining model을 supervised task에 적용하는 것이었습니다."

 

위에서 설명한 학습 방법론들은 현재 굉장히 많은 분야에서 연구되고 있는데, 이번 글에서는 그 중 최초의 방식 'Greedy Layer-Wise Unsupervised Pretrainig'에 대해서 알아보려고 합니다. 

 

 

※Greedy Layer-wise unsupervised training 관련 논문은 아래 논문을 참고해주세요!

 

Yoshua Bengio, Pascal Lamblin, Dan Popovici, and Hugo Larochelle. Greedy layer-wise training of deep networks. In Bernhard Sch¨olkopf, John Platt, and Thomas Hoffman, editors, Advances in Neural Information Processing Systems 19 (NIPS'06), pages 153–160. MIT Press, 2007.

 

 

 

1. Greedy Layer-Wise Unsupervised Pretraining

Greedy Layer-Wise Unsupervised Pretraining 방식은 각 layer순차적으unsupervised learning 시키는 학습 방법론이라고 볼 수 있습니다. 어떤 특정 layer를 B layer라고 했을 때, B layer의 이전 layer output 값을 취하여 B layer가 new representation (or feature)를 출력할 수 있도록 도와주는 방식입니다. 

 

그림 출처: https://www.researchgate.net/figure/Unsupervised-greedy-layer-wise-training-procedure_fig4_308818792

 

예를 들어, 20×20 이미지 data (=400차원)최초의 정보(information)로 주어졌다고 가정해보겠습니다. 그리고, 첫 번째 layer를 거쳐서 나오는 neuron(=indepent vector) 300개(=300차원)라고 해보겠습니다. 최초의 정보인 400차원 데이터는 첫 번째 layer를 거쳐 가공된 300차원 feature(or representation)가 됩니다. 그리고, 첫 번째 layer를 거친 300차원 feature는 두 번째 layer 입장에서 보면 가공해야 할 또 다른 정보(=information)가 되는 것이죠. 어찌됐든, 첫 번째 layer의 최초의 정보(=400차원)와 두 번째 layer의 정보(=300차원)는 성격이 다르기 때문에, 이들을 가공해서 얻게 되는 output인 feature(or representation)도 layer 마다 성격이 다르다고 할 수 있습니다.  이러한 방식을 통해 각 layer 마다 고유의 representation을 갖게 되는 것이죠.  

 

 

Greedy Layer-Wise Unsupervised Pretraining 알고리즘은 아래와 같습니다.

  • L: Unsupervised learning algorithm → for 문에서 k가 하나씩 증가할 때, L 알고리즘을 통해 만들어진 \(f^{(k)}\)은 학습이 완료되었음을 가정 → L을 통해 학습한 각 layer는 고유의 representation을 갖고 있음 
    • 참고로 이 책에서는 unsupervised learning algorithm에 대한 구체적인 description은 없고, 여러 논문들을 reference 해놓기만 했습니다.
  • Identity function: f(x) = x → 입력값=출력값 
  • Function composition: \(g\)∘\(f\) = \(g(f(x))\)  → \(f^{(k)}\)∘\(f\) = \(f^{(k)}(f(x))\)
  • Y: target(labeled) data
  • X: input data 

※ f: fine-tuning if문에서의 f는 이전 for문에 의해 \(f^{k=m}(f(f....(f^{1}(X))....))\)를 의미한다.

 

 

앞서 이야기 했듯, 이전에는 FC layer 기반 (=jointly)의 DNN 모델을 처음부터 supervised task에 적용하는 것이 매우 힘들었지만, 위와 같은 학습 방법론 (=Greedy layer-wise Unsuperivsed pretraining)을 통해 DNN 모델을 supervised task에 적용할 수 있게 됐습니다.

 

Greedy layer-wise training procedures based on unsupervised criteria have long been used to sidestep the difficulty of jointly training the layers of a deep neural net for a supervised task.

 

 

1-1. "Greedy layer-wise unsupervised"

위의 알고리즘을 greedy layer-wise라고 부르는 이유를 간단히 설명해보겠습니다.

 

우리는 어떤 문제(=task) 해결하기 위해 알고리즘(=solution)을 고안합니다. 그런데, 세상에는 완벽한 해결책이라는게 존재하지 않죠. 그렇기 때문에 어떤 경우에는 굉장히 복잡한 task를 작은 문제들로 나누고, 이러한 작은 문제들을 해결해 나가면서 최종 task의 해를 구하기도 합니다. 보통 이러한 알고리즘 해결법을 Dynamic programming이라고 하죠. 반면, 복잡한 task를 작은 문제들로 나누지 못하는 경우에는 그때 그때 직면한 문제를 해결함으로써 최종 task의 해를 구해나가는데, 이 경우를 greedy algorithm이라고 합니다.

 

즉, Greedy algorithm은 각각에 직면 하는 단계들에서 solution을 구하는 (=each piece of the solution independently) 방법론이라고 할 수 있습니다.  'Greedy layer-wise unsupervised pretrining' 관점에서 보면 indepent pieces각각의 layer라고 볼 수 있겠네요. 여기서 indepent라고 표현한 이유는 두 번째 layer를 unsupervised 방식시켜도, 첫 번째 layer가 학습되지 않기 때문에 '학습의 관점'에서는 layer들이 indepent하다고 할 수 있습니다.

 

 

"The lower layers (which are trained first) are not adapted after the upper layers are introduced."

 

학습 시킬 때는 첫 번째 layer가 별로(=layer-wise) unsupervised learning 방식으로 학습을 시킵니다. 입력 값이 마주하는 layer 마다 독립적으로 unsupervised task를 진행합니다. 즉, 각 layer 마다의 독립적인 solution을 구하는 것인데, 바꿔말하면 각 layer에 해당하는 최소 loss값을 구할 수 있도록 학습시키는 것이 목적입니다.

 

그림 출처: https://www.researchgate.net/figure/Unsupervised-greedy-layer-wise-training-procedure_fig4_308818792

 

1-2. "Pretraining"

앞서 학습했던 "Greedy layer-wise Unsupervised" 방식으로 학습한 DNN은 결국 supervised task에 (fine-tuning 되어) 사용됩니다. 이러한 관점으로 봤을 때, 이전 Unsupervised 방식으로 학습된 DNN은 pretraining model이라고 볼 수 있죠.

 

즉, "Greedy layer-wise unsupervised pretraining model"은 supervised task 관점에서 보면, weight initialization 또는 regularizer (to prevent overfitting) 역할을 하게 되는 겁니다.

 

 

 

2. Greedy Layer-Wise Unsupervised Pretraining for Unsupervised learning

앞선 글에서는 "Greedy layer-wise unsupervised pretraining 모델"이 supervised task에 fine-tuning하기 위해 사용된다고 언급했지만, 사실 unsupervised task를 해결하기 위한 pretraining 모델로써도 사용이 됩니다. 정확히 어떻게 사용했는지는 아래 세 논문을 살펴보는 것을 추천합니다. 참고로 아래 세 가지 모델에 대한 자세한 설명은 Deeplearning book "Chapter 20. Deep Generative model"에서 다루는데,추후에 Chapter20에 대한 내용도 포스팅 하도록 하겠습니다.

 

  • Reducing the Dimensionality of Data with Neural Networks → deep autoencoder (by G. E. HINTON AND R. R. SALAKHUTDINOV; 2006)
  • A Fast Learning Algorithm For Deep Belief Nets → deep belief nets (by G. E. HINTON; 2006)
  • Deep Boltzmann Machines (by Salakhutdinov and Hinton, 2009a)

 

지금까지 Unsupervised learning 방식으로 pretraining 모델을 만드는 최초의 학습 방법론에 대해서 설명해보았습니다.

 

그럼 다음 글에서는 "Unsupervised learning 방식의 pretraining 모델을 언제 써야 하는지?"에 대한 내용을 다루어보도록 하겠습니다.

'Representation Learning' 카테고리의 다른 글

1. Representation Learning 이란?  (5) 2022.01.21

안녕하세요.

이번 글에서는 self-supervised learning이 무엇인지 설명해보려고 합니다.

 

Self-supervised learning는 개념이 어떻게 해서 탄생하게 됐고, 현재 어떠한 방향으로 학습이 되고 있는지 간단히 살펴보겠습니다. 

 

 

 

 

1. Unsupervised learning

Unsupervised learninglabel(정답)이 없는 데이터로 학습하는 모든 방법론을 일컫습니다.

 

<그림 출처:  https://machinelearningknowledge.ai/supervised-vs-unsupervised-learning/>

 

 

라벨이 없이 학습 할 수 있는 사례는 아래와 같이 다양 합니다.

 

 

<그림 출처:  https://www.researchgate.net/figure/Taxonomy-of-Unsupervised-Learning-Techniques_fig1_319952798>

 

 

 

위의 taxonomy에서 "Unsupervised Learning Techniquess" → "Hierarchical learning" → "Deep learning"의 대표적인 사례는 Generative model 중 하나인 GAN이라고 볼 수 있습니다.

 

(↓↓↓GAN 관련 정리된 글↓↓↓)

https://89douner.tistory.com/329

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

딥러닝 외에도 기존dimension reduction task에서도 다양한 unsupervied learning 모델들이 사용 됐는데, 그 중에 대표적으로 알고 있는 것들은 t-SNE, auto-encoder 같은 것들이 있습니다. T-SNE, auto-encoder 모두 라벨 없이 데이터의 latent space를 찾는 dimension reduction 기법이라 할 수 있습니다. (auto-encoder는 애초에 처음에 dimension reduction 방식으로 제안이 되었죠)

 

(T-SNE의 embeding 결과 예시↓)

 

 

 

(↓Auto-Encoder의 embedding 결과 예시↓)

<그림 출처:  https://www.youtube.com/watch?v=rNh2CrTFpm4>

 

 

 

 

최초의 CNN 모델인 LeNet(1998)의 창시자 Yann LeCun 교수 또한 평소에 unsupervised learning 방식을 매우 강조해왔습니다. Yann LeCun 교수는 NIPS 2016 Key Note에서는 아래 PPT 내용을 발표하였고,

 

<그림 출처:  https://medium.com/syncedreview/yann-lecun-cake-analogy-2-0-a361da560dae>

 

 

 

같은 해(2016) CMU에서 특히 이를 강조하기도 했죠.

 

 

 

<그림 출처:  https://twitter.com/mldcmu/status/1046869963347283973>

 

 

 

 

 

2. Yann Lecun & Self-Supervised Learning

[2-1. 2018]

2018.09.12 Samsung AI Forum (SAIF) 에서 Yan Lecun 교수 self-supervised learning이라는 용어사용하게 됩니다. (물론 이전에도 사용해 왔을 수 도 있습니다) Yan Lecun은 supervised learning의 단점, reinforcement learning의 단점을 통해 self-supervised learning의 필요성을 주장했습니다.

 

  • Supervised learning의 단점
    • "레이블" 데이터가 많아야 함
    • 학습되지 않은 데이터가 튀어나오면 예측 불가능
  • Reinforcement learning의 단점
    • 실패해도 다시 시도하면 되는 게임에선 가능
    • 현실 세계에서는 실패 자체가 치명적일 수 있어서 적용하기 힘듬
  • Self-supervised learning의 필요성
    • 주변 상황과 조건을 고려해 예측해야 함
    • 실패하기 전에 사고가 난다는 것을 예측해야 함

 

 

(↓↓↓ Yan Lecun이 self-supervised learning을 언급했다는 내용↓↓↓)

https://news.samsung.com/kr/%EC%84%B8%EA%B3%84-%EC%84%9D%ED%95%99%EB%93%A4%EC%9D%98-%EB%88%88%EC%9C%BC%EB%A1%9C-%EB%B3%B8-ai%EC%9D%98-%EB%AF%B8%EB%9E%98%EC%82%BC%EC%84%B1-ai-%ED%8F%AC%EB%9F%BC-2018

 

세계 석학들의 눈으로 본 AI의 미래…‘삼성 AI 포럼 2018’

인공지능(AI)과 딥러닝(Deep Learning) 분야 최고 권위자들이 한국을 찾았다. 9월 12~13일 이틀에 걸쳐 열린 ‘삼성 AI 포럼 2018’에 연사로 나서기 위해서다. 이들은 AI의 고도화된 학습기법인 ‘자기지

news.samsung.com

 

https://www.sait.samsung.co.kr/saithome/event/saif2018.do

 

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

www.sait.samsung.co.kr

 

 

[2-2. 2019]

2018년도 까지만 해도 self-supervised learning과 관련된 연구들이 진행되고 있었지만, unsupervised learning이라는 용어와 별도로 분리해서 사용하지 않는 등 “self-supervised learning” 용어가 보편화 되지 않았던 것 같습니다.

 

하지만, Yann LeCun 교수는 self-supervised learning이라는 개념이 unsupervised learning 용어와 분별하여 사용할 필요성을 느끼고 2019 트위터에 “self-supervised learning”이라는 개념구체화 하기 시작합니다.

 

 

 

 

(↓↓↓Representation learning용어는 뒤에서도 나옴↓↓↓)

<그림 출처: https://chowdera.com/2021/01/20210109003603375e.html>

 

 

 

 

[2-3. 2020]

2020.11.05 Samsung AI Forum (SAIF) 에서 Yann LeCun 교수 다시 self-supervised learning강조했습니다. 좀 더 구체적인 내용들을 토대로 연설을 시작하면서 왜 self-supervised learning이 필요한지 설명했습니다.

 

<그림 출처: [SAIF 2020] Day 1: Energy-Based Models for Self-Supervised Learning - Yann LeCun | Samsung>

 

 

 

 

3. Self-Supervised Learning (SSL) Motivation

Self-Supervised Learnig을 배우는 이유는 다양하겠지만, 이번 글에서는 대표적인 한 가지 이유에 대해서만 말씀드리겠습니다.

 

Vision 분야에서 딥러닝을 가장 흔하게 사용하는 방법 중 하나는 pre-trained model을 transfer learning 하여 사용하는 것입니다. Transfer learning을 하는 이유는 ImageNet과 같이 방대한 양의 데이터를 미리 학습하여 다양한 이미지들에 대한 feature를 잘 뽑을 수 있게 filter들을 학습시키고, 특정 task에 적용하는 것이죠.

 

보통 초기 layer들은 edge와 같은 특징들을 뽑아낼 수 있게 학습이 될텐데, edge feature를 뽑아 줄 수 있는 filter들을 형성하는데 있어서 이미지 종류는 크게 상관이 없을 확률이 높습니다. 왜냐하면, 강아지의 edge 특징이나 자동차의 edge 특징이나 거기서 거기일 가능성이 크기 때문이죠. 하지만, 마지막 layer에서 추출할 수 있는 semantic 정보이미지 종류마다 다를 수 있습니다. 그래서, 우리가 최종적으로 분류할 task의 이미지 종류가 pre-training 시에 사용됐던 이미지 종류와 다르다면 마지막 layer 부분을 다시 학습(by transfer learning or fine-tuning)하여 최종 task 이미지의 semantic 정보를 적절하게 추출할 수 있도록 setting 해주는 것이죠. 

 

 

여기서 중요하게 알고 넘어가야할 용어가 있습니다. 바로 "upstream task""downstream task"입니다.

 

upstream taskpre-training 단계에서 진행하는 학습 task를 의미하고, downstream tasktransfer learning 시에 적용하고자 하는 target task를 의미합니다.

 

그렇다면, transfer learning 관점에서 왜 self-supervised learning이 필요할까요? 이 질문에 답을 하기 위해서는 기존의 방식들에 대한 의문을 먼저 던져봐야합니다.

 

 

“Why should we use supervised learning method for pre-training model?”

 

  1. Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?
  2. Pre-trained model을 학습하는데 대용량의 label 정보가 필요한가?

 

사실 위의 두 질문에서 첫 번째 질문에 대한 답이 "supervised learning 방식은 좋지않다"라면 2번에 대한 답은 자연스럽게 "필요없다"가 됩니다. 즉, 우리는 첫 번째 질문에 대한 고찰만 하면 되는 것이죠.

 

그렇다면, 1번 질문을 집중적으로 살펴보면서 self-supervised learnin이 필요한 이유에 대해서 살펴보도록 하겠습니다.

 

"Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?"

 

 

Mon May 3rd through Fri the 7th

2021 ICLR Keynote

Alexei A. Efros (UC Berkely)

 

(↓↓↓ 위의 슬라이드 자료 ↓↓↓)

https://iclr.cc/media/iclr-2021/Slides/3720.pdf

 

(↓↓↓ 위의 슬라이드 발표영상 ↓↓↓)

 

 

위의 발표내용 중에 제가 문제라고 봤던 부분을 정리해서 설명해보도록 하겠습니다. 여기서 부터는 주관적인 해석이 많이 들어가 있으니 참고해서 봐주시고, 잘 못 됐거나 다른 관점이 있으신 분들은 댓글 남겨주시면 감사하겠습니다.

 

 

기존CNNsupervised learning으로 학습하는 방식에 대해 살펴보겠습니다. CNN 분류 학습의 가장 큰 목표라고 할 수 있는 것은 아래 다양한 의자들을 모두 동일한 클래스인 "의자"라고 분류하는 것 입니다. 즉, 의자의 다양한 형태에 robust하게 분류 할 줄 알아야 하는데, 이를 위해선 의자의 공통적인 feature를 잘 뽑아낼 수 있도록 Conv filter학습되어야 합니다. 그래서, 학습 시 아래 다양한 의자들을 모두 동일한 label로 설정하게 되는 것이죠. 

 

 

 

그런데, 잘 생각해보면 사람들이 유아기 때 저 의자를 구분할 수 있었던 이유는 '누군가가 저 모든 형태 하나 하나씩 의자라고 알려주었기 때문'이 아니라 '먼저 각각의 의자의 특성들을 잘 파악하고 서로 유사한지 아닌지 비교해나가기 때문'인 것을 알 수 있습니다.

 

 

“People don’t rely on abstract definitions/lists of shared properties”

 

 

즉, 애초에 저 '다양한 의자들을 모두 같은 것'이라고 가정하고 출발하는게 '인간이 학습하는 방식'에 맞지 않다고 보는 것이죠.

 

 

 

위와 같은 문제를 해결하기 위해 딥러닝 모델도 먼저 각각의 의자 이미지들에 대한 특성을 잘 파악할 수 있게 학습시키는게 먼저라고 봤습니다.

 

"즉, 해당 이미지들이 무엇인지를 학습하는 것이 아닌 해당 이미지들이 무엇과 유사한지를 살펴보도록 하는게 인간의 학습관점에 더 맞다고 판단한 것이죠."

 

 

 

 

또한, 다양한 의자의 feature들을 잘 표현(representation)해줄 수 있도록 Conv filter가 학습(learning)되는게, downstream task를 위한 representation learning 관점에서 더 좋을 수 있다고 봤습니다.

 

 

 

 

 

4. 앞으로 볼 내용 

Self-Supervised Learning은 아래의 순서대로 발전해 왔습니다.

그렇기 때문에 앞으로 Self-Supervised Learning 카테고리에서는 Pretext task, Contrastive learning, New approach 이렇게 세 가지 서브 카테고리로 나눠서 설명하도록 하겠습니다.

 

<그림 출처:  https://www.youtube.com/watch?v=5BCQ7T2Rw1w>

 

 

+ Recent posts