TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

PythonでGo

AlphaGoとイ・セドルとの対局を観てから、AlphaGoの仕組みについて調べています。

Natureの論文を読んで少しずつ理解しているところですが、
そのうちまとめたいと思っています。

AlphaGoは、ディープラーニングを使用しているといっても
ベースになっているのは、既存の囲碁プログラムでも使用されていた
モンテカルロ木探索です。

モンテカルロ木探索について、全く知らなかったので
今回調べてみたら、UCTアルゴリズムが結構面白いと思いました。

モンテカルロ木探索って、ただのランダムに打つものかと思っていたのですが、
違いました(;^ω^)
そんなに単純ではなかったですね。


ディープラーニングの前に
UCTアルゴリズムも試してみたくなったので、
Pythonでプログラムを作ってみました。

github.com

Pythonなのでプレイアウト回数を増やすと遅くなるので、
300回のプレイアウト回数ですが、そこそこまともに打てているようです。

f:id:TadaoYamaoka:20160401000948p:plain

プログラム作成にあたっては、この本のサンプルプログラムを参考にさせてもらいました。

サンプルとして作成したので、終局での勝ち負けの判定とかできていませんが、
囲碁のプログラムはまともに作ろうとすると結構大変です。

本のサンプルがなかったらかなり苦労していたと思います。