[부스트캠프 AI] Week01 (4) - 확률론/통계학

Jewon Joel Park·2022년 9월 30일

AI Math

확률론

딥러닝에서 확률론이 필요한 이유

  • 딥러닝은 확률론 기반의 기계학습 이론
  • 손실함수(Loss Function)들의 작동 원리: 데이터 공간을 통계적으로 해석해서 유도
  • L2 노름은 예측오차의 분산을 최소화하는 방향으로 학습하도록 유도
  • 교차엔트로피(Cross Entropy)는 모델 예측의 불확실성을 최소화하는 방향으로 학습하도록 유도
  • 분산불확실성을 최소화하기 위해서는 측정 방법을 알야야 함

확률분포

cf) 데이터가 항상 정당레이블을 가지는 지도학습으로 상정

  • 이산(Descrete)확률변수연속(Continuous)확률변수는 데이터 공간이 아니라 확률분포의 종류에 따라 구분
    • 실수 영역의 공간이어도 무조건 연속하는 것이 아님.
  • 이산형 확률변수는 확률변수가 가질 수 있는 모든 경우의 수를 고려하여 확를을 더해서 모델링
  • 확률질량함수: P(XA)=xAP(X=x)\mathbb{P}(X\in A) = \sum_{\mathrm{x}\in A}P(X=\mathrm{x})
    이 때 P(X=x)P(X=\mathrm{x})는 확률변수가 x값을 가질 확률로 해석
  • 연속형 확률변수는 데이터 공간에 정의된 확률변수의 밀도(Density) 위에서 적분을 통해 모델링
  • 밀도함수: P(x)=limh0P(xhXx+h)2hP(\mathrm{x})=\lim_{h\to0}\cfrac{\mathbb{P}(\mathrm{x}-h\le X \le \mathrm{x}+h)}{2h}
    적분: P(XA)=AP(x)dx\mathbb{P}(X\in A) = \int_{A}P(\mathrm{x})d\mathrm{x}
    cf) 밀도는 누적확률분포의 변화율을 모델링 → 확률로 해석하면 안됨
  • P(x)P(\mathrm{x})는 입력 x에 대한 주변확률 분포로 *y에 대한 정보를 주지는 않음).
    다만, 주변확률분포 P(x)P(\mathrm{x})는 결합확률분포 P(x,y)P(\mathrm{x},y)를 각각의 y에 대해서 더해주거나 적분했을 때 유도 가능
  • 조건부확률분포 P(xy)P(\mathrm{x}|y)는 특정 클래스가 주어진 조건에서 데이터의 확률분포를 보여주며, 데이터 공간에서 입력 x와 출력 y사이의 관계를 모델링

조건부확률과 기계학습

  • 조건부확률 P(yx)P(y|\mathrm{x})는 입력변수 x에 대한 정답이 y일 확률을 의미하며, 연속확률분포의 경우 P(yx)P(y|\mathrm{x})는 확률이 아닌 밀도로 해석
  • 분류문제에서 softmax(Wϕ+bW\phi+b)은 데이터 x로부터 추출된 특징패턴 ϕ(x)\phi(\mathrm{x})과 가중치행렬 W를 통해 조건부확률 P(yx)P(y|\mathrm{x})을 계산하며, 이는 P(yϕ(x))P(y|\phi(\mathrm{x}))라고 써도 됨.
  • 회귀문제(y가 연속하기 때문에 적분으로 표현)의 경우 조건부기대값 E[yx]\mathbb{E}[y|\mathrm{x}]을 추정.
  • 조건부기대값 EyP(yx)[yx]=yyP(yx)dy\mathbb{E}_{y\sim P(y|\mathrm{x})}[y|\mathrm{x}]=\int_y yP(y|\mathrm{x})dy 이며, 이는 y와 f(x)의 차이의 L2노름(예측 오차의 분산) Eyf(x)2\mathbb{E}||y-f(x)||_2을 최소화하는 함수 f(x)와 일치함.
  • 딥러닝은 다층신경망(MLP)을 사용하여 데이터로부터 특징패턴 ϕ\phi을 추출하며, 이후 조건부확률을 계산하거나 조건부기대값을 추정하는 식으로 학습을 진행
    이 때, 특징패턴을 학습하기 위해 어떤 손실함수(Loss Function)를 사용할 것인지는 기계학습 문제와 모델에 의해 결정

기대값

  • 확률분포가 주어지면 이를 분석하기 위한 여러 종류의 통계적 범함수(Statistical Functional)를 계산 가능.
  • 기대값(Expectation)은 데이터를 대표하는 통계량이라는 대표적 범함수이면서 다른 통계적 범함수를 계산하는데 사용됨.
    연속확률분포(밀도함수)의 경우엔 적분 / 이산확률분포(질량함수)의 경우엔 급수
  • 기대값으로 계산 가능한 통계량은 분산 / 첨도 / 공분산 등이 있음.
    • 분산: V(x)=ExP(x)[(xE[x])2]\mathbb{V}(\mathrm{x}) = \mathbb{E}_{x\sim P(\mathrm{x})}[(\mathrm{x}-\mathbb{E}[\mathrm{x}])^2]
    • 첨도: Skewness(x)=E[(xE[x]V(x))3]\text{Skewness}(\mathrm{x})=\mathbb{E}\Bigg[\Bigg( \cfrac{\mathrm{x}-\mathbb{E}[\mathrm{x}]}{\sqrt{\mathbb{V}(\mathrm{x})}} \Bigg)^3\Bigg]
    • 공분산: Cov(x1x2)=Ex1,x2P(x1,x2)[(x1E[x1])(x2E[x2])]\text{Cov}(\mathrm{x}_1\mathrm{x}_2) = \mathbb{E}_{\mathrm{x}_1,\mathrm{x}_2\sim P(\mathrm{x}_1,\mathrm{x}_2)}[(\mathrm{x}_1-\mathbb{E}[\mathrm{x}_1])(\mathrm{x}_2-\mathbb{E}[\mathrm{x}_2])]

몬테카를로(Monte Carlo) 샘플링

  • 앞으로 해결할 일반적인 문제들은 확률분포를 명시적으로 모를 때가 대부분.
  • 몬테카를로 샘플링 방법을 사용하면 확률분포를 모를 때 데이터를 이용하여 기대값 계산이 가능하며, 이산형이든 연속형이든 상관없이 성립함.
  • 다만 항상 독립적으로 샘플링 해야만 몬테카를로 샘플링이 작동함. == 독립추출만 보장된다면 대수의 법칙(Law of Large Number)에 의해 수렴성을 보장.
  • ExP(x)[f(x)]1Ni=1Nf(x(i))\mathbb{E}_{\mathrm{x}\sim P(\mathrm{x})}[f(\mathrm{x})]\approx\cfrac{1}{N}\sum_{i=1}^{N}f(\mathrm{x}^{(i)}),  x(i)i.i.d.P(x)\mathrm{x}^{(i)}\overset{\text{i.i.d.}}{\sim}P(\mathrm{x})

예제

함수 f(x)=ex2f(x) = e^{-x^2}의 [-1, 1] 상에서 적분 값을 계산하여라

  • 여기서 [-1, 1]은 확률분포가 아닌 공간이므로 f(x)의 적분을 해석적으로 구하는 것은 불가능함.
  • 몬테카를로 방법을 사용할 경우 구간 [-1, 1]의 길이는 2이므로 적분 값을 2로 나누면 기대값을 계산하는 것과 같음
  • 적분 11ex2dx\int_{-1}^{1}e^{-x^2}dx를 길이 2로 나누면 아래와 같음
    1211ex2dx1Ni=1Nf(x(i)),x(i)U(1,1)\cfrac{1}{2}\int_{-1}^{1}e^{-x^2}dx \approx\cfrac{1}{N}\sum_{i=1}^{N}f(x^{(i)}), x^{(i)} \sim U(-1,1)
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, sample_size=10000, repeat=10000))
# (1.4937346876823403, 0.003981645834694851)

통계학

모수

  • 통계적 모델링은 적절한 가정 위에서 확률분포를 추정(Inference)하는 것이 목표
    Taxonomy of univariate distributions

  • but, 데이터로만 모집단의 분포를 정확히 알아낼 순 없고, 근사적 확률분포 추정만 가능 (예측모형의 목적은 불확실성을 고려하여 위험을 최소화하는 것)

  • 확률분포 추정을 위한 방법론

    • 모수적(Parametric) 방법: 데이터가 특정 확률분포를 따른다고 선험적(a priori)으로 가정한 뒤 그 분포를 결정하는 모수(Parameter)를 추정하는 방법
    • 비모수적(Non-parametric) 방법: 특정 확률분포를 가정하지 않고, 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌는 경우
  • 히스토그램(Histogram)의 모양에 따른 확률분포

    데이터확률분포
    2개의 값(0 or 1)베르누이 분포
    n개의 이산적인 값카테고리 분포
    [0, 1] 사이의 값베타 분포
    0 이상의 값감마 분포, 로그 정규분포 등
    R\reals 전체 중의 값정규분포, 라플라스 분포 등

[모수의 추정]

  • 확률분포를 가정했다면 모수 추정이 가능한데, 정규분포의 모수는 평균과 분산으로, 이를 추정하는 통계량(Statistic)은 다음과 같음
    • 표본평균
      Xˉ=1Ni=1NXiE[Xˉ]=μ\bar{X} = \frac{1}{N}\sum_{i=1}^{N}X_i \quad \quad \quad \mathbb{E}[\bar{X}]=\mu
    • 표본분산: N-1로 나누는 이유는 불편추정량(Unbiased)를 구하기 위함
      S2=1N1i=1N(XiXˉ)2E[S2]=σ2S^2 = \frac{1}{N-1}\sum_{i=1}^{N}(X_i-\bar{X})^2 \quad \quad \quad \mathbb{E}[S^2]=\sigma^2
  • 표집분포(Sampling Distribution): 통계량의 확률분포를 말하며, 특히 표본평균의 표집분포는 N이 커질수록 정규분포 N(μ,σ2/N)\mathcal{N}(\mu, \sigma^2/N)를 따름
    • 이를 중심극한정리(Central Limit Theorem)라고 부르며, 모집단의 분포가 정규분포를 따르지 않아도 성립함

최대가능도 추정법(MLE)

  • 최대가능도 추정법(Maximum Likelihood Estimation)은 이론적으로 가장 가능성이 높은 모수를 추정하는 방법 중 하나
    θ^=arg maxL(θ;x)=arg maxP(xθ)\hat{\theta} = \argmax{L(\theta;\mathrm{x})} = \argmax P(\mathrm{x}|\theta)
  • 데이터 집합 X가 독립적으로 추출되었을 경우 로그가능도를 최적화
    L(θ;X)=i=1nP(xiθ)logL(θ;X)=i=1nlogP(xiθ)L(\theta;\mathrm{X}) = \prod_{i=1}^{n}P(\mathrm{x}_i|\theta) \quad \rArr \quad \log L(\theta;\mathrm{X}) = \sum_{i=1}^{n}log P(\mathrm{x}_i|\theta)

[정규분포에서의 MLE]

μ^MLE=1ni=1nxiσ^MLE=1ni=1n(xiμ)2\hat\mu_{\mathrm{MLE}} = \frac{1}{n}\sum_{i=1}^{n}x_i \quad \quad \quad \\ \hat\sigma_{\mathrm{MLE}} = \frac{1}{n}\sum_{i=1}^{n}(x_i-\mu)^2

[카테고리 분포에서의 MLE]

  • 카테고리 분포 Multinoulli(x;p1,...,pd)(\mathrm{x}; p_1, ..., p_d)를 따르는 확률번수 X로부터 독립적인 표본 {x1,...,xn}\{\mathrm{x}_1, ..., \mathrm{x}_n\}을 얻었을때 MLE를 이용하여 모수 추정

    θ^MLE=arg maxp1,...,pd logP(xiθ)=arg maxp1,...,pd log(i=1nk=1dpkxi,k)log(i=1nk=1dpkxi,k)=k=1d(i=1nxi,k)logpk(nk=i=1nxi,k)log(i=1nk=1dpkxi,k)=k=1dnklogpk(k=1dpk=1)\hat\theta_{\mathrm{MLE}} = \underset{p_1, ..., p_d}{\argmax} \space \log P(\mathrm{x}_i|\theta) = \underset{p_1, ..., p_d}{\argmax} \space \log \Bigg( \prod_{i=1}^{n} \prod_{k=1}^{d}p_{k}^{x_{i,k}} \Bigg) \\ \log \Bigg( \prod_{i=1}^{n} \prod_{k=1}^{d}p_{k}^{x_{i,k}} \Bigg) = \sum_{k=1}^{d} \Bigg( \sum_{i=1}^{n} x_{i, k}\Bigg) \log p_k \lArr \Big( n_k = \sum_{i=1}^{n}x_{i,k}\Big) \\ \therefore \log \Bigg( \prod_{i=1}^{n} \prod_{k=1}^{d}p_{k}^{x_{i,k}} \Bigg) = \sum_{k=1}^{d} n_k \log p_k \quad \quad \Bigg (\because \sum_{k=1}^{d}p_k = 1 \Bigg)
    제약식을 만족하면서 마지막 줄 목적식을 최대화 하는 것이 우리가 구하는 MLE
  • 라그랑주 승수법을 통해 최적화 문제를 풀 수도 있음

    L(p1,...,pk,λ)=k=1dlogpk+λ(1kpk)\rArr \mathcal{L}(p_1,...,p_k,\lambda) = \sum_{k=1}^{d} \log{p_k} + \lambda(1-\sum_k p_k)

[딥러닝에서의 MLE]

  • 모델의 가중치를 θ=(W(1),...,W(L))\theta = (\mathrm{W}^{(1)}, ...,\mathrm{W}^{(L)})라 표기했을 때, 분류문제에서 Softmax Vector는 카테고리 분포의 모수 (p1,...,pk)(p_1, ...,p_k)를 모델링함.
  • One-hot Vector로 표현한 정답레이블 y=(y1,...,yk)\mathrm{y}=(y_1,...,y_k)을 관찰데이터로 이용하여, 확률분포인 Softmax Vector의 로그가능도를 최적화 할 수 있음
    θ^MLE=arg maxθ1ni=1nk=1Kyi,klog(MLPθ(xi)k)\hat\theta_{\mathrm{MLE}}=\underset{\theta}{\argmax}\frac{1}{n}\sum_{i=1}^{n}\sum_{k=1}^{K}y_{i,k}\log(\mathrm{MLP}_\theta(\mathrm{x}_i)_k)

확률분포의 거리 계산

  • 머신러닝에 사용되는 손실함수(Loss Function)들은 모델이 학습하는 확률분포와 데이터에서 관찰되는 확률분포의 거리를 통해 유도
  • 데이터 공간 상의 두 개의 확률분포 P(x),Q(x)P(\mathrm{x}), Q(\mathrm{x})가 존재할 때, 두 확률분포 사이의 거리(Distance)를 계산하기 위한 함수들은 다음과 같음
    • 총변동 거리(Total Variation Distance, TV)
    • 쿨백-라이블러 발산(Kullback-Leibler Divergence, KL)
    • 바슈타인 거리(Wasserstein Distance)

[쿨백-라이블러 발산]

  • 이산확률변수의 KL

    KL(PQ)=xXP(x)log(P(x)Q(x))\mathbb{KL}(P||Q) = \sum_{\mathrm{x}\in X}P(\mathrm{x})\log{\Bigg( \frac{P(\mathrm{x})}{Q(\mathrm{x})} \Bigg)}
  • 연속확률변수의 KL

    KL(PQ)=XP(x)log(P(x)Q(x))dx\mathbb{KL}(P||Q) = \int_X P(\mathrm{x})\log{\Bigg( \frac{P(\mathrm{x})}{Q(\mathrm{x})} \Bigg)d\mathrm{x}}
  • KL은 다음과 같이 분해할 수 있음

    KL(PQ)=Ex~P(x)[logQ(x)]크로스 엔트로피+Ex~P(x)[logP(x)]엔트로피\mathbb{KL}(P||Q) = \underset{크로스\space 엔트로피}{-\mathbb{E}_{\mathrm{x}\text{\textasciitilde}P(\mathrm{x})}[\log{Q(\mathrm{x})}]} +\underset{엔트로피}{ \mathbb{E}_{\mathrm{x}\text{\textasciitilde}P(\mathrm{x})}[\log{P(\mathrm{x})}]}
  • 분류 문제에서 정답레이블을 P, 모델 예측을 Q로 두면, MLE는 KL을 최소화하는 것과 같음

profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글