NNUEと略す)に関する情報を、英語圏の人達に届けるために書いたので、将棋界隈の人達が知りたい情報ではなかった気がするので、今回は、将棋界隈の人たちのためにざっと流れを書いておきます。eloの差があるそうです。eloぐらい強くなるのでは?と噂されています。NNUEに関するツール類もどんどん開発されていて、活発に議論がなされています。ログを追いかけるのがしんどいぐらいの速度で進行しています。言えば、匿名掲示板のなんとかちゃんねるに似たノリではありますが、開発力と最低限度のモラルがある分、建設的な議論がなされていると感じます。NNUEのほうに、日本の将棋AIの開発者としては現時点で、(今回NNUEをSFにportingした)tanuki-の野田さん、Mizarさん、Qhapaqの澤田さん、elmoの瀧澤さんが参加されているようです。NNUEのコミュニティのなかで今回、そこが詳らかにされるのかもしれませんね。NNUEのDiscordのような雰囲気で交流できる場所があれば良いように思いますが、将棋のSlack(Noviceのkumaさんが作成)のほうは、ほとんど書き込みがないままになっています。受け皿が、なんとかちゃんねるしかないのは、とても残念なところです。ツイッターですと開発者をフォローしても将棋AI以外のノイズが大量に流れてきて(私も、そういったノイズを流している側の一人ですが)、それが純粋に情報だけを追いかけたい人にとっては、とても迷惑なのだろうとは思います。将棋AIの棋風について将棋AI界隈では、評価関数の形(KPPT,NNUE,...)を自由に変更できて、かつ、その評価関数パラメーターを差し替えたり、探索部だけを差し替えたりすることによって、同じぐらいの強さの様々な棋風の将棋AIが生み出されてきました。Aperyが採用したKPPT型の評価関数フォーマットをやねうら王が読み込めるようにしたころから、その流れが加速したように思います。すべてがモジュール(部品)として構成されていて、自由にその部品を交換できるという設計思想のもとに開発していました。(技術的な問題から、綺麗に独立したモジュールとは言い難いですが、少なくとも評価関数の形を切り替えたり、Aperyの定跡フォーマットの定跡ファイルを読み込んだりはできます)5年ぐらい前にPonanzaの山本君にこの話をした時、「そんなことすんの?」(自分は強さにしか興味ない)、みたいな感じでしたが、その設計思想の正しさが、5年の歳月を経て証明されたと言えそうです。NNUEの棋風について将棋AIでソフトごとに評価関数パラメーターが異なり、棋風が異なるのは当たり前であったので私はすっかり忘れていたのですが、SF界隈ではこれは当たり前ではなかったのです。NNUEのほうは、追加学習させるごとに違った棋風(ある局面での指し手)になることに興奮している人たちがいるようで、これはSF界隈に大きなインパクトがあるようです。現時点でも、棋風がそれぞれ異なる、SF10と同程度の強さのソフトが大量生産できるような状況であるので、そりゃ興奮するのも無理ないだろう、ということです。NNUESFの従来の評価関数はいかにも職人的に設計されたと言う感じの評価関数でした。GitHubでその修正履歴を追いかけるのが大変なほどに長い時間を費やされ、この評価関数が開発されてきました。NNUEのような、ニューラルネットワーク型の評価関数で置き換わるとしたら、それは歴史的な事件であると言えます。評価関数を単純化して言えば、盤面情報(駒の位置情報)を入力として、その局面での同じ棋力のプレイヤー同士が対局を引き継いだときの勝率(期待勝率)を予測する、数学的な意味での関数です。SFでは精度はそれほど高くなくとも計算コストが非常に小さな評価関数を人間の職人が設計してきました。このようなとても小さな評価関数ですら、職人がそれを懸命に設計するより、ニューラルネットワークのような、任意の関数の近似ができることが保証されている汎用的な手法を使ったほうが(層が浅いので、実際は任意の関数の近似はできないにせよ)、同じ計算コストでより良い近似ができる関数になるというのは、職人(人間)の敗北という感じではあります。これは、ML(機械学習)の一つのムーブメントとして、今後、幾度となく取り上げられることでしょう。>層が浅いので、実際は。部分、囲碁や将棋全体を1つのネットワークで対応させようとするから、層をふかくしないといけないのではと考えています。48層のネットワークを学習するよりも、12層のネットワークを4個学習する方が、効率的ではないかと思っています。一局を4個に分けて(例えば、30手まで、31~60手、61~90手、91以降手以降に分けて)学習させるのはいかがでしょうか。:進行度で分けてというのは誰かがやってたような。将棋の場合、わりと序盤でも終盤っぽい変化に突っ込んでしまうことはあるので、それやってもなかなか...。halfKPなどでは元々、玉の位置で配列を分けていることにはなるので、将棋の終盤で玉が3段目以上に上がっていく場合は、別の配列を見ていることになるので評価関数を分ける必要がないですね。それから、将棋の場合、終盤は駒得だけしか見ない評価関数であってもわりと正確に指せるので、終盤は評価関数の質の向上が勝率に結びつかない意味もあって...。将棋は、最初から最後まで、駒の数が40枚で変わらないので、そうなりそう。囲碁は、盤上の石の数がどんどん増えていくのに、1つのネットワークで序盤から終盤まで学習するのは、効率が悪い気がしています。分けて教師を3倍近く生成しないといけなくなるのであれば、それは無視できないかなと...。:大変興味深く拝読いたしました。Stockfishの従来の評価関数は職人的に設計された評価関数、とのことですが、Bonanza以前の将棋の評価関数のように、機械学習を利用していなかったという理解で合ってますでしょうか?もう一点、ご存じでしたらご教示いただければと思いますが、将棋ではNNUE登場以前は3駒関係+強化学習が主流だったかと思います。その時期に3駒関係型の評価関数をSFに移植しようという試みはなかったのでしょうか?また、当時それを試みたとしたら、オリジナルのSFを抜ける可能性はあったのでしょうか。Frameworkがありまして、探索部/評価関数に関してパラメーターにしておけば、そのパラメーターがいくらのときに勝率が最大になるかは求めてくれるんです。10や20のパラメーターでしたら、それを使って最適値を求めることができます。Stockfishの従来の評価関数は、そうやって最適値を求めてあるはずです。100程度のパラメーター数で構成されているなら、そうするのがベストでしょうね...。3駒関係はStockfishでは誰か本家の人がテストしてた気がしますが、成功しなかったのでは。2駒関係とは計算コストが段違いですし、チェスでは駒がすべて、将棋で言うところの大駒ですので、3駒の関係はあまり重要ではないのでしょうね。:ご教示ありがとうございました。職人技のみというわけではないのですね...。3駒関係はテスト済みでしたか。ゲーム性が違うんですね。今度のNNUEの成り行きが大変楽しみです。:そのうち、やると思います。:職人が厳選した多数の評価項目についてチューニングを行うという点では、従来のStockfishに近い将棋ソフトはGPSfishあたりが該当するのでしょうか。記事の直接的な感想ではないのですが、SF-NNUEが既存SFを置き換えうるというのは、T.N.KがNNUEを引っ提げて環境を激変させた2年前に似たものを感じます。当時はKPPTの将来は明るくないものの非線形の評価関数はどうもうまく行かないという雰囲気が強かったように思います。(実際過去記事を読み返すとそういう記述は多いですし、習甦が孤軍奮闘してたのも印象的です)NNUEがそれ以前の非線形評価と違ってブレイクに成功した理由について、やねさんの考えがあればお聞きしたいです。:習甦は、玉の固さ、駒割、駒の働き、みたいないくつかの計算は線形に計算して、それを合算するときに浅い層のニューラルネットワークを用いているだけであった気がします。普通のニューラルネットワークはNNUEが初めてじゃないですかね。:昔のソフト(elmoなど)のほうが遥かに早く見つけますね。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。