본문으로 바로가기

마코프 연쇄 몬테카를로(MCMC): 복잡한 확률분포에서 표본 추출

마코프 연쇄 몬테카를로 안내서 - 작동 원리, 사용 이유, 대표 알고리즘, 그리고 베이지안 추론을 위해 파이썬에서 적용하는 방법을 다룹니다.
업데이트됨 2026년 6월 10일  · 15분 읽다

일부 확률분포는 너무 복잡해서 직접 다루기 어렵습니다.

현실 세계의 데이터를 모델링하다 보면, 유용한 결과에 도달하기도 전에 수학적 계산이 깨지는 일이 자주 발생합니다. 적분이 종이 위에서는 그럴듯해 보여도, 잠재 변수 몇 개만 추가하면 곧바로 다루기 어려워지곤 합니다. 이는 특히 베이지안 추론에서 흔한데, 사후분포가 사전분포와 관측 데이터를 결합해 만들어지기 때문입니다. 그 결과는 간단한 공식으로 요약할 수 없는 형태가 됩니다.

마코프 연쇄 몬테카를로(MCMC)의 기본 아이디어는 수학을 직접 푸는 대신, 시뮬레이션으로 분포를 탐색한다는 것입니다. 분포 전체를 계산하지 않고도 그 모양을 반영하는 표본을 추출합니다.

이 글에서는 MCMC의 핵심 개념을 살펴보고, 가장 널리 쓰이는 알고리즘들을 설명한 뒤, 이를 파이썬에서 활용하는 방법을 보여드리겠습니다.

파이썬 수학이 필요하신가요? 저희의 딥러닝을 위한 수학 개념 해설 블로그 글을 읽고 Numpy에서 수학이 어떻게 적용되는지 확인하세요.

마코프 연쇄 몬테카를로란?

마코프 연쇄 몬테카를로(MCMC)는 직접 다루기 어려운 확률분포에서도 표본을 생성할 수 있는 알고리즘 계열입니다.

이름은 두 부분으로 나뉩니다. 마코프 연쇄는 알고리즘이 가능한 상태 공간을 어떻게 이동하는지를 제어합니다. 각 단계는 과거 전체 경로가 아니라 오직 현재 상태에만 의존합니다. 몬테카를로는 관심 있는 양을 추정하기 위해 무작위 표본추출을 사용한다는 뜻입니다.

이 둘을 결합하면, MCMC는 시간이 지남에 따라 목표 분포의 모양을 반영하는 무작위 표본의 연쇄를 구축합니다. 어디까지나 표본추출 기법입니다. 수학을 정확히 푸는 것이 아니라 시뮬레이션으로 근사하는 것입니다.

왜 MCMC가 필요한가

현실 세계의 데이터 분포는 교과서 속 분포만큼 깔끔하지 않습니다.

베이지안 추론에서는 종종 사후분포, 즉 데이터를 관측한 후 모델 매개변수의 갱신된 확률을 계산하려고 합니다. 공식은 종이 위에서는 간단해 보입니다. 사전분포와 우도를 곱한 뒤, 주변우도로 나눕니다. 마지막 항은 가능한 모든 매개변수 값에 대해 적분해야 합니다. 고차원에서는 사실상 계산이 불가능합니다.

모델이 커질수록 상황은 더 악화됩니다. 매개변수나 잠재 변수를 더 추가하면, 정확한 계산은 막다른 길이 됩니다. 다음과 같은 흔한 상황 전반에서 마주치게 됩니다.

  • 베이지안 계층모형: 매개변수가 다른 매개변수에 의존해 중첩된 분포를 만들고, 이를 깔끔히 적분하기 어렵습니다.
  • 고차원 사후분포: 매개변수 수가 많아 격자 기반 근사가 계산상 불가능해집니다.
  • 비수반 사전분포: 사전분포와 우도가 익숙한 형태의 분포로 결합되지 않습니다.

이런 상황에서 MCMC는 훌륭한 우회로입니다. 분포를 계산하는 대신 그 분포에서 표본을 추출합니다. 표본만으로도 적분을 풀지 않고 필요한 정보를 모두 얻을 수 있습니다.

MCMC를 이루는 두 가지 아이디어

MCMC는 각각은 단순하지만 결합하면 강력한 두 아이디어를 합칩니다. 차례로 살펴보겠습니다.

마코프 연쇄

마코프 연쇄는 각 단계가 오직 현재 상태에만 의존하는 상태들의 순서열입니다.

과거에 어디에 있었는지는 중요하지 않습니다. 다음 상태는 현재 상태만이 결정합니다. 이 "기억 없음" 성질은 공식적으로 마코프 성질이라고 하며, 수학을 다루기 쉽게 만들고 알고리즘을 실용적으로 만듭니다.

연쇄는 한 번에 한 단계씩 상태를 이동하며, 적절히 구성하면 결국 정상분포에 정착합니다. 이는 임의의 상태에 있을 확률이 더 이상 변하지 않는 안정적인 패턴입니다. 바로 이 안정적 분포를 MCMC가 다루도록 설계됩니다.

몬테카를로 기법

몬테카를로 기법은 직접 계산하기 어려운 양을 무작위 표본추출로 추정합니다.

분포에서 충분한 무작위 표본을 뽑아, 그 표본만을 보고 평균, 분산 같은 특성을 추정하는 방식입니다. 표본을 많이 뽑을수록 추정치는 실제 값에 가까워집니다.

몬테카를로 기법만으로는 분포에서 직접 표본을 뽑아야 하는데, 바로 그것이 우리가 해결하려는 문제입니다. 그 부분을 마코프 연쇄가 담당합니다.

MCMC는 어떻게 동작하나

MCMC는 각 단계에서 간단한 결정을 내리는 반복 루프입니다.

  1. 초기 상태 설정: 매개변수 공간에서 시작점을 하나 고릅니다. 대략적인 추정이어도 됩니다.
  2. 새 상태 제안: 다음으로 이동할 위치를 제안하는 메커니즘을 사용합니다.
  3. 수용 여부 결정: 제안 상태와 현재 상태를 비교해, 목표 분포에서의 상대적 그럴듯함(확률)에 따라 수용 또는 거절합니다.
  4. 반복: 이 루프를 수천 번 반복하며 표본을 수집합니다.
  5. 표본 활용: 수집한 표본으로 평균, 신뢰구간(신용구간) 등 관심 있는 양을 추정합니다.

수용/거절 단계에서 “마법”이 일어납니다.

더 나은 상태는 더 자주 수용하고, 덜 그럴듯한 상태는 덜 수용함으로써, 연쇄는 분포 전체를 계산하지 않고도 고확률 영역으로 끌려가게 됩니다.

초기 표본은 시작점의 영향을 받으므로 버립니다. 충분히 반복하면 연쇄는 시작점을 잊고, 남은 표본이 목표 분포의 실제 모양을 반영합니다.

목표 분포와 정상분포

MCMC는 직접 표본을 뽑을 수 없는 목표 분포에서 표본을 생성하는 것을 목표로 합니다.

목표 분포는 보통 베이지안 추론에서의 사후분포처럼, 우리가 알고자 하는 대상입니다. 정규화 상수만 빼고는 모양을 알고 있지만 그 상수를 직접 계산할 수는 없습니다. MCMC는 그 상수를 필요로 하지 않습니다.

모든 MCMC 알고리즘은 그 마코프 연쇄의 정상분포가 목표 분포와 일치하도록 설계됩니다. 정상분포는 충분한 단계 이후 연쇄가 정착하는 분포입니다.

연쇄를 계속 돌리면 목표 분포에서 뽑은 것과 같은 표본이 나오기 시작합니다. 적분은 우회됩니다.

널리 쓰이는 MCMC 알고리즘

실무에서 자주 보게 되는 MCMC 알고리즘이 몇 가지 있습니다. 모두 동일한 핵심 루프를 따르지만, 새 상태를 제안하는 방식과 목표 분포 정보를 사용하는 방식이 다릅니다.

메트로폴리스 알고리즘

메트로폴리스 알고리즘은 가장 단순한 MCMC 알고리즘이며 모든 것의 출발점입니다.

각 단계에서 현재 상태에 무작위 잡음을 더해 새 상태를 제안합니다. 제안 상태가 목표 분포에서 더 높은 확률을 가지면 항상 수용합니다. 더 낮다면 두 확률의 비율에 비례한 확률로 수용하고, 그렇지 않으면 제자리에 머뭅니다.

이 수용/거절 메커니즘 덕분에, 분포 전체를 계산하지 않고도 연쇄는 고확률 영역에서 더 많은 시간을 보냅니다.

메트로폴리스는 대칭 제안분포를 사용합니다. 즉 어느 방향으로든 동일한 확률로 이동을 제안합니다. 모델이 커질수록 성능이 떨어지는 경향이 있습니다.

메트로폴리스-헤이스팅스 알고리즘

메트로폴리스-헤이스팅스(MH) 알고리즘은 비대칭 제안분포를 허용하도록 메트로폴리스를 일반화합니다.

MH는 어떤 제안이 다른 제안보다 더 자주 발생할 수 있음을 반영해 수용확률을 조정합니다. 제안분포를 목표 분포의 모양에 맞게 조율할 수 있어 탐색이 좋아지고 수렴이 빨라집니다.

대부분의 현대 MCMC 방법은 MH의 확장판이거나 동일한 원리에 기반합니다. 따라서 메트로폴리스-헤이스팅스를 이해하면 이 분야의 토대를 이해한 것입니다.

깁스 샘플링

깁스 샘플링은 모든 매개변수의 새 상태를 한꺼번에 제안하는 대신, 한 번에 하나의 변수를 갱신합니다.

각 단계에서 현재 다른 변수들의 값이 주어졌을 때의 조건부분포에서 해당 변수를 표본추출합니다. 모든 변수를 한 바퀴 순환하면 한 번의 전체 반복이 끝납니다.

각 조건부 표본은 항상 수용되므로 수용/거절 단계를 완전히 피합니다. 전체 결합분포에서는 표본추출이 어렵지만 조건부분포는 다루기 쉬운 경우, 특히 베이지안 계층모형에서 유용합니다.

해밀토니안 몬테카를로

해밀토니안 몬테카를로(HMC)는 현대 베이지안 추론을 규모 있게 실용화한 첫 알고리즘입니다.

무작위로 새 상태를 제안하는 대신, HMC는 목표 분포의 기울기 정보를 사용해 현재 위치에서 멀리 떨어져 있지만 수용될 가능성이 높은 상태를 제안합니다. 매개변수 공간을 무작위 보행 방식보다 훨씬 잘 탐색합니다. 거절되는 제안이 적고, 고차원 분포도 더 잘 탐색합니다.

메트로폴리스 같은 무작위 보행 방식은 매개변수 수가 늘어나면 확장성이 떨어집니다. HMC는 같은 수준의 문제를 덜 겪습니다.

HMC는 가장 널리 쓰이는 확률적 프로그래밍 플랫폼 중 하나인 Stan의 엔진입니다. PyMC에서 사용하는 NUTS(No-U-Turn Sampler)는 HMC의 적응형 확장으로, 보폭과 스텝 수를 수동으로 조정할 필요를 없앱니다.

베이지안 통계에서의 MCMC

MCMC가 가장 큰 영향을 미친 분야를 하나 꼽자면, 바로 베이지안 추론입니다.

베이지안 통계의 중심은 사후분포입니다. 이는 데이터를 관측한 후 모델 매개변수의 갱신된 확률입니다. 이를 계산하려면 사전분포와 우도를 곱한 뒤 정규화해야 합니다. 그 정규화 단계는 대부분 적분이 필요하며, tractable하지 않은 경우가 많습니다.

MCMC는 이 단계를 완전히 제거합니다. 임의의 점에서 정규화되지 않은 사후확률만 계산하면, 나머지는 연쇄가 처리합니다.

간단한 예를 들어보겠습니다. 동전의 편향을 추정한다고 합시다. 동전이 아마도 공정할 것이라는 사전 믿음으로 시작해, 일련의 던지기 결과를 관측합니다. 단순한 동전 모델에서는 사후분포가 닫힌형을 가집니다. 하지만 계층 구조를 추가해, 예를 들어 100개의 동전 편향을 동시에 추정하려 하면 계산이 불가능해집니다.

MCMC를 사용하면 연쇄를 돌려 사후분포에서 표본을 수집하고, 그 표본으로 필요한 값을 계산하면 됩니다.

번인, 수렴, 혼합 이해하기

이 세 가지 개념은 MCMC 초보 데이터 과학자들을 자주 헷갈리게 합니다. 잘못 이해하면 결과는 얻을 수 있지만, 왜 신뢰할 수 없는지 알지 못합니다.

번인(burn-in)

마코프 연쇄는 시작할 때 목표 분포의 고확률 영역이 어디인지 모릅니다.

초기 표본은 목표 분포가 아니라 시작점의 영향을 받습니다. 번인은 이를 버리는 관행입니다. 먼저 일정 횟수만큼 연쇄를 돌려 그 표본을 폐기하고, 연쇄가 좋은 출발점을 찾을 시간을 가진 이후의 표본만 유지합니다.

번인의 길이에 대한 보편 규칙은 없습니다. 모델, 시작점, 혼합 상태에 따라 달라집니다. 실무에서는 고정된 수를 미리 정하기보다 트레이스 플롯으로 시각적으로 진단합니다.

수렴(convergence)

수렴은 연쇄가 더 이상 시작점의 영향을 받지 않고, 이제 목표 분포를 반영하는 표본을 생성함을 의미합니다.

수렴하지 않은 연쇄는 편향된 표본을 냅니다. 그 표본으로 계산한 평균은 실제 사후 평균과 일치하지 않고, 연쇄가 우연히 머물던 곳을 반영합니다.

수렴은 사후적으로 진단합니다. 서로 다른 시작점에서 여러 연쇄를 실행하고 서로 일치하는지 확인하는 것이 수렴 실패를 잡아내는 가장 신뢰할 수 있는 방법 중 하나입니다.

혼합(mixing)

수렴했더라도 혼합이 나쁘면 여전히 문제가 됩니다.

혼합은 연쇄가 목표 분포를 얼마나 잘 탐색하는지를 설명합니다. 잘 혼합되는 연쇄는 자유롭게 움직이며 고확률·저확률 영역을 모두 방문하고, 서로 대략 독립적인 표본을 만듭니다. 혼합이 나쁜 연쇄는 한 영역에 오래 머문 뒤에야 이동하며, 강하게 상관된 표본을 만들어 전체 분포를 잘 대표하지 못합니다.

혼합이 나쁘면 트레이스 플롯이 시끄러운 수평 띠가 아니라 느릿한 곡류처럼 보입니다. 이런 패턴이 보이면 샘플러 튜닝이 필요합니다. 더 나은 제안분포를 쓰거나 아예 다른 알고리즘을 선택해야 합니다.

혼합 비교 플롯

혼합 비교 플롯

MCMC 결과를 평가하는 방법

이제 MCMC를 평가하는 네 가지 방법과 각 방법을 언제 사용하는지 설명하겠습니다.

트레이스 플롯

트레이스 플롯은 매 반복에서 매개변수의 표본값을 보여줍니다. MCMC를 실행한 뒤 가장 먼저 확인해야 할 것입니다.

건전한 트레이스 플롯은 안정된 평균 주변의 백색잡음처럼 보입니다. 추세, 긴 평평한 구간, 느린 표류가 보여서는 안 됩니다. 연쇄가 배회하거나 한 영역에 오랫동안 갇혀 있다면 혼합 문제가 있으며 표본은 신뢰할 수 없습니다.

트레이스 플롯 시각화

트레이스 플롯 시각화

자기상관

MCMC 표본은 결코 완전히 독립적이지 않습니다. 각 표본은 직전 표본의 영향을 받습니다. 자기상관은 반복 간 표본들이 얼마나 강하게 상관되어 있는지를 측정합니다.

자기상관이 높으면 표본 수가 암시하는 정보량보다 실제 정보가 적습니다. 2000개의 상관된 표본이 200개의 독립 표본과 같은 정보만 줄 수도 있습니다. 대부분의 MCMC 라이브러리는 자기상관 플롯을 제공하여, 표본 간 간격이 늘어날수록 상관이 얼마나 빨리 감소하는지 확인할 수 있게 합니다.

자기상관 플롯 시각화

자기상관 플롯 시각화

유효 표본 크기

유효 표본 크기(ESS)는 자기상관을 실용적인 수치로 번역합니다. 즉, 연쇄가 몇 개의 독립 표본과 동등한지를 나타냅니다.

5000개를 뽑았지만 ESS가 200이라면, 독립 표본 200개의 통계적 힘만을 갖고 있는 것입니다. ESS가 낮으면 연쇄를 더 오래 돌리거나 샘플러를 튜닝해야 합니다. 실무에서는 매개변수당 최소 수백 이상의 ESS를 확보해야 추정치를 신뢰합니다.

수렴 진단

여러 연쇄를 실행하면, 동일한 분포로 수렴했는지 형식적으로 검사할 수 있습니다. 겔먼-루빈 진단(R-hat)은 연쇄 내 분산과 연쇄 간 분산을 비교합니다.

R-hat이 1.0에 가까우면 연쇄들이 합의했음을 의미하며 좋은 신호입니다. 1.01 또는 1.05를 넘는 값(라이브러리 임계값에 따라 다름)은 아직 수렴하지 않았음을 시사하며 더 많은 반복이 필요합니다. PyMC 같은 현대 라이브러리는 R-hat을 자동 계산하고 너무 높으면 경고를 띄웁니다.

파이썬에서의 MCMC

파이썬에는 MCMC를 위한 몇 가지 라이브러리가 있으며, 각기 다른 철학을 가집니다.

  • PyMC: 대부분의 데이터 과학자에게 가장 접근하기 쉬운 선택입니다. 파이썬 문법으로 모델을 정의하면, PyMC가 내부에서 NUTS(적응형 HMC)를 사용해 샘플링을 처리합니다. 파이썬에서 베이지안 모델링의 기본 도구입니다.
  • CmdStanPy / PyStan: 전용 확률적 프로그래밍 언어인 Stan의 파이썬 인터페이스입니다. Stan은 모델을 실행 전 C++로 컴파일하므로 빠르고 복잡한 계층모형에 적합합니다. 대가로 학습 곡선이 더 가파릅니다.
  • NumPy: 전용 MCMC 라이브러리는 없지만 메트로폴리스-헤이스팅스 같은 알고리즘을 처음부터 구현할 수 있습니다. 고수준 도구로 넘어가기 전에 내부 동작을 이해하는 데 유용합니다.

대부분의 실무 작업에서는 PyMC로 시작하는 것이 좋습니다. 여기서도 이를 사용할 것이니, 따라 하시려면 먼저 라이브러리를 설치하세요:

pip install pymc

간단히 하기 위해 동전 던지기 결과로 편향을 추정하는 쉬운 예제로 진행하겠습니다.

1단계: 모델 정의

import pymc as pm
import numpy as np

# 1 = heads, 0 = tails
observed_flips = np.array([1, 0, 1, 1, 0, 1, 1, 1, 0, 1])

with pm.Model() as coin_model:
    # Prior: we believe the coin is probably fair
    bias = pm.Beta("bias", alpha=2, beta=2)

    # Likelihood: observed flips given the bias
    flips = pm.Bernoulli("flips", p=bias, observed=observed_flips)

pm.Beta 사전분포는 동전이 공정할 것이라는 약한 믿음을 반영합니다. pm.Bernoulli 우도는 모델을 관측 데이터와 연결합니다.

2단계: 샘플러 실행

with coin_model:
    trace = pm.sample(2000, tune=1000, return_inferencedata=True)

샘플러 실행 결과 출력

샘플러 실행 결과 출력

tune은 번인 단계의 수를 설정하며, 그 표본은 폐기됩니다. sample은 튜닝 이후 체인당 사후 표본 2000개를 추출합니다.

3단계: 사후분포 점검

import arviz as az

az.plot_trace(trace, var_names=["bias"])
az.summary(trace, var_names=["bias"])

모델 트레이스 플롯과 요약 결과

모델 트레이스 플롯과 요약 결과

az.summary()는 각 매개변수의 사후 평균, 표준편차, R-hat을 제공합니다. R-hat이 1.0에 가깝다면 연쇄가 수렴한 것입니다. az.plot_trace()는 각 매개변수의 트레이스와 사후분포를 나란히 그립니다.

이 데이터셋(10번 중 7번 앞면)에서는 사후 평균이 0.642, 표준편차가 0.124입니다. 이는 데이터의 증거를 반영하면서도 공정한 동전에 대한 사전 믿음에 가깝습니다. R-hat은 1.00이며 ESS는 2000을 훨씬 상회해, 연쇄가 수렴했고 표본은 신뢰할 수 있습니다.

MCMC에서 흔한 실수

MCMC는 실행하기는 쉽지만, 잘못 사용하기도 쉽습니다. 다음은 가장 자주 보이는 실수들입니다.

  • 너무 일찍 수렴을 가정함: 샘플러가 오류 없이 끝났다고 해서 수렴한 것은 아닙니다. 결과를 신뢰하기 전에 항상 R-hat과 트레이스 플롯을 확인하세요. 겉보기엔 안정적이어도 매개변수 공간의 한 영역에 갇혀 있을 수 있습니다.
  • 번인 무시: 초기 표본은 목표 분포가 아니라 시작점으로 치우칩니다. 반드시 버리세요. 대부분의 라이브러리는 tune 매개변수로 자동 처리하지만, 실수로 그 표본을 분석에 포함하지 않았는지 확인하세요.
  • 혼합 불량: 너무 천천히 움직이는 연쇄는 강하게 상관된 표본을 만들어, 개수만큼의 정보를 담지 못합니다. 트레이스 플롯이 시끄러운 수평 띠가 아닌 느린 표류처럼 보이면 제안분포를 튜닝하거나 더 나은 알고리즘이 필요합니다. 메트로폴리스에서 NUTS로 바꾸면 종종 즉시 해결됩니다.
  • 표본 수 부족: 유효 표본 크기(ESS)가 낮으면, 연쇄가 기술적으로 수렴했더라도 추정치는 신뢰할 수 없습니다. ESS가 총 추출 수의 일부분에 불과하다면, 연쇄를 더 오래 돌리거나 혼합을 개선한 뒤 결론을 내리세요.

MCMC와 다른 표본추출 방법 비교

MCMC만이 분포를 근사하는 유일한 방법은 아닙니다. 대안들과 비교하면 다음과 같습니다.

  • 기각 샘플링은 더 단순한 분포에서 제안을 뽑고, 목표와의 일치도에 따라 수용합니다. 작동만 하면 정확하지만, 고차원에서는 수용률이 급락합니다.
  • 중요도 샘플링은 제안분포에서의 표본에 가중치를 부여해 목표 분포하의 기댓값을 근사합니다. 빠르고 저차원에서는 잘 작동하지만, 차원이 증가하면 가중치의 분산이 폭증합니다. 실무에서는 소수의 표본이 거의 모든 가중치를 차지해 추정이 불안정해집니다.
  • 변분 추론(VI)은 발산 척도를 최소화해 목표 분포를 근사하는 더 단순한 분포를 적합합니다. VI는 MCMC보다 훨씬 빠르고 대규모 데이터셋에 확장되지만, MCMC가 피하는 근사 오차를 도입합니다. 적합된 분포가 MCMC라면 포착했을 사후 구조를 놓칠 수 있습니다.

요약하면 다음과 같습니다.

MCMC와 대안 비교

MCMC와 대안 비교

정확도가 속도보다 중요할 때 MCMC가 올바른 선택입니다. 대규모 데이터셋으로 확장하거나 실시간 추론이 필요하다면, 정확도 손해를 감수하고 변분 추론을 고려할 수 있습니다.

결론

MCMC는 겉으로 보기엔 위협적으로 느껴지지만, 실제로 하는 일—직접 계산할 수 없는 분포의 모양을 점차 반영하는 표본 연쇄를 구축하는 것—을 이해하면 금세 납득됩니다.

또한 마코프 연쇄와 몬테카를로 방법이라는 두 부분으로 나누어 보면 이해하기 훨씬 쉽습니다.

베이지안 통계에서의 역할은 과소평가하기 어렵습니다. 그렇지 않으면 손이 닿지 않을 사후분포가, 신뢰할 수 있는 샘플러만 있으면 곧바로 풀 수 있게 됩니다. 그래서 PyMC와 Stan 같은 확률적 프로그래밍 라이브러리의 핵심에 MCMC가 있는 것입니다.

하지만 구현으로 뛰어들기 전에, 직관을 먼저 확실히 잡으세요. 연쇄가 왜 번인이 필요한지, 혼합이 실제로 무엇을 의미하는지, 트레이스 플롯을 어떻게 읽는지 이해해야 합니다. 파이썬 라이브러리는 복잡함을 간단한 함수 호출 뒤에 숨겨주므로, 코드 자체는 가장 쉬운 부분입니다.

머신 러닝에 숙련되고 싶다면 저희의 Machine Learning Scientist in Python 트랙에 등록해 보세요. 85시간 분량의 자료로 2026년에 취업 준비를 마칠 수 있습니다.

MCMC 자주 묻는 질문

마코프 연쇄 몬테카를로는 어디에 사용하나요?

MCMC는 직접 다루기 어려운 확률분포에서 표본을 추출하는 데 사용됩니다. 특히 닫힌형 해를 요구하지 않고 사후분포를 추정할 수 있는 베이지안 통계에서 가장 흔합니다. 물리 시뮬레이션, 계산 생물학, 그리고 정확한 추론이 불가능한 모든 분야에서도 활용됩니다.

MCMC는 일반적인 무작위 표본추출과 어떻게 다른가요?

일반적인 무작위 표본추출은 목표 분포에서 직접 표본을 뽑을 수 있다고 가정합니다. MCMC는 표본의 연쇄를 구축해 점차 목표로 수렴하도록 함으로써 이 문제를 우회합니다. 분포 전체를 알 필요는 없고, 임의의 점에서의 값만 평가하면 됩니다. 대가로 MCMC 표본은 서로 상관되어 있어, 신뢰할 만한 추정을 위해 더 많은 표본이 필요합니다.

MCMC 샘플러가 수렴했는지 어떻게 알 수 있나요?

가장 흔한 검사는 R-hat으로 보고되는 겔먼-루빈 진단입니다. 1.0에 가까운 값은 연쇄들이 동일한 분포로 수렴했음을 나타냅니다. 트레이스 플롯과 유효 표본 크기(ESS)도 유용합니다. 건전한 트레이스 플롯은 안정된 평균 주변의 무작위 잡음처럼 보이며, 높은 ESS는 표본이 추정을 신뢰할 만큼 충분한 정보를 담고 있음을 의미합니다.

메트로폴리스-헤이스팅스와 해밀토니안 몬테카를로의 차이는 무엇인가요?

메트로폴리스-헤이스팅스는 현재 위치에 무작위 잡음을 더해 새 상태를 제안하는데, 목표 분포의 기하가 복잡하면 느릴 수 있습니다. 해밀토니안 몬테카를로는 기울기 정보를 활용해 현재 위치에서 멀지만 수용될 가능성이 높은 상태를 제안하므로, 고차원에서 훨씬 더 나은 탐색을 제공합니다. 현대 베이지안 워크플로에서는 대체로 HMC와 그 적응형 버전인 NUTS가 선호됩니다.

MCMC 대신 변분 추론을 써야 하는 때는 언제인가요?

정확도보다 속도와 확장성이 더 중요할 때입니다. MCMC는 고품질 표본을 제공하지만, 대규모 데이터셋과 고차원 모델에서는 확장성이 떨어집니다. 변분 추론은 더 단순한 분포를 적합해 사후분포를 근사하므로 훨씬 빠르지만, MCMC가 피하는 근사 오차를 도입합니다. 규모 있는 프로토타이핑이나 실시간 추론이 필요하다면 변분 추론이 그 타협을 할 가치가 있습니다.

주제

DataCamp로 배워보세요

tracks

강화 학습 in Python

12
복잡한 실제 환경을 탐색하고 LLM을 학습시킬 수 있는 모델을 만들기 위해 강화 학습(RL)의 기초를 익히세요.
자세히 보기Right Arrow
강좌 시작
더 보기Right Arrow