wolfmasa's blog

フロンターレとプログラミング関係の話題を、気が向いたときにつぶやくブログです。

囲碁プログラミング

囲碁ディープラーニングプログラミング

囲碁ディープラーニングプログラミング

少し前から、囲碁プログラミングの本を読んでいる。

読んでいるだけではわからないので、pythonの勉強も兼ねて実装もしているのだが、なかなか道のりは遠そうだ。

GitHub - wolfmasa/python-go

まずは、3章までのところは一通り終わり、ランダムに着手するbotを作り、多少の高速化(Zobristハッシュ)も適用し、botbot、人間対botが動くようになった。

とはいえ、ランダムに置きまくってくるので、途中まで対局してみたけど、疲れてあまりやる気はしなかった。

どうも、初版ということもあり、ちょいちょい誤字などがあるようで、詰まったら元々のソースコードを読み、確認しながら進めている。

特に、pythonの場合、関数の区切り(rubyのbegen〜end)が、空白やタブで表現されているので、本にした場合にインデントがずれるとそれだけで意味が大きく変わってしまう。

個人的に、関数などの区切りが明確でない表記は、あまり好きになれないなぁ。

GitHub - maxpumperla/deep_learning_and_the_game_of_go: Code and other material for the book "Deep Learning and the Game of Go"

あと逆に、サンプルソースコードがどう考えても本とあっていないところもあって、例えばzobristのハッシュを作るところ。各盤面にhashをあらかじめ割り当てることで、盤面が繰り返されている場合(囲碁で言うコウ)の判定を高速化するコードが、サンプルコードと本記載とでは結構違った。(白黒の状態だけでなくNoneにもハッシュを割り当てていたり、何もない盤面のハッシュ値など)

次はモンテカルロ法などの実装に進む予定(説明はすでに読んだ)