強化学習の教科書など読むと、かなり最初の方に Temporal Difference という手法が紹介されている。その手法はバックギャモンに応用され、強ーいプログラムができたと。その名は TD-Gammon。私がいくら古くても、このプログラムは使ったことがありません。確か最初に使ったのは JellyFish だったかな。
TD-Gammon を PyTorch で実装した素敵な方を見つけたので、少し動かしてみました。そのままでは動かなかったのと、dockerで使えるようにforkしました。
このレポジトリはいろいろ勉強になったのですが、学習させた bot を gnubg と自動で対戦させる仕組みもあり感動しました。今のところ、bot 同士の対戦で200,000回学習させました。初心者レベルにはなってますね。100,000回学習時点で gnubg と100回対戦。次に200,000回学習時点で 同じく gnubg と100回対戦。合計 200マッチをXGで解析してみました。
グラフを見ると明らかに右肩上がり! ちゃんと学習して強くなってるようですね。頼もしいやつだ。しかも、ニューラルネットワークはまっさらな状態から始めているので、なんらの前提知識も入れていないのです。隠れ層のユニットは、gnubgより多い 256 にしています。
キューブについては何も学習してないので進歩はありません。gnubgからキューブが飛んできたら全部テイク。自分からは決してダブルしませんw
これだけでどこまで強くなるか、しばらく学習を続けてみようと思います。その間に私はお勉強して理屈を学ばないとね。