将棋AIの開発には大変な部分がある

山口祐氏(以下、山口):ありがとうございます。非常に新しい情報もあって興味深いです。そうですね。先ほどフリーズの話がありましたが、私はちょうど対局の当事者だったのでよく覚えています。局面がPALと「やねうら王」が対局していて、PALから見ても必敗になったという局面があって、「これは負けだな」と思って見ていたんですが、ピタッと手が止まったタイミングがあって、ぜんぜん手が指さない。

「やねうら王」側が残り時間がもう1分半ぐらいになって、私の経験上もこういうのはだいたいフリーズして時間切れで負けるんじゃないかと期待して見ていたんですが、たちまち復活してそのまま勝ち切るといったことがあって、非常に印象に残っています。あれは確かに探索部の問題ですかね。

直前にいろいろ調整された結果、そういったかたちになったと聞いています。なかなか探索部のバグというか、ハードウェア由来とか、そういった本番環境によって大きく左右される部分もあるので、この対局を最後まで完遂するという部分は非常に難しいところがある。

というところで、「やねうら王」は、将棋AIを使われている一般の方にも非常によく知られていて、開発されているやねうらおさんも非常に開発力が高いと思います。そういった方でも不具合が起こってしまうという、将棋AIの開発には大変な部分があると再認識しました。

学習部分でぜひうかがいたいのは、「水匠」で学習した棋譜を混ぜる、局面を混ぜると言っていたと思うんですけど、割合としてはどうですか? けっこう混ぜている感じですかね?

杉村達也氏(以下、杉村):はい。そうですね。25パーセント混ぜるパターン、50パーセント混ぜるパターン、75パーセント混ぜるパターンで、一番ロスが下がってアキュラシーが上がるのはどれか実験はしていたんですけど、基本的には50パーセントが一番でした。

本当はある程度微調整が必要だとは思いますが、その3つでしか実験をしていないので、その中ですと5割。つまり半々は一番アキュラシーが上がっていたりしたので、意外な結果ではあったんですけど、それが一番良さそうだということになりました。勝率も上がったというかたちでしたね。

山口:それは私の印象では、多く混ぜているなと思います。

杉村:そのとおりですね。

なんで強くなるのかわからない

山口:もっと少ないのかなと思っていました。混ぜるとしたらせいぜい10パーセントか20パーセントぐらいかなという印象だったので、川島さんそのあたりはどうですか?

川島馨氏(以下、川島):GCTの公開している棋譜は、10ブロックで1,000プレイアウトとかしたもので、さっき聞いた「水匠で100万ノード」に比べたらぜんぜん読みが浅いですね。

山口:確かに。

川島:100万ノードと聞いて相当だなと思ったんですけど(笑)。

山口:そうですね。

川島:100万ノードで1億は相当かかりますよね。

山口:100万ノードってだいたいどのくらいのDepthですか。

杉村:そうですね。序盤ですと深く読めまして終盤に連れてだんだん浅くなっていくのですが、だいたいDepth20から22ほどは読めているんじゃないかと。

山口:これはもう相当な計算のパワーも必要ですし、時間もかかる。

杉村:一般的にそうですね。

山口:Depth十数とかそれぐらいで、CPUベースのソフトだと教師局面を作られる方が多いと思います。かなり力を入れて開発された、深い読みの教師局面を使われているということですね。

杉村:そうですね。CPUでThread Ripper 3990Xを使って、だいたい1日に500万局面ほど生成できます。ある程度の日数があったので、これぐらいの局面は作れるだろうというスケジュールのもと、100万ノードで作りましたね。

山口:ありがとうございます。

川島:聞いてみたかったのですが、「たややんメソッド(謎)」というのがTwitterで流れていたんですけど、あれは何ですか?

(一同笑)

杉村:あれは別に私が「謎にしてくれ」と言ったわけではまったくなく、主たる開発王のやねうらおさんが「なんで強くなるのかわからない」と。「ただ計測上強くなっている」と。なので、手法は全部やねうらおさんに言っているんですけど、それがなぜなのかという理論上の部分が何もわからないので、「(謎)」と。恐らくやねうらおさんが付けたんでしょうね。

川島:なるほど(笑)。さっき教えていただいていた方法が謎だったという。

杉村:そうですね。なぜそんなに混ぜて強くなるのかというのとか、あとは評価値と勝率の話は山岡さんもブログで書かれていたことでもあるんですけども。

川島:そうですね。あれは効果がありました。

杉村:これらが主たる2つのメソッドでしたね。

NNUE系とディープラーニングの違い

川島:あともう1点聞いてみたかったのが、「水匠」のNNUE系の学習とディープラーニングの学習の両方をやられている方はそんなにいないと思うんですけど、共通する部分とか一番違う部分というのはどの辺ですか?

杉村:はい。dlshogi系のモデルについてはまだまだ学習の余地がありまして、教師局面を使えば使うほど、学習させれば学習させるほどまだ伸びがあったなというのがGCTのモデルの時点の感想です。NNUEのほうは絞り切っちゃったという感じで、どう学習しても何を学習させてもぜんぜん強くならないなという感想でしたので、学習させる成果が表れやすいなというところの差はありました。

あとはdlshogiのほうは局面をばらして学習させるほうが恐らくよくて、NNUE系のほうは局面をばらして学習するとあまりうまくいかないことが多くて、ある程度将棋のfloodgateなどでよく出る局面を基に学習をさせたほうが表現力という点なのかはわからないですけど、うまくいくイメージがありますね。

川島:ありがとうございます。

杉村:すみません、PALの話もできれば……。

山口:そうですね、ありがとうございます。私の話はもう2人のでお腹いっぱいかなと思って。

(一同笑)

林隆弘氏(以下、林):ぜんぜんお腹空いています(笑)。お願いします。

山口:ありがとうございます。今回PALはディープラーニングで川島さんが非常に注力されていて、どんどん強くなっているという話を耳にして、ちょっと将棋のほうも気合いを入れてやってみるかということで、開発を開始したと。ディープラーニングベースにシフトしたという経緯があります。けっこう今回新しくディープラーニングを採用したソフトは多くが川島さんが公開されているdlshogiをベースにされている。

特に学習部分のできとか、使いやすさといったところが会社的には非常に評価が高くて、「やねうら王」とかもたぶん学習部分がdlshogiをベースにされていると思いますし、他のソフトですと例えば「sakura」とか、どうですかね? 「名人コブラ」とかもアピール文書の段階ではdlshogiを使うとなっていたと思いますので、かなり多くの将棋ソフトがdlshogiベースになっていたと。

これに対してPALは一応独自で実装をしていまして、私の作っている囲碁のソフトで「AQ」というソフトがあるんですが、そちらのほうでもともと作っていた探索部とか学習部分、そういったものを将棋に丸ごと持ってきて開発をスタートしました。

局面を評価するクオリティを上げれば全体として強くなるんじゃないか

将棋AIファンの人はご存知かもしれないですが、「技巧」というソフトがあって、これも5年ぐらい前はポナンザとしのぎを削ったという、非常に強いソフトなんですが、そちらのソースコードのほうを流用して、「技巧」にAQの探索部や学習を搭載していました。

そのモデルのネットワークの構造は「やねうら王」とかdlshogiよりももう少し重たいというんですかね。大型のパラメータ数をネットワークで採用していまして、Alpha Zeroと同じ20ブロック、256チャンネルといったネットワークサイズのものを採用しています。

さらにいろいろてんこ盛りになっていて、SENetと呼ばれるような画像認識、画像分類のタスクで性能が出ているようなネットワーク構造を採用したり、活性化関数を変更したりといったような追加の仕様変更を行っています。それで局面の精度を高めよう、つまり自己速度はdlshogiとか「やねうら王」とかに劣るんですけど、それに対して質ですね。

局面を評価するクオリティを上げれば全体として強くなるんじゃないかと。そういう思想で開発を進めていました。もともと開始の局面はゼロからではなくて、2019年のPALですね。昔のPALで生成した局面があるので、それを5,000万局面ほど準備して、それで最初の評価値とか、あとは合法手ですね。

まずディープラーニングは合法手を指すのがけっこう大変なので、それを学習させるといったことをやりました。それからひたすら自己対戦、強化学習を繰り返し、全体で1万6,000GPU/時間ぐらいの強化学習で、ジェネレーションでいうとだいたい220世代ぐらいパラメータの更新を繰り返してだんだん強くするといったことを行っています。

あとは細かい話とかは詳細アピール文書で世界コンピュータ将棋選手権のサイトのほうに公開しているので、気になる方はそちらを読んでいただければと思います。

dlshogiが強くてとても歯が立たない

その探索部などが、たぶんdlshogiとかと若干異なっている部分かなと思っています。こちらはAQの探索部をベースにしつつ、チェスのほうで「LeelaChessZero」というソフトがあるんですけど、その探索部が非常に高速に動作するので参考しながら高速化のチームをがんばったり、メモリを少なくするための工夫をしているといった特徴があります。

その推論ですかね。私も大会当日は、DPUを使う速度的なところもA100というdlshogiと同じデバイスで参加しました。そちらで計測するとGPUをほぼ100パーセント使えるような効率でできていたので、モデルのサイズを大きくするところと探索部を改良するところのバランスが取れていたと思っています。

ここまでが詳細アピール文書に書いているところなんですけど、開発秘話というところで1個ぜひみなさんにこの場でお知らせしたいと思ったのは、実はこれは2回目の学習なんです。1回目は同じぐらいの規模で学習をしたケースがあって、そちらの時はもう少し軽いネットワーク構造、Alpha Zeroと同じようなネットワーク構造でAlpha Zeroと似たような学習を行ったというケースがありました。

それで学習もだいたい終わったし、こんなものかなと思ってベンチマークとしてdlshogi、電竜戦で優勝した時のdlshogiと対戦させてみたんですね。そしたらdlshogiがメチャクチャ強くてとても歯が立たないという結論になったんです。それが3月末ぐらいかな。4月に入ったぐらいかもしれないですけど。

そこでこれはちょっとまずいなということで、慌てて方針を変更してもっとより重たいネットワークを使ったり、あとは中盤、終盤ですね。こちらの局面を一応floodgateから引っ張ってきて、開始局面に加えたりといった工夫を行って、なんとかもう少し強いモデルができました。

なので、そのあたりのdlshogiが非常に強いというところは、私にとってはある意味衝撃的で非常に印象に残っています。大会は二次予選で惜しくも敗れてしまったんですが、floodgateとかの成績でもレーティングで4,400とかそれ以上の成績も残していますから、大会に10回出たら4回か5回ぐらいはdlshogiが優勝してもおかしくなかったんじゃないかなと、私は今でも思っていますね。

:山口さんは社内スレッドでもdlshogiの凄さを書かれていましたもんね。

山口:ネットワークサイズが小さくてあれだけ強いというのは、けっこう驚異的だと思っています。私はもともと囲碁のネットワークの深層学習のほうをやっていたんですが、そちらだと大きいネットワークほど強いという傾向が顕著なんですよね。

10ブロックより20ブロックのほうが強い、20ブロックより40ブロックが強いとはっきり出るので、将棋でもそれは同じように出ると思っていました。それがdlshogiなら、10ブロックのような小さいネットワークでも強いというのは、驚くべき性能だなとかなり強く感じました。

:なるほど。わかりました。

山口:そういうところで突貫でやり直したのがうまくハマって、今回の大会に結果でたまたまうまく行ったのかなと今では考えています。

2日目より3日目のほうが強くなったPAL

:1点だけ、PALの山口さんに質問したいんですが、まさに決勝大会で特に3日目ですよね。2日目に「やねうら王」との対局を観戦していて、「けっこう『やねうら王』強いな」と思っていました。両方とも決勝に上がってくるのかなと思ったんですが、PALが2日目では負けてしまいました。先ほどのようなことがあって、PALは最後の決勝リーグの時に、2日目より3日目のほうがだいぶ強くなったような。人間にはそういう感覚があったんですが、その間に何か秘策があったんですか?

山口:二次予選は、私も複数モデルを実は準備をしていましたのでどれを使うかを取捨選択しながらやっていました。それで一番良さそうなモデルを選択したということと、あとは持ち時間の設定をかなり大きく変えました。

具体的には二次予選のたぶん2.2倍程度、1手の思考時間を使うようにしました。ちょっと細かくなってしまいますが、コンピューター将棋だと「ポンダー」という仕組みがあって、相手の手を1手先に予測しておいてその手に集中して読むという機能があります。ディープラーニング系の将棋は、たぶんdlshogiとか「やねうら王」もたぶんそうじゃないかと思うんですが、そのポンダーの機能はあまり使わないというケースが多いかなと思います。

PALは「技巧」がベースになっているので、このポンダーがわりと何も考えずに入っていて、2日目の二次予選で気付いたのは、そのポンダーがかなり当たるということに気付きましたね。CPUベースのソフトが当たった時にPALから見てその相手の手というのが非常に当たりやすくて、逆にPALの手は相手から見ると非常に当たりにくいと。

つまり相手の持ち時間を一方的に削れる可能性があるといったことに気付いたので、3日目は恐らくポンダーが当たるので、1手あたりの思考時間を長くしても相手の持ち時間と同じぐらいになるだろうと。そこで手元のNNUE系の将棋ソフトと、その前の夜に一晩テストして最適な持ち時間に調整して、3日目の決勝リーグに臨んだといった経緯があります。そのあたりが、決勝リーグで大きく星を伸ばした要因になっているのかなと考えています。

これからAI将棋はどういう戦いになるのか

:わかりました。話おもしろいです。ありがとうございました。もう1点だけみなさんにうかがいたいことがあるんですけどよろしいですか? これからAI将棋という文脈の中で、どういう戦いになってくるのかなというのをそれぞれみなさんにうかがっていきたいなと思うんですけど、いかがでしょうか?

例えばディープラーニングが強いという前提での話もあるかもしれないし、そうでもないよという文脈もあるでしょうし、ディープラーニングの戦いになるとさらにどういう戦いになるのかという話も含めておうかがいしたいです。まずは杉村さんからお願いします。

杉村:はい。ディープラーニング系が電竜戦の時に1位をdlshogiが取りましたので、相当強くなっていて、ほとんどディープラーニング系しか残らない従来型、NNUE系であったとしても相当残らないのかなと思っていました。結果としては、PAL以外のディープラーニングが二次予選敗退というかたちだったんですけど、優勝したelmoはNNUE系で、定跡について相当がんばったと聞いています。

NNUE系のほうが明らかに序盤は弱くて、dlshogi系、ディープラーニング系のほうが序盤は強いです。序盤は定跡を工夫することによって、ある程度改善できると思うんですが、終盤の読み抜けみたいなところは、ディープラーニング系は探索速度がそんなに出るわけじゃないので、あまり改善がしづらいという部分がもしあるとしたら、これからもあと何年かは良い勝負になるかもしれません。

ただGPU自体は性能が相当上がっているので、そう見るとディープラーニングのほうが強いのかもしれないですけど、NNUE系もまだまだ序盤を工夫させればいいかなという部分と、あと「Ryfamate」さんというソフトがディープラーニング系とNNUE系のクラスタというか、2つを使ってそれで合議させて3位を取られていたので、両方の良いところを使う未来もあり得るかなと考えています。

:わかりました。ありがとうございます。続いて川島さんいかがですか?

来年はディープラーニングのソフトが大半決勝に残る

川島:さっき杉村さんがおっしゃっていたRyfamate。組み合わせるとお互いの、序盤はdlshogiが強くて終盤はNNUE系が強いというところができると思うんですけど、私はもう組み合わせはなくディープラーニング一本でいくのが使命だと思っていますので(笑)。

終盤をどうするか。そこはdlshogiが苦手な局面だとディープラーニングだと読み抜けというところが本当に克服できるのかというのがあります。ですから、そういう局面にしないで有利なまま勝つという勝ちパターンにできれば、勝てるとは思うので、PALが行っていたように自己対局のみで強くしたいと思っています。

dlshogiは、以前はそうやっていて、そこまで強くできませんでした。ブロックサイズが小さいとかシミュレーション回数が少ないという問題はあったので、そのへんはもしかしたらPALぐらいのブロックサイズ、シミュレーション回数でやり、序盤から最後まで有利に展開するということで、ディープラーニングの強みがより活かせる展開の方向にしたいなと思っています。将来的にはディープラーニングが勝つことを信じてやっています(笑)。

(一同笑)

:「将来」ってどれぐらいの時間軸ですか?

川島:大きく「来年には」と(笑)。

:来年には!? わかりました。ありがとうございます。ブロックサイズも上げていくということですかね。では最後、山口さんお願いします。

山口:ありがとうございます。お二人ともそれぞれ違う意見を述べられていたかなと思いますけど、私はさらに極端な意見を言わせていただくと、来年の決勝リーグですね。2021年はCPUベースのソフトが7、ディープラーニング系のソフトが1ということで7:1だったんですけど、来年は恐らく逆になっていると思います。

つまりディープラーニングのソフトが、大半決勝に残るといったかたちになるのではないかと思っています。やはりそのディープラーニング系のソフト、私も今回将棋での開発は初めてだったんですが、非常に強くなる速度が速いですし、序盤の精度、こういったところがCPUベースのソフトに比べても圧倒的に違います。dlshogiを始め、各ディープラーニング系の将棋ソフトの知見もこれからどんどん溜まっていくと思いますので、ディープラーニング系のソフトが、今後さらに躍進するのはほぼ間違いないかなと、私のほうは思っています。

:なるほど。山口さんと言えば、野球では二刀流の大谷翔平が騒がれていますが、コンピューター将棋界隈では二刀流と言えば山口さんですし、そのあたりも先ほどの囲碁AIから応用したという話もございましたが、そういうところの強みも今後活かされるところがあるんですか?

山口:そうですね。けっこう囲碁のほうで進んでいる部分もありますし、あとはチェスのほうですかね。

:さっきおっしゃっていましたね。

山口:研究が進んでいますし、もちろん将棋のほうでも独自にみなさんいろいろな工夫をされていますので、そのあたりの分野ですね。ゲームAIといったところでは一括りかと思いますけど、まぁ横断的に見ていけた開発者がたぶん次の優勝を取るのではないかと思います。

:わかりました。ありがとうございました。