Generative and discriminative models

Written on April 16, 2017

패턴 인식분야에서 분류에 쓰이는 모델은 크게 두가지로 분류될 수 있는데, 이들은 각각 Generative Model(생성 모델)과 Discriminative Model(판별 모델)입니다. 이 둘은 어떤 차이가 있을까요?

Generative models model the distribution of individual classes. Discriminative models learn the (hard or soft) boundary between classes

즉, 생성모델은 데이터셋에 포함된 각 클래스들의 확률 분포를 모사하는 모델입니다. 확률 분포에 대한 모델이 있으면 그 데이터셋을 역으로 생성하는 것이 가능합니다. 반면, 판별 모델은 클래스 사이의 경계를 학습합니다. 그러므로 판별 모델은 경계를 통해 샘플데이터가 어느 클래스에 속하게 될지를 직접적으로 판별할 수 있습니다.

SVM(Support Vector Machine)과 의사결정트리(Decision Tree)는 판별 모델입니다. 그 이유는 그들이 클래스간의 명확한 경계가 어디인지를 학습하기 때문입니다. SVM은 최대마진분류기입니다. 즉, 주어진 커널에 대해서 두 클래스 내의 샘플간 거리를 최대로하는 경계를 학습한다는 의미입니다. 샘플과 학습된 경계사이의 거리는 SVM을 Soft Classifier로 만들기 위한 척도로 사용할 수 있습니다. Decision Tree는 Information Gain이 최대화 되도록 Feature Space를 재귀적으로 나눔에 의해서 의사결정의 경계를 학습합니다.

입력데이터 $x$ 가 있고, 라벨 $y$ 로 데이터를 분류하는 상황을 생각해 봅시다. 생성 모델은 $p(x,y)$ 의 결합확률 분포를 학습하고 판별 모델은 조건부확률 분포, $p(y \mid x)$ 을 학습합니다. 간단한 다음의 예를 봅시다. $(x,y)$ 에 관한 샘플데이터, (1,0), (1,0), (2,0), (2, 1)가 주어졌습니다. $p(x,y)$ 는 다음과 같이 계산될 것입니다:

      y=0   y=1
     -----------
x=1 | 1/2   0
x=2 | 1/4   1/4

$p(y \mid x)$ 는 다음과 같이 계산될 것입니다:

      y=0   y=1
     -----------
x=1 | 1     0
x=2 | 1/2   1/2

$p(y \mid x)$ 는 샘플 $x$ 가 주어졌을때, $y$ 가 될 확률값을 줍니다. 그러므로 샘플 $x$를 $y$ 로 분류하기 위한 자연스러운 확률분포이며, 왜 discriminative model이라고 부르는지 알 수 있습니다.

생성모델 $p(x,y)$ 는 Bayes Rule을 적용하여 $p(y \mid x)$ 로 변환할 수 있고, 그러므로 분류 목적으로 이용할 수도 있을 것입니다. 하지만, 생성모델의 흥미로운 응용은 $p(x,y)$ 를 이용하여 학습데이터셋과 유사한 통계적인 특성을 가지는 $(x,y)$ 쌍을 생성하는 것입니다.

어쩌면 생성모델이 판별모델에 비해서 일반적으로 더 우수하다고 생각될수도 있겠습니다. 하지만, 실질적인 상황은 단순하지 않습니다. 연구에 의하면, 일반적으로 판별 모델들이 분류작업에 대해서 생성모델보다 우수하다는 것이 알려져 있습니다.

References

discussion from stackoverflow

discussion from stackexchange

Adrew Ng’s paper

Adrew Ng’s note