Taeoh Kim's Blog

Computer Vision and Machine Learning Study Post 5

Bayes Theorem과 Sigmoid와 Softmax사이의 관계



Reference는 다음과 같습니다.

  • Pattern Recognition and Machine Learning, Bishop, 2006



1. Bayes Theorem


$$ P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)} $$

위 식에서 좌변은 사후 확률 Posterior라고 부르고, P(X|Y)는 Likelihood 또는 Class-conditional Data Distribution, P(Y)는 Prior 그리고 P(X)는 Evidence라고 부른다.

여기서 X를 Data, Y를 Classifiaction 문제의 Class로 본다면, Prior라는 것은 그 Class들의 분포가 어떻게 되어있는지에 대한 사전 지식을 의미하고, P(X|Y)는 각 Class에 속해 있는 Data의 확률 분포, 그리고 사후 확률 P(Y|X)는 새로운 데이타가 들어 왔을 경우 Y의 분포로, 이것으로 어떤 Class Y에 속할 지를 정할 수 있다.

확률의 Marginal 특징에 의하여 분모인 Evidence는 다음과 같이 쓸 수 있다.

$$ P(X) = \sum _{j}^{}{P(X|Y_j) P(Y_j)} $$

이제 이것이 Classification 문제에서 어떻게 적용되는지를 살펴보도록 하자.



2. Logistic Function: 2-Class Classification


우리가 분류를 하고자 할 때, 즉 새로운 데이터를 분류하고자 할 때 사후확률을 기준으로 삼는다, 즉,

$$ X:Y_1 \text{ if } P(Y_1 | X) > P(Y_2 | X) $$ $$ X:Y_2 \text{ if } P(Y_1 | X) < P(Y_2 | X) $$

위와 같이 1과 2 두개의 Class가 있을 경우에 판별 기준인 Posterior를 전개해 보도록 하자,

$$ P(Y_1 | X) = \frac{P(X | Y_1) P(Y_1)}{P(X)} $$ $$ P(Y_2 | X) = \frac{P(X | Y_2) P(Y_2)}{P(X)} $$

그런데 여기서, 분모는

$$ P(X) = P(X | Y_1)P(Y_1) + P(X | Y_2)P(Y_2) $$

이므로 두 식에서 모두 같다.

즉 사후 확률은 Likelihood와 Prior의 곱이 결정한다는 것이다. 즉 각 Class별로 Likelihood와 Prior의 곱을 정의하는 것은 의미가 있다라는 것이 중요하다.

여기서 우리는,

$$ a_k = ln(P(X|Y_k)P(Y_k)) $$

라는 것으로 Likelihood와 Prior의 곱을 정의하도록 하자.

왜 Log(ln)을 붙이는 지는 Log Likelihood를 본다면 알 수 있듯이 다음과 같다.

  • Log는 단조 증가 함수로서 극점을 변화시키지 않는다.
  • 각 시행이 독립일 경우 곱이 덧셈으로 바뀌어 계산이 용이해진다.
  • 확률분포가 Gaussian 등의 Exponential Family일 경우 계산이 용이해진다.

그러면 Class 1의 사후 확률은 다음과 같이 된다.

$$ P(Y_1 | X) = \frac{P(X | Y_1) P(Y_1)}{P(X | Y_1)P(Y_1) + P(X | Y_2)P(Y_2)} = \frac{e^{a_1}}{e^{a_1}+e^{a_2}} $$

분모와 분자를 모두 분자로 나누면,

$$ P(Y_1 | X) = \frac{1}{1+e^{a_2 - a_1}} $$

여기서,

$$ a_2 - a_1 = ln( \frac{P(X | Y_2)P(Y_2)}{P(X | Y_1)P(Y_1)} ) $$

이고, 분모 분자를 뒤집어 새로 하나를 정의하자면 (이것을 Log Odds라고 부른다)

$$ a = -(a_2 - a_1) = ln(\frac{P(X | Y_1)P(Y_1)}{P(X | Y_2)P(Y_2)}) $$

그러면 다시 사후 확률로 돌아가면 다음과 같다.

$$ P(Y_1 | X) = \frac{1}{1+e^{-a}} $$

a에 대한 함수로서 이것을 그려 보면, Deep Learning 해본 사람은 누구나 다 아는 Sigmoid Function (정식 명칭: Logistic Function)이 된다.

Naive Bayes를 예로 분류 문제를 풀어 본다면, 보통은 Likelihood는 Gaussian으로 정의한다.

즉 한 Class 내에서의 확률 분포는 평균과 분산을 가지는 Gaussian정도가 적합하다는 것이다.

그리고 Prior의 경우에는 두 가지 중 선택의 문제이므로 Bernoulli 분포로 두면 적당하다.

Log Odds에 해당하는 부분에 이러한 분포들이 들어가게 되면 Naive Bayes 분류기가 되며 이것은 대표적인 Generative Model이다.

만약 우리가, Likelihood와 Prior의 확률 분포를 구분하지 않고 바로 다음 함수,

$$ P(Y|X) = \frac{1}{1+e^{-\theta x}} $$

에 Fitting하는 문제로 바꾼다면 이것은 대표적인 Discriminative 문제인 Logistic Regression이 된다.



3. Softmax Function: K-Class Classification


2-Class (Binary Class)가 아니고 K-Class 문제의 경우에는 어떻게 될까?

우리는 사후 확률 분포로 판단을 하고, 그것은 Likelihood와 Prior의 곱에 비례했기에 다음을 정의하였다.

$$ a_k = ln(P(X|Y_k)P(Y_k)) $$

그래서 2-Class Classificaiton에서는 Class 1에 대한 사후 확률은 다음과 같이 되었었다.

$$ P(Y_1 | X) = \frac{e^{a_1}}{e^{a_1}+e^{a_2}} $$

K-Class의 경우 Class 1에 대한 사후 확률을 우선은 Bayes로 전개해 보면,

$$ P(Y_1 | X) = \frac{P(X|Y_1)P(Y_1)}{P(X|Y_1)P(Y_1) + P(X|Y_2)P(Y_2) + … + P(X|Y_k)P(Y_k)} $$

여기에 위에서 정의한 것을 대입하면,

$$ P(Y_1 | X) = \frac{e^{a_1}}{e^{a_1}+e^{a_2}+…+e^{a_k}} = \frac{e^{a_1}}{\sum _{j}^{}{e^{a_j}}} $$

결국 이것이 Deep Learning에서 많이 보던 Softmax Function이 된다.

저 Normalization Term (분모) 때문에 한 Class의 확률이 다른 Class에 영향을 미치게 되며,

Generative Model (Naive Bayes나 Gaussian Discriminant Analysis 등)에서는 Prior P(Y)에도 영향을 주게 된다.

이것을 다음 함수,

$$ P(Y|X) = \frac{e^{\theta_1 x}}{\sum _{j}^{}{e^{\theta_j x_j}}} $$

Prior고려없이 바로 P(Y|X)를 Fitting하면 Discriminant Model인 이것은 Softmax Regression 된다.



마치며..


이번 포스트와 저번 포스트부터는 이론적인 측면을 좀 다루었는데, 사실 용어정리가 굉장히 중요한 것으로 느껴졌다. Maximum Likelihood부터, Random Variable, Posterior, Prior, Generative Model과 Discriminative Model, Parametric Method와 Non-Parametric Method, Non-Bayesian과 Bayesian Approach 등 결국 앞으로도 계속 하고자 하는 것은 기초 개념 정리를 단단히 하려는 것이다. 최종적으로는 매우 어려운 것을 접했을 때 그것을 쉽게 풀어내기 위함이다.

머신러닝/딥러닝 등의 분야에서는 선형 대수, 확률 그리고 최적화 정도가 중요한 Background가 되는데 선형 대수까지 하기에는 역량이 부족하고 그나마 확률과 최적화에 대해서는 앞으로도 계속 다뤄보고 싶다. 실제 구현과 여러가지 분야에 대한 잡설과 함께 할 예정이다.