いま大会上位に位置するDeep Learning系の将棋AIは、評価関数として画像認識などでよく使われているResNetを用いている。ResNetについては機械学習を齧っている人ならば誰でも知ってるぐらい有名だと思うので、詳しい説明は割愛する。(ググれば詳しい説明がいくらでも出てくる)
囲碁AIの世界では、このResNetのブロック数を大きくしていくのが一つの潮流としてある。ブロック数が多いと言うことは、より層の数が増え(よりdeepになり)、1局面の評価に、より時間を要するようになるということである。それと引き換えに評価精度がアップするから、トータルでは得をしていて、棋力が向上するというわけである。
ところが大きいブロック数になればなるほど学習に要する教師局面の数が増える。学習もブロック数に応じた時間を要するようになるから、そう簡単に大きくはできない。しかし囲碁AIの方は、中国テンセントなど大手企業が関わり、積極的に囲碁AIに投資することでそれを達成してきた。
将棋AIの方は、これとは長らく事情が異なっていた。DL系の将棋ソフトで最初に大会で優勝したのは、第1回 電竜戦(2020年11月)でのGCT電竜である。この時、GCT電竜はResNet 10b(10ブロック)であった。
翌年の第2回 電竜戦(2021年11月)では、優勝したGCT電竜は10bのままだったが、2位になったdlshogiは15bを採用していた。
これはRTX 3090で10bより15bの方が強かったからというわけではなく、大会マシン(A100×8)では、10bも15bもNPS(1秒間の探索局面数)がほぼ変わらないそうで(他の部分がボトルネックになっているから)、それなら15bの方が(同じNPSなら局面の評価精度が良い分だけ)得だよねということで15bが採用されたのだったと思う。
しかし、第2回電竜戦(2021年11月)の大会後の計測により、RTX 3090でも(NPSが15bで低下しても)10bより15bのほうが強いということが判明する。
dlshogiとGCTの比較 : https://tadaoyamaoka.hatenablog.com/entry/2021/11/30/213110
なお、GCT電竜が第2回電竜戦の時点で15bを採用しなかったのは、計算資源の都合、時間的に厳しそうだったからとのことである。
順番は前後するが、その4ヶ月前に、dlshogiと水匠のエキシビションマッチが開催され、このバージョンのdlshogiがモデルとともに公開された。これが現在公開されている最新かつ最強のモデルファイルであり、dr2_exhi版と呼ばれている。これは15bである。
そして、翌年のWCSC32(第32回世界コンピュータ将棋選手権 , 2022年5月)では、dlshogiが20bを採用して見事大会優勝を果たした。
いささか駆け足で見てきたが、以上を時系列順に表にまとめると以下のようになる。
開催時期 | 大会名 | ソフト名 | 大会結果 | ブロック数 |
2020年11月 | 第1回 電竜戦 | GCT電竜 | 優勝 | 10b |
2021年5月 | WCSC31 | dlshogi with GCT | 二次予選14位 | 10b |
2021年7月 | 第2回 電竜戦 エキシビションマッチ | dlshogi | このバージョンのdlshogiが公開された。dr2_exhi版。 | 15b |
2021年11月 | 第2回 電竜戦 | GCT電竜 | 優勝 | 10b |
2021年11月 | 第2回 電竜戦 | dlshogi | 二位 | 15b |
2022年5月 | WCSC32 | dlshogi with HEROZ | 優勝 | 20b |
そんなわけで、2021年11月時点で、どうやら10bより15bの方がNPSは低下するが、強いのでは?ということになりつつあった。
それを決定的にしたのが、2022年5月のWCSC32である。
WCSC32ではdlshogiは20bで優勝した。15bより20bのほうがNPSは25%ほど低下するが、それを考慮しても棋力は向上するという結論が出たのである。山岡さんいわく、公開しているdr2_exhi版(第2回 電竜戦版 = 15b)より、R+144~R+183程度強くなっているのだそうである。
WCSC32版dlshogiが公開しているモデルからどれくらい強くなっているか : https://tadaoyamaoka.hatenablog.com/entry/2022/06/20/210037
つまり、2021年11月~2022年5月にかけてが、将棋AIの歴史上の大きなターニングポイントとなった。そこまでは「将棋AIは囲碁AIとは異なり、大きなブロック数にするとNPSが低下して、(読みの量が足りないと頓死したりするので)それゆえ棋力が低下する」が定説だったのが、ここで完全に覆った。ここ以降は、大きな計算資源によって大きなブロック数のモデルを育てる計算資源合戦、すなわち札束での殴り合い時代に突入したのである。
dlshogiチームはHEROZの計算資源を一部使用して学習を回しているそうなのだが、別に業務時間中にずっとマシンが空いているわけでもないだろうし、単純な計算資源だけで言えば個人であってもまだ十分勝負にはなると私は思うのだが、山岡さんはこれまでDL系の将棋ソフトをお一人で作り上げ、なおかつ、DL系の将棋ソフト界隈をお一人で数年分ぐらい前進させてきた実績がある。
dlshogiはHEROZの計算資源が使えるから強いのでは決してないと思う。山岡さんがHEROZの計算資源が使えるからこそ鬼に金棒なのである。
そんなわけで、dlshogiにはもう他の将棋AIでは到底敵わないだろう。この状況があと何年続くかはわからないが、大手企業が将棋AIの開発に乗り出してくるか、何か機械学習方面のブレイクスルーが将棋AIに持ち込まれるかしない限り、そう簡単には変わらないと思う。
// この記事は、GCTの開発者の加納さんに査読していただきました。この場をお借りしてお礼申し上げます。
ResNet自体もはや化石アーキテクチャですし、それを画像認識タスクの最新のSoTAモデルに変えるだけでも大違いだと思うのですがどうなんですかね……?
その可能性はありますがResNetでそんなに悪くない感じです。
将棋って1升ずつ長い利きが伝播されていくので(その升に駒があるとその次の升には伝播されない)、論理回路のようになっています。この意味でResNetの構造がうまくこれを表現できるモデルにはなっています。逆にTransformerを使うようなモデルは利きという観点からはあまり相性よくない感じではあります。
論理回路ですか。そんな風に将棋を捉えたことはなかったです。
ResNet系の最新モデルに変えるのも、たいして変わらないのでしょうか?
例えば長い利きは、
55の升に上向きの長い利きがあるか = AND(56の升に上向きの長い利きがある , 56の升に駒がない)
55の升に下向きの長い利きがあるか = AND(54の升に下向きの長い利きがある , 54の升に駒がない)
…(中略)
56の升に駒がない = NOT(OR(56の地点の歩 , 56の地点の香 , … ))
…(以下略)
のような論理回路で構成できて、そしてこれは(ResNetの)3*3の畳み込みで表現できますな…。
> ResNet系の最新モデルに変えるのも
学習に要する時間自体がすごく長いので比較実験自体がなかなか…。(最初は学習が速くとも、最終的な到達地点がそれほどでもない場合も多々あるので学習の初期のaccuracyやlossや自己対局の結果からでは判断できないので…) 例えば、Bottleneckはflukeさんがやってましたが、きちんと検証できるだけの計算資源がなく…。
Zen4が速いみたいな話が出始めてるけど、GPUを使わない系には朗報だったりするんですか?
新しいRyzen、速いみたいっすなー。64コアのZEN4がどうなるかですなー。