새소식

부스트캠프 AI Tech 4기

11. 확률분포, 조건부확률, 기댓값, 몬테카를로 샘플링

  • -

딥러닝은 확률론 기반의 기계학습 이론에 바탕을 두고 있다.
기계학습에서 사용되는 손실함수의 작동원리는 데이터 공간을 통계적으로 해석해서 유도하게 된다.

  • 회귀분석: 손실함수로 사용되는 $L_{2}$-Norm은 예측오차의 분산을 최소화하는 방향으로 학습 유도
  • 분류: cross entropy는 모델 예측의 불확실성을 최소화하는 방향으로 학습 유도

 

확률분포는 데이터의 초상화이다.

이산확률변수 vs 연속확률변수

  • 확률변수는 확률분포 ${D}$에 따라 이산형(discrete)연속형(continuous) 확률변수로 구분한다.
  • 이산형 확률변수: 확률변수가 가질 수 있는 모든 경우의 수를 고려하여 확률을 더해서 모델링한다.
    ${P}({X} \in {x})$ : 확률변수가 x값을 가질 확률

$$ {P}({X} \in {A}) =  \sum_{x \in {A}} {P}({X}=x)  $$

  • 연속형 확률변수: 데이터 공간에 정의된 확률변수의 밀도위에서의 적분을 통해 모델링한다.

$$ {P}({X} \in {A}) =   \int_A  {P}(x)dx $$

  • 항상 두가지의 확률분포로만 구분되는 것은 아니다.

 

전체 데이터 ${X}, ${Y}가 주어진 상태에서 결합분포를 산정할 수 있다.

결합분포 ${P}(x,y)$는 위 그림과 같이 각각의 ${Y}$값, ${X}$값에 따라 칸을 나눈경우, 각각의 칸에 대해서 하늘색 점들을 셀 수 있다. 

각각의 칸에 대해서 개수를 세게되면 이를 통해 현재 주어진 데이터의 결합분포를 가지고 원래 확률분포 ${D}$를 모델링할 수 있다.

원래 확률분포 ${D}$가 이산인지 연속인지에 따라서 결합분포 ${P}(x,y)$를 이산인지 연속인지 결정하는 것은 아니다. (원래 확률분포가 연속형이라 하더라도 결합분포를 이산형으로 사용해볼 수 있다. 즉, 결합분포는 원래 확률분포와는 상관없이 모델링 방법에 따라 결정되는 것!)

 

  • ${P}(x)$는 입력 ${x}$에 대한 주변확률분포로 ${y}$에 대한 정보를 주진 않는다.

$$ {P}(x) =  \sum_y {P}(x,y)  $$

$$ {P}(x) =   \int_y {P}(x,y)dy $$

 

  • 조건부확률분포 ${P}(x|y)$는 입력 ${x}$와 출력 ${y}$ 사이의 관계를 모델링한다.

 

조건부확률과 기계학습

  • 조건부확률  ${P}(y|x)$는 입력변수 x에 대해 정답이 y일 확률을 의미한다.
    • 연속확률분포의 경우 ${P}(y|x)$는 확률이 아니고 밀도로 해석해야 한다.
  • 분류 문제에서 $softmax({W} \phi (x)+b)$는 데이터 $x$로부터 추출된 특징패턴 $\phi (x)$와 가중치행렬 $W$를 통해 조건부확률 $P(y|x)$를 계산한다.
  • 회귀 문제의 경우 연속형확률변수이기 때문에 조건부기대값 ${E}[y|x]$를 추정한다.

 

기대값이란?

  • 기대값(expectation)은 데이터를 대표하는 통계량
  • 확률분포를 통해 다른 통계적 범함수(statistical function)를 계산하는데 사용된다.
    • 기대값을 이용해 분산(Variance), 첨도(Skewness), 공분산(Covariance) 등 여러 통계량을 계산할 수 있다.

 

몬테카를로 샘플링

  • 기계학습의 많은 문제들은 확률분포를 명시적으로 모를때가 대부분이다.
    → 확률분포를 모를 때, 데이터를 이용하여 기대값을 계산하려면 몬테카를로(MonteCarlo) 샘플링 방법을 사용해야 한다.

$${E}_{x~P(x)}[f(x)]  \approx \frac{1}{N}  \sum_{i=1}^N f(x^{(i)}),   x^{i}  \sim {P}(x)$$

샘플링한 데이터를 함수 f(x)에 대입한 값들에 산술평균을 계산하면 구하고자하는 기대값에 근사한다.

  • 몬테카를로는 이산형이든 연속형이든 상관없이 성립한다.
  • 몬테카를로 샘플링은 독립 추출만 보장된다면 대수의 법칙(law of large number)에의해 수렴성을 보장한다.
  • 확률분포를 모르더라도 샘플링만 가능하다면 기댓값을 계산가능하기 때문에 기계학습에서도 많이 사용된다.

 

몬테카를로 예제: 적분 계산

적분구간이 -1~1이기 때문에 -1과 1 사이의 균등분포에서 데이터를 샘플링해준다.

-1~1 사이의 균등분포이기 때문에 확률분포로 바꿔주기 위해서는 구간의 길이가 2이므로 적분값을 2로 나누어주게되면 균등분포를 사용하는 것과 동일한 적분에 해당하는 것이기 때문에 기댓값을 계산하는 것과 같다.

  • 샘플링 개수가 너무 적으면 오차 범위가 커지므로 적절한 샘플링 개수의 선택이 필요하다.

 

더보기
import numpy as np

def mc_int(fun, low, high, sample_size=100, repeat=10):
  int_len = np.abs(high - low)
  stat = []
  for _ in range(repeat):
    x = np.random.uniform(low=low, high=high, size=sample_size)
    fun_x = fun(x)
    int_val = int_len * np.mean(fun_x)
    stat.append(int_val)
  return np.mean(stat), np.std(stat)

def f_x(x):
  return np.exp(-x**2)

print(mc_int(f_x, low=-1, high=1, ssample_size=10000, repeat=100))

 


부스트캠프 AI Tech 교육 자료를 참고하였습니다.

728x90

'부스트캠프 AI Tech 4기' 카테고리의 다른 글

13. 베이즈 정리  (0) 2022.09.23
12. MLE : Maximum Likelihood Estimation  (1) 2022.09.23
10. 딥러닝 학습방법  (0) 2022.09.23
9. 경사하강법  (1) 2022.09.23
8. 벡터와 행렬  (1) 2022.09.23
Contents