논문을 읽다보면 확률 모델에 대한 이야기가 많이 나옵니다. 사실상 이해를 못한 채 넘어가는 부분이 많은데, 검색을 통해서 공부하고 또 공부한 내용을 한번 적어보도록 하겠습니다.
대표적으로 VAE에서 inference에 관한 이야기가 나올때, 확률에 관한 이야기에서 한번 멘붕이 오게 됩니다. 그래서 논문을 접게되죠....
사실상 완벽히 이해하는 것은 본인의 몫이라 생각하고......., 단어만 알아도 이해가 되는 경우가 있기에...
1. Posterior
말 그대로 사후확률입니다. 반대로 prior(사전확률)이 있고, 비교하는 것은 liklihood(우도)가 있죠.
커튼에 비친 형상을 관찰할 수 있다고 합니다. 이 때, 두 가지 경우를 생각 할 수 있습니다.
P(형상|철수), P(철수|형상)
실제로 우리가 알고 싶은 것은 P(철수|형상) 입니다.
또한, 이를 사후확률, posterior라고 부릅니다. 근데 실제로 이 확률은 우리가 알 수 없어요. variational inference나 이를 사용하는 다른 방법론에서도
확률을 구하는 것에 초점을 맞추는 것보다는 근사하는 방법을 택하죠.
그래서 우리는 근사할때 P(형상|철수)를 씁니다. 또한, 이를 liklihood(우도)라고 부를 수 있습니다.
- 형상이 철수 일 수 있다는 확률은 직관적으로 이해가 될 수 있는데, 후자는 그러지 않을 수 있어요.
- P(형상|철수)의 의미는 철수가 여러가지 형상을 가질 수 있는데, 동물 형상, 사람 형상, 비행기 형상 등등.
- 이러한 형상들 중, 커튼에 비쳐져 있는 형상일 확률을 뜻하는 겁니다.
따라서, 사후확률은 우리가 잘아는 베이즈 정리로 근사할 수 있습니다.
흔히 말하는 조건부확률과 모양이 비슷하죠? 네 동일합니다. 똑같다고 생각하셔도 문제될게 없습니다.
여기서 그치지 않고, 대게 내가 구하고 싶은 값을 근사하기 위해 여기서 한번 더 변형시켜주게 됩니다.
분모에 해당하는 P(형상)의 값은 분자에 무엇이 오던간에 변하지 않는 상수에 해당하게 됩니다,
결국,
이와 같은 형식으로 근사하게 되고, 이를 수학적 표현을 이용하여 좀 더 멋지게 표현하면..
가 됩니다!
위의 식에서도 구할 수 있듯이, P(철수), P(영희)와 같은 우리가 이미 알고 있고 정의된 확률을 Prior(사전 확률)이라고 합니다.
따라서, 베이지안 확률은 posterior를 liklihood와 prior를 활용해 구해주는 방법이라고 할 수 있겠습니다
☞ likelihood: p(z|x), 어떤 모델에서 해당 데이터(관측값)이 나올 확률
☞ 사전확률(prior probability): p(x), 관측자가 관측을 하기 전에 시스템 또는 모델에 대해 가지고 있는 선험적 확률. 예를 들어, 남여의 구성비를 나타내는 p(남자), p(여자) 등이 사전확률에 해당한다.
☞ 사후확률(posterior probability): p(x|z), 사건이 발생한 후(관측이 진행된 후) 그 사건이 특정 모델에서 발생했을 확률
2. MLE와 MAP
이러한 개념을 이용하여 내가 원하는 확률을 얻는 방법은 크게 2가지가 있습니다.
- MLE(Maximum liklihood)
- MAP(Maximum a Posterior)
먼저, MLE는 사람에게서 그러한 형상이 나올 확률 P(형상|철수)와 P(형상|영희) 중, 단순하게 큰 liklihood값을 고르는 것입니다.
예를 들어서, 철수와 영희에게 총 1000번의 형상을 취하라고 했을 때, 내가 원하는 형상이 각각 0.4, 0.6의 확률로 나왔다면 우리는
철수에게서 우리가 원하는 형상이 나올 확률을 0.4라고 정할 것입니다.
이렇게 정하는 방법이 MLE입니다.
MAP는 반대로 어떤 형상을 보았는데 그 형상을 취하고 있는 사람이 철수 P(철수|형상), 영희 P(영희|형상)를 비교해서 둘 중 큰 값을 갖는 클래스를 선택하는 방법입니다. 즉, Posterior를 최대화 시키는 방법이며, 이때 베이즈 정리가 사용되게 됩니다.
이 두가지의 큰 차이점은 prior을 곱하냐 안곱하냐 입니다.
MAP에서 데이터에 대한 즉, P(철수), P(영희)와 같은 prior확률이 같다고 가정하면 MLE와 같은 수식이 나오게 되겠죠.
그렇다면 MLE와 다르게 우리에게 필요한 것은 어떤 사람이 철수일 확률을 알아야 합니다.
다른 예를 들어볼까요. 스팸 필터라는 유명한 예를 빌려오면,
기본적으로 A라는 사람이 보낸 메일에 대해서 스팸인지 기본 메일인지를 구하면 MLE가 되겠지만, 우리가 전체메일 중에서 스팸메일과 기본 메일의 비율을 알고 있다면, 더 정확한 방법인 MAP를 쓸 수 있다는 것입니다.
우리가 항상 확률을 구할 때는 비율을 고려하게 되죠. 그렇지 않으면 한쪽에 편향될 수 있는 등의 문제점이라던가 결과의 해석에 대한 신뢰성이 낮아 질 수 있으니까요.
그래서 두 방법 사이의 정확성을 따져보면 MAP가 정확합니다. 하지만 현실에서는 MLE를 쓸때도 많아요. 왜냐하면 클래스만의 확률, 즉 사전확률을 구하는게 어렵거든요.
(사례 참고) 피부색 검출 예제(MAP가 아닌 MLE를 활용해야하는 예제)
그렇다면, 베이지안 정리가 이미지에서는 어떻게 사용될까요?
피부색을 검출하는 문제는 해당 픽셀이 피부색인지 아닌지를 classify할 수 있어야합니다.
피부색 검출을 위해서는 먼저 샘플 영상들을 열심히 수집해서 피부색 DB와 일반 색상 DB를 구성해야 한다.
입력 픽셀값이 z라 하면 p(z|피부색)은 피부색 DB에 있는 데이터들 중에서 z와 같은 색을 가진 데이터의 비율을 세면 된다.
또한 p(z|일반색)은 일반색 DB에 있는 데이터들 중에서 z와 같은 색을 가진 데이터의 비율이다.
만일 ML로 피부색 검출을 한다면 p(z|피부색)과 p(z|일반색)을 비교해서 확률이 큰 값을 선택하면 될 것이다.
그런데, 이 문제를 MAP로 풀면 어떻게 될까? 수집된 DB에 있는 데이터의 개수를 이용하여
P(피부색), P(일반색) 에 대한 확률을 알아햐는데,
P(피부색) = |피부색DB| / (|피부색DB| + |일반색DB|)
P(일반색) = |일반색DB| / (|피부색DB| + |일반색DB|)
라 놓고 MAP를 적용하면 되는 것일까요?
대답은 NO!
p(피부색)은 세상에 존재하는 모든 이미지 색상들 중에서 피부색이 얼마나 되느냐를 나타내는 말이다.
따라서, 자신이 수집한 피부색 DB와 일반색 DB의 크기만을 가지고 이 확률을 추정하는 것은 무리가 있다.
오히려 일반색 DB에 있는 데이터들 중에서 피부색 DB에 있는 색과 같은 색을 갖는 데이터들의 비율을 p(피부색)이라 잡는 것이 보다 합리적일 것이다.
이 글은 여러 refer을 모으고 모아서 합쳐진 글입니다. 좀 더 알고 싶으시다면 밑에 글들을 들어가서 한번 더 보시는 것도 좋겠네요.
Reference
http://khanrc.tistory.com/entry/likeihood-postierior-prior-MAP-MLE
http://blog.naver.com/PostView.nhn?blogId=ynca333&logNo=221314899811&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
http://darkpgmr.tistory.com/62
http://rpubs.com/Statdoc/204928
'# 기타 공부한 것들 > math' 카테고리의 다른 글
베르누이 분포 (0) | 2019.01.26 |
---|---|
기댓값, 분산, 표준편차 (0) | 2019.01.21 |
Measure theory (1) | 2018.07.26 |
Set theory (0) | 2018.07.26 |
Local Minimum, Local Maximum (0) | 2018.06.21 |