【WCSC29】Miacisアピール文書が公開されました/PERについての所感

 Miacisのアピール文書が公開されました。Miacisは簡単に言うとAlphaZeroの(個人でできるレベルでの)再現実験中といった感じです。あまりアピールという感じではなく、やった実験と今後の展望が主になっています。自分としては優先順序付き経験再生(Prioritized Experience Replay:PER)1と山岡さんが先日ブログ記事で書かれていた弱点の克服という手法の類似性を指摘している箇所が一番見どころなのではないかと思います。

 以下はPERについての所感に移ります。個人的にPERは筋の良い考え方だという気がしているのですが、AlphaZero系のプログラムに取り入れられたという話は寡聞にして知りません。AlphaZeroとPERはどちらもDeep Mindによる論文ですし、もっと言えばどちらの論文の著者にも少なくともDavid Silver氏が含まれているので適用を考えなかったということはないと思うのですが、なにか問題があるのでしょうか。

 少し気になる点があるとすれば、Science版AlphaZeroの論文に付随していたサンプルコードを見る限り、AlphaZeroは直近1,000,000局からまず対局を重複のないようにサンプリングし、選んだ対局からそれぞれ1つ局面をサンプリングするという手法を取っているようです。PERをやるなら局面単位でデータを保持しておく必要があると思われるため、そういった実装上の問題があるのかもしれません。

 5000基の自己対局マシンとデータをやり取りする必要があるため実装における制約が大きいのかもしれませんが、しかし優先順序付き経験再生を分散環境で行ったDistributed Prioritized Experience Replayという論文もまたDeep Mindから出ているので、そこにどの程度の困難があるのかもよくわからないといったところです。

 自分で少しだけPERの実装をしてみたところ、初期Priorityの決定が少し悩ましいと思いました。とりあえず一回は学習されるように一番最初はPriorityを高い値に設定しておくこともあるようですが、分散環境でたくさんデータが生成できるならば初期Priorityも損失に応じて設定するのが良いとされています。このとき、GPUで再計算せず、置換表に載っているデータから損失を計算したいわけですが、置換表に載っているPolicyはその局面の合法手でフィルタリングされたものであり、本来学習で使う単に全出力についてソフトマックス関数をかけたものより精度が高く、小さい損失が出がちとなります。そうすると新たに生成されたデータが選択されにくくなってしまうので、ある程度のボーナスを加えたいのですが、これも調整するべきハイパーパラメータになってしまうため実験が大変になりそうです。

 ちなみに優先順序付き経験再生の、特にPriorityに比例して確率を割り当てる方法ではSum-Treeというものが使われます。これは競技プログラミングでよく使うセグメント木そのものであり、実装はかなり平易でした。データ構造を華麗に利用した手法であるという点もPERが気に入っている理由です。


  1. 元論文:https://arxiv.org/abs/1511.05952 有名論文なのでQiitaなどに日本語解説記事も多くあります(これなど)