Markov Chain Monte Carlo (MCMC)를 평신도에게 어떻게 설명 하시겠습니까?


240

개념, 사용 이유 및 예일 수 있습니다.


14
여기에 주제에 대한 나의 마음에 드는 논문은 다음과 같습니다 citeseerx.ist.psu.edu/viewdoc/...

이 사이트 에는 MCMC와 유용한 링크의 멋진 그래픽 표현이 있습니다.
Sergey

3
MCMC 알고리즘을 이해하려면 실제로 사용되는 내용과 주어진 분포로 수렴하는 방법을 이해해야합니다. 나는 전체 직관과 응용 프로그램에 대해 블로그에 올렸습니다. 당신은 여기를 방문 할 수 있습니다 : mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
라훌 아가 왈

MCMC에 대한 자세한 설명이있는 다음 리포지토리를 참조하십시오. github.com/bashhwu/Sampling-based-inference/blob/master/…
Bashar Mohammad

답변:


223

먼저 마르코프 체인이 무엇인지 이해해야합니다. Wikipedia 의 다음 날씨 예를 고려하십시오 . 주어진 날의 날씨가 양지와 비의 두 가지 상태로만 분류 될 수 있다고 가정합니다. 과거 경험을 바탕으로 다음을 알고 있습니다.

P(Next day is Sunny|Given today is Rainy)=0.50

다음날 날씨가 맑거나 비가 오므로 다음과 같습니다.

P(Next day is Rainy|Given today is Rainy)=0.50

마찬가지로,

P(Next day is Rainy|Given today is Sunny)=0.10

따라서 다음과 같습니다.

P(Next day is Sunny|Given today is Sunny)=0.90

위의 4 개의 숫자는 다음과 같이 한 상태에서 다른 상태로 이동하는 날씨의 확률을 나타내는 전이 행렬로 간결하게 표현할 수 있습니다.

P=[SRS0.90.1R0.50.5]

우리는 다음과 같은 질문에 답할 수 있습니다.


Q1 : 오늘 날씨가 맑으면 내일 날씨는 어떻습니까?

A1 : 우리는 확실히 무슨 일이 일어날 지 모르기 때문에, 우리가 말할 수있는 가장 좋은 것은 비가 올 확률이 이고 비가 올 확률이 라는 것입니다.10 %90%10%


Q2 : 오늘부터 이틀은 어떻습니까?

A2 : 하루 예측 : 맑은, 비오는. 따라서 지금부터 이틀이 걸립니다.10 %90%10%

첫날은 화창 할 수 있고 다음날은 화창 할 수도 있습니다. 이런 일이 일어날 가능성은 다음과 같습니다 : .0.9×0.9

또는

첫날은 비가 올 수 있고 두 번째 날은 화창 할 수 있습니다. 이런 일이 일어날 가능성은 다음과 같습니다 : .0.1×0.5

따라서 이틀 동안 날씨가 화창 할 확률은 다음과 같습니다.

P(Sunny 2 days from now=0.9×0.9+0.1×0.5=0.81+0.05=0.86

마찬가지로 비가 올 확률은 다음과 같습니다.

P(Rainy 2 days from now=0.1×0.5+0.9×0.1=0.05+0.09=0.14


선형 대수 (전이 행렬)에서 이러한 계산은 한 단계에서 다음 단계로의 전이 (sunny-to-sunny ( ), sunny-to-rainy ( ), rainy-to-sunny ( ) 또는 계산 된 확률 로 비가 오는 비 ( ) :S 2 R R 2 S R 2 RS2SS2RR2SR2R

여기에 이미지 설명을 입력하십시오

이미지의 아랫 부분에서 우리 는 제로 시간 (현재 또는 비가 오는)에 대한 모든 상태 (써니 또는 비가 오는)에 대한 확률 (확률 질량 함수, )을 고려하여 미래 상태 ( 또는 ) 의 확률을 계산하는 방법을 봅니다 (현재 또는 간단한 행렬 곱셈으로 ).t + 2 P M F t 0t+1t+2PMFt0

이 같은 날씨를 예측 계속하면 당신은 결국 알 번째 일간의 일기 예보, 매우 큰 (예를 들어 다음 '평형'확률에 침전) :n 30nn30

P(Sunny)=0.833

P(Rainy)=0.167

즉, 번째 날과 번째 날에 대한 예측 은 동일하게 유지됩니다. 또한 '평형'확률이 오늘 날씨에 의존하지 않는지도 확인할 수 있습니다. 오늘 날씨가 맑거나 비가오다 고 가정하면 날씨에 대한 동일한 예측을 얻을 수 있습니다.n + 1nn+1

위의 예제는 상태 전이 확률이 여기서 논의하지 않을 몇 가지 조건을 만족하는 경우에만 작동합니다. 그러나이 'nice'Markov 체인의 다음 기능에 유의하십시오 (nice = 전환 확률이 조건을 충족 함).

초기 시작 상태에 관계없이 결국 상태의 평형 확률 분포에 도달합니다.

Markov Chain Monte Carlo는 다음과 같이 위 기능을 이용합니다.

목표 분포에서 무작위 추첨을 생성하려고합니다. 그런 다음 평형 확률 분포가 목표 분포가되도록 'nice'Markov 체인을 구성하는 방법을 식별합니다.

우리가 그러한 사슬을 만들 수 있다면 우리는 임의의 지점에서 임의로 시작하여 Markov 사슬을 여러 번 반복합니다 (예를 들어 날씨를 번 예측하는 방법 ). 결국, 우리가 생성하는 무승부는 마치 목표 분포에서 나온 것처럼 보입니다.n

그런 다음 Monte Carlo 구성 요소 인 초기 드로우 몇 개를 버린 후 드로우의 샘플 평균을 취하여 관심 수량 (예 : 평균)을 근사합니다.

'nice'Markov 체인 (예 : Gibbs sampler, Metropolis-Hastings 알고리즘)을 구성하는 방법에는 여러 가지가 있습니다.


2
잘 쓰여진 답변입니다. 그러나 전환 매트릭스가 논의되는 시점에서 평신도의 관심을 잃을 수도 있습니다.
rraadd88

1
좋은 대답입니다. 궁극적 목표는 관심의 양 (예 : 유추 된 매개 변수의 평균 또는 모드)을 결정하는 것입니다. 맞습니까?
오스틴 신

101

(독립 체인) Metropolis-Hastings 알고리즘에서 얻을 수있는 훌륭하고 간단한 직감이 있다고 생각합니다.

첫째, 목표는 무엇입니까? MCMC의 목표는 어떤 시점에서도 정확한 높이를 알 필요없이 확률 분포에서 표본을 추출하는 것입니다. MCMC가이를 달성하는 방법은 각 위치에서 소요되는 시간이 분포 높이에 비례하는 방식으로 해당 분포를 "돌아 다니는"것입니다. "방황"프로세스가 올바르게 설정되어 있으면이 비례 (소비 시간과 분포 높이 사이)를 달성 할 수 있습니다.

직관적으로, 우리가하고 싶은 것은 각 위치에서 소비 한 시간 (또는 채취 한 샘플 수)이 해당 위치의 표면 높이에 비례하는 방식으로 (얼룩 한) 표면을 걸어 다니는 것입니다. 예를 들어, 우리는 고도가 50m 인 근처 언덕에서하는 것보다 고도가 100m 인 언덕에서 두 배나 더 많은 시간을 보내고 싶습니다. 좋은 점은 표면의 점의 절대 높이를 모르더라도이 작업을 수행 할 수 있다는 것입니다. 우리가 알아야 할 것은 상대 높이입니다. 예를 들어 하나의 언덕 A가 언덕 B의 두 배보다 높으면 B에서 보내는 시간보다 A에서 두 배나 더 많은 시간을 보내고 싶습니다.

Metropolis-Hastings 알고리즘 (독립 체인 샘플링)의 가장 간단한 변형은 다음과 같이이를 달성합니다. 모든 (이산 된) 시간 단계에서, 우리는 임의의 새로운 "제안 된"위치를 선택합니다 (전체 표면에 걸쳐 균일하게 선택됨). 제안 된 위치가 현재 서있는 위치보다 높으면 이동하십시오. 제안 된 위치가 더 낮 으면 확률 p가있는 새 위치로 이동하십시오. 여기서 p는 해당 위치의 높이와 현재 위치의 높이의 비율입니다. (즉, 머리가 나올 확률 p로 동전을 뒤집습니다. 머리가 올라 오면 새 위치로 이동하십시오. 매 단계마다 당신이 있었던 위치의 목록을 유지하십시오. 그러면 그 목록은 표면의 각 부분에서 (비정상적으로) 적당한 시간의 시간을 갖습니다.

새로운 위치를 제안하기위한보다 복잡한 계획과이를 수용하는 규칙이 있지만 기본 아이디어는 여전히 다음과 같습니다. (1) 새로운 "제안 된"위치를 선택합니다. (2) 현재 위치와 비교하여 해당 위치가 얼마나 높거나 낮은 지 파악합니다. (3) 위치의 높이에 비례하여 시간을 소비한다는 전반적인 목표를 존중하는 방식으로 해당 위치에 배치하거나 그 위치로 이동합니다.

이것이 유용한 무엇입니까? A가 알려지지 않은 상수 인 A * P (날씨)를 평가할 수있는 날씨의 확률 모델을 가정 해 봅시다. (이것은 종종 발생합니다-많은 모델이 A가 무엇인지 결정할 수없는 방식으로 공식화하는 것이 편리합니다). 따라서 우리는 P ( "rainrain")를 정확하게 평가할 수 없습니다. 그러나 MCMC 샘플러를 잠시 동안 실행 한 다음 "내일 비"상태에있는 샘플의 일부 (또는 "위치")를 물어볼 수 있습니다. 이 비율은 (모델 기반) 확률 론적 일기 예보가 될 것입니다.


6
+1. 내 생각에, '방황하는 것'은이 페이지에 열거 된 것들 중에서 가장 직관적 인 비유입니다.
Zhubarb

"언제나 정확한 높이를 알 필요없이"MCMC의 핵심 제한은 아닙니다.
JeremyKun

MH가하는 일을 이해하기 위해 많은 시간을 할애 할 필요가 없도록이 설명이 교과서에 있기를 바랍니다.

89

아마 다음과 같이 말할 것입니다 :

"언제나 확률에 대해 이야기하고 싶을 때, 우리는 밀도를 실제로 통합하고 있습니다. 베이지안 분석에서 우리가 생각 해낸 많은 밀도는 분석적으로 다루기 힘든 것이 아닙니다. 우리가하는 일은 랜덤 변수를 많이 시뮬레이션 한 다음 시뮬레이션 된 난수에서 확률을 계산하는 것입니다 .X가 10보다 작을 확률을 알고 싶다면 시뮬레이션 된 랜덤 변수 결과의 비율이 10보다 작고이를 추정치로 사용합니다 .. "몬테 카를로"부분, 이것은 임의의 숫자를 기반으로 한 확률의 추정치입니다. 본질적으로 무작위.

"왜"Markov Chain "입니까? 특정 기술 조건에서는 시뮬레이션하려는 랜덤 변수와 동일한 제한 분포를 갖는 메모리가없는 프로세스 (일명 Markovian 프로세스)를 생성 할 수 있습니다. 상관 된 난수를 생성하는 여러 종류의 시뮬레이션 프로세스 (해당 숫자의 현재 값만 기준)는 결과를 충분히 모은 후에는 " 마치 당신이 알고 싶은 복잡한 분포에서 독립적 인 표본을 추출 할 수있었습니다.

"예를 들어, 표준 정규 확률 변수가 0.5보다 작을 확률을 추정하려면 표준 정규 분포에서 10 만 개의 독립적 인 실현을 생성하고 0.5보다 작은 수를 세면됩니다. 10000 개의 총 샘플 중 0.5 미만; P (Z <0.5)에 대한 나의 추정치는 0.6905로 실제 값과 크게 다르지 않습니다 .Monte Carlo 추정치입니다.

내가 절차에서 얻은 숫자 목록은 정상적인 무작위 변수를 생성하는 무언가에서 많은 수의 그림처럼 배포됩니다. 이것은 표준 정규 랜덤 변수에 대한 Markov Chain Monte Carlo 시뮬레이션을 제공합니다. 이것을 확률 추정에 사용한 경우 MCMC 추정치입니다. "


7
좋은 설명이지만 비 기술적 인 평신도에게는 적합하지 않습니다. OP가 통계 분석을 위해 당신을 고용 한 MBA에게 설명하는 방법을 알고 싶어했다고 생각합니다. 기껏해야 표준 편차의 개념을 이해하는 사람에게 MCMC를 어떻게 설명하겠습니까 (분산이 너무 추상적 일 수 있음)?
Harlan

10
@Harlan : 스태핑하기 어려운 라인입니다. 누군가가 무작위 변수가 무엇인지 모르고 확률을 추정하고 밀도 함수에 대한 희미한 아이디어를 원할 경우 MCMC의 방법 또는 이유를 의미있게 설명하는 것이 불가능 하다고 생각합니다 그들에게는 "무엇"만,이 경우에는 "코인을 많이 뒤집어 머리에 떨어질 확률을 추정하는 것과 같이 시뮬레이션으로 불가능한 문제를 수치 적으로 해결하는 방법"으로 귀결됩니다.
Rich

1
마지막 단락에 +1 최소한의 기술로 아이디어를 잘 전달합니다.
whuber

멋진 설명. 나는 이것이 기술이 아닌 사람에게 좋습니다 생각합니다.
SmallChess

의심-마지막 단락에서 숫자 목록이 정규 분포에서 나온 것처럼 보이는 이유는 무엇입니까? 중앙 한계 정리 때문입니까? 또한 다른 분포를 시뮬레이션하려면 어떻게해야합니까?
Manoj Kumar

37

보드 게임 독점에서 친구를 이길 수있는 더 나은 전략을 찾고 싶다고 상상해보십시오. 사람들이 가장 많이 찾는 속성은 무엇입니까? 답은 보드의 구조, 게임 규칙 및 두 개의 주사위 던지기에 달려 있습니다.

질문에 대답하는 한 가지 방법은 이것입니다. 주사위를 던져 규칙을 따라 보드 주위에 하나의 조각을 따르십시오. 각 부동산에 착륙 한 횟수를 계산하십시오 (또는 컴퓨터가 귀하를 대신하여 작업하도록 프로그램하십시오). 결국, 인내심이 충분하거나 컴퓨터에서 규칙을 충분히 잘 프로그래밍 한 경우 어떤 비즈니스가 가장 많은 부동산인지에 대한 좋은 그림을 얻게됩니다. 이것은 더 자주 승리하는 데 도움이됩니다.

당신이 한 일은 Markov Chain Monte Carlo (MCMC) 분석입니다. 위원회는 규칙을 정의합니다. 다음에 착륙하는 위치는 현재 위치에 따라 달라지며 이전의 위치가 아니라 특정 확률은 두 개의 주사위 던지기의 분포에 의해 결정됩니다. MCMC는이 아이디어를 내일의 날씨가 어떻거나 가스 분자에 의해 무작위로 부풀어 오른 꽃가루 곡물과 같은 수학적 또는 물리적 시스템에 적용됩니다.


1
설명은 간단한 Monte Carlo Simulation처럼 들리지만 Markov Chain은 어떻습니까? Markov Chain은이 Monte Carlo Simulation과 어떤 관련이 있습니까?
Emran Hussain

@ Emran Graham Cookson의 대답은 독점과 Markov 체인 사이의 연결을 이미 설명하고있는 것 같습니다.
Glen_b

독점은 각 속성 / 공간이 노드 / 상태 인 Markov 체인으로 모델링 할 수 있습니다. 특정 공간에있을 때 다음 12 개의 공간으로 이동할 가능성이 다양합니다 (2 개의 주사위를 사용하는 경우). 이들은 Markov 체인의 모서리 / 연결입니다. 그것은 각 에지 / 연결의 가능성을 해결하기 쉽습니다 : gwydir.demon.co.uk/jo/probability/calcdice.htm#sum이

32

여기에 비공식적이고 조잡한 설명을위한 최선의 시도가 있습니다.

Markov Chain은 미래가 프로세스의 현재 상태에만 의존하고 과거가 아니라 메모리가없는 속성을 갖는 임의의 프로세스입니다. 랜덤 프로세스의 예로 증권 거래소가 있습니다. Markov Chain의 예는 미래 포지션 (다이를 굴린 후)이 이전 포지션이 아닌 롤 이전에서 시작한 위치에만 의존하는 독점 또는 뱀 및 사다리와 같은 보드 게임입니다. 마르코프 체인의 교과서 예는 "주 정거장"입니다. 취한 사람을 왼쪽이나 오른쪽으로 한 걸음 만 움직일 수 있다고 상상해보십시오. 음주는 같은 확률로 왼쪽이나 오른쪽으로 움직입니다. 이것은 마코프 체인으로 취한 사람의 미래 / 다음 위치는 그가 현재있는 위치에만 의존합니다.

Monte Carlo 방법은 연구중인 일부 프로세스에서 무작위로 샘플링하는 계산 알고리즘 (단순한 명령 세트)입니다. 결정적으로 찾기에는 너무 어렵거나 시간이 많이 걸리는 것을 추정하는 방법입니다. 그것들은 기본적으로 어떤 수학적 또는 물리적 과정에 대한 컴퓨터 시뮬레이션의 한 형태입니다. 몬테카를로 모니 커는 카지노와 난수 생성의 비유에서 비롯됩니다. 이전의 보드 게임 예제로 돌아가서 Monopoly 보드의 일부 속성이 다른 속성보다 더 자주 방문되는지 알고 싶습니다. 몬테카를로 실험은 주사위를 반복적으로 굴리고 각 부동산에 착륙 한 횟수를 세는 것을 포함합니다. 수치 적분 계산에도 사용할 수 있습니다. (비공식적으로, 우리는 적분을 일부 함수의 그래프 아래 영역으로 생각할 수 있습니다. ) Monte Carlo 통합은 임의의 함수 점 샘플을 취하고 이러한 다양한 점에서 일부 평균 유형을 계산하여 고차원 함수에서 훌륭하게 작동합니다. 표본 크기를 늘리면 많은 수의 법칙에 따라 점점 더 많은 함수를 포함하여 근사 정확도를 높일 수 있습니다.

이 두 개념은 일반적인 문제를 해결하기 위해 다차원 적분을 계산해야하는 베이지안 추론, 계산 생물학 등과 같은 영역에서 어려운 문제를 해결하기 위해 함께 사용할 수 있습니다. 아이디어는 여러 단계 후에 원하는 확률 분포로 수렴되는 Markov Chain을 구성하는 것입니다. 다수의 단계 후 체인의 상태는 원하는 분포로부터 샘플로 사용되며 공정은 반복된다. Markov Chain을 생성하기 위해 다른 기술을 사용하는 많은 MCMC 알고리즘이 있습니다. 일반적으로 Metropolis-Hastings와 Gibbs Sampler가 있습니다.


1
실제로 좋은 설명입니다. 하나의 혼동 만 해결되지 않습니다. 당신이 말했듯이, "아이디어는 원하는 확률 분포로 수렴되는 Markov Chain을 만드는 것입니다." 우리가 이미 주에 대한 Stead State Probability Distribution을 알고있는 것처럼 들리는데 왜 Markov 체인을 구성해야합니까? Markov chain의 목적은 우리가 이미 처음에 보유한 정상 상태 분포를 제공하는 것입니다. 의도하지 않는 한, 현재 상태를 기반으로 n + 1의 상태 확률을 계산하려면 Markov Chain을 가져와야합니다.
Emran Hussain

16

해커를위한 베이지안 방법 에서 발췌

베이지안 풍경

미지수 로 베이지안 추론 문제를 설정할 때 , 우리는 이전 분포가 존재할 차원 공간을 암시 적으로 생성합니다 . 공간과 연관된 추가 공간은 공간의 표면 또는 곡선 으로 묘사 할 수있는 추가 차원 입니다. 이는 특정 지점 의 사전 확률 을 반영합니다 . 공간의 표면은 이전 분포에 의해 정의됩니다. 예를 들어, 두 개의 미지수 과 가 있고 모두 [0,5]에서 균일 한 경우 생성 된 공간은 길이가 5의 제곱이고 표면은 사각형의 꼭대기에있는 평면입니다 (모든 점을 나타냄) 똑같이 가능합니다).N p 1 p 2NNp1p2

또는 두 우선 순위가 및 인 경우 공간은 모두 2 차원 평면의 postive 수이며, 이전에 의해 유도 된 표면은 물처럼 보입니다. 낙하 점 (0,0)에서 시작하여 양수 위로 흐릅니다.경험치 ( 10 )Exp(3)Exp(10)

아래 시각화는이를 보여줍니다. 색상이 진한 빨강 일수록 미지수가 해당 위치에있을 확률이 높습니다. 반대로, 진한 파란색 영역은 우리의 이전 우선 순위가 미지의 존재에게 매우 낮은 확률을 할당한다는 것을 나타냅니다.

여기에 이미지 설명을 입력하십시오

이것은 뇌가 표면을 잘 이해할 수있는 2D 공간의 간단한 예입니다. 실제로, 우리의 이전에 의해 생성 된 공간과 표면은 훨씬 더 높은 차원 일 수 있습니다.

이러한 표면 이 미지수에 대한 이전 분포 를 설명하면 데이터 관찰 한 후 공간에 어떤 일이 발생합니까 ? 데이터 는 공간을 변경하지 않지만 실제 매개 변수가있는 위치를 반영하기 위해 표면의 패브릭을 잡아 당겨 늘려서 공간의 표면을 변경합니다 . 더 많은 데이터는 더 많은 당기고 스트레칭을 의미하며, 우리의 원래 모양은 새로 형성된 모양에 비해 엉망이거나 중요하지 않습니다. 데이터가 적고 원래 모양이 더 많습니다. 어쨌든 결과 표면은 사후 분포를 나타 냅니다. 불행히도 이것을 더 큰 차원으로 시각화하는 것은 불가능하다는 것을 다시 강조해야합니다. 2 차원의 경우 데이터는 본질적으로XXX키 큰 산 을 만들기 위해 원래 표면을 위로 올립니다 . 밀어 올리는 양은 이전 확률에 의해 저항되므로 이전 확률이 적을수록 더 많은 저항을 의미합니다. 따라서 위의 두 배 지수 우선 경우, (0,0) 모서리 근처에서 분출 할 수있는 산 (또는 여러 산)은 (5,5)에 더 가까운 분출 산보다 훨씬 높을 것입니다. (5,5). 산 또는 더 일반적으로 산 범위는 실제 매개 변수가 발견 될 수있는 사후 확률을 반영합니다.

위에서 언급 한 선행 사항 이 두 포아송 분포의 서로 다른 모수 를 나타냅니다 . 우리는 몇 가지 데이터 포인트를 관찰하고 새로운 풍경을 시각화합니다.λ

여기에 이미지 설명을 입력하십시오

왼쪽의 플롯은 의 변형 된 풍경이고 오른쪽의 플롯은 기하 급수적 인 이전의 변형 된 풍경입니다. 후방 풍경은 서로 다르게 보입니다. 지수 우선 풍경은 오른쪽 상단 모서리의 값에 사후 가중치가 거의 적용되지 않습니다. 이는 이전 가중치가 그다지 많지 않기 때문입니다. 또한 가장 진한 빨간색에 해당하는 최고점은 지수의 경우 (0,0)으로 편향되며, 이는 (0,0) 코너에 더 많은 사전 wieght를 넣기 전에 기하 급수적으로 계산 된 결과입니다.Uniform(0,5)

검은 점은 실제 매개 변수를 나타냅니다. 1 개의 샘플 포인트가 있어도 위에서 시뮬레이션 한대로 산은 실제 매개 변수를 포함하려고 시도합니다. 물론, 표본 크기가 1 인 추론은 엄청나게 순진하며, 그러한 작은 표본 크기를 선택하는 것은 단지 예시 일뿐입니다.

MCMC를 사용하여 풍경 탐험

우리는 이전 표면에 의해 생성 된 변형 된 후방 공간을 탐색하고 후방 산맥을 찾기 위해 데이터를 관찰해야한다. 그러나, 우리는 순진 공간을 검색 할 수 없습니다 : 모든 컴퓨터 과학자 통과하는 것을 당신에게 말할 것이다 차원 공간 크기에 기하 급수적으로 어려운 : 공간의 크기가 빠르게 불어 업 우리가 증가함에 따라 (참조 차원의 저주 ). 이 숨겨진 산을 찾으려면 어떤 희망이 있습니까? MCMC의 기본 개념은 공간을 지능적으로 검색하는 것입니다. "검색"은 특정 대상을 찾고 있음을 의미하며 MCMC가 수행하는 작업에 대한 정확한 설명이 아닐 수 있습니다. 리콜 : MCMC는 샘플을 반환N NNNN분포 자체가 아니라 후방 분포에서 우리의 산악 비유를 한계까지 확장 한 MCMC는 "내가 찾고있는 산에서 발견 한이 자갈은 얼마나 될까?" 원래 산. MCMC 및 PyMC 링고에서 반환 된 "조약"시퀀스는 더 자주 추적 이라고하는 샘플 입니다.

MCMC가 지능적으로 검색한다고 말하면 MCMC가 후부 확률이 높은 영역으로 수렴 되기를 희망 합니다. MCMC는 주변 위치를 탐색하고 더 높은 확률로 영역으로 이동하여이를 수행합니다. 다시, "수렴"은 MCMC의 진행을 나타내는 정확한 용어가 아닙니다. 수렴은 일반적으로 공간의 한 지점으로 이동하는 것을 의미하지만 MCMC는 공간의 더 넓은 영역 으로 이동하고 해당 영역을 임의로 걸어가 해당 영역에서 샘플을 수집합니다.

처음에는 수천 개의 샘플을 사용자에게 반환하는 것이 사후 분포를 설명하는 비효율적 인 방법 인 것처럼 들릴 수 있습니다. 나는 이것이 매우 효율적이라고 주장합니다. 대체 가능성을 고려하십시오.

  1. "산 범위"에 대한 수학적 공식을 반환하는 것은 임의의 피크와 밸리를 갖는 N- 차원 표면을 기술하는 것을 포함 할 것이다.
  2. 풍경의 "피크"를 반환하는 것은 수학적으로 가능하고 가장 높은 지점으로 할 수있는 합리적인 일이 미지의 가장 추정 가능한 추정치에 해당하며, 이전에 주장했던 풍경의 모양을 무시합니다. 미지의.

계산상의 이유 외에도 샘플을 반환하는 가장 큰 이유는 다루기 어려운 문제를 해결하기 위해 큰 수의 법칙을 쉽게 사용할 수 있기 때문입니다 . 다음 장에서는이 토론을 연기합니다.

MCMC를 수행하는 알고리즘

MCMC를 수행하는 많은 알고리즘이 있습니다. 간단히 말해 대부분의 알고리즘은 다음과 같이 높은 수준으로 표현 될 수 있습니다.

1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data 
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.

이런 식으로 우리는 사후 분포가 존재하는 지역을 향한 일반적인 방향으로 이동하고, 여행 중에 약간의 샘플을 수집합니다. 사후 분포에 도달하면 모두 사후 분포에 속하는 샘플을 쉽게 수집 할 수 있습니다.

MCMC 알고리즘의 현재 위치가 확률이 매우 낮은 영역에있는 경우 (일반적으로 공간의 임의 위치에서) 알고리즘이 시작될 때와 같이 알고리즘은 후자가 아닌 위치에서 이동 합니다. 근처의 다른 모든 것보다 낫습니다. 따라서 알고리즘의 첫 번째 움직임은 후부를 반영하지 않습니다.


2
나는 문제가 베이지안 추론이 아니라 구체적으로 MCMC와 관련이 있다는 것을 이해하지만, 베이지안 풍경의 맥락에서 나는 MCMC가 매우 이해하기 쉽다고 생각한다.
Cam.Davidson.Pilon

10

통계 / 확률 교재, 위키 백과 등에서 많은 답을 얻을 수 있습니다. 나는 그들이 마케팅 부서에 있다고 생각합니다. 내가 그들에게 기술적 인 어떤 것을 설명해야한다면, "쇼하지 말아라"라는 규칙을 적용한다. 그 규칙을 염두에두고 아마도 이런 식으로 보여줄 것입니다.

여기서 아이디어 는 침묵하는 e로 끝나는 단어에 엔딩을 추가 할 때 마지막 e를 삭제하는 것과 같이 수백 (수천?)의 규칙을 모두 배우지 않고 철자를 가르 칠 수있는 알고리즘을 코딩하는 것입니다. 결말은 모음으로 시작하는 경우 . 작동하지 않는 한 가지 이유는 해당 규칙을 모르기 때문입니다 (방금 언급 한 규칙이 올바른지조차 확실하지 않습니다). 대신 철자가 올바른 철자 단어를 많이 보여주고 알고리즘에서 패턴 추출 및 패턴 인식에 관계없이 기계 학습의 본질 인 단어에서 규칙을 추출하도록하여 철자를 가르치도록하겠습니다. .

성공 기준은 알고리즘이 이전에는 볼 수 없었던 단어의 철자를 정확하게 입력하는 것입니다. 하나의 단어가 아니라 많은 단어를 철자하려고 시도하기 때문에 운이 좋은 추측에 속지 않을 것입니다).

한 시간 정도 전에 나는 훌륭한 프로젝트 구텐베르크 사이트 인 허먼 헤세 (Herman Hesse) 소설 Siddhartha 에서 (일반 텍스트 파일로) 다운로드했다 . 이 소설의 단어를 사용하여 알고리즘의 철자법을 가르칩니다.

그래서이 소설을 한 번에 세 글자 씩 스캔하는 알고리즘을 아래에 코딩했습니다 (각 단어는 끝에 공백이 있거나 단어의 끝에 하나의 추가 문자가 있습니다). 예를 들어, 문자 'q'는 거의 항상 'u'가 뒤 따릅니다. 시퀀스 'ty'는 일반적으로 단어의 끝에서 발생합니다. z는 거의 그렇지 않습니다. (참고 : 완전한 문장으로 말하도록 훈련시키기 위해 전체 단어를 쉽게 제공 할 수있었습니다. 정확히 동일한 아이디어, 코드를 약간 조정하면됩니다.)

이 중 어느 것도 MCMC와 관련이 없으며 훈련 후 발생합니다. 알고리즘에 임의의 임의의 문자 (시드로)를 주면 '단어'가 형성되기 시작합니다. 알고리즘은 어떻게 단어를 구축합니까? 블록 'qua'가 있다고 상상해보십시오. 다음에 어떤 편지를 추가합니까? 훈련 과정에서이 알고리즘은 소설 속의 수천 단어 모두에서 거대한 l-eter-sequence 주파수 매트릭스 *를 구성했습니다. 이 행렬의 어딘가에는 3 글자 블록 'qua'와 시퀀스를 따라갈 수있는 문자의 빈도가 있습니다. 이 알고리즘은 해당 주파수를 기반으로 문자를 선택합니다. 따라서 알고리즘이 다음에 선택하는 문자는 워드 구성 대기열의 마지막 3 개에 따라 달라집니다.

이것이 Markov Chain Monte Carlo 알고리즘입니다.

아마도 그것이 어떻게 작동하는지 설명하는 가장 좋은 방법은 다른 수준의 훈련을 기반으로 결과를 보여주는 것입니다. 훈련 수준은 알고리즘이 소설을 통과하는 패스 수를 변경하여 다양합니다. 패스 수가 많을수록 문자 순서 주파수 매트릭스의 충실도가 높아집니다. 다음은 소설 'Siddharta'를 훈련 한 후 알고리즘에서 출력 된 100 자 문자열 형태의 결과입니다.


소설 Siddhartha를 통한 단일 패스 :

그 다음 whoicks 게르 모든 mothany 스탠드 arvid theartim 흐릿한 sullintionexpert 그의 sible 그의

(곧바로 거의 완벽한 웨일스 어를 구사하는 법을 배웠습니다. 나는 그것을 예상하지 못했습니다.)


소설을 두 번 지나간 후 ​​:

ack wor prenskinith show는 끔찍한 theatin land rhatingle이 ov 인 것을 보았습니다.


10 회 통과 후 :

그럼에도 불구하고 ack으로기도해야합니다. 지금 그녀의 개 레버 통증 발에 약한 기억이 아닙니다.


그리고 여기 코드가 있습니다 (파이썬에서는 MCMC 패키지를 사용하여 R 에서이 작업을 수행 할 수 있다고 확신합니다.이 중 3-4 줄에 몇 개가 있습니다)

def create_words_string(raw_string) :
  """ in case I wanted to use training data in sentence/paragraph form; 
      this function will parse a raw text string into a nice list of words;
      filtering: keep only words having  more than 3 letters and remove 
      punctuation, etc.
  """
  pattern = r'\b[A-Za-z]{3,}\b'
  pat_obj = re.compile(pattern)
  words = [ word.lower() for word in pat_obj.findall(raw_string) ]
  pattern = r'\b[vixlm]+\b'
  pat_obj = re.compile(pattern)
  return " ".join([ word for word in words if not pat_obj.search(word) ])

def create_markov_dict(words_string):
  # initialize variables
  wb1, wb2, wb3 = " ", " ", " "
  l1, l2, l3 = wb1, wb2, wb3
  dx = {}
  for ch in words_string :
    dx.setdefault( (l1, l2, l3), [] ).append(ch)
    l1, l2, l3 = l2, l3, ch
  return dx

def generate_newtext(markov_dict) :
  simulated_text = ""
  l1, l2, l3 = " ", " ", " "
  for c in range(100) :
    next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
    simulated_text += next_letter
    l1, l2, l3 = l2, l3, next_letter
  return simulated_text

if __name__=="__main__" :
  # n = number of passes through the training text
  n = 1
  q1 = create_words_string(n * raw_str)
  q2 = create_markov_dict(q1)
  q3 = generate_newtext(q2)
  print(q3)

12
영어 철자법을위한 Markov 모델을 작성하여 데이터에 맞 춥니 다. 그러나 적합 모델의 샘플링은 MCMC 가 아닙니다 . (샘플에서 "원하는 분포"는 무엇입니까? 모델이 훈련 후에도 실수를 범하기 때문에 "영어로 올바르게 철자 한 단어"에 대한 분포가 아니라)는 분명합니다. 나는 운동을 비판한다는 의미는 아니다. 언어에 대한 Markov 체인 모델을 시연합니다. 그러나 MCMC의 핵심 아이디어 는 Markov Chain 을 설계 하여 평형 분포가 염두에 둔 분포에 해당하므로 이것이 달성되는지 확실하지 않습니다.
jpillow

2

MCMC는 일반적으로 조악한 Monte Carlo 시뮬레이션 기법의 대안으로 사용됩니다. MCMC와 다른 Monte Carlo 기술은 모두 어려운 적분을 평가하는 데 사용되지만 MCMC가 더 일반적으로 사용될 수 있습니다.

예를 들어 통계의 일반적인 문제는 일부 확률 적 / 확률 적 모델과 관련된 평균 결과를 계산하는 것입니다. MCMC와 Monte Carlo 기술은 모두 실제 평균을 추정하는 데 사용할 수있는 시뮬레이션 결과 시퀀스를 생성하여이 문제를 해결합니다.

MCMC와 몬테카를로 기법은 주어진 결과와 동일한 시뮬레이션의 장기 비율이 해당 결과의 모델링 된 확률과 동일 할 것입니다. 따라서 충분한 시뮬레이션을 생성하면 두 방법으로 생성 된 결과가 정확합니다.

* 나는 일반적으로 측정 가능한 세트에 대해 이야기해야하지만 평등 하다고 말합니다 . 그러나 평신도는 아마 이것에 관심이 없을 것입니다 *

그러나 조악한 몬테카를로 (Monte Carlo)는 모델링 된 분포에 따라 각각 독립적 인 많은 시뮬레이션을 생성하는 반면 MCMC는 장기적으로 각 결과를 원하는 빈도로 "방문"하는 랜덤 보행을 생성합니다.

따라서 MCMC의 요령은 원하는 장기 주파수로 각 결과를 "방문"하는 임의의 보행을 선택하는 것입니다.

간단한 예는 결과 "A"가 0.5이고 결과 "B"가 0.5라고 말하는 모델을 시뮬레이션하는 것입니다. 이 경우, "A"위치에서 무작위 보행을 시작하고 각 단계에서 확률 0.2 (또는 0보다 큰 다른 확률)로 다른 위치로 전환하도록 규정하면 큰 후 랜덤 워크가 단계의 대략 50 %에서 "A"와 "B"를 각각 방문했을 것입니다.

이것은 분명히 매우 지루한 예입니다. 그러나 MCMC는 표준 몬테 카를로 또는 다른 기술을 적용하기 어려운 상황에서 종종 적용 가능한 것으로 나타났습니다.

기본 내용 및 작동 원리에 대한 기사를 찾을 수 있습니다.

http://wellredd.uk/basics-markov-chain-monte-carlo/


우리는 질문과 답변의 형태로 고품질 통계 정보의 영구 저장소를 구축하려고합니다. 링크 로트에 종속되는 링크 전용 답변 을 피하려고 노력합니다 . 따라서 이것은 그 자체로 답변보다 더 많은 의견입니다. 가능하면 링크에서 정보 요약을 제공하여 정보를 확장 할 수 있습니까 (또는 정보를 주석으로 변환 할 수도 있음).
Glen_b

1

저는 DNA 증거를 해석하기 위해 완전히 연속적인 확률 유전자형 분석 소프트웨어를 사용하는 DNA 분석가이며 이것이 배심원에게 어떻게 작용하는지 설명해야합니다. 분명히, 우리는 지나치게 단순화했고, 이러한 단순화를 통해 전체적인 이해력 향상이라는 이름으로 특정 세부 사항의 정확성을 희생한다는 것을 알고 있습니다. 그러나이 과정이 학업 학위와 수년간의 전문적인 경험없이 DNA 해석에 어떻게 사용되는지 배심원의 맥락에서 그들은 요지를 얻습니다. :)

배경 :이 소프트웨어는 메트로폴리스 헤이스팅스 MCMC와 DNA 프로파일의 알려진 동작을 모방 한 생물학적 모델을 사용합니다 (모델은 알려지지 않은 사례에서 발생하는 범위를 나타내는 알려진 조건에서 많은 DNA 프로파일을 실험실에서 분석하여 생성 한 검증 데이터를 기반으로합니다). 8 개의 독립적 인 체인이 있으며 번인 및 사후 수락 증가를 재실행할지 여부를 결정하기 위해 수렴을 평가합니다 (기본 번인 100k 수락 및 사후 400k 수락)

MCMC에 대한 기소 / 방어에 의해 요청 될 때 : 우리는 그것이 마르코프 체인 Monte Carlo의 약자이며 복잡한 문제 해결에 사용되는 특별한 클래스 / 종류의 알고리즘을 나타내며 알고리즘은 일련의 절차 또는 루틴을 참조하는 멋진 단어라는 것을 설명합니다. mcmc 알고리즘은 솔루션을 제안하고 솔루션을 시뮬레이션 한 다음 시뮬레이션이 실제 증거 데이터를 얼마나 잘 반영하는지 평가하여 작동합니다. 증거 관찰에 잘 맞는 시뮬레이션은 제안 된 솔루션의 여러 반복 된 샘플링 / 추측에 비해 관측에 잘 맞지 않는 시뮬레이션 인 Markov 체인은 낮은 확률 솔루션에서 관측 된 증거 ​​프로파일을 더 잘 맞추고 설명하는 높은 확률 솔루션으로 이동합니다. 달성알고리즘이 새로운 제안을 샘플링 할 수있는 능력이 제한되어 있음을 의미합니다.

대도시 헤이스팅스에 대해 물었을 때 : 제안을 수락하거나 거부하는 의사 결정 과정을 설명하는 MCMC 알고리즘의 개선 사항을 설명합니다. 일반적으로 이는 "핫 / 콜드"어린이 게임과 유사하지만 " 배심원이 특히 어릴 때 오른쪽 또는 왼쪽으로 스 와이프하세요 !! : p 그러나 우리의 뜨거운 / 차가운 비유를 사용하여, 우리는 항상 뜨거운 추측을 받아들이고 때로는 차가운 추측을 시간의 일부를 받아들이고 때로는 차가운 추측을 받아들이는 목적으로 체인이 더 넓은 범위의 가능성을 샘플링하는 것입니다. 실제 평형 이전에 하나의 특정 제안을 고수하는 것에 반대

추가 / 명확하게 편집 : 뜨거운 / 차가운 비유를 통해 우리는 어린이 게임에서 리더가 방 안에서 목표물 / 면적을 선택하고 플레이어가 자신의 현재 순위 / 위치와 관련하여 어떤 방향으로 움직 일지 추측합니다. 지도자는 그들에게 자신의 위치를 ​​바꾸고, 추측이 좋으면 움직일 수있게하고, 감기 추측이라면 자신의 턴 / 위치를 잃게된다고 말합니다. 마찬가지로, 우리의 소프트웨어 내에서, 이동 / 수락 결정은 현재 개최 된 포지션의 확률과 비교할 때 제안의 확률에만 의존합니다 ... 그러나 목표는 어린이 게임의 리더에 의해 미리 정의 / 알려지는 반면 소프트웨어 내 대상은 사전 정의되어 있지 않으며 완전히 알려지지 않았습니다.

내가 말했듯이, 이해력을 향상시키기 위해 슈퍼 초급 기본적이고 기술적 세부 사항이 절대적으로 부족합니다. 중학교 수준의 교육에 대해 설명하려고 노력합니다. 자유롭게 제안하십시오. 내가 그들을 통합합니다.


0

이 질문은 광범위하지만 대답은 종종 매우 캐주얼합니다. 또는이 볼 수있는 논문 메트로폴리스 - 스팅 알고리즘 깁스 샘플링 메트로폴리스 - 내 - 깁스 보조 변수 방법, 슬라이스 샘플링 재귀 제안 방향 샘플링 Langevin의 포함 MCMC 알고리즘의 다양한 클래스의 간결한 수학적 설명을 제공 저자가 논의한 해밀턴 몬테 카를로, NUTS 샘플링, 의사 마진 메트로폴리스-해 스팅 알고리즘 및 의사 마진 해밀턴 몬테 카를로

신뢰할만한 리뷰가 여기에 있습니다.

stackexchange 형식으로 내용을 자세히 설명 할 시간이 더 있습니다.


0

f(x,y)=z=x2+2xy(x,y)f(x,y)f(x,y)

f(x,y,z,t,s,...,zzz)

이 비디오 (5:50부터 시작)에는 직관에 대한 설명이 아주 좋습니다.

이 그림에서 녹색 (다차원) 가지에있는 점을 샘플링한다고 가정합니다. 검은 수퍼 공간에 점을 던져 그 값을 확인하면 많은 샘플링 (탐색) 에너지가 낭비됩니다. 따라서 녹색 지점에 가까운 지점을 선택하기 위해 샘플링 전략 (자동화 가능)을 제어하는 ​​것이 더 합리적입니다. 우발적으로 (또는 제어 된) 한 번 쳐서 녹색 가지를 찾을 수 있으며, 나머지 샘플링 노력 (빨간색 점)이 생성됩니다. 빨강이 초록색 선에 끌리는 이유는 샘플링 엔진으로 작동하는 Markov 체인 전이 행렬 때문입니다.

평신도의 관점에서 보면 MCMC는 에너지 절약형 (저비용) 샘플링 방법으로, 특히 대규모의 '다크'(다차원) 공간에서 작업 할 때 에너지 절약형 (저비용) 샘플링 방법입니다.

여기에 이미지 설명을 입력하십시오


1
"layman"에 대한 다른 정의가 있다고 생각합니다
Neil McGuigan

하하하 "레이맨"을 위해 Monte-Carlo도 추가 할 수 있지만 샘플링 / Monte-Carlo는 문제가되지 않았습니다.
Amir
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.