価値のソフトマックス分布を教師としたAlphaZero学習

要約

 価値のソフトマックス分布を行動選択および教師分布として利用することで学習が2倍から3倍程度速くなった。

背景

 前回、生成している棋譜を分析したところ、評価値を大きく損ねる悪い手が多く選ばれすぎていると感じられた。この原因として探索回数をもとにした分布によって行動選択をしていることが考えられるため、代わりに価値にソフトマックス関数を適用したものを用いるように変更して実験を行った。

用語の定義

 「ソフトマックス分布」で検索してもあまり用例が出てこないので適切ではないのかもしれないが、とりあえずこの記事では実数ベクトルに対してソフトマックス関数を適用したものをソフトマックス分布と呼ぶことにする。ここでソフトマックス関数には温度tというパラメータがあるものとして、ベクトル\boldsymbol{Q}に対応するソフトマックス関数適用後のi番目の要素の確率p_i

$$ p_i = \frac{\exp(Q_i / t)}{\sum_j \exp(Q_j / t)} \tag{1} $$

と定義する。tは大きくすればするほどQ_iの値によらずどれも等確率で選ばれるようになっていき、逆にtを小さくしていくとQ_iの大小関係がより強調されるようになる。

実験設定

 AlphaZero式の強化学習を行った。細かい設定はこの記事を参照のこと。

 各局面で800回の探索を行った後、式(1)のように価値のソフトマックス分布を計算して行動選択分布や教師分布として用いた。価値は[-1,1]の値をとり、温度はt = 0.01とした。

 次の3パターンについて比較を行った。

名前 行動選択分布 Policy教師分布
従来 探索回数に比例した分布 探索回数に比例した分布
選択のみ 価値のソフトマックス分布 探索回数に比例した分布
選択/教師 価値のソフトマックス分布 価値のソフトマックス分布

 (注)探索回数に比例した分布とは各行動についての探索回数を探索回数の総和(今回の場合だと800)で割ったものである。

$$ p_i = \frac{N(s, a_i)}{\sum_j N(s, a_j)} $$

 従来手法の結果としては新規に実験を行ったわけではなく前回得られた結果をそのまま用いた。

実験結果

  • floodgateの棋譜に対する損失

f:id:tokumini:20190726150627p:plainf:id:tokumini:20190726150633p:plain
左:Policy損失 右:Value損失

 価値のソフトマックス分布を使う手法はまたそこまで学習を回せていないが、同じステップ時点の従来手法よりも良い性能になっていることがわかる。特に「選択/教師」では従来手法で2Mステップ回した時点の結果よりもすでに良い結果となっている。

  • Gikou2(深さ8)と1手0.25秒で500局対局した結果から推定されるEloレート

f:id:tokumini:20190726164312p:plain

 実際の棋力としても「選択/教師」が同ステップ時点での比較では最も良い性能となっている。学習途中なので最高到達点が上がっているかはまだ不明だが、少なくともここまでの段階で学習が2~3倍は高速になっている。

学習中に生成した棋譜の分析

 学習ステップ数や棋譜を保存する間隔等が違うので公平な比較にはなっていないが、参考程度に眺めると一応傾向は見られた。

 まず手数は次のようになった。

手法 平均 中央値 最大値 最小値
従来 75.7 74 317 14
選択のみ 110.6 107 512 25
選択/教師 107.3 104 512 32

 全体的に手数が伸びており、512手に到達したことによる引き分けもいくらか見られた。一般的に強いソフト同士の対局の方が手数は長くなりやすいと言われている。

 もちろん「強い⇒手数が伸びる」が成り立っていても「手数が伸びている⇒強い(良い棋譜を生成している)」とは言えないが、無理やり手数を伸ばさせる工夫を他に入れたわけでもないので傍証にはなっているのではないかと感じる。

 別のデータとして、1手進んだ局面での探索結果と現局面での探索結果の差の絶対値の統計を調べると次のようになっている。

f:id:tokumini:20190726150812p:plain

 探索回数に比例した分布で行動選択をやめることで評価値が大きく動くことが少なくなったことがわかる。これも根拠はない話だが、基本的にはあまり大きな変動がない方が良い棋譜なのではないかと思われる。

所感

 個人的な感覚では、将棋は可能な指し手の集合において悪手の割合が高いゲームであり、さらに「何度か探索した結果悪手だと判明する」頻度が高いのではないかと感じる。そのような場合に探索回数に比例した分布で行動選択をすると価値を大きく損ねる手が多く選ばれすぎるのではないか。これはゲームに依存する性質の可能性はあり、たとえば囲碁で価値のソフトマックス分布を使ってもあまり性能は伸びないかもしれない。

 またもとから30手を超えた場合には探索回数最大の行動を選択するようにしているならこの変更による恩恵は少ないかもしれない。個人的にはできるだけ恣意的な切り替えは避けたいのでこれで同じ結果が得られるならこちらで良いのかなと感じる。

 この変更に伴うパラメータの調整を考えると、価値のソフトマックス分布を使う方法では方策に対する依存性がやや弱まると思われるのでディリクレノイズが不要になったりしないだろうか。悪い手を指さないことと、いろんな指し手を試してみることのバランスを上手く調整することが学習の高速化で重要な点に思える。

余談

 Eloレートを計算する際の対局においても、同じ対局が何度も行われないように30手までは探索回数を正規化した分布に従って指し手を選択している。対局を見ていると30手までで大きく形勢を損ねていることもあり、価値のソフトマックス分布に修正すると見た目のレートはやや改善する可能性もあると感じた。本質的な改善ではないのであまり気も進まないが……。