水匠開発者として有名なたややんさん。たややんさんは、思考エンジン部分には手を出さず、評価関数の学習に力を入れておられます。そのため、「たややんは、将棋ソフト開発者ではない」「たややんは、プログラム書けない」みたいな謂れなき中傷も一部で見受けられますが、そんなたややんさんの凄いところを同じチームメンバーとして書いていきたいと思います。
プログラムわりと書ける
たややんさんはAtCoder(競技プログラミングのサイト)を取り組んでおられますが、わりと書けてる感じです。何より上達が早いです。学習能力、地頭ともに優れているのでしょうね。さすが、司法試験に合格しただけのことはあります。
嗅覚と分析能力が凄い
dlshogiがV100×8やA100×8で教師局面を生成して強化学習をしているのに対して、たややんさんはGeForce RTX 3090、一台で、それに匹敵するモデルに仕上げてきました。(おかげで、今回の電竜戦でふかうら王は3位に入賞しました。)
少ない計算資源で効率的に機械学習を行うには、急所を嗅ぎつける嗅覚と、正確な分析能力が必要です。そのどちらも持ち合わせているのが、たややんさんです。
水匠5で+R100アップ
水匠5は、水匠4から+R100ぐらい強くなっています。強くなった肝はFV_SCALEを16から24にしたことです。
評価関数は、高速化のため整数演算で行います。しかし、小数まで扱えた方が精度が高くなるため、普通は最後に16(FV_SCALE)で割ります。つまり、最初に計算していた時の 1 という数値は、最終的には 1/16 を意味するということです。(いわゆる固定小数点数)
ところが、「この定数(FV_SCALE)を16から徐々に増やしながら強化学習を繰り返すと強くなる」という発見をたややんさんがされました。
おそらく、序盤(評価値が互角付近)の優劣を表現するのに、FV_SCALE = 16では解像度が足りなかったのでしょう。誰も気づかなかった(気づいても試さなかった)ことを試して、そして成果を出していく。それがたややんさんです。
やねうら王では、FV_SCALEの値は変更できないようになっていたのですが、やねうら王V7.00から、FV_SCALEをエンジンオプションで変更可能になります。水匠5の評価関数を用いる時は、FV_SCALE = 24にすると顕著に強くなるようです。
評価関数の学習はウマ娘の育成に似ている
評価関数の学習は、きちんとしたデータを採って、分析することを繰り返す必要があるのですが、そういう作業は私より、たややんさんにお任せした方がいいなと思い、RTX 3090機を一台、たややんさんにお譲りしました。
まとめ
やねうら王チームでは、たややんさんを全力で応援しています。
>> FV_SCALE = 24
2の倍数にした方がビットのシフトとかと相性がいいみたいなイメージあるけど、そんなに変わんないのかなぁ
定数での割り算は、掛け算になるのでビットシフトとそんな変わらないです。(割り算のままだと10倍ぐらい遅いですけど…)
よくよく読んだら
定数を変えるじゃなくて
学習最中に徐々に
値を変化させてくように
嫁る
ええ、たややんさんはそうされているみたいです。
スケッチでのラフな絵で形を整えてから細かいところを描いてくみたいな話しなのかも
このサイトを見返したら昔のBonanza, Apery時代はFV_SCALEが32だったころもあったのですね、表面的には当時への回帰のようにも見えますが、実際の理由が値の小さい互角と見えるところで一歩先に抜け出すためというのが面白いです。
おお、そう言えばそうですね!