以前、AobaZero w64~w128 の記事で、Bonanza がかなり弱い結果が出た表を掲載しました。

実はこれは、所定の方法で ShogiGUI へ Bonanza を登録すると初期状態で探索の深さが 1 であることが原因の1つと思われます。もっと大きな値にすれば (思考時間は伸びますが) Bonanza は強くなります。

この blog は、将棋 AI を使ったことがない人へなるべく手軽に使ってもらいたいと考えて記事を書いている側面もあるので、今まで Bonanza (等の将棋 AI) の設定には触れてきませんでした。

ですが、「やねうら王Wikiが完成した件」に以下のように書かれている点を見て、考え直しました。(赤字は私による強調)

しかし、その後、多くの開発者がやねうら王を改造するようになり、そして、多くの将棋ファンがやねうら王を使うようになった。そうすると「無料で使えるやねうら王インストール方法」とか「最強の先生(水匠)を入れよう」みたいなクソブログとかYouTubeのクソ動画が出てくるわけである。そこには、エンジンオプションの説明すら書いてなくて、やねうら王のGitHubのリンクすらなく、やねうら王とすら書いてないのである。何が最強の先生じゃボケ。私に言わせれば、勝手に商品を塗装し直して販売する中華クオリティそのものである。

私が用意した manifest には、GitHub への link はないのですが「やねうら王」web site への link は書いてあります。そこから engine options の説明へ辿ることができるだろう、という考えです。ですが、manifest の中身までちゃんと見る方はあまり多くないだろうなあ、と気付きました。

manifest の "notes" field に説明文を追加しておこうか、思案中です。

今回の話は将棋と全く関係がない上に万人向けでもありません。

「知らない方が良かった」という方もいるかも知れないので、読んでいる途中でも引き返しやすいように (読みたくないところを読まなくてもよいように) 区切りをかなり空け、7つに分けて書きます。

第1層

こんな呟きを見つけました。

メアドインアビス知らずに定期的にこの方のナナチだけ摂取してたんだけど、あまりにも可愛いのでついにメイドインアビスを見始めました

この呟きを開くと、挿絵を見ることができると思います。

『メイド イン アビス』という漫画の登場人物の中で最も可愛いのは確かにこのナナチだと思います。造形は確かにふわふわ、ほんわかしています。

この先を読むか読まないかの選択はあなたの自由です。
第2層

先ほどの方は anime 視聴を開始したようで、感想を書いてくれています。1つ目

絶望を感じてます……

2つ目

もうダメです…度し難い…

3つ目

ほんとにいい意味で騙されました笑

頭おかしくなりそうですがいい作品に会えました!

合う人はいいのですが、合わない人にはとても辛い作品だと思います。

個人的には anime より漫画を先に読む方を薦めます。漫画なら、読み進めることが辛くなった場合にすぐ閉じることができます。anime だと、茫然としてしまった場合でも話の続きが目に入ってしまいます。

この先を読むか読まないかの選択はあなたの自由です。
第3層

この『メイド イン アビス』、「第1話~第2話」「最新話」「中間の1話分」が web 上で無料で読めるようになっています。(link はこの記事の一番下に置きました。)

「中間の1話分」は毎月10日・20日・30日に1話ずつ進む形式となっていて、現在 (2024年2月下旬) は最新話に追いついた状態になっています。

つまり、2024年3月頭には「第3話」に戻ること、その後も10日間ごとに「第4話」「第5話」…と公開話が進んでいくことが予想されます。

現在の最新話は第67話です。ということは、2024年3月頭に「第3話」が無料公開されたら、次に「第3話」が無料公開されるのは約2年後になることが見込まれます。

一気読みするのではなくのんびり『メイド イン アビス』を無料で追いかけたいなら、今 (正確には2024年3月頭) が好機です。

この先を読むか読まないかの選択はあなたの自由です。
第4層

Twitter 上で人々の声を集計して ツイッタラーが選ぶ『最強の鬱マンガ』をランキングにしてみた!! という記事を書いた方がいます。『メイド イン アビス』は第8位に入っています。

よくもこんな救いのない話を考えたものだ、というのが私の感想です。読んだら、数日間は思考が『メイド イン アビス』に持っていかれると思います。

この先を読むか読まないかの選択はあなたの自由です。
第5層

少しだけ読んでみたい人のための情報。

第11話までは普通の冒険活劇のような感じです。ここで引き返せば、辛い思いをしなくてすみます。

その後、少々怖い話がでてきますが、第18話までなら多くの人は大丈夫だと思います (この辺りでもうダメ、という方もいると思います)。

第19話を読むと、読む辛さよりも好奇心が上回ってしまい、引き返せなくなるように思います。ここまでくると、どんなに話が辛くても先に進むしかありません。

この先を読むか読まないかの選択はあなたの自由です。
第6層

私が冒頭で取り上げた呟きの方、後からこんなことを呟いています。

めちゃくちゃしんどい

誰もこんなしんどいアニメだって教えてくれなかった!!!!
ふわふわやわやわナナチはどこだ!!!!

それに対する反応がこちら

違うんだ、原作とアニメを見た人達があまりのつらさに少しでも幸せになりたい、幸せにしてあげようと可愛くてほんわかしたイラストを生み出しているんだ…

まあ、その通りだと思います。

この先を読むか読まないかの選択はあなたの自由です。
第7層

ここまで読んだなら、是非『メイド イン アビス』を読んでみませんか。

 

「全駒」という行為について、私の意見。

「ルール」で禁じられていないので「全駒」自体は構わない、と考えています (全駒そのものは侮蔑行為にあたらないと考えています)。ただし「全駒」以外に相手を侮蔑する言動をした場合は許容されない、とも考えています。

自分が AI になったつもりで考えていただくと分かると思いますが、

  • 詰将棋の読みの深さを浅くする (頭金の1手詰すら気付かないくらいに読みを弱くする)
  • 持ち駒はなるべく使わない
  • 相手の手が読みやすいように、相手の選択肢を減らすことをなるべく優先する

くらいの方針で思考すると、結構な確率で全駒に (特に stalemate に) なりやすいです。というか、1手詰もできない子が勝利するためには、相手の王手放置か、stalemate (≒全駒) か、詰み状態が偶然できあがるか、いずれかしかない気がします。その遭遇確率も 王手放置 > stalemate > 詰み の順だと思います。

本当の入門者は、相手を侮辱する意図がなくても全駒をしてしまいがちではないのかな、と思います。(頭金の1手詰が読めるくらいになれば全駒はしなくなると思います。)


ただ、「自分が勝てる見込みがなくなったら投了してよい」ということを学ぶ前の入門者同士だと、全駒をされている側が長時間辛い状態になるので、そういう状態に陥らないように周囲がうまく誘導してあげる必要はあるかな、と思います。

将棋 AI の文書の中ではやねうら王の説明文書が一番詳しいと思うのですが、「CPU の種類」→「GPU の有無」→「評価関数の種類」という説明順序の方が分かりやすいと思うので、この順番で部分的に引用 (抜粋) します。


CPU ターゲットの種類

説明文書より。

noSSE ⊂ SSE2 ⊂ SSE4.1 ⊂ SSE4.2 ⊂ AVX2 ⊂ AVX-512

のような関係があります。例えば、SSE4.2なら、SSE4.1とSSE2の命令はすべて含み、そこに+αで命令が追加されているという感じ)

CPU-Z を起動して、そこの「Instructions」を見れば、自分の CPU がどこまで対応しているか分かります。

以下の表も、やねうら王の説明文書からの抜粋です。

実行ファイル名 ターゲットCPU CPUベンダー ターゲットOS
YaneuraOu_XXXX_zen3.exe Ryzen第3世代 AMD 64bit OS用
YaneuraOu_XXXX_zen2.exe Ryzen第2世代 AMD 64bit OS用
YaneuraOu_XXXX_avx2.exe AVX2 以降用 Intel 64bit OS用
YaneuraOu_XXXX_sse42.exe SSE4.2 Intel/AMD 64bit OS用
YaneuraOu_XXXX_sse41.exe SSE4.1 Intel/AMD 64bit OS用
YaneuraOu_XXXX_sse3.exe SSE3 Intel/AMD 64bit OS用
YaneuraOu_XXXX_sse2.exe SSE2 Intel/AMD 64bit OS用
YaneuraOu_XXXX_nosse.exe SSEなし Intel/AMD 32bit OS用
💡 XXXX の部分には、評価関数タイプ(NNUEとかKPPTとか)が入ります。      

思考エンジンの種類

PC の中心的な思考部品「CPU」には core (コア) と呼ばれる高性能な頭脳がいくつか入っています。(数万円の安い PC にも価格相応の CPU が入っています。)

Gaming PC などだと、この CPU の他に「GPU」と呼ばれる思考部品があり、非高性能な頭脳が数千個程度入っています。(安い PC には GPU は入っていません。)

以下の表はやねうら王の説明文書からの抜粋です。

エンジンの種類 特徴
やねうら王 やねうら王の通常探索エンジンです。
NNUE系などと呼ばれるのはこれです。
GPUがなくても遊べます。
ふかうら王 dlshogi互換エンジン。Deep Learningを用います。
GPUなしでは本来の性能の1/10も出ません。
詰将棋エンジン 詰将棋に特化したエンジンです。
ユーザーエンジン ユーザーで新たに作る思考エンジンです。

 


評価関数の種類

説明文書より。

💡 評価関数とは、人間で言うところの「大局観」に相当するものです。局面を評価して、その形勢を数値化して返す(数学的な意味での)関数です。
評価関数名 内容 特徴
KPPT 3駒関係 + 手番 Apery(WCSC26)、Apery(SDT4)「浮かむ瀬」の評価関数フアイルがそのまま使えます。
KPP_KKPT 軽量化されたKPPT 過去のサブプロジェクトのKPP_KKPT型ビルド用評価関数のところにあるものが使えます。
NNUE 浅いニューラルネットワークを用いたもの tanuki-(SDT5,WCSC28,WCSC29),NNUEkai、水匠5などの評価関数ファイルがそのまま使えます。
MATERIAL 駒得系の評価関数 評価関数パラメーターは実行ファイルに埋め込まれているため、評価関数ファイルは必要ありません。
💡 現在主流の評価関数はNNUEです。

👉 NNUE評価関数は、いくつかの種類に分かれています。
NNUEの名前 入力特徴量
halfKP halfKP
KP256 K + P
HALFKPE9 halfKP + 利きの数
HALFKP_VM_256X2_32_32 halfKPで左右のミラー考慮
HALFKP_1024X2_8_32 halfKPで1層目の入力が1024に拡大したもの
💡 標準的なNNUEは、halfKPというタイプです。 💡 WCSC32の『マメット・ブンブク』以降、HALFKP_1024X2_8_32が開発者の間で普及してきています。

以上、やねうら王の説明文書からの抜粋です。

なお、「NNUE」は Efficiently Updatable Neural Networks の略 (を左右反対に綴ったもの)、KPPT は King-Piece-Piece-Turn (王将-他の駒-他の駒-手番) の略、だったと思います。


やねうら王は細かい設定をしなくても自分の棋譜解析程度ならかなり役立ちます。しかし、AI 同士で対局させる場合は設定項目についてちゃんと知っておく方がよいと思います。

ふかうら王 (や dlshogi) は TensorRT 回りの導入が面倒そうで (そもそも私の PC はまともな GPU を積んでいないので) 手を出したことがありません。

私がいつも読ませていただいている sapporoshogijoho さんの blog 記事より。

今日地元で将棋を指しているのを見かけた。一人は四段の方だがもう一人の方は初めて見る方。見るからに棋力に差がある感じで、あっという間に初めての方が吹っ飛ばされる。四段の方が全く手加減しないのである。2局指していたのだが、2局ともそんな感じだったので「30分くらいしかないのですけどお願いできますか」ということで対局者に立候補した

有段者の方が相手の棋力に合わせる際はこういう思考をしているのか、という点が垣間見えて大変興味深い内容でした。

とまあ、こんな感じで力差が歴然なのであれば、ある程度互角に近い戦いにするのも求められるスキルなわけだが、これはできる人とそうでない人ははっきり分かれるね。

この指摘も多分その通りなのだと思います。

やねうら王の作者さんの blog で「羽生先生の発言は何が開発者の反発を招いたのか?」という記事がありまして、その中にこう書かれています。

私がやねうら王をOSSとして公開したのは、公開したくて公開したのではなく、Aperyが公開した以上、公開しないと開発競争に負けるという判断からです。そして、その判断は実際、正しかったのです。

なぜなら、将棋AIは小さな改良を積み上げていく世界なので、多くの開発者にコミットメント(参加)してもらうことが強い将棋AIを開発する上では必須でしたから。多くの人々がプロジェクトに貢献することで、よりよいソフトウェアを作り上げるというOSSによく見られる文化的精神が、将棋AIの開発と非常にマッチしたわけです。

OSS とは OpenSource Software のことです。その理念は、中身 (source) を公開するから開発その他で是非貢献してね、というものです。無料利用を禁じているわけではないけど、できたら貢献してほしいな、という感じです。利用者全員に義務を課すわけじゃないけど、利用者が増えれば「私も貢献しよう」という人数も増えることが期待できるから公開する、という感じです。

将棋や囲碁や麻雀や電子遊戯など、その業界の人口が業界の盛衰を左右しているのと同様、software もその業界の人口が盛衰を左右します。

簡単に言うと、「たくさんの人が改善に貢献してくれるほど、改善が進んでいく」というものです。

なので、やねうら王の作者さんの以下の言葉もよく分かります。

もうお分かりかと思いますが、私は、将棋ファンに向けて「将棋ソフトを無料で公開するから是非将棋ファンの皆さん、遊んでください」と考えているような篤志家などではなく、どちらかと言えばOSSの開発にコミットメントしてくれない人たちは、「やねうらおがインスコロールができません」とか「ZIPってなんですか?レンジでチンするやつですか?」とか、「どれをダウソロードしたらいいんですか?」とか「実行したらウイルスだとでました」とか「YaneuraOu.exeってのをダブルクリックしたら黒いメモ帳(コマンドプロンプトのこと)が出てきました」とか、ツイッターのDMでそういうことを言ってくる面倒な人たちです。場合によっては冒頭のツイートのように「キ◯ガイ」呼ばわりされたり、言われもない中傷をされたり、殺害予告を受けたりします。有償ならともかく無償ではそういう人たちのサポートをしたくありません。

私が将棋関係 software の一括 installation 用 data を用意している意図の1つに、そういう面倒な人たちの減少もあるのですが…どれくらい役立っているのかは分かりません。

繰り返しになりますが、OSSとは、単なる無料のソフトウェア以上の意味を持ちます。

多くのOSSプロジェクトには、コラボレーションと共有の文化が根付いています。ユーザーは、ソフトウェアの使用だけでなく、コードの改善や新機能の提案に参加することが奨励されます。このようなOSSコミュニティでは、開発者とユーザー間の対話を重視し、互いに学び合う環境を提供します。(そういうコミュニティもある、という話をしています。すべてのコミュニティがそうだとは言っていません。) 利用者は、バグの報告やドキュメントの改善に貢献することで、プロジェクトの発展に寄与できます。このようなOSSを利用する際には、この開かれた精神を理解し、可能な限りコミュニティに貢献することが望まれます。これにより、ソフトウェアはより良く、より使いやすく進化し続けます。このようなOSSのプロジェクトはただのプロダクトではなく、知識と経験を共有する動的なコミュニティです。

これは本当にそうです。個人的な意見ですが、すぐに貢献できなくても「GitHub の account くらいは作っておくか」くらいでもいいんじゃないかと思います。それだけでも GitHub 上で簡単に issue を発行できるようになりますし、そうやってつながりができると多くの人の力を集積しやすくなります。


あなたが入ろうとする建物の入り口の扉が自動的に閉まる扉であった場合 (そしてあなたに続けて建物に入ろうとする人がいる場合)、次の人のために扉を押さえておきましょう、みたいなことを習ったことはありませんか?

あなたがほんの1秒~数秒間扉を押さえるだけで次の人は建物に入りやすくなります。次の次の人がいる場合、あなたに続けて次の人が扉を押さえれば、次の次の人も助かります。OSS の理念はこれに近いです。

ところが、次の次の人がいるのに次の人が扉を押さえなかった場合、あなたは「扉を手放す」か「次の次の人のために扉を押さえ続ける」か選択することになります。

次の次の人も扉を押さえなかった場合、つまり「他人に貢献しようという意思はなく利益だけ受け取ろうとする人」が連続した場合、あなたは扉を押さえ続けるかどうか悩むと思います。

もしあなたが扉を押さえ続けていると、あなたの貢献を無視してあなたに対して「お前の扉の押さえ方が悪い」などと文句を言ってくる人が出てきます。自分が貢献しないだけではなく、他人の貢献を当然のものとして文句を言う人です。

そういう人が出てきたらあなたは不愉快になると思います。


やねうら王の作者さんは色々と面倒な人たちを相手にしてきたのだろうなあ、と思います。

表題の記事を見つけました。

この記事を書いた方は、書いたきっかけとして下記のことを挙げています。

今回、この記事を書いてみようと思ったのは『将棋指しの人たちが「囲碁よりも将棋の方が面白い」』と主張しているのを頻繁に見かけたからです。

多分、心無い将棋関係者がそのような主張をしたのだと思います。その点は将棋関係者として申し訳なく思います。

で、気になった部分は以下の部分です。

このように、囲碁打ちよりも将棋指しの方が5倍も多いにもかかわらず、囲碁を打てる碁会所の方が5~10倍も多いというのが現状なんですね。これだけを見ても『囲碁の方が将棋よりも面白い』としか判断しようがありません。
『碁会所が多い』ということは、囲碁打ちは『お金を使っている』ということなんですね。つまり、囲碁の方が世間的にもお金になると言うことです。お金を使ってでも楽しみたくなるほどに面白いゲームってことなんですね。

この推論にはかなり無理がある気がします。

将棋愛好家の年齢分布と比べて囲碁愛好家の年齢分布が極端に高齢者に偏っていることが原因であるような気がします (未検証です)。

私の仮説が正しければ、1人当たりの碁会所参加率はかなり高くなりますし、1人当たりの年間出費額も高くなります (確か『レジャー白書』によれば年間出費額は将棋より囲碁の方が2倍くらい多かった気がします)。


もちろん、元記事の推論が正しい可能性もあるのですが、ここ数年の囲碁愛好家数の激減具合を見ていると、元記事の推論が正しいようには思えないのです。

本当は状況が悪化しているのに数値の上では良い状態に見えている、という可能性が高い気がしています。

これは将棋も気を付けなければならなくて、どんな状態が望ましいのか、それは数値にどのように現れるか、をちゃんと把握しておく必要があるかと思います。(以前も指摘しましたが、「指す将」率の増加は良いこととは限りません。「観る将 500万人 + 指す将 500万人」で 50% という状態と「観る将 0人 + 指す将 1万人」で 100% という状態とでは前者の方が良いでしょう。)

以下、「入門者」として想像される人を2通り書きます。

[A]

子ども「将棋が強くなりたいです。」

将棋関係者「じゃあ、最初は6枚落ちで対局してみようか。」

子ども「はい。」

対局後

子ども「勝てなかった。」

将棋関係者「そりゃ、銀を真横に動かそうとしたりしていたら勝てないよ。まずは駒の動かし方から覚えないと。この本を読んで学んできなさい。」

[B]

子ども「世の中には色々な遊びがあるなあ。」

将棋関係者「将棋をやってみないかい?」

子ども「将棋? やり方知らないし…。」

将棋関係者「大丈夫大丈夫、子どもはすぐに覚えるから。」

子ども「Switch で遊ぶ方がいいんだけどなあ。Switch に入れているやつはどれも (最初の tutorial が充実していて) すぐに遊び始められるけど、将棋は大変そうだなあ。」

将棋関係者「じゃあ、6枚落ちで対局してみようか。」

子ども「自分の側だけで駒が20枚もある。種類ごとに動かせる方向が違うの? 未だ学校で習っていない漢字もあるし、これ全部覚えなきゃいけないの?」

将棋関係者「駒の動かし方の表をあげるから、この表を見ながら指してもいいよ。」

子ども「見ながら指していい、って言われてもどういう順番で指したらいいのか分からないよ。種類が多すぎて方針も立てられない。」

将棋関係者「将棋は覚えたら楽しくなってくるから。」

子ども「いや、誘われたから将棋を体験しているだけで、『将棋を始める』なんて一言も言っていないんだけど。」


[A] の子が駒の動かし方も覚えずに「勝てなくてつまらない」って言ったら、それはわがままと言っていいかも知れません。

でも現実的に殆どの子は [B] です。[B] の子が「勝てなくてつまらない」と言ったら、それは将棋関係者の責任です。

電子遊戯が普及するまでの間は、普及活動を殆どしなくても将棋の場へ [A] の子がどんどんやってきたのだと思います。今はそんな時代ではありません。

世の中に大量の遊戯が存在し (その多くは Swithc などの中に software という形で入っています)、子ども達にとっては1つ1つの遊戯に時間をかけてその面白さを理解する義務などなく、Splatoon のようにある程度以上普及したモノだけがさらなる普及へ進むことができる時代です。その面白さをごく短時間で子どもに体感してもらわないと、将棋界に近づいてもらうことすら不可能です。

[A] の子しか想定していない人は「まず駒の動かし方を覚えてきなさい」なんて発言するのだろうと思います。そう言われて実際に覚えてくる子もいないわけではないですが、恐らくその比率は年々低下しているものと推測します。

将棋界にとって本当に必要な普及活動対象は [B] の子だと考えています。だからこそ、最初に覚えるべき事柄を本当に最小限にすべきだと思います。

私が飛車角鬼ごっこすら避けて飛車飛車鬼ごっこをする理由もこれです。

すごく良い呟きがありましたので、紹介しようと思います。

ボードゲームで心に残った言葉

その人が失敗する権利を奪ってはいけない

この言葉を心に刻んでいらぬアドバイスはしないようにしています

これは恐らく将棋でも有効だろうと思います。

正確には「たとえ失敗する結果になっても、本人の自己決定権を奪ってはいけない」だと思います。


もしかしたら「入門者相手に必ず負けてあげる、という方針と競合するのでは?」と思う方がいるかも知れませんが、私は別物であると考えています。

大切なことは、本人が考えている間は考える (選択する) 余地を残しておくことだと思うのです。

例えば入門者の駒台に角があり、こちらがわは王手飛車を食らう準備ができているとします。その場合、大人はどこまで発言を許されるでしょうか。

  1. お、ここで 4四角 を打てば王手飛車になるね。
  2. お、持ち駒の角を使えば王手飛車になるね。
  3. (本人が駒台の角を自分で手にするまでは何も喋らず、駒台の角を持った瞬間に) お、センスがいい駒を選んだね。
  4. (一切発言しない)

私の考えでは 3. と 4. だけが許容範囲です。