본문 바로가기
Research/Machine Learning

Bayesian Inference

by IMCOMKING 2020. 1. 29.

Machine Learning 에서 궁극적으로 추구하는 목표는 P(X'|X) 를 알아내는 것이다. 

(X' : 예측하고자 하는 데이터 , X : 기존에 관측된 사건의 데이터)

 

즉, 기존에 관측된 사건의 데이터 X를 이용해서 앞으로 일어날사건 X'에 대해 예측하는 것이다.

만일, X 없이 그냥 P(X')를 계산한다는 것은 기존에 일어난 사건 데이터 전혀 고려하지 않고, 오직 수학적 모델만으로 확류를 계산하겠다는 의미이다. 이는 machine learning이라 부를 수 없고, 일반적으로 데이터 X를 고려할 때보다 훨씬 부정확한 확률 추론을 하게된다.

 

좀 더 직관적인 예를 들면, 두개의 박스 A와 B에서, A에는 빨간공이 99%, B에는 파란공이 99% 들어 있다고 하자. 이때 한 사람이 무작위로 두 박스중 하나를 선택하였고 그 결과 파란색공이 뽑혔다. 이때 A 박스가 선택되었을 확률을 계산해보자. 이 경우 관측데이터인 파란색공을 무시하면, A박스가 선택되었을 확률은 무작위선택이었기 때문에 50%이다.

 

그러나 만약 뽑힌 공이 파란색이라는 관측 데이터 X 를 고려해 P(A box|blue ball)를 계산하게 되면, A박스가 선택 되었을 확률은 P(A box|blue ball) = P(A box, blue ball) / P(blue ball) 이 된다. 이 값을 계산하면 = ( 0.5 * 0.99 ) / 0.5 이므로 확률은 1%가 된다. ( P(blue ball) = P(blue ball, A box) + P(blue ball, B box) = 0.01*0.5 + 0.99*0.5 = 0.5 )

 

이 처럼 관측 데이터를 고려하는 것과 하지 않는 것은 추론의 정확도에서 매우 큰 차이를 가져온다. 그렇기 때문에 과거 데이터를 이용해서 미래의 사건에 대해 추론해야한다.

 

그런데 P(X'|X)를 바로 계산하는 것은 일반적으로 매우 어려운 일이다. 그래서 우리는 파라미터(Θ)를 가진 모델을 사용하여 X -> X'을 바로 예측하는 것이 아니라. X -> Θ -> X' 과 같은 방법론을 취하게 된다.

 

즉 P(X'|X) ~= P(X'|Θ) 이라는 근사를 기본적인 가정으로하고, 이 P(X'|Θ)에서의 Θ를 구하기 위해 X를 사용한다. 

다시 정리하면 P(X'|X) ~= P(X'|Θ) 이고, 이때 Θ를 다루는 데 다음 세가지 접근 방법이 있다.

 

1. Maximum Likelihood: 계산이 쉬운 P(X|Θ) 를 이용한다.

Likelihood P(X|Θ)는 보통의 파라메트릭 확률 모델에서 바로 계산할 수 있다. 아니 정확하게는 보통 계산 가능하게 모델을 만든다. 즉 모델에서 확률을 계산하는 방법만 알려져 있으면 바로 구할 수 있다. (확률 계산이 불가능한 모델을 사용하면 당연히 구할 수 없다.) 

이를 수식으로 표현하면 

P(X'|X) ~= P(X'|Θ), Θ = argmax P(X|Θ)

으로, Θ를 알아내기 위한 인과관계가 약한 것을 알 수 있다.

 

2. Maximum A Posterior: 계산하기 어렵지만, 보다 정확한 P(Θ|X) 를 이용한다.

이것을 구하기 어려운 이유는, 보통의 확률모델에서 P(Θ|X) 는 바로 계산할 수가 없고, 아래 나오는 bayes theorem을 이용해 P(X|Θ)*P(Θ)로 계산해야 하기 때문이다. 그리고 이 모델이 1번 모델보다 더 예측이 정확한 이유는 다음 수식을 보면 알 수 있다.

P(X'|X) ~= P(X'|Θ), Θ = argmax P(Θ|X)

위와 같이 Θ를 구하는 인과관계가 1번보다 자연스럽기 때문이다.

 

3. Bayesian Prediction: 계산하기 매우 어렵지만, Θ를 marginalize한 완벽한 P(X'|X)을 계산한다.

Fully bayesian, predictive inference, the use of posterior predictive distribution, bayesian prediction 등 정말 다양한 용어로 부른다. 다음은 직관적인 설명을 위해 hyperparameter는 제외하고 설명한다.

 

MAP에서는 posterior 분포 P(Θ|X)을 계산한다음, argmax를 이용해 가장 괜찮아보이는 Θ 하나만 고르는 반면, bayesian prediction에서는 P(Θ|X)를 Θ로 적분하여 Θ을 marginalize시켜버린다. 즉 이를 다시 해석하자면 P(Θ|X)로 알아낸 Θ의 분포 중 argmax로 가장 피크 지점에 대한 정보만 사용하면 MAP가 되고, Θ 차원에 대한 모든 probability를 정보를 전부 사용하면 bayesian prediction이 된다.

 

직관적인 예를 들자면, P(Θ|X)의 모양이 아래와 같이 2개의 정규분포가 합쳐진 쌍봉 모양이라고 해보자.

Image result for sum of gaussian

만약 MAP을 사용한다면 이 중 Θ는 argmax를 취해서 왼쪽 분포와 오른쪽 분포 중 높이가 더 큰 지점 분포만 선택되는 반면, bayesian prediction은 이 두개의 분포를 적분해서 사용한다. 즉 Θ에 대한 두 분포의 정보를 모두 다 사용할 수 있게 되는 것이다. 그렇지만 이 Θ축에 대해 적분은 계산이 매우 어렵다. 이를 수식으로 나타내면 다음과 같다.

P(X'|X) = ∫ P(X'|Θ)*P(Θ|X) dΘ

즉 이렇게 하는 방법만이 우리가 원하는 진정한 P(X'|X)을 구할 수 있다.

 

* 그런데 사실 요즘에는 이런 bayesian approach를 위 방법의 역과정으로 자주 사용한다. 즉, 파라미터를 없애는 방향이 아니라, 오히려 임의의 파라미터를 생성해서 원하는 latent variable을 만들어내는 방식으로 쓰는 것이다.

 

* 그런데 이와 같은 적분을 실제로 계산하는 것은 불가능하기 때문에, 실제로는 weight(Θ) sampling 후 expectation을 취하여 위의 계산을 수행하게 된다.

 

 

# Bayesian Neural Network

https://gaussian37.github.io/dl-concept-bayesian_neural_network/

 

Bayesian Neural Network (베이지안 뉴럴 네트워크) 내용 정리

gaussian37's blog

gaussian37.github.io

 

 

 

'Research > Machine Learning' 카테고리의 다른 글

Pseudo Label  (0) 2020.06.12
Probability Calibration  (0) 2020.04.17
Advanced Supervised Learning  (0) 2020.01.28
The Bitter Lesson 번역  (0) 2020.01.17
음성인식 기초 이해하기  (0) 2019.12.29

댓글