合議方策勾配法は一旦保留
んで、通常の方策勾配法×4並列で合議用の複数種類の評価関数を学習させてます。
(これは、各エージェントが独立して学習する方式ですので、実際の対局で合議した時に強くなるかどうかは分かりません。ただ、アルゴリズム・実装が容易なので、とりあえずこれで動かして、学習させながら並行して合議方策勾配法を作っていこうと思っています。)
まず、評価項目は以下のものです。
- 駒割
- 筋・段個別の絶対位置評価
- 駒の絶対位置評価
- *二駒の相対位置関係の評価
- 飛び利きを遮る駒の評価
- *駒の自由度の評価
- *王将の移動可能な範囲の評価
んで、クライアントのID(0〜3)に応じて、*付きの評価項目の有効・無効を下記の様に変えてます。*無しのは全評価関数で有効です。
クライアントID | 0 | 1 | 2 | 3 |
---|---|---|---|---|
二駒の相対位置関係の評価 | 有効 | 無効 | 無効 | 有効 |
駒の自由度の評価 | 無効 | 有効 | 無効 | 有効 |
王将の移動可能な範囲の評価 | 無効 | 無効 | 有効 | 有効 |
それから、報酬の与え方をちょっと変えてみました。
今までは「対局終了時に、勝ったエージェントに+1、負けたエージェントに-1、引き分けなら双方に0」だったんですが、これに「銀・桂を前に進めたら一手あたりボーナス+0.01、後ろに進めたら一手あたりボーナス-0.01」を追加しました。
例えば、銀・桂が前に行く手が9手あり、銀が下がる手が3手あって最終的に勝った場合、エージェントの受け取る報酬は+1.06になります。
この報酬の与え方だとMDP*1ではなくなるのですが、方策勾配法だと非MDPでも学習出来るらしいので、とりあえずこれで行ってみます。
…それと、これでもし上手く行く様なら、王将が前に進むとボーナス与えて、更に入玉勝ちなら報酬+10とかにする事も出来そうです。どうなるかってーと、多分入玉大好きな棋風になるはず。
まぁ、お遊びは選手権後にする事にして、とりあえずはこういう報酬設定で動かして、駒を進めて攻める体制作りを出来る様になって欲しいですね。