이번 학기에 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가 될 것 같다.