Reference
https://iai.postech.ac.kr/teaching/machine-learning
https://iai.postech.ac.kr/teaching/deep-learning
위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,
모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.
또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.
>>노션 링크<<
Keywords
- Discriminative Model, Generative Model
- Probability Distribution
- Deterministic Transformation by Network
Discriminative Model / Generative Model
우리가 앞에서 Supervised Learning을 통해 학습시킨 것들은 대부분 Discriminative Model이다.
Discriminative Model에 대해 설명하자면,
주어진 입력 데이터 $X$에 대해 직접적으로 output, label $Y$를 prediction하는 모델이다.
input $X$와 output $Y$ 사이의 mapping을 학습하는 것이 목표이며,
이를 위해 $P(Y|X)$ - input $X$에 대한 $Y$의 조건부확률을 모델링하여,
이를 학습함에 따라 data에 대한 decision boundary를 찾는 것에 집중한다.
대표적인 예시로는 Logistic Regression, Decision Tree, SVM, Neural Network 같은 앞에서 우리가 학습한 대부분의 모델들이 해당된다.
Supervised Learning의 학습 결과가 항상 Discriminative Model이라는 것은 아니다.
위와 반대로, Input $X$만 존재하는 Unsupervised Learning의 결과로, 대표적으로 Dim. Reduction과 Clustering 등을 수행할 수 있는 model이 생성된다는 것을 앞에서 우리는 학습하였다.
그 중 Autoencoder에서 학습된 autoencoder의 뒷 부분, decoder만을 두고 본다면 Generative한 model로써 바라볼 수 있다고 했던 것을 기억할 것이다.
rough하게 이해하자면 그 때의 decoder처럼, Latent space(Latent code)에서 분류될 카테고리에 맞는 data를 생성해낼 수 있는 model을 Generative Model이라고 할 수 있다.
조금 더 자세히 설명하자면, Generative Model은 training dataset에서의 전체적인 확률 분포를 학습한다.
그렇게 학습된 Generative Model은, input $X$가 들어왔을 때 그 input data와 비슷한 distribution을 가진 data들을 sampling하여, 그 sampling된 data들에 의해 generate되는 값과 비슷한 값을 generate시키는 것이다.
여기에서 Generative Model이 정확히 어떤 것을 학습하고, 어떤 식으로 동작하는 것인지 정확히 이해하려고는 하지 말자. Discriminative Model과 Generative Model로 나눌 수 있고, 어떤 식으로 다른 지만 rough하게 이해하고 넘어가면, 뒤의 학습하는 과정에서 더 자세히 살펴볼 기회가 있을 것이다.
Probability Distribution
우리가 Generative Model에서 학습하고 싶은 것은, 결론적으로
True한 Data Distribution에 가장 근접한 Model Distribution을 학습하는 것이다.
만약 실제 data에 대한 Data Distribution과 매우 흡사한 Model Distribution을 학습하였다고 가정하자,
그렇다면, Model Distribution의 PDF(Probability Density Function, 확률분포함수)에서 sampling하여 생성한 data가 Data Distribution의 PDF에서 sampling하여 뽑아낸 실제 data와 거의 동일하다는 것이다.
예를 들어 아래와 같이 사진 데이터를 예로 들어 보자.
위와 같이, input $X$ (training data)가 image라고 생각해 보자. 여기에서 각 이미지는 64x64x3 vector로 표현된다.
위 이미지 데이터는 실제 데이터이고, 이러한 data에 대한 distribution 또한 존재할 것이다.
(물론, 위의 이미지는 64x64x3의 vector이지만, 여기에선 이해하기 쉽도록 1D data에 대한 data distribution을 가정하였다.)
위와 같은 실제 이미지 Data들에 대한 $p_{data}(x)$, PDF(Probability Density Function, 확률분포함수)를 표현하면 다음과 같은 형태로 나타날 수 있다.
이러한 PDF에서 특정한 한 x값을 pick하면, 그 x에 대해 sampling하여 실제 이미지가 도출되는 것이다. (실제로, training dataset에 존재하는 어떤 한 이미지가 선택되는 것이다.)
우리의 목표는, 이러한 $p_{data}(x)$에 $p_{model}(x)$를 최대한 approximate시키도록 학습하는 것이다.
결국 $p_{model}(x)$이 ** **$p_{data}(x)$에 충분히 approximate되도록 학습되었다면,
$p_{model}(x)$를 따른 PDF에서 특정한 x값을 채택하여 sampling하였을 때, 거기에서 generate되는 data가
$p_{data}(x)$에서 sampling하여 도출된 data에 비교했을 때 거의 유사한 결과를 낳을 수 있다는 것이다.
다시 말하자면, 목표는, Model에 의해 generate된 image(생성된 data)의 distribution을 실제 이미지(data)의 distribution에 approximate시키는 것이다.
확률분포에 대한 설명이 미흡할 수 있다.
만약 이 글을 읽고 이해되지 않는 독자가 있다면,
아래 논문이나 다른 정보를 찾아 이해하고 넘어갈 수 있도록 하자.
https://arxiv.org/pdf/1406.2661
Deterministic Transformation by Network
Generative Model에서, Neural Network를 통해, network가 “확률 분포”를 학습하게 된다.
여기에서, ‘Network는 항상 Deterministic한데, 어떻게 이러한 Distribution을 approximate할 수 있는가?’ 라는 의문이 생기게 된다.
이에 대해, 우선 간단한 - (uniform distribution / gaussian distribution) - 과 같은 Latent Space(code vector $z$)에서부터 시작하게 된다.
이러한 Lower dimension(Latent space)에서부터, (gaussian distribution과 같은 분포의 PDF를) 특정한 PDF로 mapping하도록 학습하는 것이다.
네트워크 자체는 deterministic하다. 이것은 같은 입력에 대해 항상 같은 출력을 생성한다는 것이다.
그리고 여기에서 “distribution을 approximate한다”라는 것은, Network가 직접적으로 확률분포(PDF) 자체를 출력한다는 뜻이 아니다.
Network가 확률분포를 표현하거나 생성하는 데 사용될 수 있는 정보를 출력하게 된다는 것.다음 설명을 들으면 이에 대해 더 잘 이해할 수 있을 것이다.
(위의 경우, 가우시안 분포가 input이다.)
위와 같이 Input Distribution에 대한 Output Distribution으로의 Mapping을 Network이 학습하는 것이다.
(시작은 가우시안 분포든, 균등분포든) Network이 결국 수행하는 것은, 그러한 Input Distribution들을 우리가 원하는 Model Distribution이 우측의 output distribution이 되도록 mapping시키는 것이다. (우리가 원하는 PDF로 transformation 시켜주는 것이다. → 여기에서 output distribution이 우리가 원하는 target distribution이 되도록 하겠다는 것이다.)
그렇게 생성된 PDF인 $p_{model}$이 $p_{data}$에 근사해지면,
input distribution에서 sampling하고 sampling한 값을 Network에 forward propagation하여 data를 generate한 것과, $p_{data}$에서 값을 sampling한 것과 유사해진다는 것이다.
Network가 distribution 자체를 생성하는 것이 아닌, 이미 알고 있는 분포(가우시안, 균등)에서 target distribution으로 mapping한다는 것을 잘 기억하자.
위는 고차원 상에서, 똑같은 이야기를 하는 것이다.
가우시안 분포(Latent space $z$)를 Network를 통해 distribution으로 mapping하는 것을 학습하고,
그렇게 생성된 distribution과 실제 data의 distribution 사이의 loss를 minimize하는 방향으로 Network(parameter $\theta$)를 학습한다는 것.