일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Skip Connectioin
- jupyter
- Inception V1
- GoogLeNet
- RNN
- Optimizer
- Regression
- DCGAN
- Linear
- vim-plug
- GCN
- cnn
- python
- version
- Bottleneck Layer
- Skip Connection
- Gated Skip Connection
- DL
- classification
- Peephole Connection
- virtualenv
- sigmoid
- Residual Connection
- Inception Module
- iTerm2
- Generative
- ResNet
- Manager
- AI
- Vanilla RNN
- Today
- Total
IT Repository
(1) Probablility and Likelihood 본문
(이 포스트는 이 곳의 내용을 개인적으로 알아보기 편하게 정리한 것입니다.
더 자세한 설명이 필요하다면 위 사이트를 참고해주세요)
이산사건의 확률 (Discrete Probability)¶
Discrete한 값(이산사건)의 경우 위의 확률을 정의한 수식으로 모든 확률을 구하는 것이 가능합니다.
가장 대표적인 예로 동전의 앞/뒤 와 같은 사건은 Discrete한 사건입니다.
사건이 발생하는 모든 경우의 수를 셀 수 있기 때문입니다.
이런 경우에 우리는 그냥 위 식에 대입하기만 하면 됩니다.
Pi=동전 앞면이 나올 경우의 수가능한 모든 경우의 수
사건이 발생하는 모든 경우의 수를 계산하는 것이 가능하기 때문에 문제가 되지 않습니다.
연속사건의 확률 (Continuous Probability)¶
이번에는 1 ~ 6 사이에서 어느 하나의 실수를 뽑는 경우를 생각해보죠.
1 ~ 6 사이의 실수의 개수는 무한하기 때문에 사건이 발생하는 경우의 수 역시 셀 수가 없는 Continuous한 사건입니다.
이와 같은 경우에는 확률을 구하기 위해 식에 대입하면 아래처럼 되어버립니다.
Pi=1∞=0
이 식을 해석하면 1 ~ 6 사이에 어느 하나의 수가 뽑히는 경우는 거의 0에 가까운 확률이라는 말이 됩니다.
즉, 우리는 1 ~ 6사이의 실수를 뽑는 것이 불가능하다는 이야기입니다.
하지만 우리는 너무도 쉽게 2.7, 5.278645 등의 실수를 뽑는 것이 가능합니다.
확률 밀도 함수 (Probability Density Function)¶
위의 연속 사건의 경우 확률을 구할 수 없게 되어버리는 것을 확인할 수 있었습니다.
따라서 그 대안으로 특정 구간에 속할 확률, 즉 확률 밀도 함수(PDF)를 구합니다.
아래는 위 사건의 확률 밀도 함수와 대표적인 확률 밀도 함수인 표준 정규 분포의 그래프입니다.
import matplotlib.pyplot as plt
import numpy as np
x = [0, 1, 1, 2, 3, 4, 5, 6, 6, 7]
y = [0., 0., 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0., 0.]
plt.figure(figsize=(12, 5))
ax1 = plt.subplot(1,2,1)
ax1.set_title("Probability Density Function of 1~6")
ax1.plot(x, y)
ax1.set_xlabel("Number")
ax1.set_ylabel("Density")
ax1.set_xticks([0, 2, 4, 6])
ax1.set_yticks([0.00, 0.05, 0.10, 0.15, 0.20])
def std_normal_dist(x):
constant = 1/np.sqrt(2*np.pi)
return constant * np.exp(-x**2/2)
z = np.linspace(-4, 4, 801)
y = std_normal_dist(z)
ax2 = plt.subplot(1,2,2)
ax2.plot(z, y)
ax2.set_title("Standard Normal Distribution")
ax2.set_xlabel("z")
ax2.set_ylabel("Density")
ax2.set_xticks([-4, -2, 0, 2, 4])
ax2.set_yticks([0.0, 0.1, 0.2, 0.3, 0.4])
plt.show()
특정 경우의 수에 대한 확률을 구할 수는 없었지만,
그 대신에 확률 밀도 함수의 특정 구간의 넓이를 구하면 앞서 언급했던 특정 구간에 속할 확률을 구할 수 있습니다.
가능도 (Likelihood)¶
앞서 연속 확률에 대해서는 확률 밀도 함수를 사용하기로 했습니다.
그러나 확률 밀도 함수를 사용해도, 여전히 특정 사건에 대한 해석은 불가능 합니다.
따라서 사람들은 가능도(Likelihood)라는 개념을 적용해서 이를 비교하기로 했습니다.
가능도를 직관정으로 정의하면, 확률 밀도 함수의 y축의 값을 의미합니다. 즉, y값이 클 수록 일어날 가능성이 높은 사건입니다.
Discrete한 사건의 경우에는 가능도 = 확률이 되어 확률이 클 수록 일어날 가능성이 높은 사건이 됩니다.
반대로 Continuous한 사건은 가능도 ≠ 확률이고 PDF의 값이 가능도가 됩니다.
참고.
가능도에 대한 상세한 설명은 하지 않으나 그 정의에 대해 가볍게 짚고 넘어가자면 가능도는 "관측값 A가 관측되었을 때, 어떠한 분포 B에 속할 확률" 입니다.
즉, 관측값에 대한 모집단의 분포가 무엇일까? 에서 부터 시작한 개념입니다.
예를 들어 사과박스에서 사과를 하나 골랐을 때에 지름이 10cm라고 한다면, 사과의 모집단의 분포는 평균이 10cm인 집단에 가까울까요 아니면 20cm인 집단에 가까울까요?
평균이 10cm인 집단에 속할 확률이 더 높을 것이고, 이를 "가능도" 라고 합니다.
우리는 이 가능도를 사용해서 관측값을 통해 모집단의 분포를 추정할 수 있게 됩니다.
최대 가능도 추정(Maximum Likelihood Estimation)¶
지금까지는 모집단의 분포(시스템)를 정확하게 알고 있는 상황이 대부분 주어졌습니다.
주사위를 굴렸을 때의 확률 1/6, 동전을 던졌을 때 1/2이 그러한 대표적이 예시 였습니다.
그러나 PDF가 필요한 순간은 그러한 모집단의 분포를 우리가 알 수 없기 때문에 PDF를 찾으려고 하는 것입니다.
즉, 모집단의 분포를 모르기 때문에 그것을 알기 위해서 모집단의 분포와 가장 비슷해보이는 PDF를 찾으려고 합니다.
이렇게 가장 비슷해보이는 PDF를 찾아내는 방법 중의 하나가 최대 가능도 추정(MLE)입니다.
개념은 간단합니다.
가능도가 가장 높은 PDF가 관측값에 대한 모집단을 가장 잘 표현하는 분포라는 것입니다.
(아래의 최대 가능도 추정의 과정을 수학적으로 따라가기 어렵다면 위의 개념만이라도 확실하게 이해하시기 바랍니다.)
예1) 구부러진 동전
1000번의 시행에서 앞이 400번, 뒤가 600번 나온 경우의 앞이 나올 확률 p는 0.4이며 이는 MLE 값과 일치
즉, 동전을 1000번 던져서 앞이 400번 나올 가능성을 최대로 하는 p는 0.4이며, p의 MLE는 0.4이다.
- 앞면이 나올 확률은 p라면,
뒷면이 나올 가능도(확률) L=1000C400⋅p400(1−p)600 - L이 최대가 되는 것은 p400(1−p)600이 최대가 될 때이다.
산술-기하 평균 부등식에 의해 아래와 같이 정리할 수 있다. (미분으로도 구할 수 있음)
600=32p×400+(1−p)×600≧ - 따라서 p^{400}(1-p)^{600}의 최대값은 \left( \frac{600}{1000} \right)^{1000} \times \left( \frac{2}{3} \right)^{400}
- L이 최대값이 될 때는 산술-기하 평균 부등식의 등호조건이 성립할 때이므로 \frac{3}{2} p = 1 - p, 즉 p = 0.4
예2) 나의 실제 키
키를 5번 측정해서 178, 179, 180, 181, 182(cm)가 나왔다면 실제 키는 직관적으로 평균값인 180이라고 할 수 있을 것이다.
그렇다면 MLE, 즉 키를 5번 측정했을 때, 178, 179, 180, 181, 182가 나올 가능성이 최대가 되는 나의 키는 얼마일까?
이를 계산하기 위해 키의 측정값은 참값을 평균으로 하는 정규분포를 따른다고 가정한다.
- 키의 참값이 \mu일 때,
측정값은 평균 \mu, 분산 \sigma^2인 정규분포를 따른다. - 키의 측정값이 x일 때의 가능도는 정규분포 함수 f(x) = \dfrac{1}{\sqrt{2 \pi \sigma}} e ^{- \dfrac{(x - \mu)^2}{2 \sigma^ 2}}를 따른다.
- 5번 측정한 키의 가능도는 L = f(178) \times f(179) \times f(180) \times f(181) \times f(182)
- L이 최대가 된다는 것은 자연상수 e의 지수부분이 최대가 된다는 것이므로 - \frac{(178 - \mu)^2 + (179 - \mu)^2 + (180 - \mu)^2 + (181 - \mu)^2 + (182 - \mu)^2}{2 \sigma^2}~~ 가 최대가 되어야 한다.
이를 위해서는 분모인 (178 - \mu)^2 + (179 - \mu)^2 + (180 - \mu)^2 + (181 - \mu)^2 + (182 - \mu)^2가 최소가 되어야 한다. - 따라서, \mu = 180 일 때 가능도 L이 최대가 된다.