Caffeはじめました(数カ月ぶり3度目)
Twitterでもちらっと書きましたが、GA将にDeep Learningを取り入れたくてCaffeを使ってみる事にしました。
と言っても、対局用(実戦用)の評価関数は三駒関係+αの線形のやつで、学習時のみDNNを使用する予定です。
やりたいのは、基本的にActor-Criticアルゴリズム。
Actorはαβ探索+線形の評価関数+Softmax方策、学習はPGLeafベースでCriticの出力するTD誤差を基準に学習します。CriticはDNNを使用したTD法で学習。
従来のPGLeafでは「勝った対局の本譜の手は兄弟手より良い手、負けた時は悪い手」と判断していましたが、これが「TD誤差がプラスだから*1良い手だ、マイナスだから悪い手だ」とよりきめ細かな判断が可能になる…はずです。
んで、現状ですがCaffeのWindowsブランチをダウンロードして来て、二次関数とかsin関数の近似には成功しました。
後は三目並べや将棋用のルーチンをガシガシ書いていけば完成するはずです。
それから、Caffeと言えば悪名高い(?)prototxtですが、これはプログラムで自動生成する事にしました。どうせ「32ユニット*3層」とか「128ユニット*8層」みたいな固定した構成にするんで、それならprototxtを出力するプログラムを書いた方が簡単だしミスも減るでしょうから。
とりあえず、今週中には三目並べの学習を成功させたいですね。頑張ります。
*1:仮にその対局で負けたとしても