将棋AIはなぜ入玉がヘタクソになってしまったのか?

いまどきSNSで馬鹿でかい主語を使うとすぐに炎上する。「女と言うものは」とか「人類は皆」とか、そういう馬鹿でかい主語で語ることについて誰もが細心の注意を払っている。

ところが、「将棋AIは入玉がヘタクソ」と誰かが言ったところで炎上なんてしない。プロ棋士が「いまの将棋AIはこうなので…」みたいな発言をしたところで、「いやいや、こっちの将棋AIはそうじゃないよ」と誰からも指摘が入らない。

なんなら将棋AIの開発者の私が自ら、「将棋AIは入玉がヘタクソ」と書いたところで、「いやいや、こっちの将棋AIはそうじゃない」とはならない。

なぜならないのか?その疑問に答える前に、先日の棋王戦の話を先に書こう。

先日の棋王戦第一局、藤井聡太棋王と伊藤匠七段の対局で、伊藤匠七段が角換りから入玉狙いの展開となった。将棋AIの世界では、先手勝ちとされている変化のようなのだが、プロの対局は24点法(将棋AIの大会は27点法)なので、プロの対局だと引き分けが結論になるのでは?と言われている。

https://twitter.com/tayayan_ts/status/1753949859219140792

2013年ごろ、将棋AIは入玉自体がヘタクソであった。序盤が(アマの)有段者、中盤が(アマの)県大会レベル、終盤がプロレベル、そして、入玉は(アマの)級位者レベルであった。当時のソフトは、入玉と言うか、玉が敵陣に向かわずに(先手から見て)6,7段あたりでうろうろしてそのまま捕まってしまうことが多かった。

当時、評価関数をプロ棋士の棋譜から学習させているチームが多く、プロ棋士の棋譜には入玉の棋譜が少なくて、学習データが足りなかったのが主な原因である。

王様があまりに入玉しないもんだから、プログラムで玉の位置に対する加点を行っていた。(当時のAperyや、やねうら王が実際にそういうことをしていた) 例えば、(先手が)91の升にいると100点。92の升なら90点、93なら80点と言った具合である。このようにしておくととりあえず入玉自体はするようになる。

そんな小細工をするまでもなく、教師データを自己対局で作るようになると一気に入玉がうまくなった。2016年ごろの将棋AIの入玉の将棋は観戦していたプロ棋士の先生(遠山先生とか)も感心するレベルになっていた。

ところが、最近、将棋AIは入玉がヘタクソすぎるのでは?と話題になっている。

例えば、昨日行われた電竜戦の決勝トーナメント、予選4位のケルンバ VS 予選5位の氷彗との対局である。

【2024.02.04 決勝T開幕局】第2回マイナビニュース杯電竜戦ハードウェア統一戦 決勝T開幕局【解説:千田翔太七段】

先手のケルンバが必勝態勢を築くも相入玉模様になり駒点が足りずに逆転してしまった。(氷彗の入玉宣言勝ち)

前からこんなに入玉将棋がヘタクソだったかな…。5年ぐらい前の将棋ソフトの方がマシじゃね?

理由はいくつかあるのだが、まず、昔は将棋AIの評価関数として三駒関係を用いていた。三駒関係というのは、玉とそれ以外の2駒(King-Piece-PieceでKPP型評価関数と呼ばれる)に対して点数をつけ、それらを線形に足し合わせたものを評価値としていた。つまりは

eval = Σ kpp_table[k][p1][p2] for each k,p1,p2

みたいな和で求めていた。

K(玉のいる升)が異なると表の違う場所を参照するので、評価関数の表現力が足りないというわけでもなく、入玉将棋も教師データさえあれば、わりとうまく学習できて、わりとうまく指せていたのだ。

ところが、そのあとNNUEという3層程度の全結合からなるNN(ニューラルネットワーク)を用いた評価関数が出てきた。最新のやねうら王もこれを用いている。NNUEは高速に計算できることに配慮した小さなネットワーク構造をしているので表現力の限界はすぐに訪れた。そこで、開発者は勝率にあまり寄与しない局面は捨てることにした。

具体的に言うと、水匠は振り飛車を教師から除外した(振り飛車を指すチームがあまりいなかったため)し、終盤(入玉模様の将棋もこれに含まれる)の局面を間引いたり、学習時の重みを下げたり、何らかそういう工夫をした。(ケルンバが入玉がヘタクソだった理由は、作者であるBondさんによると「序中盤の学習量を重視して評価値の上限設けて教師作成したのがよくなかった」そうである。つまりは、終盤の局面を間引いたわけであるな…)

それによって、将棋AIは入玉将棋がヘタクソになったのではないか…というのが、世間の(将棋AIに詳しい人たちの)認識である。

ところが、これは少し間違っているのだ。

いま最強の将棋AIと言うとdlshogiかやねうら王である。

ところが、dlshogiはHEROZの棋神アナリティクスというサービスで最新版が使えるものの、PCで使える形の最新版は公開されていないので自分のPC上で動かすことはできない。dlshogiで公開されているのは、2021年8月バージョンのモデルファイルであり、さすがに2年以上前のソフトを最新のと呼ぶのは憚られる。

と言うことで、いま現在「(入手できる範囲で)最強の将棋AI」と言うとそれはやねうら王のことを指していると言っても過言ではないのである。

やねうら王本体は、やねうら王のGitHubで公開しているが、開発版の最新版はスポンサー限定である。(このブログの「やねうら王を支援する」のところから支援すると入手できる)

また評価関数はやねうら王プロジェクトでは公開していないが、現在公開されている評価関数のなかで最強なのは、Líである。これはたぬきシリーズの作者であるtanuki-さんが公開している。

tanuki-wcsc33-2023-05-04 : https://github.com/nodchip/tanuki-/releases/tag/tanuki-wcsc33-2023-05-04

よって、「(最新の)将棋AIでは」だとか「最強の将棋AIでは」だとか言う場合、(現在入手できる最新、最強の組み合わせである)やねうら王V8.00(開発版) + Líのことを指しているわけである。

これが一般人が入手できる範囲での最新・最強の組み合わせなのだから、この組み合わせでのソフトの指し回しについて、「いまの将棋AIは◯◯である」みたいなクソデカ主語で語ってもなんら問題ないのである。

それでは、なぜこの組み合わせで入玉がヘタクソになってしまったのだろうか。

Líの作者、tanuki-さんによると以下の理由らしい。(専門的な内容でスマソ)

マメット・ブンブクの学習では Label Smoothing を使用しています。 Label Smoothing では、勝敗項の教師信号を、勝ちを 0.9、負けを 0.1 などとしています。これにより評価値の絶対値の上限が小さくなっています。評価値の絶対値の上限が小さいと、入玉将棋のように評価値の絶対値が大きくなる局面において、指し手間の評価値の差が小さくなります。これにより、本来最善手として指されるべき指し手とは別の指し手が指される場面が増えます。これが駒をぼろぼろ取られる原因なのではないかと思います。

また、水匠7以降は、マメット・ブンブクからの追加学習(fine tuning)なので、同じ問題があるようだ。

tanuki-さんは、この学習方法を改良すると言っていた。

そんなわけで、結論的には、いまの将棋AIで入玉がヘタクソな理由は、多くの評価関数が追加学習の元としてtanuki-シリーズの評価関数ファイル(モデルファイル)を用いており、そのtanuki-シリーズでLabel Smoothingを使用したことによる弊害であったようだ。

ちなみに今回の電竜戦HWTの決勝トーナメントでのやねうら王(2月9日対局)は、評価関数にLíをそのまま用いている。これは駄目かも知らんね…。

それで話は最初に戻るのだが、いまの将棋AI(上で書いた最強の組み合わせ)では、27点法とか24点法とかの違いを理解できるどころか、入玉が下手すぎて、入玉模様の将棋はまるでわかってないというのが私の考えである。また、24点法のルールで自己対局により教師を作って学習させてもこの問題は解決しないと私は思う。NNUEではそんなにモデルに表現力(学習能力)がないので…。

それに対して、DL(Deep Learning)を用いた将棋AIは、入玉が絡む局面の評価も、わりと正しいことがわかっている。これについてはいずれ別の記事で書く。

将棋AIはなぜ入玉がヘタクソになってしまったのか?」への7件のフィードバック

  1. 入玉のときに必要以上に駒を取りに行くために手数が無駄に伸びてしまう現象も多い気がする。あと入玉宣言の相手の陣地に10枚以上必要ってのがかなり人為的なルールだからか、直前にならないとペタペタ打ちまくる手が読みに入ってこないのも見かけます。

  2. tanuki-さんによると、LiとHaoは同じ教師データからの学習らしいのだけど、Haoの方は以下の事情で入玉に強い可能性があるそうだ。(でも長い持ち時間だとLiの方が強いので大会ではLiを使うのが良いと思う。)

    Hao では Label Smoothing の係数を 0.99 と大きめに設定しています。そのため、評価値の絶対値の最大値が Li より大きいです。これにより、入玉は Li ほどは弱くないと思います。
    https://nodchip.hatenablog.com/entry/2023/05/15/000000
    実際に試したわけではないため、検証が必要だと思います。

  3. > 序盤が(アマの)有段者、中盤が(アマの)県大会レベル、終盤がプロレベル

    第2回将棋電王戦の頃ですよね?流石にもう少し強かった気が・・・

    • あー、当時の上位のソフトはそうかも知れないですね…。
      私は、やねうら王(当時3,4位)視点なのでちょっと低めに書いてしまったかもです。

  4. AbemaのソフトはDLっぽいのですが、やねうら王と比べると入玉が上手いんでしょうか?下手なんでしょうか?

コメントを残す

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