생성 모델의 주 목적은 "타겟 분포를 학습한다" 라는 정의를 하게 되는데, 그 때 사용되는 분포의 개념인 사전 분포, 사후 분포에 대한 의미가 헷갈려 이번에 정리를 통해 완벽하게 이해하고자 한다.
우선 ChatGPT에게 물어봤다.
꽤나 정확하게 말해줬는데, 아직 대략적인 느낌이고, 확 와닫지는 않는다.
모수, 확률 분포, 베이지안 추론,, 이런 용어들이 아직은 낯설어 먼저 정의부터 알아보자.
- 모수: parameter, 모집단의 특성(예: 평균, 분산 등)을 나타내는 값으로, 좀 더 쉽게 풀어보자면 "모집단에 속해 있는 데이터들을 설명할때, 어떠한 숫자로 표현하고 싶다!" 라고 생각하면 될 것 같다.
- 확률 분포: 확률 변수(무작위 실험 결과, 특정 확률로 발생하는 각각의 결과를 숫자로 표현한 변수) X와 얼마나 확률 변수마다 나타날지의 확률을 분포로 나타낸 것이다.
- 베이지안 추론은 다음 포스팅에서 조금 더 자세하게 작성할 계획이다.
그렇다면, 사전 분포와 사후 분포의 정의를 정의해보자.
사전 분포(prior)란 데이터를 관찰하기 전 모수의 분포를 말한다. 즉, 데이터가 이렇게 생겼을거 같다는 자신의 가정이나 이전 실험 결과의 분포를 말한다.
수식으로 표현하면 $ p(\theta) $ 라고 표현하고, 보통은 균일분포($ \text{Beta}(1,1) $) 혹은 정규분포($ \mathcal N(0,1) $)를 사용한다.
사후 분포(posterior)는 데이터가 관찰된 이후 변화된 모수의 분를 말한다.
데이터 $ x_1, ..., x_N $을 알고 있는 상태에서의 θ에 대한 조건부 확률 분포이다.
Likelihood 분포는 $ p(x_1, ..., x_N | \theta) $로 표현하고, $ \theta $가 주어졌을 때, 데이터 $ x_1, ..., x_N $가 관측될 확률을 말한다.
이렇게 사전, 사후, likelihood 를 예제를 통해 좀 더 직관적으로 이해를 해보도록 하자.
마찬가지로 ChatGPT에게 요청했다.
ChatGPT의 예시는 무게를 측정하는 예시를 들었다.
사전 분포는 물체의 무게가 0~10 kg만 존재한다는 가정이라고 정의했고, 0~10 kg 사이의 물체가 동일한 분포로 있다고 균등 분포로 가정한다.
데이터는 5, 6, 7 kg 의 세 개의 물체가 있다고 가정하자.
사후 분포는 데이터에 맞춰진 추정을 하려고 우리가 가정한 사전 분포와 세 개의 데이터에 의해 사전 분포를 업데이트하게 된다. 따라서 5, 6, 7 kg 데이터의 분포를 좀 더 높은 확률을 할당하게 바뀔 것이다..!
따라서 데이터가 좀 더 많아진다면 이보다 더 정확하게 반영할 수 있다.
이 때의 likelihood 는 어떻게 설명할 수 있을까?
정리
이렇게 사전분포, likelihood 를 통해 사후분포를 다음과 같은 식으로 계산할 수 있다.
$$ p(\theta | data) = \frac{(p(data | \theta) \times p(\theta))}{p(data)} $$
- $ p(\theta | data) $는 사후분포이다.
- $ p(data | \theta) $는 likelihood이다.
- $ p(\theta) $는 사전분포이다.
- $ p(data) $는 정규화 상수로, 주어진 데이터에 대한 총 확률이다.
특히 likelihood는 $ p(data | \theta) = p(x_1 | \theta) \times p(x_2 | \theta) \times ... p(x_n | \theta) $로 표현된다.
최종적으로, 사후분포는 데이터에 기반하여 모수($ \theta $)의 가능성을 나타내는 분포로 업데이트된다. 이를 통해 추정된 모수에 대한 확률 분포를 얻을 수 있다.