다운로드
작성자: admin 작성일시: 2016-10-02 20:19:45 조회수: 878 다운로드: 160
카테고리: 기초 수학 태그목록:

다변수 가우시안 정규 분포

다변수 가우시안 정규 분포 혹은 간단히 다변수 정규 분포(MVN: Multivariate Normal)는 복수의 확률 변수를 모형화하는데 가장 많이 사용되는 분포이다.

$D$차원 다변수 정규 분포의 확률 밀도 함수는 평균 벡터 $\mu$ 와 공분산 행렬 $\Sigma$ 라는 두 개의 모수를 가지며 다음과 같은 수식으로 정의된다. 이 때 공분산 행렬은 역행렬이 존재하는 대칭 행렬이어야 한다.

$$ \mathcal{N}(x ; \mu, \Sigma) = \dfrac{1}{(2\pi)^{D/2} |\Sigma| ^{1/2}} \exp \left( -\dfrac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) \right) $$

이 식에서 각 기호의 의미는 다음과 같다.

  • $x \in \mathbf{R}^D $ 확률 변수 벡터
  • $\mu \in \mathbf{R}^D $ 평균 벡터
  • $\Sigma \in \mathbf{R}^{D\times D} $ 공분산 벡터
  • $\Sigma^{-1} \in \mathbf{R}^{D\times D} $ 공분산 벡터의 역행렬

공분산 벡터의 역행렬 $\Sigma^{-1}$는 precision matrix 혹은 concentration matrix 라고도 한다.

R의 다변수 정규 분포 지원

mnormt 패키지는 다변수 정규 분포를 위한 명령어를 지원한다.

  • dmnorm(x, mean = rep(0, d), varcov, log = FALSE): 확률밀도함수
  • pmnorm(x, mean = rep(0, d), varcov, ...): 누적분포함수
  • rmnorm(n = 1, mean = rep(0, d), varcov, sqrt=NULL): 랜덤 샘플 생성

다변수 정규 분포의 예

2차원($D=2$) 다변수 정규 분포의 예를 몇가지 살펴보자.

우선 2차원이므로 확률 변수 벡터는 $$ x = \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} $$ 이다.

경우 1

만약

$$ \mu = \begin{bmatrix}2 \\ 3 \end{bmatrix}. \;\;\; \Sigma = \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} $$

이면

$$ ; \Sigma; ^{1/2} = 1. \;\;\; \Sigma^{-1} = \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} $$$$ (x-\mu)^T \Sigma^{-1} (x-\mu) = \begin{bmatrix}x_1 - 2 & x_2 - 3 \end{bmatrix} \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix}x_1 - 2 \\ x_2 - 3 \end{bmatrix} = (x_1 - 2)^2 + (x_2 - 3)^2 $$$$ \mathcal{N}(x_1, x_2) = \dfrac{1}{2\pi} \exp \left( -\dfrac{1}{2} \left( (x_1 - 2)^2 + (x_2 - 3)^2 \right) \right) $$

이 확률 밀도 함수의 모양은 다음과 같다.

In:
library("mnormt")

mu <- c(2, 3)
cov <- matrix(c(1, 0, 0, 1), nrow=2, byrow=T)

xx <- seq(0, 4, length=120)
yy <- seq(1, 5, length=150)
zz <- matrix(dmnorm(expand.grid(xx, yy), mu, cov), nrow=120)
contour(xx, yy, zz)
grid()

경우 2

만약

$$ \mu = \begin{bmatrix}2 \\ 3 \end{bmatrix}. \;\;\; \Sigma = \begin{bmatrix}2 & 3 \\ 3 & 7 \end{bmatrix} $$

이면 $$ ; \Sigma ; = 5,\;\;\; \Sigma^{-1} = \begin{bmatrix}1.4 & -0.6 \\ -0.6 & 0.4 \end{bmatrix} $$

$$ (x-\mu)^T \Sigma^{-1} (x-\mu) = \begin{bmatrix}x_1 - 2 & x_2 - 3 \end{bmatrix} \begin{bmatrix}1.4 & -0.6 \\ -0.6 & 0.4\end{bmatrix} \begin{bmatrix}x_1 - 2 \\ x_2 - 3 \end{bmatrix} = \dfrac{1}{10}\left(14(x_1 - 2)^2 - 12(x_1 - 2)(x_2 - 3) + 4(x_2 - 3)^2\right) $$$$ \mathcal{N}(x_1, x_2) = \dfrac{1}{20\pi} \exp \left( -\dfrac{1}{10}\left(7(x_1 - 2)^2 - 6(x_1 - 2)(x_2 - 3) + 2(x_2 - 3)^2\right) \right) $$

이 확률 밀도 함수의 모양은 다음과 같다.

In:
mu <- c(2, 3)
cov <- matrix(c(2, 3, 3, 7), nrow=2, byrow=T)

xx <- seq(0, 4, length=120)
yy <- seq(1, 5, length=150)
zz <- matrix(dmnorm(expand.grid(xx, yy), mu, cov), nrow=120)
contour(xx, yy, zz)
grid()

다변수 정규 분포의 최적화

다변수 정규 분포를 모수에 대해 최적화하는 문제를 풀어보자. 어떤 함수에 로그를 취해도 최고점이나 최저점의 위치는 변하지 않기 때문에 문제를 쉽게 하기 위해 로그를 취한 분포함수를 최적화를 한다.

$$ \mathcal{N}(x ; \mu, \Sigma) = \dfrac{1}{(2\pi)^{D/2} |\Sigma| ^{1/2}} \exp \left( -\dfrac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) \right) $$$$ \log \mathcal{N}(x; \mu, \Sigma) = -\dfrac{1}{2}\log{2\pi} -\dfrac{1}{2} \log|\Sigma| - \dfrac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) $$

여기에서 기호를 단순하게 하기 위해 precision matrix $\Sigma ^{-1} $를 $ \Lambda$ 로 표시하고 미분할 때 어차피 없어지는 상수항을 제외한 부분을 함수 $f$로 나타내자.

$$ f = \log| \Lambda| - (x-\mu)^T \Lambda (x-\mu) $$

스칼라 함수 $f$ 를 평균 벡터 $\mu$로 미분하면 다음과 같다.

$$ \begin{eqnarray} \dfrac{\partial f}{\partial \mu} &=& \dfrac{\partial}{\partial \mu} \big( \log | \Lambda| \big) - \dfrac{\partial}{\partial \mu} \big( (x-\mu)^T \Lambda (x-\mu) \big) \\ &=& -(\Lambda + \Lambda^T)(x-\mu) \\ &=& 0 \end{eqnarray} $$$$ \therefore \;\; \mu = x $$

이번에는 두 개의 다변수 정규 분포 확률 변수 $X$, $Y$가 있을 경우를 생각해 보자. 두 확률 변수가 독립이며 모수 $\mu$, $\Lambda$가 같다고 가정하자.

이 때 로그 정규 분포는 다음과 같다.

$$ \begin{eqnarray} \dfrac{1}{2}f &=& \log \left( \mathcal{N}(x; \mu, \Sigma)\mathcal{N}(y; \mu, \Sigma)\right) \\ &=& \log \mathcal{N}(x; \mu, \Sigma) + \log \mathcal{N}(y; \mu, \Sigma) \\ &=& - \log|\Sigma| - \dfrac{1}{2} (x-\mu)^T \Lambda (x-\mu) - \dfrac{1}{2} (y-\mu)^T \Lambda (y-\mu) \end{eqnarray} $$

이 함수 $f$를 평균 벡터 $\mu$와 precision matrix $\Lambda$ 로 미분하면 다음과 같다.

$$ \begin{eqnarray} \dfrac{\partial f}{\partial \mu} &=& \dfrac{\partial}{\partial \mu} \big( 2\log | \Lambda | \big) - \dfrac{\partial}{\partial \mu} \big( (x-\mu)^T \Lambda (x-\mu) \big) - \dfrac{\partial}{\partial \mu} \big( (y-\mu)^T \Lambda (y-\mu) \big) \\ &=& - (\Lambda + \Lambda^T)(x-\mu) - (\Lambda + \Lambda^T)(y-\mu) \\ &=& 0 \end{eqnarray} $$$$ \therefore \;\; \mu = \dfrac{x + y}{2} $$$$ \begin{eqnarray} \dfrac{\partial f}{\partial \Lambda} &=& \dfrac{\partial}{\partial \Lambda} \big( 2\log | \Lambda| \big) - \dfrac{\partial}{\partial \Lambda} \big( (x-\mu)^T \Lambda (x-\mu) \big) - \dfrac{\partial}{\partial \Lambda} \big( (y-\mu)^T \Lambda (y-\mu) \big) \\ &=& (2\Lambda^{-1})^T - \dfrac{\partial}{\partial \Lambda} \left( \text{tr} \left( (x-\mu)(x-\mu)^T \Lambda \right) \right) - \dfrac{\partial}{\partial \Lambda} \left( \text{tr} \left( (y-\mu)(y-\mu)^T \Lambda \right) \right) \\ &=& 2\Sigma^T - ((x-\mu)(x-\mu)^T)^T - ((y-\mu)(y-\mu)^T)^T \\ &=& 0 \end{eqnarray} $$$$ \therefore \;\; \Sigma = \dfrac{1}{2} \left( (x-\mu)(x-\mu)^T + (y-\mu)(y-\mu)^T \right) $$

질문/덧글

다변량 가우시안 분포는 어디에 사용되나요??? bub3*** 2019년 1월 26일 1:27 오후

사실 정해진 함수값이기에 인공지능이라고는 하면 안되는건가요??

검색해보면 인공지능에 활용이된다는데, 왜 인공지능인지 모르겠습니다!

설명 부탁드립니다 ㅠㅠㅠ