【コンピュータオセロ3】Valueの損失を定数倍することの効果

要約

 オセロにおける強化学習で、損失関数のValue側のみ2倍,4倍とすることでは性能は上がらなかった。

背景

 数日前に読んだ論文で、AlphaZero形式の学習について計算量の増加を抑えつつハイパーパラメータを上手く探索する手法が提案されていた。

 この手法により調整された結果として、損失関数におけるValue側の値のみ定数倍することでPolicy側とのバランスを整えるパラメータが3~5ほどに落ち着いていた(Figure 5)。

 Policy損失とValue損失を1:1で合計することが良いことなのかどうかは以前から疑問に思っており、たとえば以前の調査ではPolicy損失とValue損失ではEloレートに対する相関の程度が異なっていると思われた。

 このような背景から、今回はValue損失の係数を大きくする実験をオセロを題材にして行った。

実験

 AlphaZero式の強化学習において、損失関数は L = L_{\mathrm{policy}} + k L_{\mathrm{value}}として表すことができ、通常k = 1である。今回は k = 1, 2, 4の3つの値について実験を行った。

 500Kステップまで学習を行い、50Kステップごとに保存したパラメータについて800回の探索でEdax(Level 5)と対局することを、スカラーモデル、カテゴリカルモデルの両方で行った。

スカラーモデルでの結果

f:id:tokumini:20200508104617p:plain

 Value1倍が最も性能が良かった。

 あまり意味がない値であると思われるので今までほとんど示してこなかったが、学習損失推移は次のようになった。

f:id:tokumini:20200508104945p:plainf:id:tokumini:20200508104953p:plain
左:Policy損失 右:Value損失

 MiacisではValueの学習についてTD( \lambda)を用いており、次局面のValueは現局面のValueと近いことが予測されるので、最終結果から学習しているAlphaZeroに比べて損失の値は小さめである。グラフを見ると、Policy損失が1.6程度であるのに対して、Value損失は0.06あたりとなる。そのためValue損失の係数を大きくすることが有効かと思ったのだが、そうではなさそうだ。

 もともとの学習率がかなり限界まで大きくしたものであるため、Valueを大きくした結果学習の進みが悪くなったという可能性も考えられる。また優先度付き経験再生部分についてはこの係数を利用していないのでそこも関係あるかもしれない。実験の信頼性についてはやや疑わしいかもしれない。

カテゴリカルモデルでの結果

f:id:tokumini:20200508105612p:plain

 カテゴリカルモデルでは一応Value2倍が最も良い性能となったが、Value1倍とほとんど変わらず、Value4倍は性能が低かった。

f:id:tokumini:20200508105624p:plainf:id:tokumini:20200508105630p:plain
左:Policy損失 右:Value損失

 損失で見てもValue4倍がPolicy,Valueともに悪く、やはりValue損失の係数を調整することでの性能向上は見られなかった。

 カテゴリカルモデルではValueに相当する部分の計算方法がスカラーモデルと異なるため、Value損失の値が大きい。50Kステップ以降では基本的にPolicy損失 < Value損失となっているので、そういう意味でもカテゴリカルモデルでもValue損失を大きくする意義は薄かもしれない。

 余談だが、この実験でもやはりスカラーモデルに比べてカテゴリカルモデルの方が性能が悪く、提案手法がダメであることが明らかになりつつある。