Bayes' Rule(베이즈 정리)은 machine learning의 중요한 개념 중 하나이다. 그 이유는, Bayes' Rule을 통해 상황에 대해 명시적으로 표현할 수 있기 때문이다.
Frequentist and Bayesian Probability
통계학에는 크게 두 가지 학파가 있는데, 하나는 Frequentist(빈도주의자)이고 다른 하나는 Bayesian이다. 이 둘은, 가장 기본적 개념인 확률을 정의하는 방식에서 차이를 보인다.
[Frequentist Approach]
이들은 어떤 특정 measurement나 observation을 불신한다. 이들은 이미 정해진 true answer가 있다고 생각하며, 이를 찾는 것이 우리의 목적이라고 생각한다. 이 true value를 찾기 위해, frequentist는 굉장히 많은 observation을 결합하여 가장 frequently하게 나타나는 값을 most probable값으로 정의한다.
[Bayesian Approach]
Bayesian은, 각각의 observation을 무언가에 대한 정확한 측정값으로 신뢰한다. 이들의 입장은, process의 마지막에 "true" value가 정해져 있지 않을 것이라는 것이다. 예를 들면, 산의 높이의 각 측정값은 땅의 어떤 점으로부터 산의 꼭대기의 어떤 점까지의 길이를 측정한 것이고, 이는 절대 매번 다르게 측정될 것이다. 따라서, 각 측정값은 accurate한 것이라고 여겨지며, 진정한 "true" 값이라는 개념은 여기서 크게 의미가 없다.
[Discussion]
각각의 approach는 서로 다른 상황에 적용시켜 유용한 결과를 낼 수 있다.
ex. 지우개를 조금 사용한 흔적이 있는 연필의 길이를 측정한다고 가정하자. 이 길이를 측정하기 위해 정확한 ruler로 여러 번 측정하여 아주 조금은 다르지만 비슷한 여러 값들을 측정해낼 것이다.
(1) frequentist : 이 연필에는 한 개의 true 값이 존재하고, 이를 찾아내야 한다. 각 측정값은 전부 믿을 수 없는 값들이다. 이 측정값들을 전부 결합하여, error값을 제거하여 정확한 답을 찾아낼 수 있다. 이 중 가장 빈번하게 나타나는 값이 맞는 답이다.
(2) bayesian : 연필의 길이에 대한 오직 한 개의 true값은 존재하지 않는다. 각 측정값은 전부 믿을만한 값들이며, 여러 개의 가능한 확률이 존재한다.
이러한 관점의 차이는, 각기 다른 data와 information을 도출해낸다.
Coin Flipping
확률 문제에 관한 예시에서 동전 뒤집기 문제는 굉장히 많이 사용된다.
보통 fair coin을, 던졌을 때 앞면 뒷면이 나올 확률이 같은 coin이라고 한다.
반대로, 앞면과 뒷면이 나올 확률이 같지 않은 coin을 rigged/ unfair/ cheater's coin이라고 한다.
(bias 0.1 coin : 앞면이 나올 확률이 10%)
위의 그림은, 순서대로 bias가 0.2, 0.5, 0.8인 경우 결과를 나타낸다.
Is this a Fair Coin?
똑같이 생긴 두 동전 묶음과, marked board가 있다고 가정하자. 이 동전 pair 중 하나만 fair coin이고, 나머지는 앞면이 나올 확률이 2/3인 biased coin이다. (bias = 2/3) 게임을 통해, player는 어떤 coin이 biased coin인지를 추정한다. 그 후, 동전을 실제로 돌려서(spin), 이를 확인할 것이다. (무게가 다르기 때문에 biased coin이 fair coin보다 먼저 떨어짐)
이 게임을 제대로 수행하기 위해, coin의 true identity를 구분하려고 한다. 우리는 "Fair", "UnFair" 봉투에다가 각각의 동전을 구분하여 넣을 것이다. 이 동전들을 구분하기 위해, 다음과 같은 과정을 거친다.
만약, 두 가지의 coin 중 한개를 고른다면, 각 확률은 50%이다.
각 fair, biased 부분을 head/tail로 나누면 위와 같다. fair 부분은 1/2, 1/2로 나뉘어지며, biased부분은 2/3, 1/3으로 나뉨.
여기서, 우리의 질문은 "fair coin을 뽑을 확률은 무엇인가?"라는 것을 잊지 말자. 우리는 이미 동전을 던져서 앞면임을 확인했다고 가정하자. 이 때, 질문을 다시 정리하면, "앞면임을 확인했을 때, fair coin일 확률은 무엇인가?"라고 말할 수 있다.
위의 그림처럼, "앞면이 나올 확률을 가진" 모든 확률 중에, "fair coin"일 확률을 계산하면 되는 것이다.
probability term을 사용하여 이를 재정비하면, 위의 그림처럼 표현할 수 있다.
Head가 나왔을 때, fair coin일 확률(P(F|H))은, head이면서 fair coin일 확률과 head이면서 rigged(Biased) coin일 확률을 더한 것 중에, head이면서 fair coin인 확률을 구하면 된다.
위의 그림을 보면, A와 B의 joint probability를 P(A|B)와 P(B)의 곱으로 표현할 수 있음을 확인할 수 있다. 이를 수식으로 정리하면, 아래와 같다.
우리는 P(H, F)의 값을 모르기 때문에, P(H|F) x P(F)로 대체하여 이를 대신 계산할 수 있다.
이제, 모든 값들이 다 아는 값들의 곱과 합으로 이루어져있으므로, 계산하면 된다.
P(F) : fair coin을 고를 확률 = 1/2
P(H|F) : fair coin이면서 앞면이 나올 확률 = fair coin의 bias = 1/2
P(H|R) : rigged coin이면서 앞면이 나올 확률 = rigged coin의 bias = 2/3
P(R) : rigged coin을 고를 확률 = 1/2
다 계산하면 약 0.43의 결과를 얻게 된다. 이를 통해, 우리는 coin을 한 개 뒤집었을 뿐인데 fair coin일 확률이 43%라는 것을 알 수 있다 !
반대로, 첫 flip이 뒷면이 나왔을 경우를 계산해보면 위와 같은 결과가 나온다. 이처럼, 앞면일 때와 뒷면일 때의 확률은 서로 다르게 나온다. 아직 한 번의 flip만을 계산하였기 때문에 결과를 확신할 수는 없다.
Bayes' Rule
앞에서 말한 내용을 수식 하나로 표현하면 위와 같다. 이를, Bayes' Rule, 베이즈 정리라고 한다.
우리가 구하려고 하는 것은 P(F|H), 즉 Head일 때 fair coin일 확률이다. 이를 구하기 위해서는 3가지의 정보가 필요하다.
(1) P(H|F) : fair coin일 때 head가 나올 확률
(2) P(F) : fair coin을 얻게 될 확률. P(H, F) 값을 구하기 편하게 만들어 놓은 수식이다.
(3) P(H) : fair / rigged 두 경우 head가 나올 확률을 모두 더한 것.
"B가 true임이 주어졌을 때, A가 true일 확률은 무엇인가?"
베이즈 정리는 위와 같은 형태의 질문에 사용하기 위해 만들어진 term이다.
베이즈 정리를 쉽고 빠르게 도출해내기 위한 예제이다.
첫번째 줄에서, P(F, H)와 P(H, F)은 joint probability이기 때문에 같다. 이를 두번째 줄에서, 다른 형태로 변형한다.
세번째 줄에서, P(H)로 양쪽을 나누면 우리가 구하려는 베이즈 정리의 식이 나오게 된다.
식의 각 부분은, 다음과 같이 나타낸다.
P(A) : prior probability / prior. P(A)는 동전을 던지기 전에, 동전이 fair/rigged coin인지 상관없이 fair coin을 고를 확률.
-> 사건 B가 발생하기 전에, 이미 알고 있던 정보.
P(B) : evidence / normalizing constant. B사건이 발생할 "모든" 확률.
P(B|A) : likelihood. fair coin을 가졌다고 했을 때 앞면이 나올 확률.
-> 사건 A가 발생한 경우 사건 B의 확률.
P(A|B) : posterior probability / posterior. 베이즈 정리에 의해, 앞면이 나왔다는 observation을 토대로 fair coin을 고를 확률을 얻게 되는 것이므로, 계산을 다 했을 때 얻게 되는 값이다. 따라서, 사후 확률이라고 한다.
-> 사건 B가 발생한 후 갱신된 사후 확률.
위의 예시에서는 prior값을 구하는 게 쉬웠지만, 더 복잡한 상황에서는, "good prior"를 고르는 것이 어려울 것이다.
prior를 주관적이고 개인적인 견해로 고르는 것을 subjective Bayes라고도 한다.
반대로, prior를 고를 때 어떠한 법칙이나 알고리즘을 사용한다면, automatic Bayes라고 한다.
* Bayesian approach에서 추구하는 것은, 앞서 말했듯이 우리의 preconception과 expectation을 명시적으로 표현하는 것이다. 우리가 prior를 어떻게 고르는 지에 따라 달라진다고 할 수 있다.
Finding Life Out There
이전 chapter에서는, test의 결과값을 이해하기 위해 confusion matrix를 사용했었다. 이번에는, Bayes' Rule을 사용해서 이해해보도록 하자.
Ex. 만약 우리가 우주선의 선장이고, 사람이 살지 않는 행성으로부터 원료를 얻는 것이 목표라고 가정해보자. 어떤 행성을 발견해서 채광을 하려하지만, 우리는 "행성에 생명체가 있으면 채광을 절대 하면 안된다"라는 명령을 받았다.
이 때, 우리가 질문할 것은 "이 행성에 생명체가 있는가?" 에 대한 것이다.
우리는 행성들의 10%는 생명체가 있다는 경험적 근거가 있다. 이 때, 우리는 probe(조사단)를 행성에 내려보내고, "생명체가 없다"라는 결과를 보고받는다. 여기서 우리가 질문해야 하는 것은 "probe가 생명체를 발견하지 못했을 때, planet이 생명체를 가질 확률은 무엇인가?"이다. 이 결과를 얻기 위해 Bayes' Rule을 사용한다.
"life is present" 조건을 L이라 표현하고, "detected life"조건을 D라고 표현한다. L이 positive라면 planet에 life가 있는 것이고, negative라면 없는 것이다. 마찬가지로, D가 positive라면 probe가 life를 detect했다는 것이고, negative라면 probe가 생명체를 탐지하지 못했다는 것이다.
-> 우리가 가장 피하고 싶은 상황은, "생명체가 있는 planet을 채광하는 것이다. 즉, False-negative 상황이다.
(probe가 탐지하지 못했는데, 사실은 생명체가 있는 경우)
-> false positive 경우는 조금 괜찮을 것이다. 생명체가 없지만 생명체가 있다고 하여 mining을 하지 않으면 큰 피해 X
probe를 구현해낸 과학자들은 이러한 주의사항을 숙지하고, 최대한 false negative 상황을 피하려고 노력했을 것이다.
위의 figure는 총 1000개의 test planet에 대한 probe의 performance를 나타낸다. 이 중 101개의 planet은 생명체가 존재한다. probe는 1000 중에 100번의 경우 생명체를 찾았다고 제대로 report하였다. (true-positive. 101개 중 100개 correct)
899개의 빈 행성들에 대해서, probe는 그 중 869개의 planet에 대해 생명체가 없다고 report하였다. (true-negative)
probe는 1개의 planet을 false negative, 30개의 planet은 false positive로 report하였다.
위와 같이 confusion matrix로 나타내면, 확률 값들이 무엇인지 구할 수 있다.
P(D)의 경우 "detected life"의 확률이므로 130/1000, P(L)의 경우 "life is present"의 확률이므로 101/1000이다.
P(D|L)은, 생명체가 있을 때 probe가 제대로 detect할 확률이므로, TP/(TP+FN) = 100/101이다.
우리가 구하고자 하는 것은, probe가 생명체를 탐지하지 못했을 때 생명체가 있을 확률이다. P(L|not-D)
이 값을 베이즈 정리로 나타내면 위와 같다. 확률은 약 0.001이므로, 1000번의 수행 중 약 한 번만 잘못된 결과가 나온다는 뜻이다. 반대로, probe가 생명체를 탐지해냈을 때, 생명체가 있을 확률을 구해보면 아래와 같다.
Repeating Bayes' Rule
위의 예시에서, 우리는 probe를 한 개가 아니라 여러 개를 보내서 결과값에 대한 confidence(신뢰도)를 높일 수도 있다.
다시 두 개의 동전 예시로 돌아와서 생각해보자. 아까는 동전을 한 번만 던져서 이에 대한 결과값을 구했다. 하지만, 만약 동전을 계속 던진다면 어떻게 될까?
새로운 data는 새로운 posterior 값을 줄 것이고, 이 값을 새로운 observation에 대한 prior값으로 사용할 수 있다.
위의 term(prior/posterior)과는 달리, 베이즈 정리를 위와 같이 표현할 수도 있다.
A를 원인/가정이라고 생각하고, B를 관측값으로 생각한 것이다.
동전 예시에서, hypothesis는 "우리는 fair coin을 선택했다"가 될 것이고, observation은 "동전은 앞면이 나왔다"가 되는 것이다. 여기서 사후 확률(posterior)은 observation이 일어났을 때 hypothesis가 true일 확률을 말한다. 그러나, 우리는 "observation이 발생했다"는 사실을 이미 알고 있기 때문에(그게 우리가 posterior를 계산한 이유니까), posterior는 hypothesis의 확률이 되는 것이다.
따라서, posterior는 우리가 관찰한 observation을 기반으로 한, prior의 improved version이라고 할 수 있다.
이때, 만약 또 다른 관측값이 들어온다고 해보자. (동전 또 던짐)
우리의 원래 prior값을 hypothesis의 확률로 사용하는 대신에, 방금 구한 posterior값을 사용한다.
매번 observation을 새로 input으로 받아올 때마다, 우리는 이를 그 observation의 likelihood나 evidence, prior값과 결합하고, 새로운 posterior값을 계산한다. 이 posterior값은 다음 observation의 prior값으로 사용된다.
ex. fair coin 한 개와, 각자의 bias를 theta값으로 스티커로 표시해둔 여러 개의 rigged coin들이 있다고 가정해보자.
이 rigged coin들 중 한개를 고르고, 해당 bias값을 적어놓은 후, 스티커를 없앨 것이다. 스티커를 제거한 coin을 가방에 넣고, 똑같이 생긴 fair coin을 또 넣는다. 우리는 이제 bias값을 알고 있고, 똑같이 생긴 coin이 가방 안에 두 개 있다!
우리는 여기서 coin을 한 개 고르고, 그 coin이 fair coin인지 아닌지를 알고 싶다. Bayes' Rule의 형태로 30번의 동전을 던질 것이고, 각각 head인지 tail인지를 기록한다. 동전을 30번만 던졌기 때문에, 결과가 이상하게 나올 수도 있다.
예를 들면, fair coin인데 6개의 head와 24개의 tail이 나올 수도 있다. 또한, rigged coin인데 똑같은 수의 head와 tail이 나올 수도 있다. 이러한 경우, 베이즈 정리가 observation을 어떻게 처리할까?
위의 경우는, bias가 0.2인 rigged coin과 fair coin 중 한 개를 골라서 30번 던진 결과이다. 우리의 가정에서, fair coin의 경우 15개의 head가 나올 것으로 예측되고, rigged coin의 경우 6개의 head가 나올 것으로 예측된다. 위의 결과는 총 24개의 head가 나왔으므로 Rigged coin이라고 예측하게 된다.
왼쪽으로부터 보면, 처음에는 각 확률이 0.5이다. 아직 동전을 던져본 적이 없으므로 어떠한 data도 얻지 못한 상태이다.
그 다음은, 처음에 T를 관측한 다음의 결과이다. fair coin에서 tail을 관측할 확률은 0.5지만, rigged coin에서 관측할 확률은 0.8이기 때문에, rigged coin일 확률이 높아진다.
오른쪽으로 쭉 이동할 때, 이 중 80%의 관측값이 T이다. 이는 rigged coin으로부터의 예측값과 비슷하기 때문에, probability는 빠르게 1과 가까워진다.
지금까지는, rigged coin의 data와 굉장히 비슷한 data였다. 만약, 이 이후에는 head가 더 적게 나온다고 가정해보자.
4개의 flip만으로도, 90%의 confidence를 가지게 되는 것을 확인할 수 있다.
그 후, 30개의 flip을 또 던졌을 때, 24개의 head가 나왔다고 해보자. 이 경우, fair coin은 15개의 head가 나온다고 예측하지만 rigged coin은 6개의 coin이 나온다고 예측할 것이다. 양쪽 다 맞지 않지만, fair coin이 더 높은 확률을 가진다.
위에서 3개의 head-tail pattern을 다뤘다. 이를 다시 하되, 10개의 서로 다른 bias를 가진 coin에 10개의 pattern을 사용할 것이다. 이 결과는 위와 같다. 맨 왼쪽 아래를 보면, x축의 값이 약 0.05인 것을 확인할 수 있다. 이는, coin이 20개 중 1번은 head가 나온다는 것이다. y축을 보면, 마찬가지로 0.05정도인데, 마찬가지로 20개 중 1개가 head가 나오도록 하는 artificial sequence of observations를 우리가 만들 것이라는 뜻이다. 위 표에서, rigged coin에서 우리가 예상하는 패턴과 비슷하므로 coinfidence가 빠르게 증가함을 확인할 수 있다.
'Lab Study > Machine Learning' 카테고리의 다른 글
[Deep Learning] 3. Probability (0) | 2020.07.07 |
---|---|
[Deep Learning] 2. Randomness and Basic Statistics (0) | 2020.07.01 |