将棋AIの強化学習の基礎が根底から変わりそうな件

将棋AIでは、教師(教師局面)を生成して、そこから評価関数パラメーターの学習を行っている。AlphaZeroなんかもそうしている。

教師は、実際に対局して生成する。ところが、この対局は、1手指すごとに何千とか何万とかの局面を探索しないといけない。Deep Learning(以下DLと略す)系の将棋AIの場合、何千とか何万の局面を探索すということは、その回数だけ推論を行うということである。普通、学習は、順伝播 逆伝播で、順伝播のコストをCとすると、逆伝播は2Cぐらい、つまり合計で3Cぐらいの計算コストを要するのだが、推論(これは順伝播)はCだから、要するに学習は3倍のコストを要する。ところが、教師生成時に1手指すのに仮に1万局面探索するとしたら、10000Cかかるわけで、これは学習コスト(3C)の3333倍である。

というように、教師生成のコストは学習時のコストとは比較にならないほどのコストを要するというのが従来の将棋AIの強化学習であった。

ところ、たぬきシリーズの開発者のtanuki-さん(nodchip)が、NNUEで生成した教師の探索評価値を、DL水匠(DL系の将棋AI用の評価関数モデル)のvalue(評価値。1局面に対して1回の推論の結果として得られる)で上書きした教師から学習させたところ、+R100ぐらい強くなったそうなのだ。

あれ?だとしたら、教師生成するときに探索する必要なくない?

これを発見したtanuki-さん曰く、「時代が一つ進んだかもしれません」とのこと。

DL水匠のvalueのほうが、NNUEで探索した評価値より優れている(学習に適している)から、このようなことになるのだろうけども、「いままで教師生成をしていたのは何だったのだ…」といま将棋AI関係者が騒然としている。

「でも、DL系のモデルを学習させるための教師は必要ですよね?」と言われそうだが、これについても面白い性質がわかっている。

(以下は私の発見と考え)

DL系のモデルでは、主にResNetが使われているのだが、同じ教師から学習させても、20b(b=ブロック数)と40bとでは、40bのほうがaccuracyが高いのだ。

「20bと40bとなら、40bのほうが学習能力が高いんだから、そうなるの当たり前じゃん」と言われるかも知れないが、つまりは、40bで学習させて、そのvalueで教師のvalueを上書きしてしまえば、20bの学習に使えるということである。もしくは、40bから何らかの方法で蒸留して20bのモデルを作れば、(20bの表現能力を超えない範囲で)40bより少し劣っている程度のモデルが作れる可能性がある。

そうなってくると、200bぐらいのむちゃんこ大きなモデルを(公開されているような質はわりと低めの教師で)学習させて、それを蒸留すれば、高い計算コストを用いて教師生成せずとも質の高い学習ができてしまう可能性がある。

これはおそらくLLMなどの強化学習でも使えるテクニックで、強化学習での教師生成のために(探索を行って)質の高い教師を生成する必要はなく、既存の(質の低い)教師データで桁違いに大きなモデルに学習させて、そいつを蒸留するほうが低い計算コストで済む可能性がある。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です