素人にマルコフ連鎖モンテカルロ法(MCMC)をどのように説明しますか?


240

たぶんコンセプト、それが使われる理由、そして例です。


14
トピックに関する私のお気に入りの論文は以下のとおりです。citeseerx.ist.psu.edu

このサイトでは、MCMCのグラフィカルな表現と便利なリンクがいくつかあります。
セルゲイ

3
MCMCアルゴリズムを理解するには、実際に何に使用され、どのように特定の分布に収束するかを理解する必要があります。私はその全体の直感とアプリケーションについてブログに書いた。ここにアクセスできます:mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Rahul Agarwal

MCMCの詳細な説明が記載されている次のリポジトリを参照してください。github.com/bashhwu/Sampling-based-inference/blob/master/...
バシャールモハマド・

回答:


223

まず、マルコフ連鎖とは何かを理解する必要があります。ウィキペディアの次の天気の例を考えてみましょう。ある日の天気は、晴れと雨の2つの状態にのみ分類できるとします。過去の経験に基づいて、次のことを知っています。

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:今日から2日はどうですか?

A2: 1日の予測:晴れ、雨。したがって、2日後:10 90%10%

初日は晴れることができ、翌日は晴れることもあります。この出来事の可能性は:です。0.9×0.9

または

1日目は雨が降る可能性があり、2日目は晴れる可能性があります。この出来事の可能性は:です。0.1×0.5

したがって、2日間で天気が晴れになる確率は次のとおりです。

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


線形代数(遷移行列)では、これらの計算は、1つのステップから次のステップへの遷移のすべての順列(晴れから晴れ()、晴れから雨()、雨から晴れ()または雨から雨())と計算された確率:S2SS2RR2SR2R

ここに画像の説明を入力してください

画像の下部では、時間ゼロ(現在)のすべての状態(晴れまたは雨)の確率(確率質量関数、)が与えられると、将来の状態(または)の確率を計算する方法がわかりますまたは)単純な行列乗算として。t+1t+2PMFt0

このように天気を予測し続けると、最終的に日目の予測(は非常に大きい())が次の「平衡」確率に落ち着くことがわかります。nn30

P(Sunny)=0.833

そして

P(Rainy)=0.167

つまり、日目と目の予測は同じままです。さらに、「平衡」確率が今日の天気に依存しないことも確認できます。今日の天気が晴れているか雨であると仮定することから始めれば、天気について同じ予報を得るでしょう。nn+1

上記の例は、状態遷移の確率がここで説明しないいくつかの条件を満たしている場合にのみ機能します。しかし、この「素敵な」マルコフ連鎖の次の特徴に注意してください(素敵な=遷移確率は条件を満たす):

初期の開始状態に関係なく、最終的に状態の平衡確率分布に到達します。

マルコフ連鎖モンテカルロは、上記の機能を次のように活用します。

ターゲット分布からランダムドローを生成します。次に、平衡確率分布がターゲット分布になるように、「素敵な」マルコフ連鎖を構築する方法を特定します。

このようなチェーンを構築できる場合、ある時点から任意に開始し、マルコフチェーンを何度も繰り返します(天気を回予測する方法など)。最終的に、私たちが生成するドローは、ターゲット分布から来ているかのように見えます。n

次に、モンテカルロ成分であるいくつかの初期ドローを破棄した後、ドローのサンプル平均を取ることにより、対象の量(平均など)を概算します。

「素敵な」マルコフ連鎖を構築する方法はいくつかあります(Gibbsサンプラー、Metropolis-Hastingsアルゴリズムなど)。


2
うまく書かれた答えです。しかし、それはおそらく、遷移行列が議論される時点で素人の注意を失うでしょう。
rraadd88

1
素晴らしい答え。最終的な目標は、関心のある量(たとえば、推定パラメーターの平均またはモード)を決定することであるという事実について、以前(または詳細)に説明することが役立つと思います。これは正しいですよね?
オースティンシン

101

(独立チェーン)Metropolis-Hastingsアルゴリズムから得られる素晴らしく簡単な直観があると思います。

まず、目標は何ですか?MCMCの目標は、任意のポイントで正確な高さを知る必要なく、いくつかの確率分布からサンプルを取得することです。MCMCがこれを達成する方法は、各場所で費やされた時間が分布の高さに比例するように、その分布を「さまよう」ことです。「さまよう」プロセスが正しく設定されている場合、この比例関係(費やされた時間と分布の高さの間)が達成されていることを確認できます。

直感的には、各場所で費やす時間(または#サンプルを描画)がその場所の表面の高さに比例するように、(塊状の)表面を歩き回ります。したがって、たとえば、標高50mの近くの丘で行うのと比べて、標高100mの丘の上で2倍の時間を費やしたいと考えています。良い点は、サーフェス上のポイントの絶対的な高さがわからなくても、これができるということです。知る必要があるのは、相対的な高さだけです。たとえば、1つの丘Aが丘Bの2倍の高さである場合、Bで過ごす時間の2倍の時間をAで過ごすことになります。

Metropolis-Hastingsアルゴリズムの最も単純なバリアント(独立チェーンサンプリング)は、これを次のように実現します。すべての(離散)タイムステップで、ランダムな新しい「提案された」位置(サーフェス全体で均一に選択)を選択するとします。提案された場所が現在の場所よりも高い場合は、その場所に移動します。提案された場所が低い場合、確率pで新しい場所に移動します。ここで、pは現在の場所の高さに対するそのポイントの高さの比率です。(つまり、頭を獲得する確率pでコインを裏返します。頭に上がった場合は新しい場所に移動し、尾を引いた場合は私たちがいる場所に留まります)。すべてのタイムステップで行った場所のリストを保持します。そのリストは、(仮定的に)サーフェスの各部分で費やされた時間の適切な割合を持ちます。

新しい場所を提案するためのより複雑なスキームとそれらを受け入れるためのルールがありますが、基本的な考え方は次のとおりです。(1)新しい「提案された」場所を選択します。(2)その場所が現在の場所と比較してどれだけ高いか低いかを把握します。(3)場所の高さに比例して時間を費やすという全体的な目標を尊重する方法で、確率的にその場所に置かれるか移動する。

これは何に役立ちますか?A * P(weather)を評価できる天気の確率モデルがあるとします。Aは未知の定数です。(これはよく起こります-多くのモデルは、Aが何であるかを判断できないような方法で定式化するのに便利です)。したがって、P( "rain tomorrow")を正確に評価することはできません。ただし、MCMCサンプラーをしばらく実行してから、「雨の明日」状態になったサンプル(または「場所」)の割合を尋ねることができます。その割合は、(モデルベースの)確率的な天気予報になります。


6
+1。私の意見では、「さまよう」は、このページにリストされているものの中で最も直感的な類推です。
ジュバル

「どの点でも正確な高さを知る必要はありません」これはMCMCのコア制限ではありません。
ジェレミークン

この説明が教科書に載っていれば、MHが何をしているのかを理解するのにそれほど時間を費やす必要がありません。
月曜

89

私はおそらくこのようなことを言うでしょう:

「確率について話すときはいつでも、本当に密度を統合しています。ベイジアン分析では、私たちが思いつく密度の多くは分析的に扱いにくいものです。統合できるのは、統合できる場合のみです。 -かなりの苦労があるので、代わりに行うのは、ランダム変数を多くシミュレートし、シミュレートされた乱数から確率を計算することです。Xが10未満である確率を知りたい場合は、シミュレーションされたランダム変数の割合は10未満であり、それを推定値として使用します。これは、「モンテカルロ」部分であり、乱数に基づく確率の推定値です。本質的にランダム。

「なぜ「マルコフ連鎖」なのか?特定の技術的条件下では、シミュレーションしようとしているランダム変数と同じ制限分布を持つメモリレスプロセス(マルコフプロセスとも呼ばれる)を生成できるからです。相関乱数を生成するさまざまな種類のシミュレーションプロセス(それらの数値の現在の値のみに基づく)。十分な結果をプールすると、「山のように見える数字の山になる」ことが保証されます。 「あたかも」知りたい複雑な分布から何らかの形で独立したサンプルを取得することができました。

「たとえば、標準正規確率変数が0.5未満である確率を推定したい場合、標準正規分布から1万の独立した実現を生成し、0.5未満の数をカウントアップできます。合計サンプル10000のうち0.5未満で、P(Z <0.5)の推定値は0.6905で、実際の値からそれほど大きくはずれていません。

プロシージャから取得した数値のリストは、通常のランダム変数を生成するものからの多数のドローのように配布されます。これにより、標準正規確率変数のマルコフ連鎖モンテカルロシミュレーションが得られます。これを使用して確率を推定した場合、MCMCの推定になります。」


7
これは良い説明ですが、技術に詳しくない素人向けではありません。OPは、たとえば、統計分析を行うためにあなたを雇ったMBAに説明する方法を知りたかったのではないでしょうか。せいぜい標準偏差の概念を理解している人にMCMCをどのように説明しますか(ただし、分散は抽象的すぎるかもしれません)。
ハーラン

10
@ハーラン:それはまたがるのが難しい。誰かが少なくとも確率変数が何であるか、確率を推定したい理由、密度関数の漠然とした考えを少なくとも知らない場合、MCMCの方法または理由を有意義に説明することできないと思います。彼らにとっては、この場合は「コイン」を大量にひっくり返して頭に着く確率を見積もるなど、シミュレーションでは不可能な問題を数値的に解決する方法に要約される「何」だけです。
リッチ

1
最後の段落の+1。最小限の技術で、アイデアをうまく​​伝えます。
whuber

クールな説明。これは非技術者にとって素晴らしいことだと思います。
SmallChess

疑問-最後のパラグラフでは、なぜ数値のリストは正規分布から来ているように見えるのでしょうか?それは中央極限定理によるものですか?さらに、他の分布をシミュレートする場合はどうなりますか?
マノジクマール

37

ボードゲームMonopolyで友達を倒すためのより良い戦略を見つけたいと想像してください。ゲームで問題となるものを単純化して、質問に答えてください。人々がどの土地に最も上陸するのか?答えは、ボードの構造、ゲームのルール、2つのサイコロのスローに依存します。

質問に答える1つの方法はこれです。サイコロを投げてルールに従うとき、ボードの周りの1つのピースに従うだけです。各プロパティに何回着地したかをカウントします(またはコンピューターをプログラムしてジョブを実行します)。最終的に、十分な忍耐力を持っているか、コンピューターでルールを十分にプログラムしている場合、どのプロパティが最もビジネスを獲得するかについての良い構図を構築します。これにより、より頻繁に勝つことができます。

行ったことは、マルコフ連鎖モンテカルロ(MCMC)分析です。ボードはルールを定義します。次に着地する場所は、あなたが今いる場所ではなく、今いる場所にのみ依存し、特定の確率は2つのサイコロの投球の分布によって決まります。MCMCは、このアイデアを数学的または物理的なシステムに適用したもので、明日の天気や、花粉粒がガス分子によってランダムにバフェットされる場所などです。


1
説明は単純なモンテカルロシミュレーションのように聞こえますが、マルコフ連鎖はどうですか?マルコフ連鎖はこのモンテカルロシミュレーションとどのように関係していますか?
エムランフセイン

@Emran Graham Cooksonの答えは、すでにモノポリーとマルコフ連鎖の関係を説明しているようです。
-Glen_b

モノポリーは、各プロパティ/空間がノード/状態であるマルコフ連鎖としてモデル化できます。特定のスペースにいる場合、次の12スペースに移動するさまざまな確率があります(2つのサイコロを使用している場合)-これらはマルコフ連鎖のエッジ/接続です。各エッジ/接続の確率を計算

32

ここで、非公式で粗雑な説明に対する私の最善の試みを示します。

マルコフ連鎖は、未来は過去ではなくプロセスの現在の状態にのみ依存するという性質を持つランダムなプロセスです。つまり、それは無記憶です。ランダムプロセスの例として、証券取引所があります。マルコフチェーンの例としては、モノポリーやスネークとラダーのようなボードゲームがあり、(ダイスを転がした後の)将来の位置は、前の位置ではなく、ロール前から始めた場所のみに依存します。マルコフ連鎖の教科書の例は、「酔っぱらいの散歩」です。酔っ払っており、左右に1ペースしか動かない人を想像してみてください。酔っぱらいは同じ確率で左右に動きます。これは、酔っ払いの将来/次の位置が彼が現在いる場所にのみ依存するマルコフ連鎖です。

モンテカルロ法は、調査中のプロセスからランダムにサンプリングする計算アルゴリズム(単に命令のセット)です。それらは、決定論的に見つけるには難しすぎるか時間のかかるものを推定する方法です。これらは基本的に、数学的または物理的なプロセスのコンピューターシミュレーションの形式です。モンテカルロモニカーは、カジノと乱数生成の類似性から来ています。以前のボードゲームの例に戻って、モノポリーボードの一部のプロパティが他のプロパティよりも頻繁にアクセスされるかどうかを知りたいと思います。モンテカルロ実験では、サイコロを繰り返し転がし、各物件に着地した回数を数えます。数値積分の計算にも使用できます。(非常に非公式に、積分は何らかの関数のグラフの下の領域と考えることができます。)モンテカルロ積分は、関数のポイントのランダムなサンプルを取得し、これらのさまざまなポイントで何らかのタイプの平均を計算することにより、高次元の関数でうまく機能します。サンプル数を増やすことで、大きな数の法則は、より多くの関数をカバーすることにより、近似の精度を高めることができることを示しています。

これらの2つの概念を組み合わせて、一般的な問題を解決するために多次元積分を計算する必要があるベイズ推論、計算生物学などの分野でいくつかの難しい問題を解決できます。アイデアは、いくつかのステップの後に目的の確率分布に収束するマルコフ連鎖を構築することです。多数のステップを実行した後のチェーンの状態は、目的の分布からのサンプルとして使用され、プロセスが繰り返されます。マルコフ連鎖を生成するために異なる手法を使用する多くの異なるMCMCアルゴリズムがあります。一般的なものには、Metropolis-HastingsとGibbs Samplerが含まれます。


1
良い説明です。1つの混乱のみが解消されていません。あなたが言ったように、「アイデアは、望ましい確率分布に収束するマルコフ連鎖を構築することです。」州のStead State Probability Distributionを既に知っているように思えますが、なぜmarkovチェーンを構築する必要があるのでしょうか。マルコフ連鎖の目的は、私たちに定常状態の分布を提供することです。これは、そもそもすでに持っているものではありませんか?意図しない限り、現在の状態に基づいてn + 1の状態確率を計算するには、マルコフ連鎖を取得する必要があります。
エムランフセイン

16

ハッカーのためのベイジアン手法からの抜粋

ベイジアンの風景

NNp1p2

Exp(3)Exp(10)

以下の視覚化はこれを示しています。色が濃い赤色であるほど、その場所に未知のものが存在する可能性が高くなります。逆に、濃い青色の領域は、事前分布が存在する未知数に非常に低い確率を割り当てることを表しています。

ここに画像の説明を入力してください

これらは、脳が表面をよく理解できる2D空間の簡単な例です。実際には、事前分布によって生成される空間とサーフェスは、はるかに高い次元になる可能性があります。

XX元の表面を押し上げて高い山を作ります。押し上げる量は事前確率によって抵抗されるため、事前確率が低いほど抵抗が大きくなります。したがって、上記の二重指数優先の場合、(0,0)コーナーの近くで噴出する可能性のある山(または複数の山)は、(5,5)の近くで噴出する山よりもはるかに高くなります。 (5,5)。山、またはより一般的には山の範囲は、真のパラメーターが見つかる可能性の高い事後確率を反映します。

λ

ここに画像の説明を入力してください

Uniform(0,5)

黒い点は真のパラメーターを表します。1つのサンプルポイントでも、上記でシミュレートしたように、山は真のパラメーターを含むように試みます。もちろん、サンプルサイズが1の推論は非常に単純であり、このような小さなサンプルサイズを選択することは単なる例示にすぎません。

MCMCを使用してランドスケープを探索する

NNN分布自体ではなく、事後分布から。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

ですから、統計/確率の教科書、ウィキペディアなどから言い換えられた答えがここにたくさんあります。彼らはマーケティング部門にいると思います。技術的なことを説明する必要がある場合は、「show do n't tell」というルールを適用します。そのルールを念頭に置いて、おそらくこのようなものを示します。

ここでのアイデアは、私が呪文に教えることができるアルゴリズムをコーディングしようとすることです- サイレントeで終わる単語にエンディングを追加するとき、最後のe語尾が母音で始まる場合。うまくいかない理由の1つは、これらのルールがわからないことです(今述べたルールが正しいかどうかさえわかりません)。代わりに、正しいスペルの単語の束を表示し、それらの単語からルールを抽出できるようにすることで、スペルを教えます。これは、アルゴリズムに関係なく、パターン学習とパターン認識にかかわらず、機械学習の本質です。

成功基準は、アルゴリズムがこれまでに見たことのない単語を正確に綴っています(純粋な偶然によって起こる可能性があることを認識していますが、マーケティング担当者には起こりませんので、無視します-そして、アルゴリズムを持っています1つの単語ではなく、多くの単語を綴ろうとするため、いくつかの幸運な推測に惑わされることはないでしょう。

1時間ほど前、優れたProject Gutenberg SiteであるHerman Hesseの小説Siddharthaから(プレーンテキストファイルとして)ダウンロードしました。この小説の単語を使用して、アルゴリズムのつづり方を教えます。

そこで、この小説をスキャンする以下のアルゴリズムを一度に3文字ずつコーディングしました(各単語の末尾に1つの追加文字があり、これは「空白」または単語の末尾です)。3文字のシーケンスは多くの情報を提供します。たとえば、文字「q」の後には常に「u」が続きます。シーケンス「ty」は通常、単語の最後にあります。zはほとんどありません。(注:完全な文で話すようにトレーニングするために単語全体を簡単に入力することができます-まったく同じアイデアで、コードを少し調整するだけです)

ただし、トレーニング後にアルゴリズムにいくつかのランダムな文字(シードとして)を与え、「単語」の形成を開始すると、MCMCが関係しなくなります。アルゴリズムはどのように単語を作成しますか?ブロック「qua」があると想像してください。次に追加する文字は何ですか?トレーニング中に、アルゴリズムは小説の数千の単語すべてから大量のl * etter-sequence周波数行列*を構築しました。そのマトリックスのどこかに、3文字のブロック「qua」と、シーケンスに続く可能性のある文字の頻度があります。アルゴリズムは、後に続く可能性のある周波数に基づいて文字を選択します。そのため、アルゴリズムが次に選択する文字は、単語作成キューの最後の3つに依存します。

これがマルコフ連鎖モンテカルロアルゴリズムです。

おそらく、それがどのように機能するかを説明する最良の方法は、さまざまなレベルのトレーニングに基づいて結果を表示することだと思います。トレーニングレベルは、アルゴリズムが小説を通過する回数を変更することによって変化します。パスが多いほど、文字シーケンス周波数行列の忠実度が高くなります。以下は、小説「Siddharta」のトレーニング後の結果です。アルゴリズムによって出力される100文字の文字列の形式です。


小説Siddharthaの 1回のパス:

それから、whoicks ger wiff all mothany stand ar ar livid theartim mudded sullintionexpraid his sible

(まっすぐに、ほぼ完璧なウェールズ語を話すことを学びました。私はそれを予想していませんでした。)


小説を2回通過した後:

ack wor prenskinith show was twor seed th notheady theatin land rhatingle is the ov


10パス後:

にもかかわらず、ackで祈るべきである今、彼女の犬のレバーに水があります。


そして、ここにコードがあります(Pythonでは、これがRでMCMCパッケージを使用して実行できることはほぼ確実です。そのうちのいくつかは、わずか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
英語でのスペルのマルコフモデルを作成し、データに適合させました。ただし、適合モデルからのサンプリング MCMCではありません。(それがサンプリングする「望ましい分布」とは何ですか?明らかに、モデルはトレーニング後に間違いを犯しているため、「英語の正しいスペルの単語」の分布ではありません)。私は運動を批判するつもりはありません。これは、言語のマルコフ連鎖モデルの素晴らしいデモンストレーションです。しかし、MCMCの重要な考え方は、その平衡分布が、ユーザーが念頭に置いている分布に対応するようにマルコフ連鎖を設計することであり、これがそれを達成するかどうかは明らかではありません。
-jpillow

2

MCMCは通常、粗いモンテカルロシミュレーション手法の代替として使用されます。MCMCと他のモンテカルロ法の両方を使用して、難しい積分を評価しますが、MCMCはより一般的に使用できます。

たとえば、統計の一般的な問題は、確率的/確率的モデルに関連する平均結果を計算することです。MCMCとモンテカルロの両方の手法は、真の平均を推定するために使用できる一連のシミュレーション結果を生成することにより、この問題を解決します。

MCMCと粗モンテカルロ法の両方が機能するのは、与えられた結果に等しいシミュレーションの長期的な割合が、その結果のモデル化された確率に等しくなる*ためです。したがって、十分なシミュレーションを生成することにより、両方の方法で生成される結果は正確になります。

*私は平等と言いますが、一般的には測定可能なセットについて話す必要があります。しかし、素人はおそらくこれに興味がないでしょう*

ただし、粗雑なモンテカルロは、それぞれがモデル化された分布に従って分布する多くの独立したシミュレーションを生成することを伴いますが、MCMCは、長期的に所望の頻度で各結果を「訪れる」ランダムウォークを生成します。

したがって、MCMCの秘trickは、目的の長期的な頻度で各結果を「訪問」するランダムウォークを選択することです。

簡単な例は、結果「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アナリストであり、this審員にこれがどのように機能するかを説明する必要があります。確かに、私たちは過度に単純化しており、全体の理解を向上させるために、この単純化の一部が特定の詳細の正確性を犠牲にしていることに気付きます。しかし、学位や長年の専門的経験なしに、このプロセスがDNA解釈でどのように使用されるかを理解しているju審員の文脈の中で、彼らは要点を理解しています:)

背景:ソフトウェアは、メトロポリスヘイスティングスMCMCとDNAプロファイルの既知の動作を模倣する生物学的モデルを使用します(モデルは、未知のケースワークで遭遇する範囲を表す既知の条件から多くのDNAプロファイルを分析する実験室によって生成された検証データに基づいて構築されます)。8つの独立したチェーンがあり、収束を評価して、バーンインとポストの受け入れを増やして再実行するかどうかを決定します(デフォルトのバーンインは100k受け入れ、ポストは400k受け入れ)

MCMCについて検察/防衛機関から質問された場合:マルコフチェーンモンテカルロの略で、複雑な問題解決に使用される特別なクラス/種類のアルゴリズムを表し、アルゴリズムは一連の手順またはルーチンを指す単なる凝った言葉であることを説明しますコンピューターによって実行されます... mcmcアルゴリズムは、ソリューションを提案し、そのソリューションをシミュレートし、そのシミュレーションが観察されている実際のエビデンスデータをどれだけよく反映しているかによって動作します...エビデンス観察によく適合するシミュレーションは、観測にうまく適合しないシミュレーション...提案された解の多くの繰り返しサンプリング/推測にわたって、マルコフ連鎖は、最終的に平衡になるまで、観測された証拠プロファイルにより良く適合/説明する低確率解から高確率解に移動します達成、アルゴリズムは、新しい提案をサンプリングする能力が制限されており、確率が大幅に増加することを意味します

メトロポリスヘイスティングスについて尋ねられたとき、提案を受け入れるか拒否するかの意思決定プロセスを説明するMCMCアルゴリズムの改良版であると説明しています。審査員が特に若いときは、「右または左にスワイプ」!:pしかし、ホット/コールドの類推を使用して、常にホットな推測を受け入れ、時々コールド推測を受け入れ、時々コールド推測を受け入れることの目的を説明します。実際の均衡の前にある特定の提案に取り付かれることに反対

追加/明確化するために編集:ホット/コールドのアナロジーで、子供のゲームでは、リーダーが部屋内のターゲットオブジェクト/エリアを選択し、プレイヤーが現在の立っている/位置に対してどの方向に移動するかを推測しながら順番に行うことを説明します。リーダーは、ホットな推測の場合はポジションを変更する/移動するよう指示し、コールドの推測の場合はターンを失う/ポジションを維持するよう指示します。同様に、ソフトウェア内では、移動/承認の決定は、現在保持されている位置の確率と比較した提案の確率のみに依存します...しかし、ターゲットは子供のゲームのリーダーによって事前に定義/知られていますソフトウェア内のターゲットは事前定義されていません-完全に不明です(また、なぜ

私が言ったように、理解を向上させるための超基本的で絶対に技術的な詳細が欠けている-私たちは中学校レベルの教育について説明するよう努めています。気軽に提案してください。それらを組み込みます。


0

この質問は広範ですが、答えはしばしばかなりカジュアルです。また、あなたはこれを参照することができ、紙、ギブスサンプリング、メトロポリス・内・ギブスと補助変数法、スライスサンプリング、再帰的な提案、方向サンプリング、ランジュバンをメトロポリス-ヘイスティングスアルゴリズムを含む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から開始)には、非常に優れた直観が記載されています。

この図の緑(多次元)の枝にあるポイントをサンプリングしたいと想像してください。黒のスーパースペース全体にポイントを投げてその値を確認すると、多くのサンプリング(検索)エネルギーを消費しています。したがって、サンプリング戦略(自動化可能)を制御して、緑の枝(重要な場所)に近いポイントを選択する方が合理的です。緑の枝は、誤って(または制御されて)一度ヒットすることで見つけることができ、残りのサンプリング作業(赤い点)は後で生成されます。赤が緑の線に引き付けられる理由は、サンプリングエンジンとして機能するマルコフ連鎖遷移行列のためです。

素人の言葉で言えば、MCMCは、特に大規模で「暗い」(多次元)空間で作業する場合、省エネ(低コスト)のサンプリング方法です。

ここに画像の説明を入力してください


1
「素人」の定義が違うと思う
ニールマク

ははは。「素人」にもモンテカルロを追加できますが、サンプリング/モンテカルロは問題ではありませんでした。
アミール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.