おすし将棋では、CPU対局のあとに「検討」画面を開くと、AIが棋譜の全局面を解析して、評価値の推移や「注目の局面」(大きく形勢が動いた手)を表示します。
検討で大事なのは、判定するAIが、対局した相手より十分に強いことです。おすし将棋の棋譜解析は、次の3つの考え方で作っています。
約4段相当〜
ふだんの解析でも約4段相当
級位のCPUとの対局でも、プロ級の評価関数(NNUE)で深く読んで判定します。
最大 約9段相当
相手が強いほど、解析も強く
初段以上は相手の段位に合わせて解析を深くし、7段以上は勝負どころを読み直して解析漏れを防ぎます。
オフラインでも
ネットが切れても解析は止めない
スマホアプリでは、クラウドに届かないときに端末内のAIで解析を続けます。
この記事では、その理由と仕組み、画面に出る表示の読み方をまとめます。
なぜ「相手より強いAI」で解析するのか
棋譜解析は「この手は良かったか、悪かったか」を判定する作業です。判定する側のAIが、対局したCPUと同じくらいの深さしか読めないと、困ったことが起きます。
- CPUが深く読んで指した正しい手を、浅い読みの解析AIが「悪手」と判定してしまう
- 逆に、CPUの読み抜けで生まれた悪手を、解析AIも同じように見落としてしまう
つまり、解析AIは対局相手よりはっきり深く読めていないと、審判として信用できません。 10級のCPUと指した棋譜と、8段のCPUと指した棋譜では、必要な「審判の強さ」が違うのです。
一方で、どの棋譜も一律に最大の深さで読むと、解析に時間がかかりすぎます。級位の対局を数分待って解析するのは、遊ぶ側にとって割に合いません。
そこでおすし将棋では、相手CPUの段級位を解析サーバーに伝え、そのCPUより十分深く、かつ待ち時間が長くなりすぎない深さを自動で選ぶようにしました。
段級位ごとの解析の強さ
解析には、トップレベルの将棋ソフトでも使われているNNUE(ニューラルネットワーク評価関数)のエンジンを使います。相手CPUの段級位と、解析の強さの対応は次のとおりです。
| 相手CPU | CPU自身の読み | 解析の深さ | 解析の強さ(目安) |
|---|---|---|---|
| 10級〜1級 | 駒得評価 depth 2〜8 | 10 | 約4段相当 |
| 初段〜3段 | NNUE depth 5〜9 | 12 | 約6段相当 |
| 4段 | NNUE depth 10 | 13 | 約7段相当 |
| 5段 | NNUE depth 11 | 14 | 約8段相当 |
| 6段 | NNUE depth 12 | 15 | 約9段相当 |
| 7段〜10段 | NNUE depth 13〜16 | 13+勝負どころを精読 | 約7段相当・要所を精読 |
ふだんの解析でも約4段相当
級位のCPUとの対局や対人戦の棋譜でも、解析は約4段相当の深さで行います。級位のCPUは駒の損得を中心にした軽い評価で指していますが、解析側はNNUEで玉の安全度や駒の働きまで含めて深く読むので、相手よりはるかに上の目線で一手一手を判定できます。
初段からは、相手に合わせて解析を強くする
段位のCPUは、級位とは違ってNNUEで深く読んで指してきます。ここで解析が同じくらいの深さだと、CPUの好手を悪手と取り違えかねません。
そこで初段以上の対局では、「相手CPUの読みより3手以上深く、最低でも12」を基本に、解析の深さを段階的に上げています。初段〜3段の対局なら約6段相当、6段の対局なら約9段相当です。相手が強くなっても、解析は常にその一歩先から判定します。
7段以上は「2段階解析」で解析漏れを防ぐ
7段以上のCPUは、CPU自身がすでにとても深く読んでいます。これより深い読みを全局面に1つずつかけると、1局の解析に何分もかかってしまいます。
そこで7段以上では、解析を2段階に分けています。
- まず全局面を深さ13で一通り解析し、形勢の流れをつかむ
- 1手で評価値が大きく(300以上)動いた手の前後、つまり勝負どころの局面だけを、8倍の計算資源(8スレッド・大きな置換表)を使って1局面1.5秒かけて読み直し、結果を差し替える
悪手や好手の判定がもっとも問われるのは、形勢が大きく動いた局面です。そこを集中的に読み直すことで、時間を抑えながら、見落としなく「注目の局面」を判定します。 画面に「要所を精読」と出るのはこのためです。
「約○段相当」の意味
「約8段相当」などの表示は、解析の深さが、おすし将棋のCPUでいうと何段の読みの深さに当たるかを示した目安です。解析エンジンの棋力を厳密に保証するものではありませんが、「このくらいの深さで読んで判定しています」という、解析の信頼度の手がかりとして見てください。
画面での表示
どのAIで、どのくらいの強さで解析したかを、画面にそのまま表示します。
- 解析中:クラウドAIで解析中…(約8段相当)
- 解析中のバーの下:最大N秒(超えたら端末内AIに切り替え)
- 解析後:クラウドAIによる解析(約8段相当) または 端末内AIによる解析
クラウドの解析は全局面の結果をまとめて返すため、途中経過を細かく出せません。代わりに「最大で何秒待つか」を表示して、待ち時間の見通しが立つようにしています。
ネットがつながらなくても解析は止めない
ここまでの深い解析は、サーバー上の強力なエンジン(クラウドAI)で行っています。ただ、スマホで遊んでいると、電波が弱い・通信が切れている・サーバーが混んでいる、といった場面があります。そんなときに「解析できませんでした」で終わってしまうのは残念です。
そこでスマホアプリ版のおすし将棋には、端末の中だけで動く解析AIも入れています。解析は次のように判断して進めます。
- まずクラウドAIで解析する(強いので、こちらを優先)
- 通信エラー・サーバーエラー、または決められた時間内に返ってこないときは、端末内AIに切り替えて解析し直す
- 切り替えたときは「ネットに接続できなかったので端末内で解析します」とお知らせする
切り替えるまでの待ち時間も、段級位で変わる
クラウドの解析は、深く読むほど時間がかかります。そのため「何秒待ったら端末内に切り替えるか」も、相手CPUの段級位に合わせています。
| 相手CPU | クラウド解析を待つ時間 |
|---|---|
| 級位・段級位なし | 30秒 |
| 初段〜5段 | 45秒 |
| 6段 | 90秒 |
| 7段〜10段 | 120秒 |
高段位の棋譜は、クラウドの深い解析に価値があるぶん長めに待ち、級位の棋譜は早めに切り替えます。画面の「最大N秒」は、この待ち時間と、サーバー側の処理時間の上限のうち短いほうです。
端末内AIの特徴
- 電波がなくても、その場で解析できます。1局面あたり0.2秒の時間制で読むので、100手の棋譜でも20秒前後で終わります
- 解析が終わった局面から順に、形勢グラフや注目の局面に反映されます。解析中でもタブやグラフを触れます
- 端末の性能に合わせた軽めの解析(約1級相当)なので、「端末内AIによる解析」と注記を出し、クラウドの解析と区別できるようにしています
端末内の結果は保存せず、次はクラウドで解析し直す
クラウドで解析した結果はサーバーに保存し、同じ棋譜を開き直したときにすぐ表示できるようにしています。一方、端末内AIの結果は保存しません。
保存してしまうと、電波の良い場所で開き直しても軽めの解析結果が出続けてしまうからです。端末内で解析した棋譜は、次に開いたときにあらためてクラウドAIで本来の強さで解析し直します。
まとめ
- 解析はふだんでも約4段相当。級位のCPUとの対局でも、相手よりはるかに深く読んで判定します
- 初段以上の対局では、相手に合わせて解析を強くし、最大で約9段相当まで読みます
- 7段以上は、勝負どころを読み直す2段階解析で、解析漏れを防ぎます
- 画面には、どのAIで、どのくらいの強さ(約○段相当)で解析したかを表示します
- スマホアプリでは、ネットがつながらないときも端末内AIで解析を続け、次に開いたときはクラウドで解析し直します
解析結果は「AIがその深さで読んだときの判定」です。表示されている段位相当や解析エンジンも合わせて見ながら、検討に役立ててください。評価値と勝率バーの読み方は「検討の評価値と勝率バーの見方」で解説しています。