For faster navigation, this Iframe is preloading the Wikiwand page for モンテカルロ法.

モンテカルロ法

モンテカルロ法モンテカルロほう: Monte Carlo methodMC)とはシミュレーション数値計算乱数を用いて行う手法の総称。元々は、中性子が物質中を動き回る様子を探るためにスタニスワフ・ウラムが考案しジョン・フォン・ノイマンにより命名された手法。カジノで有名な国家モナコ公国の4つの地区(カルティ)の1つであるモンテカルロから名付けられた。ランダム法とも呼ばれる。

計算理論

[編集]

計算理論の分野において、モンテカルロ法とは誤答する確率の上界が与えられる乱択アルゴリズム(ランダム・アルゴリズム)と定義される[1]。一例として素数判定問題におけるミラー-ラビン素数判定法がある。このアルゴリズムは与えられた数値が素数の場合は確実に Yes と答えるが、合成数の場合は非常に少ない確率ではあるが No と答えるべきところを Yes と答える場合がある。一般にモンテカルロ法は独立な乱択を用いて繰り返し、実行時間を犠牲にすれば誤答する確率をいくらでも小さくすることができる。またモンテカルロ法の中でも任意の入力に対して最大時間計算量の上界が入力サイズの多項式で与えられるものを効率的モンテカルロ法という[2]

なお、これとは対照的に理論上必ずしも終了するとは限らないが、もし答えが得られれば必ず正しい乱択アルゴリズムをラスベガス法と呼ぶ。

計算複雑性理論では、確率的チューリング機械によるモデル化によってモンテカルロ法を用いて解決できる問題のクラスをいくつか定義している。代表的なところでは RPBPPPP などがある。これらのクラスと PNP との関連性を解明していくことによって、モンテカルロ法のようにランダム性を含むアルゴリズムによって解ける問題の範囲が拡大しているのか(P ≠ BPP なのか)、それとも単に決定的アルゴリズムで解ける問題の多項式時間の次数を減らしているだけなのか(P=BPP なのか)は計算複雑性理論における主要課題の1つである。現在、NPPPRPNPであることはわかっているが BPPNPとの関係はわかっていない。

準モンテカルロ法

[編集]

一様乱数ではなく、超一様分布列英語版を使用する方法を準モンテカルロ法英語版という。乱数を利用するよりも収束が早くなる場合がある。ただし、純粋にランダムな方法ではないので、正解を得られる可能性が確率論的に低下する場合がある。

超一様分布列としては、以下などがある。

数値積分

[編集]
モンテカルロ法を円周率πの値の近似に適用した例。30,000点をランダムに置いたとき、πの推定量は実際の値から0.07%以下の誤差の範囲内にあった。

数値解析の分野においてはモンテカルロ法はよく確率を近似的に求める手法として使われる。n 回シミュレーションを行い、ある事象が m 回起これば、その事象の起こる確率は当然ながら m/n で近似される。試行回数が少なければ近似は荒く、試行回数が多ければよい近似となる。

また、この確率を利用すれば、積分(面積)の近似解を求めることが可能となる。領域 R の面積 S は、領域 R を含む面積 T の領域内でランダムに点を打ち、領域 R の中に入る確率 p をモンテカルロ法で求めれば、S = pT で近似される。

n 重積分

をサンプルサイズ N のモンテカルロ法で計算するには、0 以上 1 以下の値をとる n × N 個の一様乱数

を生成して、

とすれば、IN が積分の近似値となる。一様乱数を超一様分布列に置き換えると準モンテカルロ法になる。

これに層化抽出法を行うよう改良を加えた MISER 法や、加重サンプリングを行う VEGAS 法といった改良版のアルゴリズムがある。MISER 法では、積分範囲を分割し、それぞれの領域中でランダム・サンプリングを行い、被積分関数値の分散が最も大きくなる領域をより小さな領域に分割して、そこでさらにサンプリングを行うことで精度を上げる。VEGAS 法では、被積分関数値の大きな場所にサンプリング点を増やし、積分値に寄与の大きなところに集中することで精度を上げる。 積分の計算法には他に台形公式シンプソンの公式二重指数関数型数値積分公式等があるが、モンテカルロ法はこれらの手法より多次元問題の際に利用しやすく、誤差が少ない。

強化学習

[編集]

機械学習強化学習の文脈では、モンテカルロ法とは行動によって得られた報酬経験だけを頼りに状態価値、行動価値を推定する方法のことを指す[8]

統計学

[編集]

統計学におけるモンテカルロ法の1つとして、ブートストラップ法を参照。

乱数(列)の選択

[編集]

モンテカルロ法では状況に応じた乱数列の選択が重要である。また、結果の品質には使用する乱数の品質によるところがある。

擬似乱数列
擬似乱数列は初期状態によって未来の数列がすべて決定されるので、いわゆる「真にランダム」ではないが、シミュレーションなどでは(他に非決定的な要素が無ければ)再現性がある、という重要な特性がある。
物理乱数
真の乱数が必要な場合や、擬似乱数列生成系の初期状態の設定のために良質の乱数が必要な場合は、物理現象を利用して物理乱数(真性乱数)を生成するハードウェアを利用する(ダイオードのPN接合部に生じる熱雑音を利用する方法がよく使われる。放射性元素を使うものもある)。
超一様分布列
逆に規則性の強い数列であり、数値積分に用いられる[9]。超一様分布列を用いたモンテカルロ法を準モンテカルロ法という。超一様分布列のことを、低食い違い量列準乱数列[10]と呼ぶこともある。超一様分布列を数値積分に用いる目的は精度を高めることである。

精度

[編集]

また、精度の良い結果を得るためには多くの試行回数が必要となる。しかし、1回の試行に膨大な時間がかかる場合、多くの試行を行うことは物理的に不可能となる。そのため、モンテカルロ法の精度は1回の試行に掛かる時間にも制限を受ける。

数値積分の精度はサンプルサイズ N を増やすことによって、よくなることが確率論によって保証されている。サンプルが真にランダムな乱数列だった場合には、積分の値と近似値の誤差

は、N を無限大にしたときほとんど確実に 0 に収束する(大数の法則)。この収束の速さに関しては、

となる(重複対数の法則英語版)。すなわち、精度を10倍にするためには100倍のサンプルが必要となる。

これに対して、準モンテカルロ法では

となるので、精度を10倍にするためには約10倍のサンプルでよい。これが、準モンテカルロ法の利点である[9]。 ただし多次元の積分を行う場合には次元 n が大きくなるので実際問題として効果が薄くなり、単純なモンテカルロの方が良い結果を与えることが多い。


脚注

[編集]
  1. ^ Motwani & Raghavan 1995, p. 9.
  2. ^ Motwani & Raghavan 1995, p. 10.
  3. ^ : van der Corput sequence
  4. ^ : Halton sequence
  5. ^ : Sobol sequence
  6. ^ : Niederreiter sequence
  7. ^ : Faure sequence
  8. ^ Sutton, Richard S. (1998). Reinforcement Learning: An Introduction. p. 91. ISBN 978-0262039246. http://incompleteideas.net/book/RLbook2018trimmed.pdf 
  9. ^ a b 奥村晴彦『C言語による最新アルゴリズム事典』技術評論社、1991年、280-281頁。ISBN 4-87408-414-1 
  10. ^ : quasi-random sequence

参考文献

[編集]
出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2015年10月)

関連項目

[編集]
{{bottomLinkPreText}} {{bottomLinkText}}
モンテカルロ法
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?