꺼내먹는지식 준

확률론 찍먹 (MCMC) 본문

AI/AI 수학

확률론 찍먹 (MCMC)

알 수 없는 사용자 2022. 1. 20. 15:12

학률론은 딥러닝의 기계 학습 이론의 바탕이다. 

손실함수(loss function)들의 작동 원리는 데이터 공간에서 통계적으로 해석해서 유도한다. 

회귀 분석의 손실함수 L2 norm은 예측 오차의 분산을 가장 최소화 하는 방향으로 학습하도록 유도된다. 

분류 문제에서 사용되는 cross entropy는 모델 예측의 불확실성을 최소화 하는 방향으로 학습하도록 유도된다. 

 

데이터 공간을 $X \times Y$ 라 표기하고 $D$ 는 데이터 공간에서 데이터를 추출하는 분포이다. 

실제로 데이터만 가지고 데이터의 분포$D$를 알아내는 것은 불가능하기 때문에 기계학습 모형을 가지고 분포 $D$를 추론한다. 

 

 

데이터는 확률변수로 $(x,y) \sim D $ 라 표기한다. 

확률변수는 데이터 공간에서 임의로 관측되는 함수라고 이해를 한다. 

위 사진에서 보이는 점들이 데이터 공간에서 관측한 데이터이고, 이 데이터를 추출할 때 확률 변수를 사용하게 된다. (이에 따라 관측되는 함수라 한다.)

확률 변수로 추출한 데이터의 분포를 $D$라 한다. 

 

확률 변수의 종류 

1) 이산형 

2) 연속형 

(데이터 공간에 의해서 결정되는 것으로 많이 오해한다. 데이터 공간이 아니라, 확률 분포에 의해 결정된다. 실수 공간에서 정의 된 데이터라 해서 꼭 연속형이라고 생각할 필요는 없다. ) 

 

이산형 확률변수 

이산형 확률 변수는 확률 변수가 가질 수 있는 모든 경우의 수를 고려하여 확률을 더해 모델링

글보다는 수식을 보는게 이해가 잘 된다. 

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

 

연속형 확률변수 

데이터 공간에 정의된 확률변수의 밀도(density) 위에서의 적분을 통해 모델링

글을 보면 어렵지만, 이산형에서 모든 확률을 더하는 것 처럼 연속된 값을 적분하는 것 이라고 이해하면 쉽다. 

\[P(X \in A ) = \int_{A}P(x)dx \]

$P(x)$ 즉 밀도는 누적확률분포의 변화율을 모델링한다. (강의에서는 이를 확률로 해석하면 안된다고 했는데, 이 값들이 모여 확률이 되는 것이라 확률의 아주 작은 조각이라고 이해해도 좋을 것 같다.)

 

전체 데이터 X, Y 가 주어졌을 때 확률 분포를 모델링 할 수 있고, 이 분포를 결합 분포  P(x,y) 라 한다. 

결합분포 P(x,y): x,y 가 동시에 일어날 확률에 대한 분포로 보인다. 

 

결합분포:

확률 변수를 두개 이상 고려한 분포 

https://destrudo.tistory.com/13

 

결합분포에 대해 알아보자!

주사위를 던졌을때 주사위(X)가 얼마가 나올까? 내일의 날씨(X)는 어떤 날씨일까? 흔히 생각하는 확률변수는 하나이다. 그럼 2개 혹은 그 이상일때에는 어떻게 될까? 예를들어 중간고사 점수의 확

destrudo.tistory.com

 

두개의 확률 변수를 고려하면, 다음과 같은 분포가 생성된다. (확률 변수 2개 당 확률)

ex) 중간고사, 기말고사 점수, 확률 

 

원래 확률 분포의 확률 변수의 형태와 상관 없이 결합분포는 이산형, 연속형 다 사용해볼 수 있다. 이는 모델링 방법에 따라 결정된다. 

원 데이터의 확률분포와 주어진 데이터에서 추정한 분포는 다를 수 있다. 

 

결합 분포가 주어진 상태에서 우리는 각각의 입력 x에 대해서 y에 해당하는 것들을 더해주거나, 연속 확률의 경우 적분을 하여 입력 x에 대한 주변 확률 분포(marginal distribution)의 정보를 알 수 있다. 

설명에 대한 예시

주변 확률 분포: 

두 개의 변수로 이루어진 결합확률분포를 통해 하나의 변수로만 이루어진 확률 함수를 구하는 것 

https://m.blog.naver.com/mykepzzang/220837645914 

 

[확률과 통계] 22. 주변확률분포, Marginal Probability Distribution

확률과 통계 20번, 21번 포스팅에서 이산확률변수와 연속확률변수의 결합확률함수를 알아봤습니다. 이산확...

blog.naver.com

각 X 에만 따라 구분 (물론 각 Y 에만 따라 구분도 가능 이떄는 X에 대해 )

 

조건부 확률 분포 

1) y 가 주어진 상황에서 x에 대한 확률 $P(x|y)$

주변 확률 분포는 Y값이 1,2 인가를 고려하지 않고 X 의 분포를 구했다. 

조건부 확률 분포는 조건부가 주어져야 한다.

ex) Y = 1 인 조건부가 주어진 상황에서의 X 분포를 구한다.

-> 입력과 출력의 통계적 관계를 모델링 할 때, 예측 모델을 세울때 사용한다. 주변부보다 좀 더 명확하게 통계 모델 생성 가능 

 

조건부 확률은 사실, 기계학습 뿐만이 아니라 모든 연구, 및 실생활에서도 우리도 모르게 사용하고 있다. (오늘 구름이 많네. 비가 오려나?)

ex) $P(y|x)$ 는 입력변수 x에 대해 정답이 y일 확률  

 

로지스틱 회귀에서 사용했던 선형 모델과 소프트맥스 함수의 결합은 데이터에서 추출된 패턴을 기반으로 확률을 해석하는데 사용 가능 

: softmax($W\phi + b$)는 데이터 x로 부터 추출된 특징 패턴 $\phi(x)$와 과중치 행렬 $W$를 통해 조건부 확률 $P(y|\phi(x))$를 계산한다. 

 

데이터에서 추출 된 특징 패턴 $\phi(x)$와 가중치 행렬 $W$ 와의 행렬 곱을 통해 정답이 y일 확률을 계산해볼 수 있다. ($P(y|\phi(x)) == P(y|x)$)

 

회귀문제는 주로 연속 확률 변수를 다루기 때문에 밀도함수를 사용한다. 이때는 조건부 확률이 아니라, 조건부 기대값$E(y|x)$ 을 구한다. 

\[E_{y \sim P(y|x)}[y|x] = \int_{y}yP(y|x)dy \] 

 

사실상 이산 확률 변수와 동일 한데, 연속이다 보니 적분하는 것 뿐이고, 아까는 분류 문제였기에 확률 값을 구했다면 이번에는 회귀 문제이기에 y를 곱하는 것이다. 

그리고 수학적으로 조건부기대값은 주로 사용하는 목적식 L2 norm(예측 오차의 분산을 최소화) 을 최소화 하는 함수로 증명이되어서 사용한다고 한다. 

 

통계적 모형에서 원하는 목적에 따라 사용하는 통계 추정량이 달라질 수 있다. (data 가 robust할 때는 median 값을 사용하는 것도 방법)

 

기대값

데이터를 대표하는 통계량이며, 동시에 확률분포를 통해 다른 통계적 범함수를 계산하는데 이용된다. 

ex) 분산, 첨도(skewness), 공분산(covariance) 등...

 

딥러닝은 특징패턴 $\phi$ 를 추출한 후에 조건부 확률 $P(y|\phi(x))$를 구한다고 이해하면 된다. 

 

몬테카를로 샘플링 

확률분포는 주로 명시적으로 알 수가 없다. 

확률 분포를 모를 때 데이터를 이용하여 기대값을 계산하는 방법 중 하나가 몬테카를로 샘플링이다. (이산형 연속형 모두 사용 가능)

 

\[E_{x\sim P(x)}[f(x)] \approx \frac{1}{N}\sum^{N}_{i=1} f(x^{(i)}), x^{i} \sim^{i.i.d.} P(x) \]

*i.i.d : 독립 항등 분포 ex) 주사위 두개 

 

https://www.secmem.org/blog/2019/01/11/mcmc/

 

Markov Chain Monte Carlo 샘플링의 마법

이번 포스트에서는 강력한 샘플링 기법 중 하나인 Markov Chain Monte Carlo(MCMC)에 대해 알아보겠습니다. MCMC의 활용도는 굉장히 넓어서 머신러닝을 비롯한 베이지안 통계학, 통계물리학, 컴퓨터비전,

www.secmem.org

 

 

https://angeloyeo.github.io/2020/09/17/MCMC.html

 

Markov Chain Monte Carlo - 공돌이의 수학정리노트

 

angeloyeo.github.io

https://angeloyeo.github.io/2020/09/16/rejection_sampling.html

 

Rejection Sampling - 공돌이의 수학정리노트

 

angeloyeo.github.io

rejection sampling

에 대한 사전 지식이 있어야 몬테카를로 샘플링을 이해할 수 있다. 

 

위 블로그 글에 따르면 샘플링을 수행한다는 것은 CDF(cumulative density function)의 역함수를 수행하는 것과 같다. 

엄밀히 말하자면 정확한거 같지는 않다. CDF 의 역함수는 다음과 같기에. 즉 역함수, 후 미분을 해줘야 분포를 얻을 수 있어 보인다. 

 

아무튼 이 과정이 복잡하기에 확률밀도함수에서 샘플을 추출할 수 있는 여러 접근법 중 하나인 Rejection Sampling 

이를 통해 분포를 따르는 샘플 데이터를 얻었다! 

 

몬테카를로(MCMC) 샘플링 

샘플링 방법 중 하나 

1) 몬테 카를로 

2) 마르코프 연쇄(Morkov Chain)

 

1)몬테 카를로 

통계적 수치를 얻기 위해 수행되는 시뮬레이션 

어떤 계산은 무한히 많은 시도를 거쳐야만 답을 얻을 수있지만, 현실적으로 불가하기에 유한한  시도로 정답을 추정 하고자 하는 것

MCMC에서는 "통계적 특성을 이용하여 무수히 뭔가를 많이 시도해본다"는 뜻에서 Monte Carlo라는 이름이 붙었다. 

 

예시) 원의 넓이 추정

다음과 같이 가로 세로 길이 2인 정사각형안에 무수히 많은 점을 찍는다. 

만약 중심부터 거리가 1이면 빨간색, 아니면 파란색으로 칠한다. 

\[\frac{빨간색 찍힌 점 개수}{찍은 점의 개수} \times 사각형의 면적 4 \approx 반지름 1인 원의 넓이 \]

 

Rejection Sampling도 Monte Carlo 방법을 사용한 것 

 

2)마르코프 체인(Marcov Chain)

바로 전 단계의 상태가 지금 상태에 영향을 준다. 

ex) 전날 먹은 식사와 유사한 식사를 먹지 않으려는 경향이 있다. 

 

MCMC에서는 "가장 마지막에 뽑힌 샘플이 다음 번 샘플을 추천 해준다" 는 의미

 

Monte Carlo + Marcov Chain

1. 첫 샘플을 랜덤하게 선정한 뒤,

2. 선정된 샘플에 의해 그 다음 번 샘플이 추천(제안 분포 이용) (Rejection Sample에서는 무작위 하게 뽑았다는 것과 다른 점)

3. 특정 기준에 따라 추천 된 샘플을 Accept 혹은 Reject 

4. 2-3을 무수히 많이 시도한다.

 

MCMC 샘플링 알고리즘 중 Metropolis 알고리즘 만 소개 

예시)

\[ f(x) = 0.3e^{-0.2x^{2}} + 0.7e^{-0.2(x-10)^2}\]

 

1) Random Initialize 

x: -10 ~ 10 의 샘플 공간에서 랜덤 입력값 하나 선택 

 

2) 제안 분포로부터 다음 포인트 추천 받기 

 

제안 분포는 정규 분포가 아니어도 괜찮지만, 다음번 sampling이 간단한 분포여야 한다. 표준 편차도 연구자 임의 선택

왼쪽 그림, 오른 쪽 그림 제안 중, 왼쪽 그림은 Reject되고 오른쪽 그림은 Accept 되었다. 

Reject 이유는 제안 분포로부터 추천 받은 $x_{1}$ 값을 타겟 분포 $f(x_{1})$의 높이가 $x_{0}$에서의 높이보다 낮아서 이고, 오른쪽 그림은 높아서 Accept 되었다. 

 

즉 다음의 기준을 따라야 한다. 

\[ \frac{f(x_{1}}{f(x_{0})}  > 1 \]

 

제안이 Accept되면 수용된 샘플 포인트 중심으로 제안 분포를 다시 그리고 또 추천을 받는 반복 과정을 거친다. 

하지만, Accept이 반복되면 제일 높은 곳으로 가게 되어있고, 가장 높은 곳 이후로는 제안 받는 모든 포인트의 $f(x_{i})$는 다 Reject해야한다. 

이에 따라 Reject 후에 한가지 과정을 더 거친다. 

 

3) 패자부활전

거절된 샘플들을 통계적으로 수용한다. (통계적으로 검증을 거쳐)

\[ \frac{f(x_{1}}{f(x_{0})}  > u \]

u: uniform distribution에서 추출한 값 (u는 항상 0에서 1사이, Rejection Sample)

 

- 봉우리가 여러개일 때 한 봉우리에만 고착되어 놓칠 수 있어서, 

- 최대 높이에서 모든 샘플을 거절할 수 있어서 

 

추후 제안 분포를 Asymmetric 한걸 사용하고 싶으면 Metropolis Hastings 알고리즘을 공부해보자. (이것도 공돌님의 수학노트를 참고하자.)

 

몬테카를로 적분 계산하기 

제안 분포로 데이터를 샘플링 한 후에, 함수에 샘플을 대입하여 함수 값을 구한 후, 그 데이터들의 값을 산술 평균 처리해주면 된다. 

반복적으로 추출하면 분산을 구할 수 있어, 오차 범위 내에 존재한다는 것을 확인도 할 수 있다. 

샘플 사이즈가 적으면 오차범위가 커질 수 있어, 적절한 샘플링 개수를 찾는 것이 중요하다. 

 

'AI > AI 수학' 카테고리의 다른 글

아핀 공간  (0) 2022.11.04
정규분포 확률밀도함수 유도  (0) 2022.09.15
ln (x-1) 의 미분  (0) 2022.08.28
베이즈 통계학 간단정리  (0) 2022.01.21
통계학 간단정리  (0) 2022.01.21
Comments