【機械学習】モンテカルロ法(Monte Carlo method)について。

モンテカルロ法(Monte Carlo method)とは、シュミレーションや数値計算を乱数を用いて行う手法のことです。

中性子が物質中を動き回る様子を探るために、ジョン・フォン・ノイマンという人により考案されました。

また、モンテカルロ法という名前は、カジノの都市国家であるモナコ公国の4つの地区の一つであるモンテ・カルロから名づけられました。

ゲーム用モンテカルロ法のアルゴリズム

モンテカルロ法は、ほんとうにシンプルなアルゴリズムで実装することができます。原始的なゲーム用モンテカルロ法は、以下の手順になります。

  1. ある初手aについて、以降の手を全ての合法手からランダムに選び終局まで進める(シュミレーションやプレイアウトと呼ぶ)。
  2. 終局時の勝ち・負けをカウントする。これを\(N_a\)回繰り返し、勝ち数\(W_a\)をカウントする。
  3. 1、2を全ての初手について行い、勝率\(\frac{W_a}{N_a}\)が最大の手を実際に打つ。

ランダムに手を選んでシュミレーションしていき、勝率の良かった手を選ぶ」ということです。

モンテカルロ法とコンピュータ囲碁

2000年代後半に、コンピュータ囲碁においてモンテカルロ法を適応し、活躍しました(5年間でアマチュア初段レベルから六段レベルにまでなった)。コンピュータ囲碁においてモンテカルロ法が活躍した原因としては、

  • ランダムに手を選ぶため、評価関数が必要ない(囲碁では評価関数を作成するのが難しい)。
  • 一見、人間の考え方とは全く異なるが、自然な手を打たれることが多い。

が挙げられます。

ただし、以下のような欠点もあります。

  • 十分な回数のシュミレーションが必要であるため、リアルタイムゲームや終わるまで長いゲームが苦手。
  • シュミレーションを無限回やっても最適性はなく、当然の一手がある局面でもランダムに手を選択し、間違った勝率推定を行う可能性がある。

モンテカルロ法の改良

単純にランダムにシュミレーションするのではなく、以下のような自然な拡張をしてモンテカルロ法の改良が行われています。

指し手を純粋なランダムではなく、ありそうな手を選びやすくする(行動評価関数を使う)。

収束しにくいゲームでは、適当な深さまでランダムに進めて、評価関数を呼び判定する(深さ限定モンテカルロ法)。

もう調べる価値がなさそうな手を調べない(全ての手を同じだけプレイアウトするのではなく、良さそうな手に偏って資源配分する)。

一見良さそうな手を重点的に調べる(progressive widening)。

MINMAX探索との融合により、希望的観測に基づく手を防ぐ。相手の少ない良い手をちゃんと発見して尊重する(モンテカルロ木探索:Monte Carlo Tree Search)。

参考ページリンク

http://www.yss-aya.com/monte.html

関連記事

【探索】縦型・横型・反復深化法の探索手法の比較。

探索とは、チェスや将棋や囲碁などのゲームをコンピュータがプレイするときに、どの手を指すかを決定するの

記事を読む

機械学習の手法のまとめ。

機械学習は、「与えられた入出力事例をモデル化する行為」のことで、ディープラーニングなどで注目を集めて

記事を読む

【画像認識】 Google画像検索結果を取得する方法 【google image download】

今回は、深層学習(DeepLearning)で画像認識をするための画像データの収集を、Google画

記事を読む

【Weka】CSVファイルを読み込んで決定木を実行。

フリーの機械学習ソフト Weka を使って、CSVファイルを読み込んで決定木(Decision Tr

記事を読む

【機械学習】パーセプトロン(Perceptron)について。

パーセプトロンは、教師あり学習の中でも、入出力モデルベース(eager learning:働き者の学

記事を読む

【探索】ダイクストラ法・最良優先探索・Aアルゴリズムの比較。

縦型探索や横型探索では、機械的に順序を付け、最小ステップでゴールを目指します。 つまり、

記事を読む

【機械学習】 scikit-learn で精度・再現率・F値を算出する方法【Python】

今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(P

記事を読む

【Weka】フリーの機械学習ソフトをインストールする方法。

Weka は、GUIで使えるフリーの機械学習ソフトです。 https://ja.wikiped

記事を読む

【深層学習】 TensorFlow と Keras をインストールする【Python】

今回は、Google Colaboratory 上で、深層学習(DeepLearning)フレームワ

記事を読む

【機械学習・手法比較】決定木とナイーブベイズを比較してみた。

同じデータを使って、教師有り機械学習手法の 決定木(Decision Tree)とナイーブベイズ(N

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮

【LaTeX】 見出し付き箇条書きを右にずらす方法【数式の変数説明】

今回は、LaTeX で見出し付き箇条書きの全体の位置を右にずらす方法に

【LaTeX】 余白部分を設定しレイアウトを確認する方法。

今回は、LaTeX の余白部分のレイアウトの変更方法とレイアウトの確認

【LaTeX】 レポートや論文の表紙のテンプレート。

LaTex を使ってレポートや論文を書くときに、表紙をつけると思います

【DTM】 Cubase AI でギターやベースを録音する方法。

今回は、DTM のための DAWソフト Cubase AI でギター(

→もっと見る

PAGE TOP ↑