GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

PGLeaf Drei Phase1 with 並列16連ガチャ、ほぼ完成

 まず、先日書いたエントロピー正則化ですが、三目並べモード+PGLeaf Dreiである程度ちゃんと動く様になりました。

 ただ、それでも乱数の偏りが原因(?)で、局所最適解にハマってしまう事もしばしば。ま、ソシャゲのガチャみたいな感じですね。

 んで、「ガチャになるなら当たるまで回せば良いじゃないか」と考えて、シングルスレッドの学習ルーチンを16並列で走らせて、最終結*1を平均化したモノを完全読みプレイヤー相手に対局させてみました。

 したら、まーなんと、メタパラメータがテキトーでもちゃんと収束しました! 学習率を1桁2桁変えてもOKですし、正則化係数も多少値を変えた位では最終結果に影響しませんでした。割と本気で、収束判定ルーチンのバグを疑った位です*2

 そういう訳で、PALさんの「高回転並列学習」程ではないにせよ、学習ルーチンを並列で回して結果を統合するって線で何とか行けそうな雰囲気になって来ました。現時点では、ちゃんとコードをリファクタリングしてから将棋モードでも動く様に対応しました。

 ただ、単に並列ガチャだけだと面白くないので、途中で「並列に学習した評価関数パラメータ群の情報交換」を入れようかと思っています。GA*3の交叉みたいな処理ですね。

 本将棋モードで交叉処理無しの場合だと、学習用マシンの空きメモリが16GB程度*4しかありません。なんで、「省メモリで複数の評価関数を交差させる」処理をひねり出さないといけなさそうです。まぁ、最悪ストレージに書き出しておくって手も有るんで、何とかなるかと思いますが。

 ツー訳で、来年の選手権では「GA復活!!!」って事になるかもしれません。乞うご期待。

*1:1ステップ50局×50ステップ経過後のパラメータ

*2:学習率を5桁上げたら、流石に正しく収束しませんでしたが

*3:遺伝的アルゴリズム

*4:評価関数2~3個分