[AI Math] 4. 확률


확률론

  • 딥러닝을 포함한 기계학습의 전반적인 이론은 확률론에 바탕을 두고 있다.
  • 예측이 틀릴 위험(risk)을 최소화하도록 데이터를 학습하는 원리는 통계적 기계학습의 기본 원리다. 이 때 기계학습에서 사용되는 손실함수(loss function)들의 작동 원리는 데이터 공간을 통계적으로 해석해서 유도하게 된다.
  • 이렇게 유도하게 된 손실함수를 가지고 기계학습 또는 딥러닝 모형들을 학습시키기 때문에, 그 기반이 되는 확률론을 이해해야 전반적으로 딥러닝 모형 학습의 원리를 이해할 수 있고, 그 원리를 이용해서 원하고자 하는 목표를 달성할 수 있게 된다.
    • 예를 들어 회귀분석에서 손실함수로 사용되는 $L2$ 노름은 예측오차의 분산을 가장 최소화하는 방향으로 학습하도록 유도한다.
    • 또한 분류 문제에서 사용되는 cross entropy 는 모델 예측의 불확실성을 최소화하는 방향으로 학습하도록 유도한다.
  • 회귀분석이든 분류든, 기계학습에서 사용되는 손실함수는 데이터에서 관찰되는 분포와 모델 예측의 분포의 차이를 최소화하는 방향으로 학습하도록 유도하게 된다.
  • 특히 분산 및 불확실성을 최소화하기 위해서는 이를 측정하는 방법을 알아야 한다. 두 대상을 측정하는 방법을 통계학에서 제공하고 있다.
  • 따라서 기계학습을 이해하려면 확률론의 기본 개념을 알아야 한다. 확률론 기반의 해석이 들어가 있는 원리들을 정확히 이해해야만 문제에 맞는 손실함수를 적절하게 사용할 수 있다.

확률분포

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

    image.png

  • 데이터 공간을 $\mathscr{X} \times \mathscr{Y}$ 라고 표기하고, $\mathscr{D}$ 는 데이터 공간에서 데이터를 추출하는 분포다. 이렇게 데이터 공간에 정의된 확률분포는 데이터를 표현하는 초상화인 것이다.
  • 데이터 공간에서 데이터를 추출하는 분포인 $\mathscr{D}$ 를 알 수 있으면 참 좋지만, 문제는 이 $\mathscr{D}$ 를 한번에 아는 것은 불가능하다.
  • 그리고 내가 가진 데이터만 가지고 이 확률분포 $\mathscr{D}$ 를 아는 것은 불가능하기 때문에, 기계학습 모형을 가지고 이 확률분포 $\mathscr{D}$ 를 추론하게 된다.
  • 그렇다면 이 확률분포를 어떻게 이해해야 할까?
    • 만약 데이터 공간에서 정답 레이블이 없으면 데이터 공간 $\mathscr{X} \times \mathscr{Y}$ 가 $\mathscr{X}$ 로만 표현된다.
    • 아래부터는 $\mathscr{Y}$ 도 같이 있는, 즉 정답 레이블이 있는 지도학습을 상정해서 보자.
  • 우리가 관찰하는 데이터는 어떤 확률변수(Random Variable)로서 이해할 수 있다. 이 확률변수는 데이터 공간 상에서 관측 가능한 데이터로, $\mathscr{X} \times \mathscr{Y}$ 의 원소로서 표시할 수 있다.
  • 확률변수는 함수로 해석하면 편하다. 즉 랜덤하게 데이터 공간에서 관측하게 되는 어떤 함수로 이해할 수 있다.
  • 위 그림에는 빨간색으로 나눠져 있는 칸들에 파란 점들이 있다. 이 파란 점들이 데이터 공간 상에서 관측한 데이터에 해당한다. 이 데이터들을 추출할 때 확률변수를 사용하게 되고, 이 확률변수로 추출한 데이터의 분포를 $\mathscr{D}$ 라고 한다.
  • 즉 데이터는 확률변수로 $(\mathbf{x}, y) \sim \mathscr{D}$ 라 표기한다. 또한 $(\mathbf{x}, y) \in \mathscr{X} \times \mathscr{Y}$ 로서 데이터 공간 상의 관측가능한 데이터에 해당한다.

확률변수

  • 확률변수(Random Variable)에 대해 좀 더 이해해보자.
  • 위에서 Random Variable 은 함수로 해석하면 편하다고 했는데, 일종의 mapping function 으로 볼 수 있다.
  • 즉 아래 그림과 같이 Sample Space 를 실수값으로 mapping 하여 확률적으로 계산이 용이하도록 만드는 것이다.

    image.png

  • 동전 던지기를 예시로 들면 $H$(Head), $T$(Tail) 라는 상황이 가능하다.
  • 이 때 $H$ 에는 +1 이라는 실수값을 mapping 하고, $T$ 에는 -1 이라는 실수값을 mapping 하는 변수를 확률변수 $X$ 라고 생각하는 것이다.
  • 그러면 $P(X=1)$ 은 0.5 가 되고, $P(X=-1)$ 도 0.5 가 된다.
  • 이처럼 실수값을 이용해서 sample space 의 특정한 상황을 mapping 한 것이다.

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

  • 확률변수는 확률분포 $\mathscr{D}$ 에 따라 이산형(discrete)연속형(continuous) 확률변수로 구분하게 된다.
  • 이는 데이터 공간 $\mathscr{X} \times \mathscr{Y}$ 에 의해 결정되는 것으로 오해할 수 있지만, 사실은 확률분포 $\mathscr{D}$ 에 의해 결정되는 것이다. 즉 이산, 연속확률변수의 구분은 데이터 공간보다는 확률변수의 분포에 의해 결정되는 것이다.
  • 가령 전체 데이터 공간이 정수 집합이라면 이산형 확률변수로 생각할 수도 있지만, 실수 공간에서 정의된 데이터라고 해서 무조건 연속형 확률변수로 생각할 필요는 없다.
    • 즉 -0.5 과 0.5 중에서 선택하게 되는 확률변수 같은 경우 데이터 공간은 실수에 해당하지만 2개의 가능한 경우의 수에서 고르는 경우기 때문에, 이 경우는 이산형 확률변수로 구분하게 된다.
  • 따라서 이산형이냐 연속형이냐는 것은 데이터 공간으로 구분할 필요는 없고, 확률분포의 종류에 따라서 구분하게 된다.

    이산확률변수

    • 이산확률변수확률변수가 가질 수 있는 경우의 수를 모두 고려해서 확률을 더하는 것으로 확률분포를 모델링한다.

      \[\mathbb{P}(X \in A) = \sum_{\mathbf{x} \in A}P(X = \mathbf{x})\]
    • 위 수식을 보면 확률변수 $X$ 가 $A$ 집합에 속할 확률 분포를 계산할 때는 $\mathbf{x}$ 의 모든 경우의 수를 고려하여 확률변수 $X$ 가 $\mathbf{x}$ 의 값을 가질 확률값을 모두 더하는 형태로 확률분포를 모델링한다.
    • $P(X=\mathbf{x})$ 은 확률변수 $X$ 가 $\mathbf{x}$ 값을 가질 확률로 해석할 수 있다. 이러한 함수를 확률질량함수라고 부르게 된다.

    연속확률변수

    • 반면에 연속확률변수에서는 이산확률변수처럼 확률변수 $X$ 가 어떤 $\mathbf{x}$ 가 될 확률을 구하는 것은 불가능하다.
    • 그 대신, 데이터 공간에 정의된 확률변수의 밀도(density) 위에서의 적분을 통해 모델링한다.

      \[P(\mathbf{x}) = \lim_{h \to 0}\frac{\mathbb{P}(\mathbf{x}-h \le X \le \mathbf{x}+h)}{2h} \\ \\ \mathbb{P}(X \in A) = \int_AP(\mathbf{x})d\mathbf{x}\]
    • 수식에서 보듯, $X$ 가 어떤 집합 $A$ 에 속할 확률을 계산하려면, $A$ 상에서 $P(\mathbf{x})$ 라는 함수를 적분하는 형태로 확률을 모델링한다.
    • $P(\mathbf{x})$ 함수는 누적확률분포의 변화율을 모델링하는 개념이다. 이러한 $P(\mathbf{x})$ 는 밀도함수라고 부르게 되는데, 밀도함수는 결코 확률로 해석하면 안되고 누적확률분포의 변화율로 이해해야 한다.
    • 즉 데이터 공간에 정의된 확률보다는 밀도라는 개념으로 적분해서 모델링해야 정확하게 확률분포 값을 계산할 수 있다.

    비교

    • 두 분포를 비교해보자.

      image.png

    • 이산확률변수의 분포는 위 그림에서 왼쪽과 같이 확률질량함수(PMF, Probability Mass Function)로 나타낸다.
      • PMF 에서는 각 확률(랜덤)변수에 해당하는 확률(사각형 면적)이 존재한다.
      • 모든 랜덤변수에 해당하는 확률을 다 더하면 1 이 된다. 간단히 면적의 총합이 1 이라고 생각할 수 있다.
    • 연속확률변수의 분포는 위 그림에서 오른쪽과 같이 확률밀도함수(PDF, Probability Density Function)로 나타낸다.
      • 랜덤변수들이 연속적인 값을 가지기 때문에 PMF 와 달리 특정 랜덤변수의 확률값은 0 에 수렴한다.
      • 대신에 영역을 통해 나타낼 수 있다. 즉 특정 구간에 대한 확률값은 면적으로 구할 수 있다.
      • PDF 에서는 PMF 와 달리 각 확률변수에 해당하는 확률은 0 이고(즉, 면적이 없고) 영역을 통해 확률을 나타낼 수 있으며 총 면적의 합은 1 이 된다.
  • 보통 컴퓨터에서 사용되는 확률변수는 이산형이지만, 기계학습의 경우 정규분포, 지수함수분포, 감마분포 등과 같은 여러 종류의 연속형 확률변수도 같이 사용하게 된다.
  • 따라서 컴퓨터라고 해서 항상 이산형 확률변수만 다루는 것은 아니기 때문에 기계학습에 대한 이해의 폭을 넓히기 위해서 이산형, 연속형 확률변수를 먼저 구분하고 두 확률변수에서 확률분포를 구하는 모델링 방식에 차이가 있다는 점을 기억하자.
  • 참고로 이산형 확률변수와 연속형 확률변수 둘 다 아닌 확률변수도 있다. 어떤 경우에는 이산형, 어떤 경우에는 연속형에 해당하는 분포를 가지는 확률변수도 존재한다. 따라서 이산형, 연속형 이 두 가지가 모든 확률분포를 표현하는 것은 아니다.

결합확률분포, 주변확률분포, 조건부확률분포

  • 확률변수의 종류에 따라서 확률분포를 다르게 모델링하는 것을 위에서 봤다.
  • 이렇게 확률분포에 따라서 모델링하는 방법에 차이가 있다보니까, 어떤 식으로 데이터에 접근하냐에 따라서 분포의 성질이 달라지게 되고 분포의 종류에 따라서 확률분포를 모델링하는 방법이 달라진다.

    결합확률분포

    • 데이터를 기반으로 해서 모델링 할 분포를 상정해볼 수 있다. 즉 전체 데이터 ($\mathbf{x}, y$) 가 주어진 상황에서 분포를 상정할 수 있는데, 이 분포를 결합분포(joint distribution)라고 부른다.
    • 결합분포 $P(\mathbf{x}, y)$ 는 $\mathscr{D}$ 를 모델링한다. $\mathscr{D}$ 는 이론적으로 존재하는 확률분포이기 때문에 사전에 알 수 없다.

      image.png

    • 이 그림을 다시 보자. 결합분포 $P(\mathbf{x}, y)$ 는 공간상에서 각각의 $X, Y$ 값의 범위에 따라서 빨간색 칸막이로 칸을 나눴을 때, 각각의 칸 안에 있는 파란색 점들(데이터)이다.
    • 현재 관찰되는 데이터들은 연속확률변수처럼 보이는 확률분포의 모양을 띄고 있지만, 빨간색 칸막이로 나누게 되어 이산확률분포처럼 생각할 수 있다. 그러면 각각의 칸에 대해서 파란색 점을 세어 현재 주어진 데이터의 결합분포를 가지고 원래 확률분포 $\mathscr{D}$ 를 모델링할 수 있다.
    • 이 때 주의할 점은 원래 확률분포 $\mathscr{D}$ 가 연속이냐 이산이냐에 따라 결합분포 $P(\mathbf{x}, y)$ 의 분포를 연속이냐 이산이냐 결정하는 것은 아니다.
    • 결합분포를 선정할 때는 원래 확률분포에 상관없이, 즉 원래 확률분포가 연속형이라 하더라도 결합분포를 이산형으로 해볼 수 있다. 반대의 경우도 해볼 수 있다.
    • 이는 모델링 방법에 따라서 결정되는 것이기 때문에 원래 데이터의 확률분포인 $\mathscr{D}$ 와 주어진 데이터에서 실증적으로 분포를 추정하게 되는 분포는 다를 수도 있다는 사실을 기억해야 한다.
    • 이렇게 하는 이유는 원래 확률변수의 분포 $\mathscr{D}$ 와 다르다 할지라도 근사할 수 있는 방법을 알 수 있기 때문에, 결합분포 $P(\mathbf{x}, y)$ 는 주어진 데이터의 모양을 보고 적절하게 선택해 볼 수 있다.

    주변확률분포

    • 결합분포를 적절하게 선택하면, 각각의 입력 $\mathbf{x}$ 에 대해서 $y$ 에 해당하는 것들을 더해주거나 또는 연속확률변수의 경우 적분을 해주게 되면, 이 입력 $\mathbf{x}$ 에 대한 주변확률분포인 marginal distribution 의 정보를 구할 수 있다.
    • 이 주변확률분포는 $\mathbf{x}$ 에 대한 정보를 주지 $y$ 에 대한 정보를 주지는 않는다.
    • 원래 $P(\mathbf{x}, y)$ 로 주어진 결합확률분포에서 $y$ 가 1이든 2이든 상관없이 $X$ 의 칸에 해당하는 파란점들의 개수를 세서, 그 점들의 개수를 가지고 빈도를 계산했을 때 아래 그림처럼 각 $X$ 의 값에 따른 빈도를 구해볼 수 있다.

      image.png

    • 그림을 보면 알겠지만, 각 $X$ 에 따른 확률분포를 구했지, $y$ 에 따라서 구분해주지 않는다. 이런 분포를 주변확률분포라고 생각할 수 있다.
    • 주변확률분포 $P(\mathbf{x})$ 는 결합확률분포 $P(\mathbf{x}, y)$ 를 각각의 $y$ 에 대해서 모두 더해주거나 또는 적분을 해주면 유도할 수 있다.

      \[P(\mathbf{x}) = \sum_yP(\mathbf{x}, y) \quad P(\mathbf{x}) = \int_yP(\mathbf{x}, y)dy\]
    • 주변확률분포를 이용해서 $\mathbf{x}$ 에 대한 정보를 측정할 수 있고, 이를 가지고 많은 통계적 분석을 할 수가 있다.
    • 물론 주변확률분포는 굳이 $\mathbf{x}$ 에 대해서만 구할 필요는 없고 $y$ 에 대해서도 주변확률분포를 구할 수가 있다. 이 경우에는 $\mathbf{x}$ 에 대해서 덧셈을 해주거나 또는 $\mathbf{x}$ 에 대해서 적분을 해주게 되면 $y$ 에 대한 주변확률 분포를 구할 수 있게 된다.

    조건부확률분포

    • 이렇게 주변확률분포, 결합확률분포와 별도로 조건부확률분포를 구할 수 있다. 조건부확률분포는 2가지 종류가 있을 수 있다.
    • 그 중 하나는 $y$ 가 주어져 있는 상황에서 $\mathbf{x}$ 에 대한 확률분포를 구하는 것이다.

      image.png

    • 위 그림은 $y$ 가 1, 2에 상관없이 구했던 주변확률분포와는 다르게, $y=1$ 인 경우에 해당하는 파란색 점들만 카운트해서 각각의 $X$ 값에 대해서 확률분포를 구한 것이다.
    • 이 분포는 $y=1$ 로 주어져 있는, 즉 $y=1$ 인 조건부가 주어졌을 때의 확률분포라고 얘기할 수 있다.
    • 조건부확률분포 $P(\mathbf{x} \vert y)$ 는 데이터 공간에서 입력 $\mathbf{x}$ 와 출력 $y$ 사이의 관계를 모델링하게 된다. $y$ 가 조건부로 주어졌을 때 $\mathbf{x}$ 의 확률분포는 특정 출력값 또는 특정 클래스가 주어진 조건에서 데이터의 확률분포를 보여준다.
    • 조건부확률분포는 입력과 출력 사이의 통계적 관계를 모델링할 때 또는 예측모형을 세울 때 사용할 수 있다.
    • 주어진 클래스에 대해서 $\mathbf{x}$ 의 분포가 어떤 식으로 형성되어 있는지 각각을 살펴보기 위해서는 주변확률분포 보다는 조건부확률분포를 사용하게 되면 좀 더 명확하게 통계적 관계를 모델링할 수 있게 된다.
  • 이런 식으로 확률분포를 통해서 데이터들의 각각의 관심을 가지는 관점에 따라서 데이터의 초상화를 그려볼 수 있다. 따라서 확률분포는 데이터를 바라볼 때 이 데이터를 해석하는데 중요한 도구로서 사용될 수 있다.

조건부확률과 기계학습

  • 특히 조건부확률은 기계학습에서 굉장히 중요하게 사용된다. 조건부확률이 기계학습에서 사용되는 예제는 이어지는 베이지안 통계학에서 자세히 다룰 수 있다.
  • 위에서 설명한 조건부확률은 $y$ 가 조건부로 주어졌을 때 $\mathbf{x}$ 의 확률이었다.
  • $\mathbf{x}$ 가 조건부로 주어졌을 때 $y$ 에 대한 확률분포는, 즉 조건부확률 $P(y \vert \mathbf{x})$ 는 입력변수 $\mathbf{x}$ 가 주어졌을 때 정답이 $y$ 인 확률을 의미하게 된다.
  • 주의할 점은 연속확률분포의 경우 $P(y \vert \mathbf{x})$ 는 확률이 아니고 밀도로 해석해야 한다.
  • 이 조건부확률분포 또는 조건부확률밀도함수가 주어졌을 때, 입력변수 $\mathbf{x}$ 에 대한 정답 $y$ 의 확률 또는 밀도를 모델링할 수 있다.
  • 로지스틱 회귀에서 사용했던 선형모델과 소프트맥스 함수의 결합은 데이터에서 추출된 패턴을 기반으로 확률을 해석하는데 사용된다. 분류 문제에서 선형모델을 통과하고 소프트맥스 함수에 집어넣게 되면 확률 벡터를 구할 수 있었다.
  • 로지스틱 회귀를 사용하든, 딥러닝 모델을 사용하든 데이터로부터 추출된 특징 패턴을 $\phi(\mathbf{x})$ 라고 표현하면, 이 특징 패턴과 각 가중치 행렬 $\mathbf{W}$ 와의 행렬곱을 통해 주어진 $\mathbf{x}$ 로부터 정답이 $y$ 일 확률을 구할 수 있다.
  • 이를 조건부확률 $P(y\vert \mathbf{x})$ 를 계산하는 것과 똑같이 이해할 수 있다. 즉, 분류문제에서 $\text{softmax}(\mathbf{W}\phi + \mathbf{b})$ 은 데이터 $\mathbf{x}$ 로부터 추출된 특징패턴 $\phi(\mathbf{x})$ 과 가중치 행렬 $\mathbf{W}$ 을 통해 조건부확률 $P(y\vert\mathbf{x})$ 을 계산하는 것이다.
  • 참고로 기호적으로 $\mathbf{x}$ 가 주어졌을 때 $y$ 의 확률을 구한다($P(y\vert\mathbf{x})$) 라고 쓸 수도 있고, 특징패턴을 조건부로 놓고 확률을 계산한다($P(y\vert\phi(\mathbf{x}))$)고 기호를 줄 수도 있다.
  • 분류문제와 달리 회귀문제의 경우, 연속확률변수를 다루기 때문에 확률로 해석하기는 어렵고, 밀도함수로 해석해야 한다.
  • 이 경우에는 조건부확률 $P(y\vert\mathbf{x})$ 가 아니라 조건부기대값 $\mathbb{E}[y\vert\mathbf{x}]$ 으로 정답을 추론하는 예측모델을 모델링할 수 있다.
  • 조건부기대값을 구하는 방법은 아래와 같다.

    \[\mathbb{E}_{y \sim P(y\vert\mathbf{x})}[y\vert\mathbf{x}] = \int_yyP(y\vert\mathbf{x})dy \\ \mathbb{E}_{y \sim P(y\vert\mathbf{x})}[y\vert\mathbf{x}] = \sum_yyP(y\vert\mathbf{x})dy\]
  • 조건부확률 밀도함수에 해당하는 $P(y\vert\mathbf{x})$ 에다가 $y$ 를 곱해서 적분을 해주는 것으로 추정하게 된다.
  • 만약 이산확률변수인 경우에는 $y$ 를 곱해준 후에 $y$ 에 대해서 적분이 아니라 더해주게 되면 마찬가지로 조건부기대값을 계산할 수 있다.
  • 회귀문제의 경우에는 보통 연속확률변수를 다루기 때문에, 즉 $y$ 가 연속인 경우를 다루기 때문에 이 경우에는 적분으로 표현하게 된다.
  • 왜 조건부기대값을 사용하게 되는 것일까?
    • 선형회귀문제에서 사용하는 손실함수는 $L2$ 노름의 기대값이다. 이 때 조건부기대값은 이 $L2$ 노름을 최소화하는 함수와 일치하게 된다.
    • 즉 조건부기대값은 $\mathbb{E}\Vert y-f(\mathbf{x})\Vert_2$ 을 최소화하는 함수 $f(\mathbf{x})$ 와 일치한다.
    • 이 사실이 수학적으로 증명되어 있고, 보통 회귀문제에서 조건부기대값을 사용하는 이유는 목적식 $L2$ 노름을 최소화하는 함수와 동일하기 때문에 사용하게 되는 것이다.

      \[\begin{aligned} \mathcal{L}(f) &= \mathbb{E}\left[\|y - f(\mathbf{x})\|_2^2\right] \\ &= \mathbb{E}\left[(y - f(\mathbf{x}))^2\right] \\ &= \mathbb{E}\left[y^2 - 2y f(\mathbf{x}) + f(\mathbf{x})^2\right] \\ &= \mathbb{E}[y^2] - 2\mathbb{E}[y f(\mathbf{x})] + \mathbb{E}[f(\mathbf{x})^2] \\ \frac{\partial \mathcal{L}(f)}{\partial f(\mathbf{x})} &= -2 \mathbb{E}[y \mid \mathbf{x}] + 2 f(\mathbf{x}) = 0 \\ \therefore \; f(\mathbf{x}) &= \mathbb{E}[y \mid \mathbf{x}] \\ \end{aligned}\]
    • 따라서 조건부기대값을 예측오차의 분산을 최소화하는 적절한 통계치로써 사용할 수 있다.
    • 물론 조건부기대값을 항상 사용해야 되는 것은 아니다. 기계학습 문제에서 원하는 목적에 따라서 조건부기대값이 아닌 다른 예측 통계량을 사용할 수도 있다. 만약 관찰되는 데이터를 강건(robust)하게 예측하기 위해서 조건부기대값 보다는 중앙값(median)을 사용해서 추정을 해보는 것도 가능하다.
    • 통계적 모형에서 원하고자 하는 목적에 따라서 사용되는 통계 estimator 가 달라질 수 있다는 것, 즉 추정량이 달라질 수도 있다는 것을 명심해야 한다.
    • 여기서는 보통 회귀문제에서 $L2$ 노름을 사용하게 되는 경우에 이 목적식을 최소화하는 함수와 조건부기대값이 일치한다는 사실을 기억하자.
  • 이처럼 회귀문제의 경우 조건부기대값을 이용해서 추정한다.
  • 딥러닝의 경우는 다층 신경망, 즉 MLP 를 이용해서 데이터로부터 특징패턴 $\phi$ 를 추출한 후에 조건부확률을 계산하거나 조건부기대값을 추정하는 식으로 학습하게 된다.
  • 특징패턴을 학습하기 위해서 목적으로 주어진 손실함수를 어떤 함수로 사용할지에 대해서는 기계학습의 문제와 모델에 의해 결정된다.

기대값

  • 확률분포가 주어지면 데이터를 분석하는데 사용 가능한 여러 종류의 통계적 범함수(statistical functional)를 계산할 수 있다.
  • 기대값(expectation)은 데이터를 대표하는 통계량으로 사용할 수 있는 대표적인 범함수다. 또한 기대값은 모델링하고자 하는 확률분포에서 다른 통계적 범함수를 계산하는데 이용되는 도구다.
  • 기대값은 보통 평균으로 많이 알고 있다. 기대값과 평균은 같은 용어로 사용되고 영어로는 expectation 또는 mean 으로 평균과 동일한 개념으로 사용할 수 있다.
  • 기계학습에서 사용하는 경우에는 훨씬 더 폭 넓게 사용하게 된다. 따라서 단순히 평균만 구하게 되는 개념이 아니라, 목적으로 하는 주어진 함수가 있을 때 그 함수의 기대값을 계산하는 것을 통해서 데이터를 해석할 때 여러 방면에서 사용할 수 있다.
  • 기대값의 수식은 아래와 같다.

    \[\begin{aligned} \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})}[f(\mathbf{x})] &= \int_\mathcal{X}f(\mathbf{x})P(\mathbf{x})d\mathbf{x}, \\\mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})}[f(\mathbf{x})] &= \sum_{\mathbf{x} \in \mathcal{X}}f(\mathbf{x})P(\mathbf{x}) \end{aligned}\]
  • 위 수식을 보면, 주어진 함수의 기대값을 계산할 때 연속확률분포의 경우에는 주어진 함수에다가 확률밀도함수를 곱한 후에 적분을, 이산확률분포의 경우에는 주어진 함수에 대해서 확률질량함수를 곱해준 다음에 급수를 사용한다.
  • 이런 식으로 정의된 기대값을 통해서 굉장히 많은 통계량을 계산할 수 있다.
  • 가령 기대값을 이용해서 분산, 첨도(skewness), 공분산(covariance) 같은 여러 통계량을 계산해볼 수 있다.

    \[\begin{aligned} \mathbb{V}(\mathbf{x}) &= \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})}[(\mathbf{x} - \mathbb{E}[\mathbf{x}])^2] \\ \text{Skewness}(\mathbf{x}) &= \mathbb{E}\left[\left(\frac{\mathbf{x}-\mathbb{E}[\mathbf{x}]}{\sqrt{\mathbb{V}(\mathbf{x})}}\right)^3\right] \\ \text{Cov}(\mathbf{x}_1, \mathbf{x}_2) &= \mathbb{E}_{\mathbf{x}_1, \mathbf{x}_2 \sim P(\mathbf{x}_1, \mathbf{x}_2)}[(\mathbf{x}_1 - \mathbb{E}[\mathbf{x}_1])(\mathbf{x}_2-\mathbb{E}[\mathbf{x}_2])] \end{aligned}\]
  • $\mathbf{x}$ 에 기대값을 뺀 후 제곱을 해주고, 이 값에 대한 기대값을 다시 한번 계산해주는 것으로 분산을 정의할 수 있다.
  • skewness 같은 경우 주어진 확률변수에서 기대값을 뺀 후에 표준편차, 즉 분산의 제곱근으로 나누어 3승을 한 것의 기대값으로 정의할 수 있다.
  • 공변량은 두 개의 확률변수에 대해서 계산한다. 두 확률변수에 대해서 각각의 평균값을 뺀 후에 곱해주거나 또는 내적을 취해준 후에 결합확률분포에 대해서 기대값을 취해주게 된다.
  • 당연히 결합확률분포에 대해서 기대값을 취해주게 되는 경우에는 위의 기대값 수식에서 $P(\mathbf{x})$ 대신에 $P(\mathbf{x}_1, \mathbf{x}_2)$ 를 집어넣고 적분 혹은 급수를 해주게 된다. 그러면 기대값을 계산할 수 있다.
  • 이처럼 목적으로 하는 여러 종류의 통계량에 해당하는, 즉 위 기대값 수식에 함수 $f$ 대신에 통계량에 해당하는 함수들을 집어넣어 주면, 확률분포를 대표하는 여러가지 통계적 범함수를 계산할 수 있다.
  • 따라서 기대값은 굉장히 중요한 통계량이면서 동시에 통계적 수치들을 계산할 수 있는 도구다.
  • 명심할 점은 연속확률변수냐, 이산확률변수냐에 따라서 적분 혹은 급수를 취해준다는 사실을 기억해야 한다. 또한 연속확률변수인 경우에는 밀도함수를, 이산확률변수에서는 질량함수를 곱해준다는 사실도 기억해야 한다.

몬테카를로 샘플링

  • 기계학습에서의 기대값을 계산할 때 명시적으로 확률분포를 알고 있거나 또는 밀도함수 혹은 질량함수를 알 수 있으면, 기대값을 계산하는데 이용할 수 있다. 그러나 안타깝게도 기계학습의 많은 문제들은 확률분포를 명시적으로 모를 때가 대부분이다.
  • 확률분포를 명시적으로 모를 때는 데이터를 이용해서 기대값을 계산해야 한다. 이 때 사용되는 방법이 바로 몬테카를로(Monte Carlo) 샘플링 방법이다.
  • 많은 경우에 밀도함수나 질량함수를 알고 있으면 기대값을 계산할 때 적분이나 급수를 취해주면 되지만, 샘플링하는 방법을 알고 있고 확률분포를 명시적으로 모르는 상황이라면, 적분이나 급수 대신에 샘플링을 통해서 기대값을 대신 계산해볼 수 있다.

    \[\mathbb{E}_{\mathbf{x}\sim P(\mathbf{x})}[f(\mathbf{x})] \approx \frac{1}{N}\sum^N_{i=1}f(\mathbf{x}^{(i)}), \quad \mathbf{x}^{(i)} \overset{\text{i.i.d}}{\sim} P(\mathbf{x})\]
  • 수식에서 보듯, 어떤 기대값을 추정하는 방법은 타겟으로 하는 어떤 함수 $f(\mathbf{x})$ 의 $\mathbf{x}$ 자리에다가 샘플링한 데이터를 대입하게 된다.
  • 그리고 이 함수 $f$ 에 데이터를 대입을 한 후에, 데이터들에 따라서 $f(\mathbf{x}^{(i)})$ 값들의 산술평균을 계산을 해주면 이 산술평균값이 구하고자 하는 기대값에 근사하게 된다.
  • 이 몬테카를로 샘플링 방법은 확률변수가 이산형이든 연속형이든 상관없이 성립한다. 중요한 것은 이 샘플링하는 분포에서 항상 독립적으로 샘플링해줘야만 몬테카를로 샘플링 방법이 작동한다.
  • 몬테카를로 샘플링 방법을 이용해서 확률분포를 몰라도 샘플링만 가능하다면 기대값을 계산할 수 있기 때문에, 굉장히 많은 기계학습 응용문제에서 이 몬테카를로 샘플링을 이용해서 기대값을 계산한다. 통계학에서도 굉장히 많이 사용되는 도구 중 하나다.
  • 몬테카를로 샘플링은 독립추출만 보장된다면 대수의 법칙(law of large number)에 의해 수렴성을 보장한다. 이 방법을 통해서 목표로 하는 기대값을 근사시킬 수 있다.

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

    • 함수 $f(x) = e^{-x^2}$ 의 $[-1, 1]$ 상에서 적분값을 구해보자.

    image.png

    • 부정적분에서 지수함수에 $-x^2$ 가 승수에 있는 경우에는 적분을 계산하는 것이 쉽지 않다. 또한 확률분포가 아닌 공간에서의 적분이기 때문에 해석적으로 구하는 것은 불가능하다.
    • 그러나 위 함수에 대한 적분을 몬테카를로 샘플링 방법으로 근사시킬 수 있다.
    • 적분 구간이 $[-1, 1]$ 이기 때문에, -1 부터 1 사이의 균등분포(uniform distribution)에서 데이터를 샘플링해주게 된다.
    • 균등분포에서 몬테카를로 샘플링 방법을 사용해 적분을 근사하려면, 샘플링한 함수 값의 평균에 구간의 길이를 곱해서 적분값을 계산한다.

      \[\int_{a}^{b} f(x) \, dx \approx (b - a) \cdot \frac{1}{N} \sum_{i=1}^{N} f(x_i)\]
    • 그렇다면 위 예제에서 적분 구간의 길이 2로 함수의 적분값을 나눠주면 데이터를 이용해 기대값을 구하는 몬테카를로 샘플링 공식과 같다.
    • 따라서 위 함수에 균등분포에서 추출한 데이터를 집어넣고 이 데이터의 산술평균을 구해주게 되면, 원하고자 하는 적분값의 1/2 를 구할 수가 있게 된다.

      \[\frac{1}{2}\int^1_{-1}e^{-x^2}dx \approx \frac{1}{N}\sum^N_{i=1}f(x^{(i)}), \quad x^{(i)} \sim U(-1, 1)\]
    • 양변에 2를 곱해주면 원하고자 하는 적분값을 구할 수 있다.

      \[\int^1_{-1}e^{-x^2}dx \approx \frac{2}{N}\sum^N_{i=1}f(x^{(i)}), \quad 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=100))
        # 출력
        # 1.49387, 0.0039
      
    • 코드를 보면 균등분포(uniform)에서 데이터를 샘플링한 다음, 함수에 대입한다.
    • 그 대입된 함수들의 데이터를 산술평균 취해준 후에 구간의 길이가 2 이므로 2를 다시 곱하여 이 함수의 몬테카를로 적분값을 계산할 수 있다.
    • 또한 반복적으로 추출하게 되면 분산도 구할 수 있기 때문에, 오차범위도 계산해볼 수 있다.
    • 몬테카를로 방법으로 계산한 적분값의 오차범위 안에 참값($\approx$1.49364)이 존재하기 때문에 몬테카를로 방법으로 적분을 계산한 것이 근사를 시킬 수 있다는 것을 알 수 있다.
    • 문제는 샘플 사이즈가 적게 되면 몬테카를로 방법이라 하더라도 오차범위가 커질 수 있고 참값에 멀어질 수가 있다.
    • 몬테카를로 샘플링은 대수의 법칙에 의해 수렴성을 보장받기 때문이다. 따라서 적절한 샘플링 개수를 조절해줘야만 원하고자 하는 적분값을 구할 수 있다.

    대수의 법칙(Law of Large Numbers)

    • 평균이 $\mu$, 분산이 $\sigma^2$ 인 i.i.d.(독립동등분포) 확률 변수 $X_1, X_2, \ldots$ 가 있을 때, $X_1$ 에서 $X_n$ 까지의 평균을 표본평균 $\bar{X}_n$ 이라고 한다.

      \[\bar{X}_n = \frac{X_1 + \cdots + X_n}{n}\]
    • 대수의 법칙이란 표본의 크기 $n$이 증가함에 따라 표본평균 $\bar{X}_n$ 이 모평균 $\mu$ 에 수렴하는 현상을 말한다.
    • 이러한 대수의 법칙은 시뮬레이션, 통계학, 과학 등에서 필수적인 개념이다.
    • 우리는 이론적인 평균값(theoretical average)을 추정하기 위해서 자연스럽게 표본들에서 알 수 있는 평균값(average value in the replications)을 활용하고자 한다. 이것이 대수의 법칙을 활용하고 있는 것이다.
    • 대수의 법칙은 대수의 강법칙(SLLN)과 대수의 약법칙(WLLN), 두 가지 버전으로 나눌 수 있다.
    • 두 가지 버전은 개념적으로 약간의 차이가 존재하지만, $n$이 증가함에 따라 표본 평균 $\bar{X}_n$ 이 모평균 $\mu$ 에 수렴하는 현상을 설명하려는 점에서는 공통점이 있다.
    • 대수의 약법칙은 확률값의 수렴을 말하고, 대수의 강법칙은 확률변수 자체가 수렴한다는 것을 말한다.
    • 대수의 약법칙은 i.i.d. 확률변수의 수열 중에서 $n$ 번째까지의 확률변수의 평균 $\bar{X}_n$ 과 모평균 $\mu$ 의 차이의 절대값이 임의의 양수 $\epsilon$ 보다 클 확률이 0 에 수렴한다는 정리다.

      \[\bar{X}_n \xrightarrow{P} \mu \\ \text{in} \; \epsilon > 0, \quad \lim_{n \to \infty} P\left(\left|\bar{X}_n - \mu\right| \geq \epsilon \right) = 0\]
    • 즉 대수의 약법칙은 확률 수렴(convergence in probability)에 대해 말하는 것이다. $n$ 이 증가할 때, 확률변수의 표본평균 $\bar{X}_n$ 이 실제 모수인 $\mu$ 근처에 존재할 확률이 1 로 근사한다는 의미로 해석할 수 있다.
    • 증명을 위해 표본평균의 기대값과 분산을 아래와 같이 도출할 수 있다.

      \[\begin{aligned} E[\bar{X}_n] &= E\left[\frac{1}{n} \sum_{i=1}^{n} X_i\right] = \frac{1}{n} \sum_{i=1}^{n} E[X_i] = \frac{1}{n} \cdot n \cdot \mu = \mu \\ \text{Var}(\bar{X}_n) &= \text{Var}\left(\frac{1}{n} \sum_{i=1}^{n} X_i\right) = \frac{1}{n^2} \sum_{i=1}^{n} \text{Var}(X_i) = \frac{1}{n^2} \cdot n \cdot \sigma^2 = \frac{\sigma^2}{n} \\ \end{aligned}\]
    • 이제 Chebyshev 의 부등식을 이용하면 아래와 같이 전개할 수 있다.

      \[\begin{aligned} P\left(\left|\bar{X}_n - \mu\right| \geq \epsilon\right) &\leq \frac{\text{Var}(\bar{X}_n)}{\epsilon^2} = \frac{\frac{\sigma^2}{n}}{\epsilon^2} = \frac{\sigma^2}{n \epsilon^2} \\ \lim_{n \to \infty} P\left(\left|\bar{X}_n - \mu\right| \geq \epsilon \right) &= 0 \quad \leftarrow \quad \lim_{n \to \infty} \frac{\sigma^2}{n \epsilon^2} = 0\\ \end{aligned}\]
맨 위로 이동 ↑

댓글 남기기