2018년 2월 5일 월요일

Minimizing the Negative Log-Likelihood, in Korean (2)

* This is the Korean translation of the original post by will wolf under his permission. You can find the English version at his blog: here. 저자의 허락을 득하고 번역하여 옮깁니다. 

저번 글에 이어서 output 함수들이 왜 그런 형태로 나오는지 알아보도록 하겠습니다. 잠시 복습을 하고 넘어가시죠!

Functional form


이 글에서 다루고 있는 세 모델들은 각각 서로 다른 함수를 바탕으로 예측을 하는데요:  각각 identity function (i.e. no-op), sigmoid function, and softmax function. Keras로 output layer를 만들어보면 명확합니다:
output = Dense(1)(input)
output = Dense(1, activation='sigmoid')(input)
output = Dense(3, activation='softmax')(input)
이 단락에서는,
  • Gaussian, binomial 그리고 multinomial distributions가 같은 functional form으로 나타낼 수 있다는 것을 보이겠습니다. 
  • 이 common functional form에서 세 모델들의 output function (identity, sigmoid, softmax)가 자연스럽게 유도된다는 것을 보이겠습니다. 

마치 다음 그림과 같이 생각할 수 있겠네요. 세 가지 분포가 들어가서 세 가지 output functions이 나오는 것이죠. (그림이 이상한데? -_-; 뭐 아무튼 하나의 functional form으로 설명이 가능해서 저렇게 표현할 수 있다고 생각하면 될 듯합니다.)


bottleneck

여기서 병목에 해당하는 개념은 확률 분포의 "exponential family"가 되겠습니다.

Exponential family distributions

In probability and statistics, an exponential family is a set of probability distributions of a certain form, specified below. This special form is chosen for mathematical convenience, on account of some useful algebraic properties, as well as for generality, as exponential families are in a sense very natural sets of distributions to consider.
- 위키피디아
저(글쓴이)는 위의 설명을 그리 좋아하지 않습니다. 매우 모호하다는 점에서 특히 더 그렇습니다. 여기서 진실은 exponential functions이 우리가 잘 알고 사용하기 좋아하는 고전적인 activation과 loss functions을 하나의 틀에서 유도하는데 매우 좋은 도구라는 점입니다. 저는 "mathematical convenience, on account of some useful algebraic properties, etc." 부분에 좀 더 집중해서 "certain form"이라는 것이 괴랄한 이유로 만들어진 것이 아니란 점을 얘기하고자 합니다.

Exponential family에 속하는 분포는 다음과 같은 형태로 나타낼 수 있습니다:
$$P(y; \eta) = b(y)\exp(\eta^T T(y) - a(\eta))$$ 여기서
  • $\eta$는 분포의 canonical parameter입니다 (We will hereby work with the single-canonical-parameter exponential family form).
  • $T(y)$는 sufficient statistic입니다. (많은 경우 $T(y)=y$입니다.)
  • $a(\eta)$는 log partition function으로써 분포를 정규화하는데 쓰입니다. (더 깊은 논의는 다음 포스팅에서 보실 수 있습니다: Deriving the Softmax from First Principles.)

따라서 $T,a,b$를 정하면 분포의 family (or set)가 정해지고 이는 $\eta$로 parameterized 됩니다. 우리가 $\eta$를 바꿀 때마다 해당 familiy 안의 다른 분포를 만들 수 있겠죠. 이는 $Pr(heads)=0.6$인 동전이 $Pr(heads)=0.7$인 동전과는 다른 분포를 갖는 것으로 설명할 수 있습니다.

어때요, 참 쉽죠?

그럼 하나씩 살펴볼까요?

Gaussian distribution


편의를 위해 여기서는 단일 매계변수 형태를 다루고 있기 때문에 $\sigma^2$가 $1$로 알려져있다고 가정해보겠습니다.
$$\begin{align*}
P(y\vert \mu, \sigma^2)
&= \frac{1}{\sqrt{2\pi\sigma^2}}\exp{\bigg(-\frac{(y - \mu)^2}{2\sigma^2}\bigg)}\\
&= \frac{1}{\sqrt{2\pi}}\exp{\bigg(-\frac{(y - \mu)^2}{2}\bigg)}\\
&= \frac{1}{\sqrt{2\pi}}\exp{\bigg(-\frac{1}{2}(y^2 - 2\mu y + \mu^2)\bigg)}\\
&= \frac{1}{\sqrt{2\pi}}\exp{\bigg(-\frac{1}{2}y^2\bigg)} \cdot \exp{\bigg(\mu y - \frac{1}{2}\mu^2\bigg)}\\
\end{align*}$$ 여기서,
  • $\eta=\mu$ 
  • $T(y)=y$
  • $a(\eta) = \frac{1}{2}\mu^2$
  • $b(y) = \frac{1}{\sqrt{2\pi}}\exp{(-\frac{1}{2}y^2)}$

라고 해보겠습니다.

마지막으로 $a(\eta)$는 다음과 같습니다:
\begin{align*}
a(\eta)
&= \frac{1}{2}\mu^2\\
&= \frac{1}{2}\eta^2
\end{align*}

Binomial distribution


이항 분포에 대해 앞서 글에서 정의한 적이 있었죠? 여기서는 좀 더 단순하게 나타내서 이항 분포가 실제로 exponential familiy에 속한다는 것을 보일 것입니다. 여기서 $\phi$는 true class를 관측할 활률입니다. 즉, $Pr(cat) = 0.7 \implies \phi = 0.3$
\begin{align*}
P(y\vert \phi)
&= \phi^y(1-\phi)^{1-y}\\
&= \exp\bigg(\log\bigg(\phi^y(1-\phi)^{1-y}\bigg)\bigg)\\
&= \exp\bigg(y\log{\phi} + \log(1-\phi) - y\log(1-\phi)\bigg)\\
&= \exp\bigg(\log\bigg(\frac{\phi}{1-\phi}\bigg)y + \log(1-\phi)\bigg) \\
\end{align*}
여기서,
  • $\eta = \log\bigg(\frac{\phi}{1-\phi}\bigg)$ 
  • $T(y)=y$
  • $a(\eta) = -\log(1-\phi)$
  • $b(y) = 1$

입니다. (어? 여기서 $\phi$가 $\eta$에 대한 sigmoid 함수라는 걸 눈치채신 분?)

마지막으로 분포의 매계변수 $\eta$에 대해 $a(\eta)$를 나타내면:
$$\eta = \log\bigg(\frac{\phi}{1-\phi}\bigg) \implies \phi = \frac{1}{1 + e^{-\eta}}$$
\begin{align*}
a(\eta)
&= -\log(1-\phi)\\
&= -\log\bigg(1-\frac{1}{1 + e^{-\eta}}\bigg)\\
&= -\log\bigg(\frac{1}{1 + e^{\eta}}\bigg)\\
&= \log(1 + e^{\eta}).\\
\end{align*}


Multinomial distribution


이항 분포처럼 다항 분포를 좀 더 단순한 형태로 표현해보겠습니다. $\pi$가 $K$ classes의 class 확률들의 벡터라 할 때, (여기서 $k$가 각 class들을 의미합니다.)
$$P(y\vert \pi) = \prod\limits_{k=1}^{K}\pi_k^{y_k}$$
복잡하게 보일 수 있지만 사실 저 수식이 의미하는 바는 $Pr(y=k)$가 class $k$에 대한 확률이라는 뜻입니다. 예를 들어,
p = {'rain': .14, 'snow': .37, 'sleet': .03, 'hail': .46}
일 때, 다음과 같이 계산하면 된다는 말이죠:
\begin{align*}
\Pr(y = \text{snow} = [0, 1, 0, 0])
&= (.14^0 * .37^1 * .03^0 * .46^0)\\
&= .37\\
\end{align*}
다시 exponential family 형태로 돌아가서 확장해보면:
\begin{align*}
P(y\vert \pi)
&= \prod\limits_{k=1}^{K}\pi_k^{y_k}\\
&= \exp\bigg(\sum\limits_{k=1}^{K}y_k\log{\pi_k}\bigg)\\
&= \exp\bigg(\sum\limits_{k=1}^{K-1}y_k\log{\pi_k} + \bigg(1 - \sum\limits_{k=1}^{K-1}y_k\bigg)\log\bigg(1 - \sum\limits_{k=1}^{K-1}\pi_k\bigg)\bigg)\\
&= \exp\bigg(\sum\limits_{k=1}^{K-1}y_k\log{\pi_k} - \bigg(\sum\limits_{k=1}^{K-1}y_k\bigg) \log(\pi_K) + \log(\pi_K)), \quad \text{where}\ \pi_K = 1 - \sum\limits_{k=1}^{K-1}\pi_k\\
&= \exp\bigg(\sum\limits_{k=1}^{K-1}\log\bigg(\frac{\pi_k}{\pi_K}\bigg) y_k + \log(\pi_K)\bigg)
\end{align*}
여기서,
  • $\eta = \log\bigg(\frac{\pi_k}{\pi_K}\bigg)$ 
  • $T(y)=y$
  • $a(\eta) = -\log(\pi_K)$
  • $b(y) = 1$

마지막으로,
\begin{align*}
\eta_k
  &= \log\bigg(\frac{\pi_k}{\pi_K}\bigg) \implies\\
\frac{\pi_k}{\pi_K}
  &= e^{\eta_k} \implies\\
\sum\limits_{k=1}^K \frac{\pi_k}{\pi_K}
  &= \sum\limits_{k=1}^K e^{\eta_k} \implies\\
\frac{1}{\pi_K}\sum\limits_{k=1}^K \pi_k
  &= \sum\limits_{k=1}^K e^{\eta_k} \implies\\
\frac{1}{\pi_K} \cdot 1
  &= \sum\limits_{k=1}^K e^{\eta_k} \implies\\
\pi_K
  &= \frac{1}{\sum\limits_{k=1}^K e^{\eta_k}}
\end{align*}
이고, 두 번째 줄에 마지막 결론을 껴넣어주면:
\begin{align*}
\frac{\pi_k}{\frac{1}{\sum\limits_{k=1}^K e^{\eta_k}}}
  &= e^{\eta_k}\ \implies\\
\pi_k
  &= \frac{e^{\eta_k}}{\sum\limits_{k=1}^K e^{\eta_k}}
\end{align*}
(짜잔! $\pi_k$가 $\eta_k$에 대한 softmax function이 나오네요!)

마지막으로 $a(\eta)$를 정리하면 아래와 같습니다:
\begin{align*}
\frac{\pi_k}{\frac{1}{\sum\limits_{k=1}^K e^{\eta_k}}}
  &= e^{\eta_k}\ \implies\\
\pi_k
  &= \frac{e^{\eta_k}}{\sum\limits_{k=1}^K e^{\eta_k}}
\end{align*}
\begin{align*}
a(\eta)
&= -\log(\pi_K)\\
&= \log(\pi_K^{-1})\\
&= \log\Bigg(\frac{\sum\limits_{k=1}^K e^{\eta_k}}{e^{\eta_K}}\Bigg)\\
&= \log\Bigg(\sum\limits_{k=1}^K e^{\eta_k}\Bigg).\\
\end{align*}

* (편집자 주) 수학을 따라 오다가 길을 잃은 분들을 위해 각 모델에서 우리가 관심있는 response variable들을 $\eta$에 대해 하나로 모아 정리해보면 아래와 같습니다: 
Linear regression (Gaussian distribution): $\mu = \eta$

Logistic regression (Binomial distribution): $\phi = \frac{1}{1 + e^{-\eta}}$

Softmax regression (Multinomial distribution): $\pi_k = \frac{e^{\eta_k}}{\sum\limits_{k=1}^K e^{\eta_k}}$

Generalized linear models


각 모델은 output으로 response variable을 뱉습니다. 이 response variable들이 어떤 (exponential family) 분포를 따라 퍼져있겠죠. 그러나 이 분포의 canonical parameter 즉 우리가 넣는 값은 관측마다 달라질 것입니다.

cat or dog를 예측하는 logistic regression 모델을 생각해보겠습니다. 우리가 고양이 그림을 넣으면 주어진 분포에 따라 "고양이"라는 값이 나올 것입니다.
$$P(\text{outcome}) =
\begin{cases}
1 - \phi & \text{outcome = cat}\\
\phi & \text{outcome = dog}\\
\end{cases}$$
우리가 개 그림을 넣으면 마찬가지로 같은 분포에 따라 "개"가 튀어나오겠죠.

당연하지만 $\phi$ 값은 각각의 경우마다 항상 달라야합니다. 앞선 경우에 대해서는  모델의 $\phi$ 값이 작아서 $1-\phi \approx 1$의 확률로 고양이를 뱉어내야겠지만 뒤의 경우에 대해서는 $\phi$ 값이 커서 "개"라는 출력이 $\phi \approx 1$의 확률로 나올 수 있도록 해야겠죠.

* (편집자 주) 이 부분이 헷갈리신다면 정상입니다. 뭐 이렇게 어렵게 써두었는지... 그냥 $\phi$가 canonical parameter $\eta$를 변수로 가지는 값이라고 생각하시면 됩니다. 예를 들어 신경망같은 parametric 개/고양이 판별기 모델에 고양이 혹은 개 그림을 (즉 다른 input들을) 넣으면 나올 output probability가 그때그때 다르죠? 이 얘기를 하려는 겁니다. 

그러면 각 input에 대해 다음을 생각해보겠습니다:

  • $y_i \sim \mathcal{N}(\mu_i, \sigma^2)$일 때, Linear regression에서 $\mu_i$란? 
  • $y_i \sim \text{Binomial}(\phi_i, 1)$일 때, logistic regression에서 $\phi_i$란?
  • $y_i \sim \text{Multinomial}(\pi_i, 1)$일 때, softmax regression에서 $\pi_i$란?

여기서 $i$라는 인덱스가 새로 붙은 것이 보이시죠. 이 $i$ 덕에 위에서 설명하고자 한 dynamic이 좀 더 명백해집니다. 즉, 주어진 모델에서 각 입력에 따라 해당하는 canonical parameter가 정해지고 이 녀석이 response variable의 분포에 영향을 미치게 됩니다. 예를 들면 logistic regression 모델에서 고양이 그림을 보게 되면 $\phi_i\approx0$이 되도록 해야겠다는 말을 좀 더 복잡하게 한 것입니다.

그럼 10-feature input $x$에서 이런 canonical parameter로 어떻게 보내면 될까요? 가장 간단하게 linear combination을 생각해볼 수 있습니다:
$$\eta = \theta^Tx$$ * (편집자 주) Keras code에 Dense layer 하나 붙은 모델인 것만 보셔도 짐작하실 수 있습니다. 


Linear regression


$\eta = \theta^Tx=\mu_i.$ 이것이 바로 우리가 정규 분포를 만들 때 필요한 변수입니다.
> The identity function (i.e a no-op) gives us the mean of the response variable. This mean is required by the normal distribution, which dictates the outcomes of the continuous-valued target $y$.

Logistic regression


$\eta = \theta^Tx = \log\bigg(\frac{\phi_i}{1-\phi_i}\bigg).$ $\phi_i$에 대해 문제를 풀어야 하겠습니다. $\phi_i = \frac{1}{1 + e^{-\eta}}$였던 것 기억하시죠?
> The sigmoid function gives us the probability that the response variable takes on the positive class. This probability is required by the binomial distribution, which dictates the outcomes of the binary target $y$.

결국 $\phi_i$라는 함수가 하는 녀석은 우리가 앞서 소개했던 내일의 날씨 예측하는 날씨 분포가 하는 일과 같습니다.
p = {'rain': .14, 'snow': .37, 'sleet': .03, 'hail': .46}
* (편집자 주) 그러니까 날씨 분포의 경우 마치 lookup table처럼 각 input $x$에 대해 딱 내뱉는 확률 값이 정해져있는 일대일 대응 함수인데, $\phi_i$의 경우는 canonical parameter $\eta=\theta^Tx$로 표현되는 함수라는 말입니다. 

Softmax regression


$\eta = \theta^Tx = \log\bigg(\frac{\pi_k}{\pi_K}\bigg).$ $\pi_i$는 벡터이기 때문에 $\pi_i$에 대해 풀기 위해서 각 $\pi_{k,i}$에 대해 문제를 풀어야합니다.
이 역시도 위에서 했었죠: $\pi_{k, i} = \frac{e^{\eta_k}}{\sum\limits_{k=1}^K e^{\eta_k}}.$ 바로 softmax function입니다.
> The softmax function gives us the probability that the response variable takes on each of the possible classes. This probability mass function is required by the multinomial distribution, which dictates the outcomes of the multi-class target $y$.

좋습니다 이제 다 살펴봤네요. 흠 그런데 왜 하필 linear model, $\eta = \theta^Tx$이어야 했을까요? 앤드류 응 교수님 말을 차용하자면 이것은 "모델 디자인" 혹은 "선택"의 문제입니다. 여기서 선형 조합이 자주 사용되는 이유를 굳이 꼽자면:
  • 아마도 선형 조합(linear combination)이 canonical parameter에 대한 각 feature에 영향을 줄 수 있는 가장 쉬운 방법일 것이기 때문이다. 
  • 선형 조합이 단순히 $x$뿐만 아니라 $x$에 대한 함수에 대해서도 $\eta$에 대해 선형으로 변화한다고 하면 좀 더 복잡한 형태를 만들 수 있다. 즉, 우리는 모델을 $\eta = \theta^T\Phi(x)$와 같이 쓸 수 있고, 여기서 $Phi$는 우리의 feature에 대한 복잡한 변형(transformation)을 주는 operator를 의미한다. 이 부분이 선형 조합의 단순함을 조금은 덜하게 만들어준다고 할 수 있다. 

Loss function


이제 지금까지 각 response variable이 어떤 식으로 만들어지는지 살펴봤습니다. 그리고 분포들의 parameters가 각 input에 대해 어떻게 계산되는지도 보았죠. 그러면 뭐가 남았을까요? 맞습니다. 이제 어떻게 하면 어떤 parameters가 좋은지 정량화할 수 있을지가 궁금하실겁니다? (음? ㅋㅋ)

자! 이 부분도 매우매우 재미있지만 이번에도 역시 글이 매우 길어졌고 제 글 체력도 다하였기에 다음 글에서 이어가도록 하겠습니다.

그러면! 다음 글에서 뵙겠습니다. (To be continued)

다음 읽을거리





댓글 2개:

  1. 정말 좋은글 이해가 잘되네요 ㅎㅎ! 3탄은 언제쯤 나올까요!!ㅎㅎ

    답글삭제
    답글
    1. Unknown님 감사합니다ㅋㅋ 제가 요즘 정신 없어서 시간이 조금 더 걸리겠네요. 하지만 곧 1~2주 내에 올라갈겁니다 ㅋㅋ

      삭제