Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

Papers/Generative Models

Introduction to generative models

이번 학기에 generative model의 전반을 다루는 수업을 청강하게 됐다. 작년엔 vision transformer가 주된 주제였는데, 배울것이 많았던 수업이라 크게 관심은 없었지만 요즘 워낙 생성모델에 대한 이야기가 많이 나와 공부해볼겸 청강하게 됐다.

 

한 학기동안 약 30편에 달하는 논문을 읽게될 예정인데 그중 인상 깊은 논문들은 정리해두려고 한다.

 

What is a generative model?

생성 모델은 generative power를 가진 모든 모델을 의미한다고 한다. 강의를 듣기 전에는 generative model은 새로운 데이터를 만들어 내야한다고 생각을 했었는데, generative power를 가지는 것과 데이터를 generation하는 것과는 차이가 좀 있다고 한다.

 

그렇다면 generative power란 무엇인가. 여기서 "K-means는 generative model인가"에 대한 질문을 한다. 결론부터 이야기 하면 generative model이다. Generative power는 어떤 데이터 분포를 모델링할 수 있는 능력을 이야기 한다. 가령 k-means를 돌리면 centeroid들을 구할 수 있는데, 이 centeroid 주변의 데이터를 대충 샘플링하면 실제 존재하지 않는 데이터여도 생성을 할 수는 있다. K-means는 모든 분포가 covariance가 없는 gaussian이라고 가정한 셈이니 GMM (Gaussian Mixture Model) 또한 generative power를 갖춘 모델이다. 특정 gaussian의 mean과 covariance를 알면 거기서 또 데이터를 샘플링 할 수 있을테니 말이다. 반대로 SVM (Support Vector Machine) 같은 방식들은 단순히 데이터들을 분류하는 decision boundary를 찾는데 목적이 있다보니 데이터들의 분포에 대한 정보는 얻을 수 없고 따라서 generative power는 없는 모델이라고 할 수 있다.

 

결국 generative model은 실제 데이터의 확률 분포를 잘 예측하는 것이 목적이다. 그러나 실제 데이터의 분포는 우리가 알 수 없다. 따라서 파라미터 θ를 따르는 어떤 분포(Pθ(X))를 모델링해서 그 분포에서 데이터를 추출했을 때 그 데이터가 실제로 등장할 확률이 얼마나 되는가에 대한 문제를 푸는 것이 된다. 수학적으로 쓰자면 내가 설정한 분포가 실제 분포와의 likelihood를 maximization하는 일이 된다. 그런데 이 likelihood도 직접적으로 다루기 힘들다. 어떤 분포가 주어졌을 때, 그 분포에서 실제 데이터 X들이 나올 확률(=P(X|θ))이 궁금하다. 반대로 dicriminative model은 어떤 입력 X가 주어졌을 때, 그 입력의 정답 y의 확률 즉 P(y|X)가 궁금한 모델들이다.

 

결국 Generative Model의 골자를 2가지로 정리하면 다음과 같다.

1. 실제 데이터 분포를 잘 모사하는 데이터 분포를 만들고 싶다.

2. 해당 분포에서 데이터를 샘플링 했을때 그 데이터가 실제 데이터 분포에서 나올 확률이 높은 (Likelihood가 높은) 분포를 만들고 싶다.

 

첫 논문은 Auto-Encoding Variational Bayes가 될 것 같다.