Bayesian Methods & Probabilistic Programming
사전 지식과 관측 데이터를 결합하여 확률을 갱신하는 베이즈 추론의 역학과, 복잡한 확률 모델을 코드로 기술하고 시뮬레이션하는 확률적 프로그래밍의 원리를 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
mathematics-computing-logicmathematicscomputing-logicprobabilitystatisticsinformationbayesian-methodsprobabilistic-programming9 min read
1. Overview
베이즈 방법론과 확률적 프로그래밍(Bayesian Methods & Probabilistic Programming, BMP)은 "데이터가 부족하면 아무것도 결론 낼 수 없다"는 기존 통계학의 한계를 깨부수고, 인간의 직관(Prior)과 새로 들어온 데이터(Evidence)를 섞어 지능을 끊임없이 업데이트하는 인공지능의 확률적 뇌 구조입니다.
학습자는 세상의 모든 매개변수(Parameter)를 고정된 상수가 아닌 요동치는 확률 분포로 바라보는 **베이즈 추론(Bayesian Inference)**의 물리적 철학을 뜯어봅니다. 나아가 수백 차원의 적분 계산이 불가능한 베이즈 분모(Evidence)의 벽을 뚫기 위해 카지노처럼 무작위로 점을 찍으며 분포를 흉내 내는 마르코프 체인 몬테카를로(MCMC) 엔진을 해부하고, 이를 코드 몇 줄로 자동화하는 확률적 프로그래밍(PPL) 아키텍처 능력을 쟁취합니다.
2. Scope & Boundaries
In-Scope
- 베이즈 철학 역학 (Bayesian Mechanics): 사전 확률(Prior, ), 우도(Likelihood, ), 사후 확률(Posterior, ), 증거(Evidence).
- 켤레 사전 분포 (Conjugate Priors): 베타-이항(Beta-Binomial) 켤레, 디리클레-다항(Dirichlet-Multinomial) 업데이트의 수리적 아름다움.
- 근사 추론 및 샘플링 (Approximate Inference): 마르코프 체인 몬테카를로(MCMC), 메트로폴리스-헤이스팅스(Metropolis-Hastings), 깁스 샘플링(Gibbs Sampling).
- 확률적 프로그래밍 언어 (PPL): 스탠(Stan), PyMC, 확률 그래프 모델(Probabilistic Graphical Models), 계층적 베이즈 모델(Hierarchical Models).
Out-of-Scope
- 빈도주의 가설 검정: p-value를 이용해 귀무가설을 기각하는 전통적 A/B 테스트 01-04-01. Statistical Inference 영역.
- 베이지안 뉴럴 네트워크(BNN)의 GPU 스케일링: 파라미터가 1억 개인 딥러닝에서 변분 추론(VI)을 하드웨어 가속기로 돌리기 11-01. Learning & Optimization 영역.
Boundaries
- BMP vs. Statistical Inference (01-04-01): 전통적 추론(01-04-01)이 "동전의 진짜 앞면 확률(모수)은 0.7이라는 고정된 값인데 우리가 몰라서 점을 하나 찍어볼게(MLE)"라면, BMP는 "0.7인지 0.8인지 우린 영원히 모르고, 그저 0.7일 확률이 가장 높은 산봉우리 모양의 '믿음 분포(Posterior)'를 그려줄게"라는 완전히 다른 차원의 확률 우주론입니다.
3. Counterexample
- 사전 확률 맹신 또는 붕괴 (Prior Ignorance Fallacy): 새로운 암 진단 키트가 정확도 99%라는 데이터(Likelihood)만 보고, "양성 판정이 떴으니 암일 확률이 99%다"라고 선고해버리는 치명적 돌팔이 수학. 세상에 진짜 암환자가 0.1%밖에 안 된다는 극단적으로 낮은 사전 확률(Prior)을 베이즈 정리에 곱해주지 않으면, 거짓 양성(False Positive)의 바다에 빠져 확률이 9%로 폭락하는 현상을 놓치는 대참사가 벌어집니다.
- 해석적 적분의 지옥 (Analytic Integration Hell): 복잡한 베이지안 모델을 세워놓고 사후 확률(Posterior)을 구하겠답시고, 분모인 마지널 우도(Evidence, )를 손으로 적분하려 드는 행위. 매개변수가 10개만 넘어가도 다중 적분은 지구상의 어떤 컴퓨터로도 닫힌 해(Closed-form)를 낼 수 없습니다. 이를 MCMC 같은 샘플링(Sampling) 기법으로 우회할 줄 모르면 이론에만 갇혀 실무 코드를 짜지 못합니다.
4. Prerequisites
- 확률 변수와 조건부 확률 (Basic): 베이즈 정리 자체의 뼈대와 결합 확률(Joint Probability) 및 분연 법칙(Marginalization)을 자유자재로 식 튜닝에 사용할 수 있어야 합니다. (01-04-01 PSR)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 베이즈 정리와 사후 확률의 진화 (Bayesian Inference)
- Why to Learn: 유저가 클릭 3번(데이터)만 한 극초기 상태에서도 A/B 테스트의 승자를 예측하고, 데이터가 쌓일수록 확신(확률)이 뾰족해지는 실시간 업데이트 모델을 만들기 위함입니다.
- What to Learn:
- Concepts: 사전 확률(Prior, ), 우도(Likelihood, ), 사후 확률(Posterior, ).
- Skills: 베이즈 룰 맵핑(), 마지널 우도 분모 스케일링.
- Tools: 확률 그래프.
- Trade-offs: 전문가의 강력한 주관(Strong Prior)을 넣었다가 편향(Bias)이 생겨 엉터리 결과가 나오는 리스크 vs 무정보 사전 분포(Non-informative Prior)를 쓰느라 데이터가 쌓일 때까지 학습이 엄청나게 늘어지는 계산 낭비.
- How to Learn:
- 1단계: 수식을 "어제까지의 내 생각()에 오늘 관찰한 증거의 타격량()을 곱해서, 내일의 새로운 신념()을 빚어낸다"는 물리학적 모멘텀으로 뜯어봅니다.
- 2단계: 스팸 필터를 만들 때, "이 메일에 '당첨'이라는 단어가 들어있을 확률"이 아니라, "'당첨'이라는 단어가 들어온 상태 공간 하에서 이 메일이 스팸 우주에 속할 확률"로 시야를 뒤집는(Inverse Probability) 발상의 전환을 해부합니다.
- Implement: 코인 던지기 게임에서, 앞면이 나올 확률 의 사전 확률 리스트
[0.1, 0.2, ... 0.9](균등 분포)를 만들고, "앞면이 1번 나왔다"는 데이터가 들어올 때마다 베이즈 공식을 루프 돌려 리스트(Posterior)가 0.5 주변으로 뾰족하게 치솟는 것을 그리는 콘솔 그래프기.
Recommended
Core Topic 02: 켤레 사전 분포의 수학적 꼼수 (Conjugate Priors)
- Why to Learn: 미분/적분 같은 무거운 연산을 CPU에 태우지 않고, 단순히 변수에 숫자 덧셈(+1)만 하는 것으로 실시간 AI 업데이트(Online Learning)를 쳐내기 위해서입니다.
- What to Learn:
- Concepts: 베타 분포(Beta Distribution), 이항 분포(Binomial Distribution), 켤레 성질(Conjugacy).
- Skills: 하이퍼파라미터 업데이트 규칙(, ).
- Tools: SciPy
betamodule. - Trade-offs: 어떤 데이터 분포(우도)에 딱 들어맞는 짝꿍(켤레) 사전 분포를 쓰면 적분을 완전히 생략해버리는 미친 계산 속도() vs 현실 데이터는 예쁜 이항 분포나 정규 분포가 아닌데 억지로 켤레를 끼워 맞추려다 모델이 멍청해지는(Underfitting) 한계.
- How to Learn:
- 1단계: 베타 분포 가 0부터 1 사이의 확률값()이 가질 수 있는 모든 굴곡을 다 만들어내는 찰흙 반죽임을 시각적으로 뜯어보고, 이것이 왜 이항 분포(동전 던지기)의 완벽한 짝꿍(Prior)인지 해부합니다.
- 2단계: 사전 분포 (앞 1, 뒤 1번 본 상태)에 새로운 데이터 "앞면 10번, 뒷면 3번"이 들어왔을 때, 컴퓨터가 적분을 안 하고 냅다 로 더하기만 해서 사후 분포를 뱉어내는 기적의 연산 최적화를 증명합니다.
- Implement: 새로운 넷플릭스 영화가 출시되었을 때 "좋아요 3개, 싫어요 0개"인 상황( 긍정)과 "좋아요 300개, 싫어요 10개"( 긍정) 중 어떤 것이 랭킹 1위를 먹어야 하는지, 베타 켤레 업데이트를 통한 '하단 신뢰 구간(Lower Bound)' 값을 계산하여 올바르게 랭킹을 역전시키는 윌슨 스코어(Wilson Score) 엔진.
Practical
Core Topic 03: 마르코프 체인 몬테카를로 (MCMC) 역학
- Why to Learn: 적분이 불가능한 분모(Evidence) 때문에 켤레(Conjugate) 꼼수도 못 쓰는 복잡한 현실 세계의 사후 확률 산맥을, 탐험 로봇을 무작위로 수만 번 걷게 만들어 그 지형도(분포)를 그려내기 위함입니다.
- What to Learn:
- Concepts: MCMC, 메트로폴리스-헤이스팅스(Metropolis-Hastings) 알고리즘.
- Skills: 제안 분포(Proposal Distribution), 채택 확률(Acceptance Probability, ), 번인(Burn-in).
- Tools: Random Walk.
- Trade-offs: 수식이 불가능한 다차원 사후 확률 공간에서도 무한히 오래 걸으면 완벽한 정답 확률을 재구성하는 궁극의 치트키 vs 이 로봇(Chain)이 제대로 된 확률 지형을 찾을 때까지(수렴, Convergence) 수만 스텝 동안 허공에 버리는 극악의 대기 시간(Burn-in)과 CPU 발열.
- How to Learn:
- 1단계: "다음 이동할 곳()의 확률 높이가 현재()보다 높으면 무조건 전진(Accept), 낮으면 그 높이 비율만큼의 확률로 튕겨냄(Reject)"이라는 메트로폴리스 채택 룰이 왜 봉우리 근처에 점을 많이 찍어 분포를 흉내 내는지 물리적으로 뜯어봅니다.
- 2단계: 마르코프 체인이란 "과거의 기억은 버리고 오직 현재 위치에서만 다음 발자국을 찍는다"는 메모리리스(Memoryless) 성질인데, 이것이 MCMC의 상태 전이 역학과 완벽히 결합하는 원리를 해부합니다.
- Implement: 파이썬
random함수만 사용하여 커스텀 2차원 사후 확률 산맥(두 개의 가우시안 덩어리)을 정의하고, 메트로폴리스-헤이스팅스 알고리즘으로 점을 10,000개 찍어 산맥의 궤적 히스토그램을 복원하는 몬테카를로 등반 스크립트 작성.
Advanced
Core Topic 04: 확률적 프로그래밍과 아키텍처 (PPL & Hierarchical Models)
- Why to Learn: 수학과 통계학 박사들이 몇 달 걸려 수식을 전개하던 베이지안 추론을, 프로그래머가
model.sample()메서드 한 줄로 5분 만에 끝장내는 하이엔드 AI 아키텍처를 세우기 위해서입니다. - What to Learn:
- Concepts: 확률적 프로그래밍 언어(PPL, Probabilistic Programming Language).
- Skills: 모델 명세(Model Specification), NUTS(No-U-Turn Sampler), 계층적 모델(Hierarchical Bayes).
- Tools: PyMC, Stan, NumPyro.
- Trade-offs: "야구 선수의 타율"과 "해당 야구팀 전체의 평균 타율"이라는 계층적(Hierarchical) 정보를 묶어 데이터가 없는 신인 선수의 타율까지 귀신같이 찍어 맞추는 정보 대여(Shrinkage)의 극한 파워 vs MCMC 샘플링 시 깔때기(Funnel) 모양의 기하학적 지옥에 빠져 NUTS 엔진이 수렴을 못하고 폭발(Divergence)하는 치명적 튜닝 난이도.
- How to Learn:
- 1단계: 변수 A에 상수
10을 넣는 것이 전통적 프로그래밍이라면, PPL은 변수 A에Normal(mu=0, sigma=1)이라는 '확률적 덩어리' 객체를 할당하여 코드 전체가 춤추게 만드는 패러다임 전환을 뜯어봅니다. - 2단계: 최첨단 샘플링 알고리즘인 해밀토니안 몬테카를로(HMC)가 공간의 기울기(Gradient)라는 물리적 '중력' 정보를 가져와 마구잡이 랜덤 워크(MCMC)를 유도 미사일로 진화시키는 기하학적 역학을 해부합니다.
- 1단계: 변수 A에 상수
- Implement: 데이터(X, Y)가 주어졌을 때 단순
scikit-learn의 선형 회귀(Linear Regression)가 내놓는 단일 선(Line) 하나와, PyMC를 돌려 내놓는 1,000개의 확률적 베이지안 밴드(Uncertainty Band)를 시각적으로 오버레이하여 "AI가 모르는 것은 모른다고 말하게(불확실성 표출)" 강제하는 튜토리얼 코드.
7. Terminology
8. References
Primary
- [P1] CS2023 - DS/Discrete Probability — Conditional probability rules.
- [P4] DS-BoK - Data Analytics / Bayesian Inference — Advanced analytics core.
Secondary
- [Statistical Rethinking] Richard McElreath — Intuitive Bayesian modeling for scientists.
- [Bayesian Data Analysis] Andrew Gelman — The rigorous Bayesian "Bible".
Industry
- [Uber Pyro: Deep Probabilistic Programming] — Industry scale PPL applications.
- [Google CausalImpact: Bayesian Causal Inference] — Bayesian methods in marketing.
9. Final Checklist
Primary
- 베이즈 정리를 사용하여 사전 확률이 0인 사건은 어떤 데이터가 들어와도 사후 확률이 0이 될 수밖에 없는 물리적 한계를 입증할 수 있는 가? (P1)
- '독립(Independence)'과 '조건부 독립(Conditional Independence)'의 차이를 베이지안 네트워크 예시를 통해 물리적으로 설명 가능한가? (P1)
Secondary
- PPL(확률적 프로그래밍) 환경에서 '샘플러(Sampler)'가 사후 분포를 찾아가는 과정을 물리학적 입자 이동 모형인 HMC(Hamiltonian Monte Carlo) 관점에서 설명할 수 있는 가?
- 베이지안 추론이 빈도주의적 최대 우도 추정(MLE)과 결과적으로 동일해지는 특수한 물리적 상황(균등 사전 분포)을 소통 가능한가?
Industry
- 게임 밸런싱이나 추천 시스템 설계 시, 콜드 스타트(Cold Start) 문제를 해결하기 위해 사전 분포(Prior)를 어떻게 물리적으로 설계할지 전략을 수립할 수 있는 가? (SFIA)
- 자율 주행이나 로봇 공학에서 센서 데이터의 노이즈를 베이즈 갱신을 통해 실시간으로 제거하고 객체의 위치를 추론하는 로직을 제안할 수 있는 가?