Good if make prior after data instead of before

Dynomight

사전확률은 데이터 이전이 아니라 이후에 정하는 게 좋다

원문은 Dynomight님이 에 게재했습니다. 이 블로그 구독하기

사전확률은 미리 정해야 한다고들 한다. 그래서 ‘사전(prior)’이라고 부르는 것이다. 먼저 여러 가능성이 얼마나 그럴듯한지 말하고, 그 다음에 세상에서 본 것을 바탕으로 믿음을 갱신해야 한다는 것이다.

예를 들어, 지금 당신은—아마도—이 글을 그만 읽고 인생의 다른 일을 할지 고민하고 있을 것이다. 이 블로그를 예전에 읽어본 적 있다면, 어딘가 마음속에 내 글이 얼마나 자주 괜찮은지에 대한 사전확률이 숨어 있을 것이다. 논의를 위해, 내 글의 25%는 재미있고 통찰력 있으며 75%는 지루하고 쓸모없다고 생각한다고 해보자.

좋다. 그런데 지금 당신은 이 문장들을 읽고 있다. 이 문장들이 별로/꽤 괜찮아 보인다면, 이 글이 쓸모없을/쓸모없지 않을 확률이 높아진다. 다시 논의를 위해, 이 문장들이 살짝 기대된다고 해보자. 즉, 좋은 글이 형편없는 글보다 이 정도 품질의 문장을 담고 있을 확률이 1.5배 더 높다는 뜻이다.

이 두 가정을 결합하면, 이 글이 좋을 확률은 33.3%가 된다. 아래에서 빨간 직사각형의 넓이가 파란 것의 절반이기 때문이며, 따라서 이 글이 좋을 확률은 나쁠 확률의 절반이어야 한다(33.3% 대 66.6%)

(왜 절반의 넓이일까? 빨간 직사각형의 너비는 파란 것의 ⅓이고 높이는 ³⁄₂이며 ⅓ × ³⁄₂ = ½이기 때문이다. 식만 믿는다면 여기를 클릭하면 식이 나온다.)

비율이 좋은 글 대 나쁜 글의 오즈 비율을 계산하는 것이 가장 쉽다. 즉,

P[good | words] / P[bad | words]
 = P[good, words] / P[bad, words]
 = (P[good] × P[words | good])
 / (P[bad] × P[words | bad])
 = (0.25 × 1.5) / (0.75 × 1)
 = 0.5.

따라서

P[good | words] = 0.5 × P[bad | words],

그리고 그러므로

P[good | words] = 1/3.

혹은 베이즈 방정식을 고집한다면:

P[good | words]
 = P[good] × P[words | good] / P[words]
 = P[good] × P[words | good]
 / (P[good] × P[words | good] + P[bad] × P[words | bad])
 = 0.25 × 1.5 / (0.25 × 1.5 + 0.75)
 = (1/3)

이론적으로, dynomight 글의 25%가 좋다고 사전확률을 정했을 때, 그것은 이 글을 읽기 에 당신이 접한 모든 정보를 반영해야 한다. 이 글에 담긴 정보를 바탕으로 그 숫자를 바꾸는 것은 말이 되지 않는다. 그 정보는 두 번째 단계에서 가능도 p[good | words]를 정할 때 반영되어야 하기 때문이다. 이 글을 보고 사전확률을 바꾸는 것은 “이중 계산”이 된다.

이론적으로는 맞는 말이다. 위의 예시나 교과서에서 볼 수 있는 비슷한 귀여운 예제들에서는 실제로도 맞다.

하지만 실제 문제에서는 데이터를 본 뒤에도 사전확률 수정을 거부하는 것이 종종 비극으로 이어진다고 믿게 되었다. 실제 문제에서 진실은 “좋다” 혹은 “나쁘다”, “참이다” 혹은 “거짓이다”처럼 단순하지 않은 경우가 많기 때문이다. 오히려 진실은 무한히 다양한 형태로 존재한다. 그리고 그중 어떤 변종이 중요한지는 데이터를 본 뒤에야 알 수 있는 경우가 많다.

외계인

내 말을 예로 들어보겠다. 지구에 외계인이 있는지 궁금하다고 해보자. 우리가 아는 한, 다른 행성에서 분자들이 무작위로 소용돌이치다 외계인이 생겨나 기술 문명을 만들고 우주선을 만들어 여기까지 왔다고 해도 이상할 이유가 없다. 그래서 외계인이 있을 가능성과 없을 가능성이 동등하다고 사전확률을 정하는 것이 합리적으로 보인다. 즉,

P[aliens] ≈ P[no aliens] ≈ 50%.

한편, 우리의 현실 세계에는 Gimbal 영상, Go Fast 영상, FLIR1 영상, Wow! 신호, 미확인 비행 현상에 대한 정부 보고서, 그리고 물리적으로 불가능한 방식으로 날아다니는 “틱택”을 봤다는 수많은 조종사들의 보고 같은, 외계인과 관련된 기묘한 증거들이 많이 있다. 이 모든 것을 data라고 부르자. 외계인이 여기 없다면 이 모든 것을 설명하기 어려워 보인다. 그래서 P[data | no aliens]는 꽤 낮은 숫자여야 할 것 같다.

반면에, 외계인이 정말로 여기 있다면 왜 선명한 사진 한 장 없을까? 왜 끝없이 혼란스러운 보고와 소문과 알갱이 투성이 영상만 있고, 단 한 번도 선명한 근접 고해상도 영상도, 단 한 번도 길 가던 평범한 사람이 주운 외계인 잔해도 없는 걸까? 외계인이 정말로 여기 있다면 그것 역시 설명하기 어려워 보인다. 그래서 P[data | aliens] 역시 꽤 낮은 숫자여야 한다고 생각한다. 단순화를 위해 서로 비슷하다고 치고 이렇게 가정하자.

P[data | no aliens] ≈ P[data | aliens].

사전확률도 데이터도 외계인이 있는 경우와 없는 경우 사이에 차이를 보지 못하므로, 사후확률은 다음과 같다.

P[no aliens | data] ≈ P[aliens | data] ≈ 50%.

문제가 보이시나요?

(수식은 여기를 클릭하세요.)

다음을 보자.

P[aliens | data] / P[no aliens | data]
 = P[aliens, data] / P[no aliens, data]
 = (P[aliens] × P[data | aliens])
 / (P[no aliens] × P[data | no aliens])
 ≈ 1,

마지막 줄은 P[aliens] ≈ P[no aliens]이고 P[data | aliens] ≈ P[data | no aliens]라는 사실에서 비롯된다. 따라서 다음이 성립한다.

P[aliens | data] ≈ P[no aliens | data] ≈ 50%.

우리는 친구다. 서로를 존중한다. 그러니 내 출발 가정이 좋은지 따지지 말자. 그건 내 가정이고, 나는 그 가정이 마음에 든다. 그런데도 최종 결론은 나에게 미친 소리처럼 들린다. 뭐가 잘못된 걸까?

내가 수학을 틀리지 않았다고 하면(틀리지 않았다), 가장 명백한 설명은 내가 서로 모순되는 믿음들을 채택하기로 한 잘못된 결정 때문에 인지 부조화를 겪고 있다는 것이다. 당신이 앨리스가 밥보다 크고 밥이 카를로스보다 크다고 주장하면서도 앨리스가 카를로스보다 크다는 것은 부정한다고 해보자. 그렇다면 당신은 흥미로운 역설을 발견한 게 아니라 그냥 혼란스러워하고 있다는 뜻이다.

어쩌면 내가 P[aliens] ≈ P[no aliens]이고 P[data | aliens] ≈ P[data | no aliens]라고 믿는다면, P[aliens | data] ≈ P[no aliens | data]라는 결론을 반드시 받아들여야 하는지도 모른다. 그 결론을 거부한다는 것은 그냥 내가 해결해야 할 개인적인 문제가 있다는 뜻일지도 모른다.

나는 그 설명을 부정한다. 부정한다! 아니, 적어도 그게 이 상황을 생각하는 가장 도움이 되는 방식이라는 걸 부정한다. 왜 그런지 보려면 두 번째 모델을 만들어보자.

외계인, 좀 더 자세히

사소해 보이지만 중요한 관찰이 하나 있다. “외계인이 있다”는 단일한 명제가 아니다. 털복숭이 외계인이 있을 수도 있고, 끈적끈적한 외계인이 있을 수도 있고, 신스웨이브 음악을 좋아하는 외계인이 있을 수도 있다. 사전확률을 말할 때 각각의 경우에 다른 확률을 줄 수도 있었다. 하지만 그렇게 했더라도 아무것도 달라지지 않았을 것이다. 털복숭이 외계인과 끈적끈적한 외계인이 유인원 행성으로 여행 와서 물리적으로 불가능한 틱택을 타고 날아다니는 열의에 차이가 있을 이유가 없기 때문이다.

하지만 세상의 상태를 다음 네 가지 가능성으로 나눴다고 가정해보자.

가능성설명
No aliens + normal people외계인은 없다. 한편, 사람들은 평범하며 존재하지 않는 것에 대한 증거를 환각처럼 만들어내지는 않는다.
No aliens + weird people외계인은 없다. 한편, 사람들은 이상하며 존재하지 않는 것에 대한 증거를 환각처럼 만들어내는 경향이 있다.
Normal aliens외계인이 있다. 멋진 우주선이나 사람에게 레이저를 쏘는 걸 좋아하는지는 몰라도, 어쨌든 자신들이 여기 있다는 명백하고 논쟁의 여지 없는 증거를 남긴다.
Weird aliens외계인이 있다. 하지만 인간이 우주 여행에 관심을 가질 때까지 숨어 있다. 그리고 그 이후에는 인간이 혼란스러운 알갱이 투성이 영상을 찍도록 내버려 두지만, 단 한 번도 선명한 영상을 찍게 하지는 않는다. 절대, 단 한 번도.

이렇게 나눴다면, 나는 다음과 같은 사전확률을 선택했을 것이다.

P[no aliens + normal people] ≈ 41%
P[no aliens + weird people] ≈ 9%
P[normal aliens] ≈ 49%
P[weird aliens] ≈ 1%

이제 경험적 증거를 다시 생각해보자. 이 증거는 no aliens + normal people과 양립할 수 없다. 외계인이 없는데 평범한 사람들이라면 날아다니는 틱택을 환각으로 보지 않을 것이기 때문이다. 증거는 normal aliens와도 또한 양립할 수 없다. 그런 종류의 외계인이 있다면 자신들의 존재를 명백하게 드러낼 것이기 때문이다. 그러나 증거는 weird aliens와도, no aliens + weird people와도 꽤 잘 들어맞는다.

따라서 합리적인 모델은 다음과 같을 것이다.

P[data | normal aliens] ≈ 0	
P[data | no aliens + normal people] ≈ 0
P[data | weird aliens] ≈ P[data | no aliens + weird people].

이 가정들을 결합하면, 이제 외계인이 있을 사후확률은 10%에 불과하다.

P[no aliens + normal people | data] ≈ 0
P[no aliens + weird people | data] ≈ 90%
P[normal aliens | data] ≈ 0
P[weird aliens | data] ≈ 10%

이제 결과는 미친 소리처럼 들리지 않는다.

(수식)

이유를 보려면, 먼저 다음을 주목하자.

P[normal aliens | data]
 ≈ P[data | no aliens + normal people]
 ≈ 0,

둘 다 관측된 데이터를 만들 확률이 거의 0이기 때문이다.

한편,

P[no aliens + weird people | data] / P[weird aliens | data]
 = P[no aliens + weird people, data] / P[weird aliens, data]
 ≈ P[no aliens + weird people] / P[weird aliens]
 ≈ .09 / .01
 = 9,

두 번째 등식은 데이터가 no aliens + weird peopleweird people 하에서 동일하게 가능하다고 가정했기 때문에 성립한다.

따라서

P[no aliens + normal people | data]
 ≈ 9 × P[weird aliens | data],

그리고 그래서

P[no aliens + weird people | data] ≈ 90%
P[weird aliens | data] ≈ 10%.

어?

이제 헷갈리길 바란다. 헷갈리지 않는다면 뭐가 이상한지 짚어보겠다. 위의 두 모델의 사전확률은 둘 다 외계인이 있을 확률이 50%라고 말한다. 첫 번째 사전확률이 틀린 건 아니었다. 단지 두 번째 것보다 덜 자세했을 뿐이다.

이상하다. 두 번째 사전확률은 완전히 다른 예측으로 이어진 것처럼 보였기 때문이다. 사전확률도 틀리지 않았고 수학도 틀리지 않았다면, 답도 틀리지 않아야 하는 것 아닌가? 도대체 어떻게 된 거지?

간단한 설명은 내가 당신에게 조금 거짓말을 했다는 것이다. 무엇이든 진실을 판단하려는 상황을 생각해보자. 그러면 진실일 수도 있는 것들의 공간이 있다.

어떤 경우에는 이 공간이 유한하다. 삼중수소 원자 하나가 있고 1년을 기다린다면, 원자는 붕괴하거나 붕괴하지 않는다. 하지만 대부분의 경우 가능성의 공간은 크거나 무한하다. 단순히 “아프다” 혹은 “아프지 않다”가 아니라, “열은 높지만 기분은 괜찮다”거나 “괜찮아 보이지만 양파를 계속 먹는다” 같은 상태일 수도 있다.

(보통 진실일 수도 있는 것들의 공간을 작은 1차원 구간으로 나타내기는 쉽지 않다. 시각화를 위해 그렇게 그렸을 뿐, 실제로는 고차원 공간, 심지어 무한 차원 공간으로 생각해야 한다.)

외계인의 경우, 진실일 수도 있는 것들의 공간에는 “끈적끈적한 외계인은 많고 털복숭이 외계인은 적으며, 끈적끈적한 외계인은 매우 수줍음이 많고 털복숭이 외계인은 다람쥐를 무서워한다” 같은 가능성도 포함될 수 있다. 그래서 원칙적으로 당신이 해야 할 일은 진실일 수도 있는 것들의 공간을 극도로 자세하게 나누어 각각에 확률을 부여하는 것이다.

종종, 진실일 수도 있는 것들의 공간은 무한하다. 따라서 이론적으로, 정말로 원칙대로 하려면 그 (무한한) 가능성 각각이 얼마나 그럴듯한지 명시해야 한다.

그렇게 한 다음에는 데이터를 볼 수 있다. 진실일 수도 있는 각각의 것에 대해 데이터의 확률을 생각해야 한다. 진실일 수도 있는 것이 무한히 많으므로, 명시해야 할 확률도 무한히 많다. 이를 다음과 같은 곡선으로 상상할 수 있다.

(이건 일반적인 곡선이며, 외계인에 대한 곡선이 아니다.)

내 생각에 이것은 베이즈 추론을 복잡한 현실 문제에 적용할 때 가장 과소평가된 문제다. 실제로는 진실일 수 있는 것이 무한히 많기 때문이다. 무한한 것들에 대해 사전확률을 명시하는 것은 엄청난 작업이다. 그리고 무한한 것들이 주어졌을 때 데이터의 가능도를 명시하는 것 역시 마찬가지로 엄청난 작업이다.

그래서 실제로는 어떻게 할까? 단순화한다. 보통은 진실일 수도 있는 것들의 공간을 소수의 이산적인 범주로 묶어서 나눈다. 위의 곡선이라면 다음과 같이 네 가지 동일하게 그럴듯한 가능성으로 나눌 수 있을 것이다.

그러고 나서 그 가능성 각각에 대해 이러한 데이터 확률을 추정할 수 있다.

그러면 그것들을 합쳐서 다음과 같은 사후확률을 얻을 수 있다.

나쁘지 않다. 하지만 이것은 어디까지나 근사치일 뿐이다. 당신의 “진짜” 사후확률은 다음 면적들에 해당한다.

그 근사는 꽤 좋았다. 하지만 좋았던 이유는 우리가 진실일 수도 있는 것들의 공간을 잘 이산화해서 시작했기 때문이다. 즉, A, B, C, D 각각의 내부에서 서로 다른 가능성들 사이에 데이터의 가능도가 크게 달라지지 않는 방식으로 나눴기 때문이다. 데이터의 가능도가—만약 당신이 그 무한한 가능성들을 하나하나 전부 생각할 수 있다면—다음과 같이 생겼다고 상상해보자.

이것은 위험하다. 문제는 당신이 실제로 그 무한한 가능성들을 전부 생각할 수 없다는 것이다. 네 가지 이산적인 가능성을 생각할 때, 당신은 다음과 같이 생긴 가능도를 추정할지도 모른다.

그렇게 하면 A, B, C의 확률은 과소평가하고 D의 확률은 과대평가하게 된다.

내 첫 번째 외계인 모델이 틀린 지점이 바로 여기다. 내 사전확률 P[aliens]는 틀리지 않았다.(적어도 나에게는.) 실수는 P[data | aliens]P[data | no aliens]에 같은 값을 할당한 것이었다. 물론, 외계인과 관련된 우리의 모든 데이터가 외계인이 있을 때나 없을 때나 동일하게 가능하다고 생각한다. 하지만 그건 특정 종류의 외계인과 특정 종류의 외계인이 없는 경우에만 사실이다. 그리고 나는 그런 종류의 외계인에 대한 사전확률이 그런 종류의 외계인이 없는 경우보다 훨씬 낮다고 생각한다.

기술적으로, 첫 번째 모델의 수정 방법은 간단하다. P[data | aliens]를 더 낮게 만드는 것이다. 하지만 그것이 더 낮은 이유는 내가 원래 사전확률에 포함하는 것을 잊은 추가적인 사전 정보가 있기 때문이다. 만약 내가 그저 P[data | aliens]P[data | no aliens]보다 훨씬 낮다고 주장만 한다면, 형식적인 베이즈 절차는 사실상 별 역할을 하지 않는다—그냥 P[aliens | data]가 낮다고 말하는 것과 다를 바 없다. 왜 P[data | aliens]가 더 낮아야 하는지를 형식적으로 정당화하려면, 그 빠진 사전 정보를 어떻게든 추가한 뒤 데이터 가능도를 계산할 때 이를 적분해서 없애는, 지저분하고 재귀적인 절차가 필요하다.

(수식)

수학적으로,

P[data | aliens]
 = ∫ P[wierd aliens | aliens]
 × P[data | wierd aliens] d(weird aliens)
 + ∫ P[normal aliens | aliens]
 × P[data | normal aliens] d(normal aliens).

하지만 이제 어쨌든 자세한 사전확률을 제시해야 한다. 그렇다면 애초에 간단한 것부터 시작한 의미는 무엇이었을까?

나는 그 기술적인 수정이 그다지 좋다고 생각하지 않는다. 기술적으로는 맞지만(하하) 매우 직관적이지 않다. 더 나은 해결책은 내가 두 번째 모델에서 한 것처럼, 진실일 수도 있는 것들의 공간을 더 세밀하게 범주화하여 각 항마다 데이터의 확률이 어느 정도 일정하도록 만드는 것이다.

문제는 그런 범주화가 데이터에 의존한다는 것이다. 우리 세상의 실제 데이터를 보지 않았다면, 나는 그토록 많은 조종사들이 틱택을 봤다고 보고할 것이라고 전혀 예측하지 못했을 것이다. 그래서 사람들이 증거를 얼마나 환각처럼 만들어낼 수 있는지, 혹은 외계인이 우리를 얼마나 골탕 먹이려 하는지에 기반한 범주를 만들어야 한다고 예측하지도 못했을 것이다. 따라서 좋은 결과를 얻는 유일한 실용적인 방법은 먼저 데이터를 보고 어떤 범주가 중요한지 파악한 다음, 그 증거를 아직 보지 않았다면 그 범주들이 얼마나 그럴듯하다고 말했을지 스스로에게 물어보는 것이다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글