将棋ソフトの大会は定跡勝負になってしまったのか?

今月のゴールデンウィークに開催されたWCSC32(第32回世界コンピュータ将棋選手権)において、興味深い知見が得られたので簡単にここにまとめておきたい。

本大会では、東横将棋の搭載している定跡(s-book_black)によって、水匠が狙い撃ちされたことでも話題になった。

第32回世界コンピュータ将棋選手権 決勝 : https://yaneuraou.yaneu.com/2022/05/05/wcsc32-day3/

大会は持時間が少ないとは言え、やねうら王系の上位のチームは1億NPS(1秒間に1億局面を調べる)ぐらい出ている。家庭用スペックぐらいのPCで簡単に調べたような指し手は回避できて当然だと思うのだが、どうやらそうではないのである。

Ponanzaの開発者の山本一成さんはSDT5(第5回将棋電王トーナメント/2017年開催)の時に、「定跡で勝負が決まるようになったら(なったのだとしたら)、将棋は(ゲームとして)もう終わりだな」と言った。

確かに将棋の変化が狭いから、大会スペックのマシンを以てしても事前に用意されたs-book_blackの変化さえ回避できずにそのまま狙い撃ちされ終盤までその定跡の変化で進行してしまうのだとしたら、将棋はゲームとして終わっているとも言えるだろう。

しかし、そうではなかった。将棋というのはそんなに単純なものではなかった。そのことについてここから書いていきたい。

まず、二番絞りという本大会で2位に輝いたソフトがある。二番絞り、今回は定跡を搭載していない。初手から持時間を使って思考している。こんなことをすると相手の定跡に嵌ったり、時間を無駄に消費したりして大変不利なはずなのだが、少なくとも二番絞りは本大会で相手の定跡に嵌ってそれによってそのまま負けてしまうことはなかった。

ここで二番絞りについて詳しく書かねばならない。

二番絞りはDL(Deep Learning)系のソフトであり、探索部はdlshogiをベースとしたものである。評価関数は、40b(40ブロック)×256 filterのResNetである。その学習させた評価関数モデル(ファイル)は、非公開である。

ポイントは3点ある。

  1. DL系
  2. 評価関数モデルが非公開
  3. 40bという他とは異なる評価関数(ブロック数)

DL系は序盤が従来型のソフト(NNUE系)に比べて強いことが知られている。1.(DL系)であるがゆえに、序盤がうまく、定跡を自力で回避できたということも言えなくはない。

しかし、公開されているdlshogi(モデルファイルは昨年の電竜戦のもの)は、わりとs-book_blackの手順に嵌まることで知られている。dlshogiには指し手を散らせる機能があるが、その機能を用いない場合、かなりの再現度で同じ指し手を指してしまう。(PCのスペックが同じで持時間が同じ場合) これで嵌らないほうがおかしいのである。

つまりは、2.の、モデルが非公開というのが大きいと考えられる。

s-book_blackは、NNUE系(水匠)とdlshogi(昨年の電竜戦のもの)を検討に使い、その2つのソフトが嵌まるように定跡を作成されているようで、要するにソフトを公開しているから狙われている意味はある。

では、3.は関係あるのか、ないのかという話になる。

これについては現時点では結論は出ていないが、別の角度から見るためにNNUE系の事情を書いていこう。

a. NNUE系では、たいていの開発者は標準的な構成(halfKP256)から変更していない。
b. ゼロから学習させる時間が惜しいので公開されている評価関数ファイルから追加学習している。

これだと評価関数を公開していなくとも似たりよったりの指し手になってしまっても無理はない。またNNUE系の探索部は、やねうら王の探索部を使わずに独自実装している上位チームは存在しないため、やねうら王の探索部一択である。

c. 同じ(やねうら王)探索部を使っている。

さらに悪いことに、

d. NNUEはパラメーターが少なく、それほど表現力のあるモデルではない。

d.ゆえに、強化学習を繰り返してサチる(収束する)まで持っていくと、同じ指し手を選ぶようになってしまう可能性はある。実際、NNUE系で公開していない評価関数(ファイル)を用いた場合でも、短い持時間だとs-book_blackの定跡に嵌まるのは確認している。

公開する/しないとは別に、このように、モデル自体の表現力がどうなのかという問題がある。

これについて、本大会では、tanuki-さんのマメット・ブンブクというソフトが面白い活躍を見せた。このソフトはNNUE系なのだが、halfKP256ではなく、HalfKP_vmという別のアーキテクチャを採用している。これは従来のhalfKP256とは入力特徴量が異なり、玉が 6~9 筋にいるとき、盤面を左右反転させて入力している。左右対称次元下げと同じ効果が得られ、かつネットワークパラメーター数が減るので学習が早く進むという効果があるそうだ。

ただパラメーター数が減るのでその表現力は標準NNUEより若干落ちそうなものだが、その後の検証では、水匠とほぼ同等の棋力であることが確認された。また、マメット・ブンブクの探索部はやねうら王そのままだが、序盤の指し手が、水匠とは異なるようで、現在公開されているs-book_blackには嵌らないようである。(定跡から抜けてしまう)

マメット・ブンブクがs-book_blackに嵌らないのは、評価関数のアーキテクチャを変更しているのが大きいのか、ソフトを公開していなかったのが大きいのかは現時点ではわからない。私の考えでは、前者ではないかと思うのだが…。

そう考えると、二番絞りがアーキテクチャを変更し、40bにしているのは、わりと意味がありそうではある。

■ まとめ

現状わかっていることを色々書いたが、結局、評価関数のアーキテクチャを変更して、1から学習させ、そしてソフトを非公開にしていれば他の人が作った定跡手順に嵌まることは現時点ではなさそうである。将棋の変化はそんなに狭くないよと本大会が教えてくれたように思う。

しかし公開すると狙い撃ちされるというのも判明したことで、今後は公開を控える上位ソフト開発者が増えるかも知れないのもまた事実である。将棋ソフトの世界は新たな局面に突入したと言えるだろう。

[2022/05/17 18:00 訂正] : tanuki-さんのマメット・ブンブク、最終的にHalfKP_vmはやめて、halfkp_1024x2-8-32という別のアーキテクチャに変更された模様。私がマメット・ブンブクの古いPR文書を見ていたようです) ごめんなさい。halfkp_1024x2-8-32は、 Stockfish の過去のバージョンにおいて採用されたアーキテクチャです。「Stockfish においては、探索速度が低下したにもかかわらず、レーティングが向上したという報告が挙がっていたと記憶している」(tanuki-さん)とのこと。

将棋ソフトの大会は定跡勝負になってしまったのか?」への8件のフィードバック

  1. 非常に参考になる情報ありがとうございます。仮に評価関数非公開&メタ的な学習アルゴリズム非公開でも定跡ハメされるようになったら、モデル(ニューラルネットワークの構成と直接的な最適化法)非公開の時代が来る可能性もあるんだろうなあ。開発者的には非公開化は非常に合理的だし当然の権利ですが、将棋プレイヤー的には一部の人に研究の能力が偏るという意味で、序盤好き人間にとっては、非対称的なゲームになって昔に逆戻り感がありますねw
    開発者としてはまだまだ将棋で遊べそうだから喜ばしいということか…?

  2. でも、人間対人間の将棋での、角さんは交換せずに隠さんといかんとか、飛車のドリフトは振り過ぎだからもっとグリップでとか、そういう感じの研究の成果が1つ出たに過ぎないような。
    で、その定跡に嵌まると勝率が落ちるという考慮がソフトに入れば、勝手に避けるような方向に移動して収束するような気がするけど、それには大量のお金・時間・知恵が必要になるってのが真の問題のようなw

    • > 角さんは交換せずに隠さんと

      こういう駄洒落を自動検出してハイライトするChromeプラグインを開発する時が来たか…。(来てない)

  3. ブログとても参考になります。定跡がないソフトに驚きました。ありがとうございました。

  4. GPLのソースコードを元にしている以上探索部や学習部その他のコード変更を伴う工夫は公開せざるを得ないのに対して評価関数だけは秘匿できてしまうというのは、評価関数だけをいじって非公開にする開発者さんだけが一方的に有利になるという不健全な状況ではあると思います。

      • 補足です。もちろんバイナリを頒布しなければソースコードも公開しなくていいですが、頒布した場合、評価関数のほうは手法の詳細を公開しなくてもいいのに、ソースコードの工夫をしたプログラムは全部タネがばれる、くらいの意味です。

        ちなみにライセンスに関連する話ですが(オフトピかも知れませんが)、前回の選手権でdlshogiを利用した定跡がdlshogiのライセンス違反だと話題になってプログラムが決勝出場辞退する騒ぎになりましたが、dlshogiのライセンスはGPLv3であり、頒布時に「GPLライセンス以上の縛りを設けることはできない」というライセンスですので、「dlshogiを使って定跡を作ってはいけません」というオレオレ規約はかなり胡散臭いです。

        • > dlshogiのライセンスはGPLv3

          dlshogiは、公開されているモデル(学習させた評価関数パラメーター)が、GPLv3ではないのでは。
          // モデルファイルさえあれば、それをふかうら王で使えばいいので…。

rk へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。