안녕하세요.

 

이번글에서는 representation learning이라는 개념에 대해서 설명하려고 합니다.

 

개인적으로 2021년 동안 논문을 살펴보면서 가장 눈에 많이 띄었던 용어representation learning 이었습니다. 예를들어, GAN, self-supervised learning, transfer learning, domain adaptation 관련 논문들에서 자주 봤던 것 같네요.

 

 

 

이렇듯, 최근 deep learning 모델들을 representation learning 관점에서 설명하고 해석하려는 경향이 많은 것 같아 이번글에서 representation learningdeep learning 간의 관계를 살펴보려고 합니다.

 

※해당 내용들은 아래 deep learning book을 참고 했음을 말씀드립니다.

 

 

https://www.deeplearningbook.org/contents/representation.html

 

https://www.deeplearningbook.org/contents/representation.html

 

www.deeplearningbook.org

 

그림 출처: https://dmitry.ai/t/topic/175>

 

 

 

1. Representation Learning이란?

※Representation learning에 대한 개념을 사전적으로 정의하기 전에 우선 몇 가지 예시들을 통해 representation에 대한 개념을 직관적으로 이해해보도록 해보겠습니다.

 

1-1. 일반적인 관점에서의 representation 

먼저, representation이란 개념을 일반적인 관점에서 살펴보겠습니다. 

 

 

"잠시 아래 이미지를 보고 5초 동안 생각해보세요!"

 

여러분은 위의 이미지를 보고 다음과 같은 생각을 하셨을 겁니다.

 

"음.. 나누기가 있네? "나누기"하란 뜻이구나!"

 

그런데, 여기서 문제가 발생합니다. '나누기'를 하려고 하는데 로마(숫)자 표기가 되어있죠. 로마자를 이용하여 나누기를 하는건 생각보다 어려운 문제입니다. 그래서 여러분은 무의식적으로 위의 로마자를 "0, 1, 2, ..., 9"와 같은 아라비아 숫자로 바꾸어 나누기를 하려고 할 것 입니다. 

 

"즉, 나누기를 하기 위해서는 아리비아 숫자로 표기하는 것이 좀 더 수월한 것이죠."

 

 

그럼, 지금까지 이야기 한 내용을 좀 더 자세히 설명해보겠습니다.

 

우리는 보통 어떤 task해결하기 위해서 task와 관련된 정보들을 이용합니다. 예를 들어, 나누기(=task)를 하려고 하면 "수(=numeric)"라는 정보를 이용하죠. 하지만, 이러한 "수(=numeric)"라는 정보들은 다양하게 표현(=representation)될 수 있습니다. 수를 표현하는 방법에는 '로마숫자표기(=Roman numerical representation)', '아라비아숫자표기(Arabic numerial representation)' 등이 있죠. 

 

 

보통 task들의 난이도정보들을 어떻게 표현(=representation)해주느냐에 따라서 결정이 됩니다. 즉, 정보들을 특정 task에 맞게 잘 표현(=representation)해주면 해당 task를 풀 수 있는 확률이 높아지는 것이죠.

 

예를들어, 우리가 수를 나눈다고 가정해보겠습니다. 이 때, 수(=numeric)라는 정보를 로마숫자(=Roman numerical representation)로 표현하면 어떻게 될까요? 다시 말해, "CCX÷VI"라는 문제(=task)가 주어주면 풀기가(=해결하기가) 매우 힘들 것 입니다. 하지만, 나누기라는 task를 "210÷6"과 같이 아라비아 숫자(=Arabic numerial representation)로 표현하면 금방 해결하실 수 있으실 겁니다. 왜냐하면 아라비아 숫자를 이용하면 'place-value system'을 이용할 수 있기 때문입니다.

 

“The Roman numeral system (I, II, III, IV,...) lacks an efficient way to represent place, and it makes simple arithmetic functions (<- ex: division) very difficult to perform for most people. So, we need a place-value system. A place-value system assigns a certain value to the spatial location of a number in a series.​”​

 

이미지 출처:https://www.splashlearn.com/math-vocabulary/place-value/place-value

 

 

(위에서 한 이야기를 아래와 같이 정리해볼 수 있겠네요!) 

 

 

이렇듯, 우리가 나누기를 할 때, 수(=numeric)라는 정보를 보통 아라비아 숫자로 가공(=processing)하여 표현(=representation)하게 됩니다.

 

 

 

또 다른 예시로는 알고리즘이 있습니다. (이 부분은 자료구조의 개념이 필요하기 때문에 구체적으로 이해가 안되시는 분들은 "linked list, binary tree search, 시간복잡도"와 관련된 개념들을 찾아 보시길 권유합니다. 시간이나면 이 개념들에 대한 글을 따로 리포팅 하도록 하겠습니다.)

 

우리에게 어떤 수들이 주어져있고, 이 수들은 이미 오름차순으로 정렬이 되어 있다고 가정해보겠습니다. 이 때, 우리에게 새로운 수 하나가 주어졌다고 했을 때, 그 수를 올바른 위치에 삽입하는데 필요한 시간 복잡도가 어떻게 될까요? 이에 대한 답은 아래와 같습니다.

 

"정렬된 수 들을 어떻게 표현(=representation)해주느냐에 따라 다릅니다!"

 

자료구조에서는 정렬된 수 들을 아래와 같이 두 가지 형태 (=linked list, binary tree) 형태표현할 수 있습니다.

 

그림출처:https://www.geeksforgeeks.org/given-linked-list-representation-of-complete-tree-convert-it-to-linked-representation/

 

(참고로 교재에서 설명하는 red-black tree는 binary search tree의 일종인 self-balancing binary search tree라고 하는데, 이에 대한 자세한 설명은 생략하고 red-black tree를 binary search tree로만 표현하여 설명하도록 하겠습니다.)

 

 

(↓↓↓ Linked List 에 대한 시간복잡도 설명 ↓↓↓) 

https://yongkis.tistory.com/22

 

자료 구조에 따른 시간 복잡도 비교 - linked list편

오늘은 지난 배열편에 이어 linked list(연결 리스트)라고 불리는 자료구조에 대해서 시간 복잡도와 연관해서 분석해보고, 현실에서 어떤 것과 닮아있는지를 통해서 심화학습 해보도록 하겠습니다

yongkis.tistory.com

 

 

 

(↓↓↓ Binary Search Tree에 대한 시간복잡도 설명 ↓↓↓) 

https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

 

Red–black tree - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Self-balancing binary search tree data structure In computer science, a red–black tree is a kind of self-balancing binary search tree. Each node stores an extra bit representing "col

en.wikipedia.org

 

 

결국 우리에게 주어진 수를 어떠한 자료구조 형태 (ex: linked list or binary search tree)표현(=representation)하느냐에 따라서 "정렬된 수에 특정 수를 삽입(=insert)"하는 task의 시간복잡도(=난이도)가 결정됩니다.

 

이미지 출처:https://callmedevmomo.medium.com/%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-01-%EB%B9%85%EC%98%A4-%ED%91%9C%EA%B8%B0%EB%B2%95-ff369f0efc1d

 

지금까지 이야기한 내용들을 함축적으로 정리하면 아래와 같습니다.

 

"결국 우리는 어떤 task를 해결할 때, 정보(=information)를 어떻게 가공(processing)하여 표현(=representation)해줄지에 따라서 task의 난이도가 결정이 된다."

 

(↓↓↓ Deep learning book 본문 내용↓↓↓)

"Many information processing tasks can be very easy or very difficult depending on how the information is represented."

 

그렇다면 어떻게  딥러닝 모델에서 representation이란 개념은 어떻게 이해해야 할까요?

 

 

 

 

2. 딥러닝 관점에서의 representation 이란? (by Supervised learning 관점)

2-1. What is representation in supervised training of feedforward networks?​

먼저, Deep Neural Network (DNN) 를 살펴보겠습니다. 우리가 DNN을 사용하는 이유중 하나는 non-linear problem을 linear classifier로 풀수 있기 때문입니다.  (자세한 설명은 아래 글을 참고해주세요!)

 

https://89douner.tistory.com/23?category=868069 

 

5.Multi-Layer Perceptron (MLP), Universal Theorem

Q. 왜 단층 Perceptron 모델에서 Layer를 추가하게 되었나요? Q. Universal Approximation Theorem은 뭔가요? 2~4장까지 배웠던 부분을 아래와 같이 하나의 그림으로 요약을 할 수 있습니다. 1.입력값들이 가중치.

89douner.tistory.com

 

 

여기서의 tasklinear classifier를 이용한 classification task입니다. 그리고, 최초의 정보(information)라고 할 수 있는 DNN의 input 값들(=다양한 독립변수들: x1, x2, ..., xn)을 neural network로 가공(=processing)하여 'learned h space'로 표현(=representation)해 줍니다.

 

 

즉", 최초의 input 값들을 linear classifier가 올바르게 classification 할 수 있도록 'learned h space'로 표현(=representation)해준 것이죠."

 

 

 

2-2. What is representation in supervised training of feedforward networks?​

이미지CNN으로 분류하는 문제도 동일하게 생각해 볼 수 있습니다. Supervised learning 기반의 이미지 분류에서도 흔히 softmax (linear classifier)이용최종 분류를 하게 됩니다. (Softmax가 왜 linear classifier인지는 뒤에서 설명하도록 하겠습니다)

 

"즉, 이미지를 linear classifier로 classification 하려는 task인 셈이죠."

 

그런데, 일반적으로 DNN(=Deep Neural Network) 구조는 이미지 분류 성능이 좋지 않다고 알려져 있습니다 (자세한 설명은 아래 글을 참고해주세요!)

 

https://89douner.tistory.com/58?category=873854 

 

4. CNN은 왜 이미지영역에서 두각을 나타나게 된건가요?

안녕하세요~ 이번 시간에는 DNN의 단점을 바탕으로 CNN이 왜 이미지 영역에서 더 좋은 성과를 보여주는지 말씀드릴거에요~ 1) Weight(가중치) parameter 감소 (가중치 parameter가 많으면 안되는 이유를 참

89douner.tistory.com

 

앞서 "DNN 구조는 이미지 분류 성능이 좋지 않다"고 언급한 부분은 아래와 같이 다르게 해석해 볼 수 있습니다.

 

"DNN 구조는 (linear classifier를 이용한) 이미지 분류 task를 하기 위해 최초의 정보들을 부적절하게 표현(=representation) 해준다"

 

그래서, DNN과 다르게 visual feature들을 잘 뽑아(or 표현해) 낼 수 있는 Convolutional Neural Network (CNN)가 도입이 되게 됩니다. CNN은 convolutional filter를 이용한 feature extractor를 갖는 데, 이러한 feature extractor 덕분에 softmax linear classifier가 이미지를 잘 classification 해줄 수 있도록 최초 정보(=input 이미지)를 가공(=processing)하여 표현(=representation) 해주게 되는 것이죠.

 

"CNN achieves good representation for image classification using softmax linear classifier"

 

 

 

Input feature(=원본 이미지)CNN에 입력되면 다양한 conv layer에 의해 hierarchical feature map들이 얻어집니다. Task에 따라 feature extractor를 거쳐 얻은 최종 feature(=feature classifier에 입력되기 직전)의 표현(=representation)들이 달라질 것입니다. 예를 들어, classification task이면 classification에 맞는 최종 feature가 representation 될 것이고, segmentation task이면 segmentation에 맞는 최종 feature가 representation이 될 것 입니다. 

 

책에서는 subsequent learning task라고 언급하는 부분이 있는데, 이것이 최종 task의 종류들(=ex: classification task, segmentation task, linear clasifier task, etc...) 을 의미하는 듯 합니다.

 

"Generally speaking, a good representation is one that makes a subsequent learning task easier. The choice of representation will usually depend on the choice of the subsequent learning task."

 

&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;이미지 출처: https://www.researchgate.net/figure/Learning-hierarchy-of-visual-features-in-CNN-architecture_fig1_281607765&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;

 

결국 DNN, CNN 모두 최종 task의 유형에 따라 'new representation'에 해당하는 new feature(<--> input feature)를 출력하게 됩니다. 이러한 'new representation'을 뽑게 학습하는 것을 representation learning이라고 부르는 것이죠.

 

이미지 출처:https://srdas.github.io/DLBook/NNDeepLearning.html

 

좀 더 구체적인 예시를 들어보겠습니다.

 

먼저, 우리가 24×24 이미지를 갖고 네 가지 클래스분류한다고 해보겠습니다.

  1. Blue Square
  2. Blue Circle
  3. Red Square
  4. Red Circle

 

이 때, 576(=24×24)개입력 feature로 부터 뽑을 수 있는 가장 이상적인 (hidden) feature vector (=indepent vectors)를 뽑으라고 한다면, 아래와 같이 'color', 'shape' 2차원 (hidden) feature vector가 될 것 입니다. 그리고 이러한 feature vector를 'new representation'으로 볼 수 있겠네요.

 

"하지만, 'new representation'을 추출하는 network(=모델)가 무엇이냐에 따라서 달라집니다."

 

아래 왼쪽 이미지에서 'entangled space'DNN을 이용하여 얻은 (hidden) feature vector들이라고 가정한다면, DNN으로는 'blue circles'를 linear classifier로 구분하기 힘듭니다. 반대로, 오른쪽 'disentangled space'CNN을 통해 얻은 (hiddent) feature vector들이라고 한다면, 4가지 클래스 모두 linear classifier로 충분히 분류할 수 있게 됩니다.

 

이미지 출처:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;https://arxiv.org/abs/2007.06356

 

"즉, CNN은 이미지를 linear clasifier로 잘 분류할 수 있도록 (hidden) feature vector를 잘 representation 해주는 것이죠."

 

지금까지 설명한 내용을 종합하자면 결국 아래와 같이 정리해 볼 수 있겠네요.

 

결국 딥러닝 모델 성능은 "특정 task에 해당하는 최종 feature(=원본 데이터(=information)에서 가공된 데이터)들을 얼마나 잘 representation 해주느냐"에 따라 달려있다. 

 

보통, feature learning, feature representation learning, representation learning 이라는 단어들이 자주 혼용되서 사용되는데, 위에서 언급한 바를 생각해보시면 어떠한 이유로 해당 용어를 혼용해서 사용했는지 조금은 파악하실 수 있으실 거라 생각됩니다.

 

 

[Q. Softmax가 왜 linear classifier인가요?]

위의 질문에 답을 하기전에 먼저 아래의 질문에 답을 해보도록 하겠습니다.

 

'Q. logistic regression'이 어떻게 linear classifier가 될 수 있는가?'

 

우리는 logistic regression아래 그림으로 나타낼 수 있습니다.

 

우리에게 X라는 input 데이터가 주어 졌을 때, Y가 0 또는 1을 구분 짓는 binary classification을 한다고 가정해보겠습니다. X가 주어졌을 때 Y가 0이 될 확률을 "P(Y=0|X)"와 같이 표현할 수 있고, 이것을 sigmoid function을 이용해 구체적인 (확률) 값으로 표현한다면 아래 이미지의 수식을 이용하게 됩니다. 또한, 'binary clasfication'이기 때문에 P(Y=1|X)인 경우의 확률 값을 "1-P(Y=0|X)"라고 표현 할 수 있게 되죠.

 

 

 

Binary classification 문제는 P(Y=1|X), P(Y=0|X) 둘 중 어느 확률이 더 큰지에 따라서 최종 output 값(=Y)을 1로 classification 할 것인지, 0으로 classification 할 것인지 결정합니다. 그리고 이것을 아래와 같이 정리해볼 수 있죠.

 

위의 수식을 통해 우리는 아래와 같이 정리해볼 수 있습니다.

 

"logistic regression이 linear method라고 불리는 이유는 linear한 계산을 통해 풀 수 있는 문제여서가 아니라, logistic regression을 결정짓는 decision boundary가 여전히 linear하기 때문인 것이다."

 

(↓↓↓ logistic classifier가 linear classfier라는 설명을 참고한 링크 ↓↓↓)

https://homes.cs.washington.edu/~marcotcr/blog/linear-classifiers/

 

Is Logistic Regression a linear classifier?

A linear classifier is one where a hyperplane is formed by taking a linear combination of the features, such that one 'side' of the hyperplane predicts one class and the other 'side' predicts the other.

homes.cs.washington.edu

 

 

Softmax를 이용한 classification도 똑같은 맥락에서 linear classifier라고 할 수 있습니다. 

 

 

우리가 왜 softmax'multinomial logistic regression'으로 부르는지 이해해보면 좀 더 구체적으로 이해하실 수 있으실거라 생각됩니다.

 

"Softmax is known as multinomial logistic regression"

 

 

(↓↓↓multinomial logistic regression == softmax↓↓↓)

https://srdas.github.io/DLBook/LinearLearningModels.html#multiclass-logistic-regression

 

Deep Learning

This is an introduction to deep learning.

srdas.github.io

 

 

 

3. Unsupervised learning 관점에서 representation (learning) 이란?

앞서 설명한  supervised learning 기반의 representation (learning)에 대한 연구도 이루어지고 있지만, 오늘날 주로 연구되는 분야는 unsupervied learning 방식으로 하는 representation learning 입니다. Deeplearning book의 " Chapter 15. Representation Learning" 역시 대부분 unsupervised learning 방식의 representation learning에 대해서 이야기하고 있습니다. 이에 대한 자세한 설명은 다음 포스팅에서 하도록 하겠고, 여기에서는 추상적인 이유에 대해서만 말씀드리도록 하겠습니다.

 

앞서 supervised learning 관점에서 representation을 해석해 봤다면, 이번에는 unsupervised learning 관점에서 representation이 (supervised learning 관점에서의 representation과) 어떻게 다르게 설명될 수 있는지 살펴보겠습니다.

 

Unsupervised learning은 쉽게 말해 unlabelded dataset을 이용한 학습 방식입니다. 물론, unsupervised learningobjective(=loss) function이 있기 때문에 그 나름대로의 representation을 학습하게 됩니다.

 

이미지 출처:https://srdas.github.io/DLBook/NNDeepLearning.html

 

Unsupervised learning에서도 new representation에 해당하는 hidden feature vector를 구할 수 있습니다. 그런데, 우리는 이러한 representation을 명시적(explicit)으로 설정(=design)할 수 있습니다. 즉, hidden feature vector들이 어떠한 density function(→ 뒤에서 더 자세히 설명)을 따를거라고 명시적으로 표현(=representation)해 줄 수 있죠 (물론 이론이 아닌 '현실세계'에서는 굉장히 어려운 문제이지만요!).

 

예를 들어, VAE (=Variational Auto-Encoder) 같은 경우에도 hidden feature vector (= latent vector)normal distribution을 따를 것이라고 명시적으로 가정합니다. 이러한 내용을 Deeplearning book에서는 일반화하여 아래와 같이 표현합니다. 

 

"Other kinds of representation learning algorithms are often explicitly designed to shape the representation in some particular way. (->VAE같은 representation learning 알고리즘은 representation에 해당하는 feature vector가 명시적(=explicit)으로 normal distribution을 따르겠금(=shape) 고안된다)"

  

이미지 출처:&amp;amp;amp;amp;amp;amp;nbsp;https://learnopencv.com/variational-autoencoder-in-tensorflow/

 

앞서 설명한 개념들 중에 density estimation explicit 이란 단어를 좀 더 설명해보도록 하겠습니다.

 

 

Q. Density estimation이 뭔가요?

여행을 하다가 지역 주민에게 아래와 같은 질문을 했다고 가정해보겠습니다.

 

"여기 육교 아래로 지나가는 차는 하루에 몇 대나 인가요?"

그림출처:https://twitter.com/cjndrama/status/1248857284177874944

 

위의 질문에 대한 지역 주민들의 답은 아래와 같이 굉장히 다양할 것입니다. 

  • 주민1: 어제 봤더니 300대 인거 같던데?
  • 주민2: 일주일 전에 봤더니 500대 인거 같던데?

 

위의 답을 통해 우리는 아래와 같은 사실들을 알 수 있습니다.

  • 차가 하루에 몇 대가 지나갈지는 정해지지 않음 
    • 즉, 차가 하루에 100 대 지나간다는 건 매일 어김없이 100대가 지나간다는 '절대진리'와 같음 ​
    • 어떤 질문에 대해 상수로 답변하는 것은 절대 진리 이야기 하는 것과 같음
  • 그러므로, '하루(일일) 교통량'을 상수 개념이 아닌 변수 개념으로 봐야 함
  • (사회 or 자연)현상과 관련된 개념들은 '변수' 개념들로 봐야하는 경우가 대부분
    • 위와 같은 '변수' 성격을 띄는 '(사회 or 자연)현상'과 같은 질문들에 대해, 그럴듯한 답을 하기 위해선 ‘확률’이 필요
    • 즉, 다수의 관측 결과를 기반으로 어떠한 현상을 확률적으로 설명해야 함
    • 이 때, 필요한 개념이 '​Probability (Density) Distribution​'

 

 

(↓↓↓ 스마트폰 수명과 exponential probability distribution 간의 관계↓↓↓)

https://math100.tistory.com/36​ 

 

지수분포 문제풀이

이전 글에서 지수분포는 시간이 지날수록 확률이 점점 작아지는 경우에 사용한다고 했었는데, 지수분포는 “이하일 확률”과 “이상일 확률”을 구하는 공식이 서로 다르다. 그래서 문제를 풀

math100.tistory.com

 

위와 같이 다양한 현상들을 확률적으로 표현해주는 probability distribution이 존재합니다.

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://destrudo.tistory.com/16

 

앞에 설명한 내용을  다시 정리해보겠습니다.

관측 데이터가 한달, 두 달, 1년 넘게 쌓이게 되면 우리는 '일일 교통량'이란 변수가 어떤 (확률분포) 특성을 갖는지 좀더 정확히 파악할 수 있게 됩니다. 

 

우리는 여기서 '변수'와 '데이터(=관측 값)'에 대한 관계를 정의해볼 수 있습니다.

 

어떤 변수가 가질 수 있는 다양한 가능성 중의 하나가 현실 세계에 구체화된 값을 데이터라고 부릅니다. 즉, 데이터는 변수의 일면에 불과한 것이죠.

 

 

“우리는 이렇게 관측된 데이터들을 통해 그 변수(random variable)가 가지고 있는 본질적인 특성을 probability density distribution으로 설명 또는 추정(estimate)하려고 하는데, 이를 'density estimation (밀도추정)' 이라고 합니다”

 

 

(↓↓↓ Density estimation에 대한 글을 참고한 사이트 ↓↓↓)

https://darkpgmr.tistory.com/147

 

Kernel Density Estimation(커널밀도추정)에 대한 이해

얼마전 한 친구가 KDE라는 용어를 사용하기에 KDE가 뭐냐고 물어보니 Kernel Density Estimation이라 한다. 순간, Kernel Density Estimation이 뭐지? 하는 의구심이 생겨서 그 친구에게 물어보니 자기도 잘 모른.

darkpgmr.tistory.com

 

 

 

 

Q. Density estimation과 explicit은 어떤 관계인가요?

앞서 배운 density estimation 가지 종류로 나뉩니다.

 

(이 글에서는 explicit에 대한 개념을 설명하는 것이 목적이므로 parametric density estimation에 대해서만 설명하겠습니다)

 

"Parametric density estimation은 변수(=random variable)이 특정 PDF(=Probability Density Function)를 따를 것이라 가정합니다."

 

즉, PDF에 대한 확률모델 (=probability density distribution)을 정해 놓고 모델의 파라미터만 추정하는 방식이죠. (참고로 여기서 말하는 parameter는 딥러닝에서 말하는 weight와 다릅니다!)

 

앞서 예를 들었던, VAE를 통해서 설명하자면 다음과 같습니다.

  • Latent vector (Z space)가 normal distribution을 따를 것이라 가정 ← a.k.a prior distribution​
  • Z latent vector의 mean, std만 구하면 Z space를 설명할 수 있음​

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://davideliu.com/2019/11/08/variational-autoencoder/

 

이미지 출처:https://www.jeremyjordan.me/variational-autoencoders/

 

 

(↓↓↓ VAE에 대한 설명을 참조한 글 ↓↓↓)

https://www.jeremyjordan.me/variational-autoencoders/

 

Variational autoencoders.

In my introductory post on autoencoders, I discussed various models (undercomplete, sparse, denoising, contractive) which take data as input and discover some latent state representation of that data. More specifically, our input data is converted into an

www.jeremyjordan.me

 

 

 

CS231 수업에서도 generative model을 아래와 같이 구분하고 있는데, VAE와 같은 모델을 explicit density estimation으로 보고 있고, 이것을 통해 'parametric=explicit' 관계로 해석했습니다 (이와 같은 해석은 저의 주관적 해석이니 다른 의견이 있으신 분들은 댓글 달아주시면 감사하겠습니다!).

 

Deeplearning book에서는 "Supervised training of feedforward networks does not involve explicitly imposing any condition on the learned intermediate features."와 같은 표현을 합니다. 이 문장을 개인적으로 해석하면 아래와 같다고 생각합니다.

  • any condition: probability density function
  • learned intermediate features: pre-trained model의 feature들 ← DCGAN에서 pre-trained model의 feature들을 intermediate features라고 묘사하고 있음
  • does not involve explicitly imposing any condition on the learned intermediate features. ← Supervised learning으로 이미 학습된 feature들은 어떤 PDF를 따를거라고 명시적(=explicit)으로 지정되지 않음

 

앞서 언급한 latent vector들이 (dependent vector들을 포함하기 보다) independent vector들을 더 많이 포함할 수 록 좀 더 고차원 데이터를 쉽게 표현해 줄 수 있습니다. 예를 들어, 사람 얼굴을 4개의 latent vector들로 표현한다고 했을 때, "x1=얼굴색, x2=인종, x3=머리색, x4=수염" 이렇게 표현하면 x1과 x2는 어느 정도 종속관계 (dependent) 이기 때문에 (상대적으로) 표현력이 떨어지게 되지만, 반대로 "x1=인종, x2=수염, x3=머리색, x4=안경여부" 이렇게 표현한다면 더 많은 사람들의 얼굴을 잘 표현할 수 있을 것입니다. 

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://www.jeremyjordan.me/variational-autoencoders/

 

"그래서, latent vector들이 최대한 independent 하도록 objective(=loss) function을 설계하는 것이 핵심 포인트가 됩니다."

 

 

 

4. Multi-task learning 그리고 shared internal representation

우리에게 굉장히 적은 데이터들이 주어졌을 때, supervised learning을 적용한다면 흔히 overfitting 문제가 발생할 것입니다. 예를 들어, 우리에게 아래와 같은 Chest X-Ray 폐렴 데이터만 갖고 있다고 해보겠습니다. 

 

이미지 출처:https://www.openaccessjournals.com/articles/advanced-neural-network-solution-for-detection-of-lung-pathology-and-foreign-body-on-chest-plain-radiographs-13104.html
그림 출처:https://www.openaccessjournals.com/articles/advanced-neural-network-solution-for-detection-of-lung-pathology-and-foreign-body-on-chest-plain-radiographs-13104.html

 

의사들이 보는 폐렴 증상은 분명 폐주위의 섬유화에 주목하겠지만, 딥러닝의 경우는 CAM(=Class Activation Map)을 통해 살펴보면 엉뚱한데주목하는 경향이 있습니다. 아래와 같이 엉뚱한 곳을 보는 이유폐렴 관련 데이터는 저런 부분들만 살펴봐도 분류가 가능했기 때문일 수 있습니다. 즉, 정답의 이유는 상관없이 "학습 데이터의 정답만 맞추면 된다"는 식인 것이죠.

 

 

하지만, 저런 artifacts와 같은 요소들이 없는 폐렴 데이터가 들어오면 곧 바로 틀려버립니다. 즉, supervsied learning 방식을 사용한 CNN적은 수 의 폐렴 데이터로 학습하게 되면, 폐렴 CXR 이미지를 제대로 representation 해줄 수 없게 된다고 이야기 할 수 있습니다.

 

또 다른 예시로는 한 병원의 의료 이미지 데이터만 사용하여 학습시킨 딥러닝 모델을 다른 병원의 의료 이미지 데이터로 테스트 하려고 하면 잘 안되는 경우가 있습니다. 여기서 생각해 볼 수 있는 부분은 해당 딥러닝이 특정 병원에서 생산되는 기기의 noise학습해버렸다거나, 기기의 contrast를 고유하게 학습했을 경우 다른 병원의 noise, contrast가 들어오면 기존 예측방식에 큰 혼란을 줄 수 있겠죠 (물론 data augmentation을 이용하여 이러한 문제를 조금 해결할 수 있겠으나, 우리가 모르는 해당 병원의 고유의 변수들을 모두 커버할 순 없겠죠).

 

결과적으로, 적은 수의 데이터를 이용하여 supervised learning을 적용하면 unseen data (=training data에 포함되지 않은 데이터) 를 잘 예측하지 못하게 됩니다. 이를 보통 sensitive 하게 반응한다고 하죠. 그렇다면, 우리는 unseen data에도 robust하게 작동할 수 있는 딥러닝 모델만들어야 합니다.

 

만약 우리가 방대한 unlabeled data를 이용하여 이미지를 잘 representation 해 줄 수 있는 딥러닝 모델을 만든다면, 이러한 딥러닝 모델을 pretrained model로써 활용할 수 있을 겁니다. 즉, 최종 supervised task에 unlabeled data으로 학습시킨 pretrained model을 적용해도 좋은 '일반화 성능'을 얻을 수 있게 되는 것이죠.

 

"Training with supervised learning techniques on the labeled subset often results in severe overfitting. Semi-supervised learning offers the chance to resolve this overfitting problem by also learning from the unlabeled data. Specifically, we can learn good representations for the unlabeled data, and then use these representations to solve the supervised learning task."

 

또한 우리는 unlabeled data를 이용한 unsupervised learning 방식supervised learning 방식섞은 semi-supervised learning 방식을 이용할 수도 있습니다.

 

"즉, unsupervised learning 방식의 internal representation와 supervised learning 방식의 internal representation을 공유(share)할 수도 있는 것이죠."

 

출처: UnderstandandLeveragetheInternalRepresentationsof ConvolutionalNeuralNetworks (by Bolei Zhou; MIT)

 

(↓↓↓internal representation 에 대한 개념 이해 시 참고한 사이트 ↓↓↓)

https://aman.ai/cs231n/visualization/#visualizing-internal-representationsactivations

 

Aman's AI Journal • CS231n • Visualizing and Understanding

Review: Computer Vision Tasks We’ve talked about architectural design in the context of convolutional neural networks. We’ve primarily studied this within the purview of image classification. In the last couple of topics, we’ve been looking at the ot

aman.ai

 

 

 

Representation에 영향을 미치는 세 가지 요소는 아래와 같다고 할 수 있습니다.

 

  1. Input data
    • input data를 적절히 preprocessing 해주는 것에 따라서 적절한 new representation(or hidden feature vector)을 구할 수 있음
    • 최근 data에 기반한 data-centric research가 많이 주목 받고 있음
  2. Model
    • 보통 딥러닝 연구에서는 모델링 중심 (=model centric) 연구가 주(=main)를 이룸
    • Deep Learning
      • DNN, CNN, ViT, etc ...
    • Machine Learning
      • K-means, KNN (K-Nearest Neighbor), etc ...
  3. Task Type
    • Supervised Learning 방식
    • Semi-supervised learning 방식
    • Unsupervised Learning 방식
      • self-supervised learning
        • contrastive learning
      • GAN Inversion

 

 

 

지금까지 "representation learning"에 대한 개념을 살펴보았습니다.

 

다음글에서는 unsupervised learning 방식으로 학습시킨 representation model (=pretrained model) 을 어떻게 supervised task에 적용해서 사용했는지 그 사례에 대해서 살펴보도록 하겠습니다.

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

2. Unsupervised pretraining (Greedy Layer-Wise)  (6) 2022.01.24

+ Recent posts