ELF OpenGo: An Analysis and Open Reimplementation of AlphaZeroを読んだ際のメモ

出典

 International Conference on Machine Learning 2019に採択。arXivには2月ごろに投稿されていたので以前もちらっと読んだことはあったが、一応再確認。

概要

 AlphaZeroのオープンソースによる再実験を行い、学習や推論における挙動について分析

詳細

実験設定

  • 自己対局中は常に温度1(つまり探索回数に比例した確率で行動を選択)
    • Miacisでもこうしている。理論的な正当化に必要な気がしたのでこうしているが、実際終盤の精度がどうなっているのかは未確認
  • c_{puct} = 1.5 (arXiv版AlphaZeroの定式化を利用)
    • 手元で\logを使うScience版AlphaZeroの定式化は試してみたが、あまり性能向上が見られないので大差ないのかなという印象
  • リプレイバッファサイズ 500,000ゲーム
    • 囲碁の平均手数を200手くらいとすると約20Mデータとなるか。Miacisでは1Mにしているのだが、小さすぎるかもしれない
  • 自己対局中は1,600探索
    • 単純に2倍の計算資源(あるいは時間)が必要になるのでここを増やすのはきつい
  • 256フィルタ, 20ブロック
    • 本当にこんなに巨大なネットワークを使う必要があるのかなというのは疑問なのだが
  • 学習率は0.01から始めて0.5Mステップ経過ごとに1/10(全学習ステップは1.5M)
    • AlphaZeroも学習率0.2から始めているとあるけど、実は囲碁では0ステップ後に学習率を1/10するとあるから0.02スタートではある(Science版)。チェス、将棋だと10倍も大きい学習率で始めて良いというのが直感的には納得し難いが、そういうものなのかもしれない
  • バッチサイズは2048
    • AlphaZeroに比べて1/2だがステップ数を2倍にしているのでほぼ同等の学習になっているのだろう
  • ステップあたりの生成量と学習ミニバッチサイズの比は約13:1
    • Miacisでは1:4くらいでやっている。ここがかなり効いてくるのかもしれないとは思う

学習推移の分析

性能

f:id:tokumini:20190711134123p:plain

  • (a)最初の方にValue損失が0に近くなっている
    • Valueの評価が偏ってどちらかが勝つデータしかなくなるため
    • 先手が勝つデータと後手が勝つデータの割合を一定にすることで解決
    • 将棋では起こりにくいことかもしれない
  • (b)対戦相手を固定した場合の勝率推移
    • 結構分散が大きく、学習率を小さくしても分散は小さくならない
  • (c)プロ棋士棋譜との一致率はすぐ飽和するので当てにならない
学習の段階性とシチョウの学習

f:id:tokumini:20190711134228p:plain

  • (a)(b)終盤の方から徐々に学習が進んでいくという仮説に対してやや否定的な結果
    • 中盤と終盤で学習速度はあまり変わらず、序盤も過学習せいらしい(ここはよくわからなかった)
  • (c)シチョウの予測(盤面全体に関わり手数が多いため難しい)は学習後半のモデルでも不十分
    • 探索回数を増やしても改善しきらない

パラメータ探索実験

c_{puct}

f:id:tokumini:20190711134535p:plain

  • 1.5が良さそう
バーチャルロス

f:id:tokumini:20190711134614p:plain

  • 1が良さそう
探索回数による性能の変化

f:id:tokumini:20190711134654p:plain

  • 持ち時間を2倍にしたときの性能の上がり方が先後で異なる
  • ベースの探索回数を増やすと先手は2倍にしても勝率が上がらなくなる
    • これは囲碁特有の問題かと思わないでもないが
  • プロトタイプとの対局によると基本的に探索回数2倍でEloレート+200
    • ここもゲームに依存する性質かもしれない

Discussion

 AlphaZero型学習の問題点など

  • 学習に必要な対局数が膨大
  • シチョウが学習できていない
  • 性能が不安定
    • 学習率を下げるとむしろさらに不安定に→ほとんど変わらないモデルによる同じような対局ばかりになってリプレイバッファ内に多様性がなくなることが問題?
  • 終盤から徐々に学習されていくわけではなさそう

所感

 AlphaZeroの学習はとにかく膨大な量を必要とする点が実験していく上で非常につらいので、何はともあれ高速化をしなければ話にならないという気持ちが強い。その点で終盤から徐々に学習されるわけではなさそうという指摘は大きいものなんじゃないかと感じられる。手元での学習推移や学習途中のパラメータにおける指し手の傾向を見ても、どちらかといえばPolicyの偏りが原因で(強化学習の意味での)探索が上手く進んでいない可能性はありそうに思える。ディリクレノイズによるランダム性の与え方をもう少し工夫できないかなと考えたいところだが、探索を促進する内発的動機づけとかそちらの論文を読んでみるのが良いのだろうか。