TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

AlphaZero Chess/Shogiの論文を読む その2(AlphaGo Zeroとの差分)

AlphaZero Chee/Shogiの論文についての続きです。
今回はAlphaGo Zeroとの差分について書きます。

AlphaGo Zeroの論文については、以前に書いた記事を参照ください。

ネットワーク構成

ニューラルネットワークの構成は、AlphaGo Zeroと同じ、PolicyとValueを同時出力する20ブロックのResNetです。
前回書いた通り入力特徴と出力ラベルが異なります。

探索アルゴリズム

基本的にはAlphaGo Zeroと同じ、モンテカルロ木探索にPolicyとValueを使ったPUCTアルゴリズムです。

以下の点が異なります。

  • AlphaGo Zeroでは探索のハイパーパラメータは、ベイジアン最適化で調整したが、チェス、将棋のゲーム固有の調整は行わず同じパラメータを使用
  • AlphaGo Zeroはニューラルネットワークに対称、回転の8局面からランダムに選んで入力していたが、局面は固定とする
  • AlphaGo Zeroと同様に探索を確実にするためにルート局面にディリクレノイズDir(α)を加えるが、合法手の数に反比例して、チェス、将棋、囲碁で、α={0.3, 0.15, 0.03}にスケーリングする

AlphaGo Zeroと同様に自己対局では、30手まではルートノードの訪問回数に応じた分布に従って確率で選択して、それ以降は最大訪問回数の手を選ぶグリーディー戦略としていましたが、チェス、将棋の場合は何手目まで確率的にしていたかは書かれていません。

elmoとの対局では、グリーディー戦略を使っています。

自己対局パイプライン

AlphaGo Zeroでは自己対局1,000回ごとにチェックポイントを設けて、評価のステップで、55%以上の勝率の場合にそれを最良のネットワークとし、その後の自己対局で使用していましたが、評価のステップは省略されました。
常に最新のネットワークが自己対局に使用されるようになっています。

囲碁は固定手数で終局しますが、将棋では上限手数を超えると引き分けとしています。

学習

以下はAlphaGo Zeroと同じ。

以下の点が異なる。

  • ミニバッチサイズ:4,096(AlphaGoZeroは2,048)
  • 自己対局時のシミュレーション回数は800回(AlphaGoZeroは1,600回)
  • 自己対局数は、将棋では2.4千万(AlphaGoZeroは4.9千万)
  • 学習率は0.2から0.02、0.002、0.0002の順に段階的に下げる。(AlphaGoZeroは0.01、0.001、0.0001)

考察

ネットワーク構成については、前回日記で書いたので省略。

探索アルゴリズム

AlphaGo Zeroでは、対称、回転を使うことでData Augmentationを行って、探索時もそれらをランダムに選ぶことで評価を平均化すると共にランダム性が加わっていました。
チェス、将棋では局面が固定されるので、ランダム性を加えるのはルート局面のディリクレノイズのみとなっています。
自己対局では、序盤については訪問回数に応じて確率的に手を選択するのでそこで局面のバリエーションを作っています。
何手まで確率的に指しているのかは書かれていませんでした。

AlphaGo Zeroの論文には、対局時に手を選択する方法が書かれていませんでしたが、elmoとの対局時はグリーディー戦略と書かれていましたので、AlphaGo Zeroも対局時はグリーディー戦略を使っていたと思われます。

自己対局パイプライン

評価のステップを省略しても学習できたようです。
これは意外な結果です。
強化学習は学習が発散することがあって学習が難しいことが知られています。
そのため、過去のネットワークに対して強くなっていることを確認するステップが必要と思っていました。
DQNのような方策オフの学習に比べて、AlphaGoZeroのような方策オンの場合は、学習が安定するということでしょうか。

学習

自己対局時のシミュレーション回数が半分になっています。
800回のシミュレーションではとても弱いですが、その回数でも強化学習できるようです。
AlphaGoのRL Policyの強化学習ではシミュレーション0回(Policyのみ)でしたので、それに比べたらまともな方策が学習できるということでしょう。

800回のシミュレーションで1手80msと書かれているので、1局平均150手とすると、1局の自己対局で12秒です。
並列化しない場合、2.4千万局の対局には、547.9年かかります。
GPUを使うと、処理速度を落とさず並列にゲームを進行できるので、これを短縮しています。
自己対局には、5,000個の第一世代のTPUを使ったと書かれています。
第一世代のTPUが何TFLOPSか不明ですが、個人レベルで試すのは不可能な規模であることは想像できます。

学習率は、AlphaGo Zeroよりも大きい値が使われています。
0.2と大きめの学習率から始めても学習できるようです。
Batch Normalizationを使用しているので、大きめの学習率が使用でき収束が速くできたということでしょう。

続く