TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

AlphaZero Chess/Shogiの論文を読む

DeepMindからAlphaGo Zeroと同じ方法で、チェスと将棋でトップレベルを上回ったという論文が発表されました。
[1712.01815] Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm

ドメイン知識を用いないスクラッチから強化学習のみで達成しています。
将棋やチェスはモンテカルロ木探索(MCTS)は向かず、Mini-Max探索の方が良いというのが常識のようになっていましたが、将棋やチェスでもディープラーニングと組み合わせることでMCTSが有効であることが示されたというのも大きな成果だと思います。

まだ全部読み切れていませんが、気になる個所から読んだ内容を書いていきます。

個人的に一番気になるのは、入力特徴と出力ラベルの表現方法です。
チェスについても書かれていますが、将棋のみについて書きます。

入力特徴

  • 先手の駒の配置×14種類
  • 後手の駒の配置×14種類
  • 繰り返し回数(3まで)(千日手用)
  • 先手の持ち駒の枚数×7種類
  • 後手の持ち駒の枚数×7種類

これを8手の履歴局面分。
これに、先手か後手かの特徴(1面)と合計手数(1面)を加えて合計で(14+14+3+7+7)×8+2=362面。

出力ラベル

  • 桂馬以外の駒の位置×方向(8)×距離(8) = 64
  • 桂馬の位置×方向(2)
  • 桂馬以外の駒が成る場合(64)
  • 桂馬が成る場合(2)
  • 持ち駒から打つ位置×7種類

合計で、64+2+64+2+7=139面

他の表現方法も考えられるが、これで合理的な手を学習できたとのこと。

考察

入力特徴

私が試している将棋AIでは入力特徴は、

  • 先手の駒の配置×14種類
  • 後手の駒の配置×14種類
  • 先手の持ち駒×7種類×枚数
  • 先手の持ち駒×7種類×枚数
  • 駒の効き×14種類
  • 位置ごとの効き数(1)
  • 王手かどうか(1)

としていましたが、これとの比較で言うと、
まず、千日手を判定する情報が加わっています。
AlphaGo Zeroでは、コウを識別するために履歴局面を使っていましたが、入力特徴として与えています。

持ち駒は種類ごとの枚数で、7面となっています。
ニューラルネットワークの入力は0~1で正規化する場合が多いですが、枚数をどのような値で入力しているかは書かれていません。
AlphaGoでは整数はOneHotエンコーディングで複数枚で入力していましたが、整数をそのまま数値で入力して問題ないのでしょうか。
※「the number of captured prisoners of each type」で7面を、枚数なしで種類のみと解釈しましたが、コメントを頂いたので修正しました。

効きや王手の情報は入っていません。

8手の履歴局面を入力していますが、私が以前に実験したところでは履歴は効果ありませんでした。教師ありではなく自己対局による強化学習では必要なのかもしれません。

先手後手の特徴がありますが、将棋の場合は局面の価値は、先手でも後手でも変わらないと思いますが、必要なのでしょうか。あっても影響はないと思いますが。

合計手数が1面のみで表現されていますが、具体的にどのように値を入力するかが書かれていません。例えば256手を0~1の範囲の実数として入力するのでしょうか。
また、手数が同じでも局面の進み具合は異なるので、そのまま手数を入力してしまってよいか疑問です。
技巧などは、局面の進み具体を手番ではなく進行度という尺度で表現しています。

出力ラベル

私が試している将棋AIでは、

  • 移動先の座標
  • 移動方向(8+2(桂馬の動き))

として表現しています。
それとの比較で言うと、
座標は移動先ではなく、移動元で表現しています。
持ち駒から打つ場合は、移動先なのだから、移動先でそろえた方がよいと思っていますが、あまり違いはないかもしれません。

移動方向に加えて、移動距離も表現しています。
移動距離がなくても移動する駒は一意に特定できるので、必要かどうかは疑問です。
私の実験では、出力ラベルは必要最低限にした方がよいです。
私は以前は、移動する駒にもラベルを割り当てていましたが、ない方が良いことが分かったので、移動方向のみにしました。
AlphaZeroでも移動する駒は表現していません。

AlphaGoZeroの囲碁の入力特徴と出力ラベルの表現をベースにしていることがうかがえます。
必ずしも将棋でベストな表現ではないと思いますが、マシンパワーがあれば、結果は同じということでしょうか。

個人レベルで試すなら、学習効率の良い入力特徴と出力ラベルの表現を模索することも必要だと思います。

続く。。。
AlphaZero Chess/Shogiの論文を読む その2(AlphaGo Zeroとの差分) - TadaoYamaokaの開発日記
AlphaZero Chess/Shogiの論文を読む その3 - TadaoYamaokaの開発日記