본문 바로가기

부스트캠프 AI Tech/AI_Math

[06] 확률론

딥러닝에서의 확률론

  • 딥러닝은 확률론 기반 기계학습 이론에 바탕을 두고 있다
  • 기계학습에서 사용되는 손실함수(loss function)들의 작동 원리는 데이터 공간을 통계적으로 해석해서 유도하게 된다
    • 에측이 틀릴 위험(risk)을 최소화하도록 데이터를 학습하는 원리는 통계적 기계학습의 기본 원리
  • 회귀 분석에서 손실함수로 사용되는 L2-norm은 예측오차의 분산을 가장 최소화하는 방향으로 학습을 유도한다
  • 분류 문제에서 사용되는 교차엔트로피(cross-entropy)는 모델 예측의 불확실성을 최소화하는 방향으로 학습하도록 유도
    • 즉, data가 관찰된 분포 ↔ model 예측 분포 차이를 최소화하고자 한다
  • 분산 및 불확실성을 최소화하기 위해서는 측정하는 방법을 알아야 한다
    • 두 대상을 측정하는 방법을 통계학에서 제공하기 때문에, 기계학습을 이해하려면 확률론 기본 개념 필수!
  • 확률변수
    • random variable
    • 시행의 결과에 따라 값이 결정되는 함수
  • 확률분포
    • 확률변수가 특정한 값을 가질 확률을 나타내는 함수

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

  • 데이터 공간을 $x \times y$라고 표기하고, $\mathcal{D}$는 데이터 공간에서 데이터를 추출하는 분포
    • 여기서는 데이터가 정답 레이블을 가진 지도학습 상정
  • 데이터는 확률변수로 $(\textbf{x}, y) \sim \mathcal{D}$라 표기
    • 확률변수는 함수로, 임의로 random하게 data공간에서 관측되는 함수
    • data 추출할 때 확률변수 사용
    • $(\textbf{x}, y) \sim x \times y$는 데이터공간 상의 관측가능한 데이터에 해당

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

  • 확률변수는 확률분포 $\mathcal{D}$에 따라 이산형(discrete)과 연속형(continuous) 확률변수로 구분한다
    • 이산형, 연속형은 데이터공간 $x \times y$에 의해 결정되는 것으로 오해를 하지만, $\mathcal{D}$ (확률변수의 분포)에 의해 결정된다
  • 이산형 확률변수는 확률변수가 가질 수 있는 경우의 수를 모두 고려하여 확률을 더해서 모델링한다

이산확률변수

  • 이산형 확률변수는 확률변수가 가질 수 있는 경우의 수를 모두 고려하여 확률을 더해서 모델링
  • 확률질량함수
  • $P(X= x)$는 확률변수가 $x$값을 가질 확률로 해석할 수 있다
  • 확률변수 $X$가 $x$가 될 확률을 모두 더한다

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

연속확률변수

  • 연속형 확률변수는 데이터 공간에 정의된 확률변수의 밀도(density) 위에서의 적분을 통해 모델링
  • 밀도함수
  • 밀도는 누적확률분포의 변화율을 모델링하며 확률로 해석하면 안된다

$$
\mathbb{P}(X \in A) = \int_{A}P(\textbf{x})d\textbf{x}
$$

$$
P(\textbf{x}) = \lim_{h \rightarrow 0} \frac{\mathbb{P}(\textbf{x}-h \leq X \leq \textbf{x}+h)}{2h}
$$

  • [참고] 이산, 연속 둘 다 아닌 확률변수도 있다

결합분포 joint distribution

  • 결합분포 $P(\textbf{x}, y)$는 $\mathcal{D}$를 모델링한다
  • $\mathcal{D}$는 이론적으로 존재하는 확률분포이기 때문에 사전에 알 수 없다
  • 원래의 확률분포 연속/이산 상관없이 연속/이산 정한다
  • 아래 그림에서, 빨간칸으로 나누면 이산확률변수로 생각할 수 있다
  •  

주변확률분포 marginal distribution

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

$$
P(\textbf{x}) = \sum_{y}P(\textbf{x}, y)
$$

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

  • 주변확률분포 $P(\textbf{x})$는 결합분포 $P(\textbf{x}, y)$에서 유도 가능하다
    • 결합확률분포를 각각의 $y$에 대해서 더하거나 적분하면 유도가능
    • $y$에 대해서도 구할 수 있다

조건부확률분포

  • 조건부확률분포 $P(\textbf{x}|y)$는 데이터 공간에서 입력 $\textbf{x}$와 출력 y 사이의 관계를 모델링
    • $P(\textbf{x}|y)$에서 $y$가 주어진 상황에서 $\textbf{x}$의 분포
    • 즉 특정 클래스가 주어진 조건에서 데이터의 확률분포를 보여준다
  • 주어진 클래스에 대해 $\textbf{x}$의 분포를 살펴보기 위해서는 주변확률분포가 아닌, 조건부확률분포를 봐야한다

조건부확률과 기계학습

  • 조건부확률 $P(y|\textbf{x})$는 입력변수 $\textbf{x}$에 대해 정답이 $y$일 확률을 의미한다
    • [주의] 연속확률분포의 경우 $P(y|\textbf{x})$는 확률이 아니고 밀도로 해석한다
  • 로지스틱 회귀에서 사용했던 선형모델과 softmax 함수의 결합은 데이터에서 추출된 패턴을 기반으로 확률을 해석하는데 사용
  • 분류 문제에서 softmax$(W\phi + b)$은 데이터 $\textbf{x}$로부터 추출된 특징패턴 $\phi(\textbf{x})$과 가중치행렬 $\textbf{W}$을 통해 조건부 확률 $P(y|\textbf{x})$을 계산한다
    • 즉, 데이터에서 추출된 패턴을 기반으로 확률 해석에 사용가능
  • 회귀 문제의 경우 조건부기대값 $\mathbb{E}[y|\textbf{x}]$을 추정한다
    • 조건부기대값은 L2-nrom인 $\mathbb{E} ||y-f(x)||_2$를 최소화하는 함수 $f(\textbf{x})$와 일치한다

$$
\mathbb{E}_{y\sim P(y|\textbf{x})}[y|\textbf{x}] = \int_yyP(y|\textbf{x})dy
$$

  • 데이터를 robust하게 예측 → median으로 추정도 가능하다
    • 통계적 모형에서 원하는 목적에 따라 estimate 달라진다
  • 딥러닝은 다층신경망을 사용해 데이터로부터 특정패턴 $\phi$를 추출한다
    • 특징패턴 학습하기 위해 어떤 손실함수를 사용할지는 기계학습 문제와 모델에 의해 결정된다
    • 특징패턴 추출한 후, 조건부확률 계산하거나 조건부기대값 측정한다
    • 명시적으로 확률분포를 알면 이용 가능하지만, 확률분포 모를때가 대부분..

기대값 expectation

  • 확률분포가 주어지면 데이터를 분석하는 데 사용 가능한 여러 종류의 통계적 범함수(statistical functional)를 계산할 수 있다
  • 기대값은 데이터를 대표하는 통계량이면서 동시에 확률분포를 통해 다른 통계적 범함수를 계산하는데 사용된다
  • 연속확률분포 - 적분 (확률밀도함수)

$$
\mathbb{E}_{\textbf{x} \sim P(\textbf{x})}[f(\textbf{x})] = \int_xf(\textbf{x}P(\textbf{x})d\textbf{x}
$$

  • 이산확률분포 - 급수 (확률질량함수)

$$
\mathbb{E}{\textbf{x} \sim P(\textbf{x})}[f(\textbf{x})] = \sum{\textbf{x} \in X} f(\textbf{x})P(\textbf{x})
$$

  • 기대값을 이용해 분산, 첨도, 공분산 등 여러 통계량 계산 가능
    • 위의 수식에 $f$ 대신 대입하면 통계량을 계산할 수 있다

Monte Carlo 샘플링

  • 샘플링이란?
  • 임의의 확률분포 $p(x)$로부터 표본을 추출하는 작업
  • 샘플링 예시$$
    \int f(x)p(x)dx
    $$위의 적분은 다음과 같이 근사할 수 있다여기서 $X_i$들은 $i$번째 표본 값이고, 총 N개의 표본을 추출했다는 뜻이다N이 점점 커질수록 대수의 법칙에 의해 각 표본의 출현 횟수는 점점 정확한 확률 분포에 수렴하게 되고 결국 정확한 적분 값에 도달하게 된다.
  • 오른쪽 항에 $p(x)$가 없는 이유는, 표본은 확률분포를 반영하므로 전체 표본에서 각 상태의 출연 횟수는 자신의 확률분포 값에 비례한다. 즉, $X_i$가 표본이기 때문에, 샘플이기 때문에 $p(x)$를 곱한 것과 같은 효과가 나타난다.
  • $$
    \int f(x)p(x)dx \approx \sum_{i=1}^N \frac{f(X_i)}{N}
    $$
  • 심지어 $p(x)$를 계산하지 못하더라도 샘플링만 할 수 있으면 된다
  • 어떤 함수 $f(x)$를 계산할 수 있고 확률분포 $p(x)$를 샘플링 할 수 있을 때, 우리는 다음 형태의 적분을 효과적으로 풀 수 있다
  • 기계학습의 많은 문제들은 확률분포를 명시적으로 모를 때가 대부분
  • 확률분포를 모를 때 데이터를 이용하여 기대값을 계산하려면 몬테카를로 샘플링 방법을 사용해야 한다

$$
\mathbb{E}{\textbf{x} \sim P(\textbf{x})}[f(\textbf{x})] \approx \frac{1}{N} \sum{i=1}^{N}f(\textbf{x}^{(i)}), \quad \textbf{x}^{(i)} \sim^{i.i.d.} P(\textbf{x})
$$

  • 몬테카를로는 이산형이든 연속형이든 상관없이 성립한다
  • $\frac{1}{N} \sum_{i=1}^{N}f(\textbf{x}^{(i)})$는 산술평균으로, 기대값의 근사 값이다
  • 확률분포를 명시적으로 모르는 상황에서 sampling 방법 알고있으면 sampling 통해 기대값 대신 계산 가능
  • 독립적으로 샘플링 해줘야한다
  • 몬테카를로 샘플링은 독립추출만 보장된다면 대수의 법칙(law of large number)에 의해 수렴성을 보장한다
    • 대수의 법칙이란?
    • 큰 수의 법칙 또는 대수의 법칙, 큰 모집단에서 무작위로 뽑은 표본의 평균이 전체 모집단의 평균과 가까울 가능성이 높다는 통계와 확률 분야의 기본 개념

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

  • 함수 $f(x) = e^{-x^2}$의 [-1, 1] 상에서 적분값을 어떻게 구할까?
    • $f(x)$의 적분값을 해석적으로 구하는 건 불가능, 즉 부정적분 공식으로 구하는 것은 불가능
  • 구간 [-1, 1]의 길이는 2이므로 적분값을 2로 나누면 기대값을 계산하는 것과 같으므로 몬테카를로 방법 사용 가능하다
    • $x^{(i)}$는 균등분포에서 추출한 데이터 집어넣은 것

$$
\frac{1}{2} \int_{-1}^{1} e^{-x^2}dx \approx \frac{1}{N} \sum_{i=1}^N f(x^{(i)}), \quad x^{(i)} \sim U(-1, 1)
$$

  • [-1, 1]의 균등분포
    • 확률분포로 나누기 위해서는 구간의 길이 2로 적분값을 나눈다
    • 균등분포와 동일한 적분
    • 기대값을 계산하는 것과 동일하다
  • 문제점: sample size 작으면 몬테카를로라고 해도 오차범위 클 수 있으므로, 샘플링 개수 조절이 필요하다
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=100))

# (1.4936435133460484, 0.004047723151770322)
# 1.49387 = 0.0039 ~ 1.49387 + 0.0039 이므로 오차 범위 안에 참값이 있다

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

[08] 베이즈 통계학  (0) 2022.01.17
[07] 통계학  (0) 2022.01.17
[05] 딥러닝 학습방법 이해하기  (0) 2022.01.16
[04] 확률적 경사하강법 SGD  (0) 2022.01.15
[03] 경사하강법  (0) 2022.01.15