UEC杯5五将棋大会にエントリー完了
先程プログラムを送付して、これで準備は完了です。
今年は天敵のShokidokiさんが不参加っぽいので、誰かがFairy-Stockfishに勝ってくれて、GA将?がFairy-Stockfishにマグレ勝ち1回すれば優勝の目もありますね。(他力本願すぎるw)
まぁ、今更何が出来るわけでは無いので、今週末に出る結果を楽しみにしておきましょう。
ちょっとだけ進展有った
学習方策と挙動方策を分けて学習するのは失敗しましたが、REINFORCEベースのPGLeafにエントロピー正則化をかけると割と良い感じでした。
んで、単一エージェントだと一旦大きなマイナスが付いちゃったパラメータは、その後挽回する機会がなかなか無く、ズルズルと低下していく現象が発生。
という訳で、前に実装した並列8連ガチャ*1をも一度実装。
一晩回した感じだと、目標探査率(最善手以外の手を指す確率の目標値)を単一エージェントの場合の半分位にすると良さげなので、その設定で学習用マシンに投入しました。
ちなみに、開発用マシンで目標探査率0.1の場合のグラフはこんな感じ。(縦軸のスケールはグラフごとに異なるので注意。)
三駒関係・四駒関係のグラフはまぁ妥当かな、と思います。
ただまぁ、100万局程度しか学習していないんで、まだまだ弱いですが。
学習用マシンで3日位走らせれば、前に最高勝率を記録した時の750万局に届きそうなんで、そこが一つの目安になるかと考えています。
*1:複数評価関数のリーグ戦から学習する方式
う~ん、困った
基本に戻って三目並べモードで色々実験中。
んで、分かった事。
PGQとNoisyNet*1風のノイズ加算は何か不安定になる。むしろ、ベースはREINFORCEのままで、これにNoisyNet風の処理を付け加えた方が良いらしい。
後、エントロピー正則化は結構効果があるけど、学習方策*2に正則化をかけるのが良いかは要検証。
ツー事で、学習方策と挙動方策を分けて、学習方策はREINFORCEベースでNoisyNetもエントロピー正則化も無し。この2つは挙動方策のみに適用する、って線が有望そうな気がする。
ただ、挙動方策を使うには重点サンプリングで補正してやらないといけないので、そこは実装が必要、と。
さて、それではいっちょ実装しますか。
*1:https://arxiv.org/abs/1706.10295
*2:≒実戦用パラメータ
障壁が固い…(分散コンピューティング化、続報)
クライアント側は大体実装完了して、さ~サーバとの通信・データ転送周りを作るぞーーー!! と思ってたんですが、技術的・セキュリティ的な大問題が発生・・・
まず検討したのが自宅サーバを公開して、クライアント側と直にやり取りする方法。ただ、公開するのは諸事情により不可能と判明。
んで、それならGoogle Drive経由でファイル転送するか…と思ってたら、認証情報をクライアントソフトと一緒に配布する必要があると判明。(←当たり前だ!)
となると、クライアントソフトをクラッカーにいじられると、認証情報をすっぽ抜かれて私のGoogle Driveの中身をいじり放題。これは困る。
という訳で、このままだと分散コンピューティング化は見送り、って可能性も出てきました。
他に良い案があれば続行しますが、現状では先行き不透明です。
スターライトブレイカー カウントダウン中
まず、クライアントGUI(Javaで作成)から学習エンジン(C++)を起動して、基本的な情報のやり取り(Exeのバージョン情報をJava側に通知して、Javaからプロセス終了指示を出す)所までは出来ました。
…エンジン側のstderrを読み飛ばす処理忘れてて、「何故か」停止指示に反応しないって事は有りましたが。てか、何回目よ、このバグ _| ̄|○
という訳で、現状GUIはこんな感じに仕上がりました。
とりあえず、今週末にはクライアント側のJava/C++部分を完成させて、来週はサーバ側の実装に移る予定。
ちなみにサーバはCUIで行く予定なので、今よりは楽になる…はずです。どうせ自分しか使わないんで、凝ったGUI作っても無駄ですしね。