「ノーマライザとして機能する」そう松下さんは言った。
一年ほど前の私は正直よく分かっておらず,三駒関係の評価関数の生値を直接弄る謎の魔法としか認識していなかった。
まぁ,出来た評価関数が私の作ったものより強いのだから何の問題もないのだが,理屈を理解しておく必要があるだろうとは思っていた。
ここでいうノーマライザってのは音楽CDのマスタリングなどで行われる振幅データの調整だったのですね。振幅レンジを有効に利用していない部分があれば拡大するし,頭打ちして表現力不足になった部分は押さえて再学習が可能な状態にする。
これにより学習が停滞していた評価関数に追加の強化学習が入りやすくなるし,全体としてバランスが崩れていた点なども修正を加えることが出来る。
これが実は非常に効いていたようだ。
実際のところで結構面白いのが戦型選択である。色々と野良評価関数が出ているところではあるが,得意戦型ってのがはっきりしていることが多い。特定戦型を重点的に学習させると強くなるのはなんとなくわかる。ところが,人造棋士18号の評価関数は様々な再学習などを加えたためにいつのまにやらオールラウンダー的な対応をする。
もちろん,調整過程で多くの評価関数相手に苦手を作らない調整で選択的に強化したのが理由の一つであるが,戦型選択を迷うような局面で本当に戦型選択を迷う。そしてその後はその戦型を割にそつなくこなす。
具体例は将棋倶楽部24の18号とHefeweizenが同じ評価関数の序盤定跡をわずかに変更しただけということでも理解されると思う。18号が居飛車を好み,Hefeweizenが振り飛車を指す調整が定跡のみでされている。定跡無しだと混在することになる。振った飛車を戻すこともないし,角換わりで69飛車みたいな戦型や地下鉄飛車も得意だ。
また,角換わりの桂が跳ねるタイミングや歩の突き違う手順なども結構ばらけるような仕上がりで他の強い評価関数とは雰囲気がかなり違う。
一度学んだ評価値を潰して再学習潰して再学習を繰り返したためかと思われる。苦手戦型が無いってのは特定の相性で圧勝することも減るので必ずしも良い選択とはならないのだが,昨年のHefeweizenはMulti Ponderでの探索優位性があるため評価関数では五分のものがあればよいとの選択であった。むしろ相性の悪い苦手がないことがバランスよく戦えると考えていた。また,これに合わせて序盤定跡も若干マイルドに仕上がている。横歩では青野流一択に絞るなどの特定戦型に絞り込むことはいくつかしているが結局は横歩,角換わり,雁木,穴熊,中飛車,四間飛車など一般的にはオールラウンダーと言われるレベルである。後手横歩は2コアノートのshotgunに負けて以来完全に封印している。(今後は分からない)
で,この延長で評価関数を作成しようとしていたらNNUEの出現で状況が変わってしまった。三駒関係の評価関数は線形和であるのでノーマライザの実装が比較的簡素であったが,ニューラルネットワークとなるとそうは問屋が卸さない。似たようなことをするのにどうしたらいいものか思案中である。
---
と,2月か3月くらいに下書きして放置してたのを今頃晒しておきます。
今年のKristallweizenが昨年のHefeweizenの教師データを食わせた後継の評価関数になったのはホント偶然ですが,似たような風味の指し手なのが面白いところですね。
ちなみに評価関数だけ変えた戦いではKristallweizenが7割近く勝ちますね。
未だ「評価関数よく分からん」ってやつです。