第4回ABEMAトーナメントを祝しチームバナナがどのぐらいヤバかったかを振り返ってみる

将棋棋士がドラフト会議を行ってチームを作り、戦う。その秀逸なコンセプトにより第3回ABEMAトーナメントは大成功のうちに終わりました。そしてなんと嬉しいことに、2021年には第4回も行われます。将棋ヘッズであれば今頃チームメンバーの表を眺め、どのチームが勝ちそうかを予測していることでしょう。

 

本稿では第4回ABEMAトーナメント参加チームの勝率を予測するとともに、第3回トーナメントで全参加者に優勝候補と目されそのまま優勝した夢のチーム「バナナ」がどのぐらいやばかったかを振り返ってみたいと思います。

 

abema.tv

 

【勝率の予測方法】

コンピュータ上で大会ルール(予選リーグ、本戦トーナメントそれぞれ)に基づいてマッチングを行います。将棋棋士のレーティングサイトから各プレイヤーのレーティングを求め、試合の勝ち負けを各棋士のレート差に基づいて決定します。予選リーグでは得られる点数の期待値を、本戦リーグではチームが勝つ確率を計算します。各プレイヤーの出場順序はランダムで決めます。コンピュータ上で仮想のマッチメイクを10000回行うことで各々のチーム同士の勝率を求めます。

 

【第4回ABEMAトーナメントの予想優勝チームは......】

予選リーグの期待ポイント数、決勝リーグの勝率は以下になりました。

 

予選リーグの獲得点数期待値

 

f:id:qhapaq:20210327225321p:plain

 

本戦トーナメントでの勝率

f:id:qhapaq:20210327225406p:plain

 

というわけで優勝候補ナンバーワンはチーム豊島です。チームメンバー的にも4強の一角である豊島竜王を筆頭に長年高勝率を維持してきたメンバーが集まっているので納得の布陣と言えましょう。

 

しかし、この結果を受けて「よし、今年の優勝はチーム豊島だ」と断言してしまうとしたら、それは昨年のトラウマが抜けていないと言えましょう。レーティングで見た強さ3位以下のチームに6割以上の確率で勝つというのはたしかに強いのですが、このぐらいの有利は大会の調子でいくらでもひっくり返るのです。では、昨年圧勝したと言われるチームバナナはどんなもんだったのでしょうか

 

 

【アカン、これはアカンよ】

 

2020年の決勝進出チームを対象に当時のレーティングで勝率を計算した結果がこちらです。チームバナナ=永瀬です

 

f:id:qhapaq:20210327225956p:plain

 

ご覧ください。レーティングの上では2位だったチーム渡辺に対してでさえ7割の確率で勝つという圧倒的な火力を。圧勝とすら言われた前年度の優勝はレーティング1位と2位が一つのチームにいるという暴挙ドリーム構築をもってこそなのです。

 

【まとめ】

というわけで今年のABEMAトーナメントはどのチームが優勝するか正直読めません。というか去年が異常すぎたと言えましょう。

 

ああ、大会が今から楽しみだ!

将棋を知らない人にも話題を振りやすい棋士で打線を組んでみた

将棋ファンにとって将棋の布教は野望であり義務でもあります。しかし、観る将が普段楽しんでいるような将棋用語は、将棋を見ない人にはほぼ通じません。「この前の王将戦で軍曹が角換わりからの千日手をまたやったんだ」と嬉々として語ろうとも、聞き手の脳裏に千日手と言う単語が残れば良い方でしょう。私自身も将棋の面白さを友人に布教する上で幾度も悔しい思いをしてきました。

 

本稿で紹介するのは私自身が家族、友人、同僚、謎の留学生に将棋を布教し続けることで体得した将棋の布教術です。今回は布教の基本は人物伝ということで、話題にしやすい棋士をネットでおなじみの打線を組む形式で紹介していきます。私はswitchの聡太を未だに攻略しておらず、香川女流のコミケ本を持っていない末席観る将ではありますが、幾多ものプレゼンラップバトルを制してきた経験をここにぶつけてまいります。

 

それでは、「よろしくお願いします」

 

※:本稿はネタ記事です。また私の趣味がかなりでていることをご留意ください

 

1番(二): 加藤一二三九段

将棋布教打線はひふみんで始まる以外ありえません。将棋布教でひふみんを抜く奴がいたら「ウノの言い忘れに並ぶ凡ミスだ」とでも言ってやりましょう。1分間でみかんを3個食べたという謎の武勇伝、中学生で棋士になり授業にでられない彼のためにノートを届けてくれた同級生と結婚したというラブストーリー、将棋盤の位置が気に入らないと対局相手と揉めてくじ引きをした逸話など話題の引き出しが多種多様です。またバラエティーを始めとしたテレビの知名度が高いため、将棋の話をする雰囲気じゃなくなったときに容易に撤退できるという他のスタメンにはないスキルがあります。ひふみんが生涯愛した棒銀の弱点は攻めが失敗したときに銀の扱いに困ることだというのに

 

2番(一): 香川愛生 女流四段

このダイバーシティの時代に女流棋士を入れ忘れるのはチョンボに等しい重罪です。布教の観点からみた香川女流の強みは才色兼備に立脚した圧倒的な待ちの広さです。コスプレ、コミケ参加、女流タイトル経験者、クイズ番組出演、ドラマ出演、ゲーム化、社長就任と、この世界の森羅万象に食い込ませられるだけの持ち駒を持っています。森羅万象番長です。他の棋士との話題広げやすく、女流棋士ならテレビでの共演歴がある竹俣紅女流初段、コミケなら一緒にコスプレをやらされた糸谷八段とこちらも手数に困りません。ドルオタと思われても困るので香川女流の話を長くするのは個人的には避けたいのですが香川女流の話題を握り込んでおくと、赤ドラを持っているかのような安心感が得られます。

 

3番(中): 羽生善治九段

人類史上最も有名な将棋プレイヤーと言っても過言ではないでしょう。将棋盤が9x9であることや飛車と角のどっちが右側かよりも有名なのは勿論のこと、下手したら桂馬や角よりも有名かもしれません。羽生九段ぐらいのバリューがあれば「羽生善治はAI将棋をどう考えているのか」など直接将棋の話に持っていくことすら許されてしまいますこれが「深浦将棋はなぜ地球を代表できるのか」とかだったら「そもそも深浦って誰」となってしまいます。私としてはこっちのほうが聞きたいぐらいですが、悲しいかな、知名度は大事なのです。おもしろ方面の逸話も(奥様の協力もあって)レパートリー豊かです。個人的には盤面に没頭しすぎてアイスを溶かした話や、何故かチェスで日本一になったことがある話などが使いやすくて好きです。ジャニオタと思われても困るのだが嵐にしやがれのクイズデスマッチに辛勝して「大分手加減してもらった」と正直に言っちゃう話も好き

 

4番(左):藤井聡太二冠

今の将棋界の頂点です。藤井二冠の話題を提供できない将棋布教者なぞエラのない魚も同然です。藤井二冠を布教する最大のメリットは直接将棋を観ることをオススメできることです。4年連続で勝率が8割を超えている、史上最年少タイトルを達成しているなどの逸話を餌に「今から藤井ファンになれば推しが勝ちまくる姿を見られる」と断言できるのは令和最強の棋士ならではでしょう。勿論、布教の際にはおもしろエピソードも用意しておきましょう。初心者向けの将棋サイトに異常な難しさの詰将棋を提供したこと、色紙の偽物が出回り警察から問い合わせを受けた際に「持ち駒の数が違うから偽物です」と看破したこと、師匠が色紙の詰将棋のネタに困っていたときに「一題提供しましょうか」と冷やかしたことなど、詰将棋周りが使いやすくておすすめです。まあ、その詰将棋の大会も五連覇とかしてるんだが

 

5番(右):木村一基九段

将棋界で最も愛されているおじさんです。将棋を観ない人が木村九段を知っている確率はその人が石鹸を漢字で書ける確率とほぼ変わらないでしょう。しかし、七度目の挑戦にして悲願の初タイトルを手にした時の物語は予防接種並みの確率で一度話せば覚えてもらえます。なにせ最終戦の陣屋での現地解説は、羽生、藤井が絡むようなビッグタイトルを超え、史上最大の入場者を叩き出すぐらいファンから愛されているのです。タイトル奪取の瞬間なんてファンたちが解説場で泣き出すぐらいファンから愛されているのです。なんなら私もネット越しに泣きました。この物語には将棋は強さだけじゃないということを伝える力があります。そして、ファンに愛されるだけの面白さと真摯さを木村九段は持ち合わせています。木村九段のトークの面白さはファンには有名ですが、視ない将相手にするなら、大判解説で「藤井さんはベテランの人が、そろそろ間違えるころだろうと考えたことはありますか?」と藤井二冠に無茶な質問をした逸話あたりが使いやすいです。

 

6番(指):永瀬拓矢王座

今の将棋の四強の一人にして、とりあえず「根性」を見せておけば最低限の笑いが取れるという安定感があります将棋棋士がどれだけ将棋が好きかを紹介する上でもこの上ない人材です。大晦日に連続で9試合を行って年を越した挙句、終電がなくなったから朝まで誰か将棋やりませんかと解説の人を誘ったとか、毎日10時間ぐらいやれば誰でも棋士になれると豪語したなど逸話の枚挙に暇がありません。永瀬王座の布教をするときには川崎屋の布教をするのも忘れないようにしましょう。

 

7番(三):先崎学九段

うつ病九段を読め。電子書籍が擦り切れるほど読め。宗教の歴史が示すように、布教を成功させるにはインテリの取り込みが不可欠です。そしてインテリに将棋を刷り込む上でうつ病九段は最強の本です。東大の学生保健センターにいくと精神科はメチャクチャ充実してます。どうか察してあげてください。うつ病九段は、頭脳労働者がうつから復活するというだけの本ではありません。作品の至るところに将棋への思いが散りばめられています。この本に感動した東大生が将来官僚になった暁には、将棋文化の維持に力を貸してくれること間違いなしでしょう。将棋なんてAIが人間を超えて終わった遊戯と嘯く輩に将棋の深さを叩き込んでやりましょう。

 

8番(補):米長邦雄永世棋聖

人は必ずしも良い話だけを聞きたいわけではありません。将棋布教にちょっとブラックな要素を入れたいとなれば、米長永世棋聖は外すことが出来ません。会長再就任の際の写真をダブルピースにしたという強烈なエピソードをしても、米長伝説ではギリギリ補欠に入るか入らないかぐらいでしょう。カッコイイところで言えば自分にとって消化試合でも相手を全力で負かしにいく米長哲学、解りやすいところで言えば、数えるのもバカバカしくなるぐらい沢山ある全裸系の話。よりブラックなところにいくなら株で有名な桐谷先生との話やマグロ名人戦におけるネットバトルとかが良いでしょう。編入試験や人間 vs AIのコーディネータとしての腕前も素晴らしく、われ敗れたりもまた人に勧めたい名著です。まあ、個人的に一番好きなエピソードは天国の「米長先生」と言われるたびに「地獄定期」というレスポンスが何処からともなく帰ってくることだが

 

9番(投):渡辺明名人

現名人です。観ない将の人たちは中学生棋士のことを教皇と似たようなものだと思っているフシがあるので藤井聡太の先代、羽生善治の次代の中学生棋士だよ」と紹介すると話が通りやすいです。中学生棋士の中で唯一ブログをやっており、奥様の漫画を通じても将棋に対する考え方を色々語ってくれています。渡辺名人を通じて将棋を普及する際のコツは、将棋や渡辺名人ではなく、将棋の渡辺くんを売ろうと考えながら語ることです。「4人目の中学生棋士にして今の名人なのだが奥様が書いている漫画がめっちゃ面白い。具体的には...」という枕詞を練習すれば貴方も立派な宣教師です。ちなみに文春砲周りの話はブラックな話題が好きな人にも全く受けません。完全に私情ではありますが、私は一致率のチェックにQhapaqを使ってくれてなかったことを少しだけ根に持っています

 

【最後に】

というわけで、本稿では一般人に話題を振りやすい棋士を紹介してみました。将棋ファンであれば打線に漏れた方々についても無限に語らうことができることでしょう。例えば新聞の話題がでてきたなら「深浦九段がタイトルを取ったときには地元で号外が出た」とか「菅井八段は対局の際は未だに岡山から未だに通っており、岡山の新聞も藤井フィーバーだろうが何だろうが菅井八段の話題を優先して報道する(ソース紛失)」とか「香川番長は社長として日経新聞にでたことがある」とかとか。

好きなことを語る上でルールなんてありません。ただ、布教をするからには信者を増やしたいのもまた真理です。本稿が皆様のハッピー将棋布教ライフのちょっとした手助けになれば幸いです。

 

f:id:qhapaq:20210314235624j:plain

将棋連盟も認める由緒正しい喜び方。米長永世棋聖の画像を使うのに若干抵抗があったのでsdt5の決勝トーナメントでようやく先手を引いた時のチームメンバの写真を流用

 

AIの台頭で将棋研究が本当に加速しているのかデータから検証してみた

「将棋はAIを使って研究する」

2000年頃にはありえないとさえ言われたAIによる人間超えは2010年代にかけて達成され、今となってはプロアマ問わずAIを使った将棋研究が当たり前になりつつあります。

AI以前の将棋研究は一つ一つの局面/変化を人間が時間をかけて検討しなければならなかったのに、今となってはAIを使えば数分で検討が出来てしまいます。その結果、丹精込めて作られた戦略も一度棋譜に残してしまえば一晩で対策されてしまうようになりました。

ポストAI時代の将棋研究については若手からベテランまで多くの記事を残しています。そして、多くのケースにおいて「AIにより将棋研究は加速した」と考えられています。

 しかし、本当にAIの台頭で将棋研究は加速したのでしょうか。本稿ではデータからポストAI時代の将棋研究がどの程度早くなったのかを測定してみたいと思います

 

【局面のユニークさから見る将棋の戦略の寿命】

本稿では局面のユニークさから戦型の寿命、すなわち将棋研究の速度を測定します。将棋における戦型のブームはおおよそ以下の流れを取ると言われています(参考:将棋の渡辺くん

1.棋戦で使われ棋譜に残る

2.多くのプレイヤーがそれを真似る

3.その過程のなかで様々な変化が試される

4.変化が試されきって閉塞感が出たあたりでブームが終わる

 

プロ棋士が各々の戦型についてどういう考え方をしているかを棋譜から読み取ることは困難です。しかし、ブームが終わった局面は棋譜に現れなくなることを利用すれば局面の出現頻度から衰退の速さを測定することが出来ます。

例えば、ある戦型が流行してから研究されきってプロの棋譜にでてこなくなるまで昔は3ヶ月かかったとしましょう、これが今は1ヶ月ででてこなくなるとしたら研究速度は3倍になったと言えます。

戦型のブームには大小や当たりハズレがある(例えば角交換四間飛車や角換わり48金は息が長い)上に複数の戦型が並行して流行り廃れるので戦型毎の解析を行うのは困難です。そこで、本稿では以下の定義でその年の将棋の研究速度を定義します。

 

1. 各年のプロ棋士棋譜からランダムに100局を選択し、その中の初手30手を対象とする

2.重複していない局面の数をその年の将棋の研究速度とする

 

これは、研究速度がn倍になれば、一定期間ごとに使われなくなる局面の数がn倍になる、使われなくなる局面の数がn倍になればユニークな局面が増える速度もn倍になるという仮定に基づいています。

 

【1.3倍の加速からみる将棋の変化】

さて、上記の評価に基づいて年代別のユニークな局面数をプロットした結果は以下のようになります(図の注釈の意味については後述)

f:id:qhapaq:20210117210832p:plain

 

コンピュータが人間を超える前の2000年前後を極小に、ユニークな局面数はほぼ右肩上をしていることがわかります。そして、おおよそ平均すると、今の将棋の研究速度は1.3倍になったと言えます。

 

プロ棋士が何時間もかけて考えたであろう変化を数分で追えるようになったポストAI時代にしては1.3倍というのはずいぶん少ないような気もします。しかし、私はこの指標はいい線をついていると思っています。というのも、今の時代にもAIに頼らずに将棋を勉強しながら第一線で居続ける棋士が複数いるからです。AIの台頭によって本当に将棋の研究速度が何倍、何十倍にもなるのであれば、ソフトを使わない棋士に勝ち目は残らないでしょう

 

さて、この結果を受けて私は、局面の良し悪しを評価する作業にかかる時間が桁違いに減ったにもかかわらず、研究速度が1.3倍にしかなっていないというのはプロ棋士がサボってるからなのではないかと一瞬思ってしまいました。ですが恐らくこれは間違いです。というのも、プロ棋士は局面を評価解析した上で、それを覚え、理解し、使いこなせるようにならなければいけないからです。

先程の結果から、プロ棋士が対局と対局の合間に覚えてくる変化の数が1.3倍程度になったことが示唆されています。すなわち、他の作業にかかる時間はどうあれ、プロ棋士は今までの1.3倍の時間をかけて変化を覚えているといえます。ここで、プロ棋士の研究時間を局面を理解して覚える時間とそれ以外の時間に分けてみましょう。AIの台頭により局面の解析にかかる時間は桁違いに減ったことを鑑みると以下のように表すことが出来ます。

 

f:id:qhapaq:20210117194553p:plain

 

AIの台頭によってプロ棋士がどのぐらい忙しくなったかは研究におけるX、即ち局面を評価する時間によります。例えばXが研究時間の半分を占めていたなら、ポストAI時代のプロ棋士の勉強時間は以前の65%程度になったと言えるし、逆にXが元から割合として小さいのであれば、ポストAI時代のプロ棋士の勉強時間は以前の1.3倍になったと言えます。

となれば、Xの値が知りたいわけなのですが、私自身は元々ほぼ0であったのではないかと考えています。というのも、AI以前の将棋では局面の評価とは様々な変化を自ら試し、覚えながらやるものであったと推察できるからです。AIの台頭によりユーザが望むのであれば様々な変化を提示/評価してくれる部分はアウトソース出来ますが、その意味を理解し覚える部分は人間がやらねばなりません。つまりこういうことです

f:id:qhapaq:20210117202610p:plain

 

本モデルの正しさを担保する量的な証拠は正直ありません。ただし、今なお将棋ソフトを使わずに研究している棋士が第一線にいることや、多くの将棋棋士がソフトの評価を観るだけでは強くなれないだろうことを示唆していることを鑑みると悪くない予想であると考えています。

本予想に従えば、プロ棋士の研究時間は1.3倍になったと予想することが出来ます。例えるなら、週休2日が週休半日になるようなもので、そりゃ評価値ディストピアとも言いたくなりますわな。

私が考えるAIがもたらしたもの、それは研究の上限の撤廃です。AI以前の時代なら「これ以上考えてもこの局面の良し悪しは解らないので後は指して試すしかないな」といえるような局面もAIが結論を出してしまうが故に無限に研究できてしまうのです。

 

【研究からみる将棋の歴史】

局面のユニークさを評価としたグラフはもういくつかの面白い示唆をもたらしてくれています。まず、1970年代頃の将棋は今の将棋と同じぐらい多様性に満ちていたということです。これは昭和時代の棋士が滅茶苦茶研究していた......のではなく、逆に研究をあまりしていなかったからであると考えられます。

 

times.abema.tv

しかし、1970年の中盤から1980年にかけて局面のユニークさは急激に減ります。これをもたらしたのは勿論、羽生世代......ではなく、中原、米長、加藤(ひふみん)あたりの時代です。即ち、中原研究会、米長道場、島研究会が出てくるあたりの時代です。研究会によって有力な序盤戦略が進み多様を極めた序盤戦略が淘汰された時代です。こうして振り返ると、世代や出身の垣根を超えた研究会という概念が如何に将棋界にパラダイムシフトをもたらしてきたかがわかります。

 

さてもう一つ、2010〜2014年近辺にも多様性が減った時代が一時的に現れています。これは恐らく横歩ブームによるものと思われます。21世紀のプロ棋士の戦型の分布を見てみると以下のようになっています。

f:id:qhapaq:20210117210242p:plain

 

ご覧の通り、2010〜2015年頃にかけて横歩が流行しているのがわかります。横歩は盤上この1手な局面が多く、横歩が流行ればユニークな局面が減るというのは感覚的にも妥当なものと思われます。さて、この時代の横歩のマイスターと言えば佐藤天彦九段。名人戦叡王戦でも活躍し、その横歩研究はコム将棋界にも大きな影響(横歩定跡による殴り合い)をもたらしました。氏は今のAI将棋時代を評価値ディストピアと名付けたことでもちょっと知られていますが、第二のブームを引き起こすことで再び将棋研究に大きな風穴を開けてくれることを願っています。

 

【まとめ】

本稿では将棋研究の速度の年代別の変化を測定し、今の将棋のブームの移り変わりの速度は2001年頃に比べて1.3倍程度になったことを示しました。また、その歴史的な変化を見ていくことで研究会文化の影響や横歩ブームの存在を見て取ることが出来ました。

将棋の進化は今後も止まることはないでしょう。将棋指しは年々強くなり続けていますし、将棋ソフトにもまた、さらなる進化をもたらしていくつもりです。

雨後の筍のようにAIが騒がれる時代。他よりひと足早くシンギュラリティを迎えた将棋界は未来の試金石でもあると考えています。コム将棋の発展が将棋界全体に役に立ってくれることを願ってやみません。

Qhapaq overfit adventureの評価関数を公開します

第1回世界将棋AI電竜戦で3位入賞、振り飛車最強を達成したQhapaq overfit adventureの評価関数を公開します。

 

ダウンロードはこちらから

github.com

【学習方法と基本的なスペック】

本関数は特定の戦型に特化しないことを目指した設計になっています。より具体的にはtnk互角局面やillqha互角局面などの公開された互角局面集において良い勝率を上げられるようにすることを目指しています。

昨今のNNUE関数は特定の戦型に特化すると別の戦型で勝率が下がることが示唆されており、大会ではこれを定跡でカバーするのがお約束となっていますが、角換わりと矢倉に飽きたのでより雑多な局面でも強さを発揮できる、検証用に使いやすい関数を目指しました。

 

qhapaq.hatenablog.com参考:2019年のsotaソフト群のvs振り飛車勝率

 

2020年のwcsc版の水匠を元データに追加学習を行い、1手1秒、tnk互角局面集におけるvs水匠勝率はおよそ55%(81-3-62)でした。ただし、定跡offでは水匠よりも微妙に弱い(誤差の範囲ではある気もするが300戦で勝率48%)ので、ムラの大きい関数であると思います。

 

大会では振り飛車で戦いましたが残念ながら関数自体は居飛車党です。shinderellaの項目で紹介したような振り飛車向けの追加学習も狙ったのですが、HoneyWaffleの定跡が優秀過ぎたのでそちらを採用しています。

 

【2日目の振り返り】

対戦結果などはこちらからどうぞ

golan.sakura.ne.jp

 

ソフトの運用方法

1日目の振り返りで述べたように、チームメンバーが謎に高いCPUを持っていたのでめちゃくちゃ強かったです。ここ暫くの大会と違い今回はPreponderなしで運用しました。お高い単一のPCでやねうら王を回しているのと同じ状態です。唯一細かい違いと言えば、ConsiderBookMoveCountをfalseにしています(厳密には負けたdlshogiといちびん戦だけtrueにしてました)。

 

1戦目 Grampus 勝ち

飛車を振ってくれるか非常にヒヤヒヤしましたがなんとか振ってくれました。定跡の引きも悪くなく、抜けた時点で-100前後に収まってくれていました。入玉模様になり宣言勝ちルートに迎えたのはただ運が良かっただけなのですが、やねうら王の引き分け設定を書くにするのを忘れており、256手目で持ち時間を使い切らないかヒヤヒヤしていました。今のデフォルトのやねうらではn手引き分けを前提にしていないので、普通に持ち時間を使って宣言勝ちをしてくれました

 

2戦目 GCT 勝ち

deqshi相手に飛車を振ってボコボコにされていたので、深層学習勢に飛車を振っていいのかイマイチ自信がなかったのですが終盤の局面で相手がいきなり頓死筋をひいたおかげで暗殺することが出来ました。余談ですがGCTの頓死筋はやねうら王なら即座に読み切れる(1秒未満の読みでもqhapaq超有利との結論がでていた)ものだったので、やはりdeqshiのように深層学習とやねうら王を組み合わせる戦略は正しかったと思い至り、無駄にガッツポーズをしていました。まあ、この時点ではここからGCTが無双して優勝するとは読めてなかったし、二大会連続で優勝ソフトの全勝を一人で阻むという名誉に預かるとも思ってなかったのですが

 

3戦目 BURNING BRIDGES 勝ち

floodgateの常連との戦いはありそうでなかなかないので、個人的には当たるのを楽しみにしていた相手の一人です。定跡の引きが評価値的には悪く(-200前後)、22の飛車がニート化して負けるのではないかと思っていましたが、詰む詰まざるやの局面で二段目の守護神として相手の守り駒と刺し違えたときには感動しました。HoneyWaffleの定跡的には好みの戦型の一つのようなので、評価値に惑わされずに長時間戦で勝てる定跡を作れるのは凄えなあと感心しました。

 

4戦目 二番絞り 勝ち

2日目は計算資源がでないとのことなので割とあっさり勝てました。とはいえ、過去の大会で定跡などで急激な変化に持ち込んでいきなり大駒や玉が寄り筋にはいってレート差をひっくり返される展開を度々見てきたので、急な戦いを避けやすい振り飛車は偉いなと少し思いました。

 

5戦目 Amaetadine 勝ち

遂に飛車を振らないというガバをやらかしました。定跡が外れると飛車を振らないのは想定の範囲内でしたが、ここに来てようやくConsiderBookMoveCountをfalseにしていた事に気づきます。居飛車での戦いは想定していませんでしたが、評価関数が居飛車だったため普通に居飛車で強く、計算資源の差もあって勝つことが出来ました。

 

6戦目 みずうら王 負け

蓋を開ければ飛車を振って5連勝と優勝すら見えてきてテンションがダダ上がりしました。この戦いは優勝ソフト決定戦かということで、とても注目されていたことと思います(なお、私はビビリなので動画中継を視聴してネットが死ぬことを心配して中継はみていない)。が、qhapaqはここでも飛車を振りそこねました。その後、「相手が右四間飛車なので実質対抗戦」みたいな謝罪文章を考えている間にもあれよあれよと評価値を損ね、あっさりと負けてしまいました。評価値の推移的にも定跡を抜けた時点で既に悪く、定跡が噛み合わなかった感じがします。

 

7戦目 dlshogi 負け

流石に飛車を振らずに負けるのはどうかということでConsiderBookMoveCountをtrueに変更。deqshi相手に振り飛車でほぼ負けと言っていい試合をしたことから、深層学習勢に振り飛車が刺さるか不安だったのですが後手番であり定跡の引きも悪かったのもあって、定跡を抜けた時点で評価値-200、50手目には評価値-500とフルボッコな展開になってしまいました。

 

8戦目 いちびん 負け

ConsiderBookMoveCountをtrueにするのが縁起が悪い気がしてきたものの、先手ならなんとかなるやろと据え置きで対局。が、定跡は再びハズレをひいて定跡を抜けた時点で評価値-200、50手目には評価値-500と再びフルボッコな展開になってしまいました飛車を振ってる分はエライんだが。中の人はこの時点で相当ふてくされていましたが、5chで「qhapaqの終盤の失速がお家芸だ」と書き込まれてるのをみて「おお、qhapaqを年単位で観測してくれてる人がいるのか」となんとかテンションを維持しました(ふてくされても勝ち負けに全く影響がでないのがコム将棋のいいところですね)

 

9戦目 dolphin(illqha) 勝ち

floodgateやレーティングでしのぎを削ってきたdolphinと遂に大会で直接対決。勝つとメダルがもらえる圏内に入れるかもということでConsiderBookMoveCountをfalseに戻して神頼み。が、流石は長らく振り飛車を葬ってきた信頼と実績dolphinだけあり、あっさりと負け模様に。dolphinに負けるとメダルは他力。具体的にはみずうら王が勝たないと駄目っぽい。四連敗の画面を見てると萎えるので、vs dolphinの中継画面を閉じて、みずうら王 vs BURNING BRIDGESの試合で全力でみずうら王を応援することに。が、映画館でプリキュアを応援する女児のように「みずうやおう がんばえー!!」という私の叫びは通らず、みずうら王敗戦。対局が終わったから仕方ねえなと画面を開くと......

 

なんか逆転してるーーーー!!!!

f:id:qhapaq:20210102124124p:plain

 

恐らく本大会のAリーグ最大の逆転勝利をキメていたのです。流石は振り飛車の神の寵愛を一身に受けしもの。このぐらいの評価値はひっくり返せるってか?

 

というわけで、最終戦でみずうら王が負けたのをあわせて勝ち星で並び、GCTとGrampusが頑張ってくれたのもあってソルコフ差で3位入賞。やねうら時代で恐らく初の振り飛車党での賞金圏入りに成功しました。

 

【細かい反省点】

定跡がハズレても飛車を振るようにしたかったです。HoneyWaffleの定跡が強かったのでそれを使うのはいいとしても、定跡が外れたと気に無理やり飛車を振るように、予備の定跡を用意するか、序盤だけShinderella的なソフトに指させるかをすればいけるだろうと思ってましたが時間が足りませんでした。

 

次の大会のコンセプトどうしようかしら。恐らく深層学習勢が滅茶苦茶増えることでしょうけど、単純に計算資源を投げ込んで学習しても面白くないしなあ。

 

でもなんかやります。大会を運営してくれた方、参加してくれた方、そして何より楽しんでいただけた方全てに改めてお礼申し上げます。関数の公開遅れて申し訳ないです。

電竜戦振り返り(1日目)

2020年11月21日〜22日にかけて世界将棋AI電竜戦が行われています。将棋電王トーナメント以来の冬の陣ということで私も「deqshi」、「Qhapaq overfit adventure」として参加をしています。本稿ではソフト開発の裏話を紹介したいと思います。

 

なお、1日目予選を経て、deqshiは15位、qhapaqは8位となり、それぞれ決勝戦bリーグaリーグで戦うこととなります。先日の対局を見ていただいた方、応援してくれた方に改めてお礼申し上げます。

 

【deqshiの開発でひたすらスタックする】

deqshiのコンセプトはdlshogiとやねうら王を利用して、その双方より強いエンジンを作ることです。ソフトの合議自体はこれまでも多く研究されていますが、それらの研究では合議に使うソフトの相対的な強さは使うハードによらずほぼ同じ、すなわち、安価な家庭用PCで検証した結果を、本番系のクラスタにも使いまわすことが出来ました。

ところが、dlshogiとやねうら王は用いるハードが異なる(GPU or CPU)ため、どちらが強いかは個々人が用意できる環境に大きく依存します。私のゲームノートPCはGPUが貧弱であるため、dlshogiよりもやねうら王のほうが強いですが、本番環境ではGPU側はV100を8台使うのに対し、CPU側は20スレッドであり、この環境なら恐らく互角〜dlshogiやや有利程度であると思われます。

そこで今回のクラスタではdlshogiかやねうら王の強い方を主軸にして、もう片方のエンジンにはそれをサポートする情報を与えるという設計にし、pr文章に記載したようなペナルティつき楽観合議を用いることにしました。これなら計算環境が変わってもパラメタを調整するだけで同じクラスタを使いまわすことが出来ます。本大会についてはこの計算条件ならdlshogiのほうが恐らく強いと思ったのと、折角だから深層学習を前に押し出そうということで、dlshogiを主軸に添え、やねうら王に適宜修正させる戦略としました。

また、過去の対局でdlshogiは序盤がやねうら王よりも強い一方で、終盤に頓死などをして逆転負けを喫することが多かったので、ある程度評価値が有利になったら、やねうら王に代打をさせるルーチンも追加しました。dlshogiによる序盤のお膳立てがあればローカルの2スレのやねうら王でも4スレ、8スレのやねうら王倒せていた(テスト対局ではほぼ逆転負けされなかった)し、dlshogiに対しても遅れを取ることはなかった(リレー形式側の勝率は55%ぐらい)のですが本番では......

deqshiの開発はdlshogiの山岡さんと共同で行いました。山岡さんのブログでも大会前日に夜遅くまでデバッグしていたと言及されていますが、クラスタのバグは勿論、細やかな開発環境の違いにも右往左往(例えば、私は対局を将棋所でしているのに対し、山岡さんは自作スクリプトでやってるとか)しており、本当に生きた心地がしない開発でした。

でも楽しかったです。デスマに付き合ってくれた山岡さんには改めてお礼申し上げます。

 

【突貫でqhapaqを作る】

qhapaqのコンセプトは飛車を振るになりました。正直deqshiの開発のデスマ化により凝ったコンセプトを用意できなかった面も大きいです。評価関数自体は水匠に対して振り飛車で勝率45%、各種互角局面で55%程度勝てるものが用意できていたのですが、deqshiのデスマでクラスタなどを用意する余裕がなく、チームメンバのマシンを借りることとなり、多分勝てんやろと思ったため、振り飛車を応援することにしました(takeshi賞もあるし)

決勝リーグで対策をされる可能性もあるので、細かい仕様はまだ伏せておきます。

 

【連続対局をしくじる】

当日はどうしても外せない用事が昼にはいっていたため、qhapaqを連続対局設定にしていましたが、見事に失敗して2試合ほど不戦敗になってしまいました。対戦相手の方々にお詫びすると同時に、お力添えいただいた方々にお礼申し上げます。

deqshiは山岡さんに操縦してもらっていたため無事でした。クラスタがクラッシュしないかヒヤヒヤしていましたが、連続対局含めて機能していたようです。

 

【deqshi vs みずうら王】

今回のクラスタの調整では、ほぼすべての局面でdlshogiの指し手が採択されました。これ自体は想定の範囲内の挙動でした。deqshi内のやねうら王は計算力、定跡の品質差が著しく、やねうらミラーとして勝つのは絶望的に見えたし、dlshogiは練習試合で後手番から中盤にまくり返すことに成功していたからです。

しかし、本番のみずうら王はやね師匠の定跡も加わってか大変強く、チャンスらしいチャンスがないまま負けてしまいました。Grampus戦についても同様です。

本当はdlshogiがやねうら王に勝ちやすい定跡を整備したり、もう少し序盤にやねうら王の意見を取り入れたかったのですが、そこまで用意する余裕がありませんでした。

 

振り飛車qhapaq強い】

一方のqhapaqは対局失敗以外は絶好調でした。チームメンバの計算機と雑に流した計算機が滅茶苦茶強かったのです。

 スリッパ以上にご家庭向きではない計算機が投入されており(将棋ソフトへの適性という意味では恐らくスリッパに劣るのだが)、無事に動いた試合はまさかの全勝でした。

 

【同門対決】

deqshiもqhapaqも2敗で迎えた9試合目はまさかのdeqshi vs qhapaqの同門対決。予選突破のボーダーラインは恐らく8-2であったため、負けた方は予選敗退が決定となります。双方にとっての天王山、その結果がこちらとなります。

f:id:qhapaq:20201122084014p:plain

まさかのナイアガラ

qhapaqの逆転勝ち。とはいえ、試合としては完全にdeqshiのペースでした。図の88銀に対して同玉が悪手で、評価値が1000程度ひっくり返ってしまったのですが、同玉はqhapaqの読み筋でもありました。すなわち

 

qhapaq「同玉されても負けただと思うがヤケクソじゃー!」

qhapaq「あれ、よく見たら勝ちだった」

 

ということです。最後は完全に振り飛車の神が微笑んだ形になりました。この他にもnozomi戦やAmaetadine戦も相当危険な橋を渡っていたと思います。が、最終的には不戦敗以外全勝だったので、なんだかんだで振り飛車強いのかもしれません。

 

【大会のお礼と感想】

まずは大会を企画してくださった皆様、視聴してくださった皆様、寄付やシステム開発で大会を支えてくださった皆様にお礼申し上げます。また、連続対局への失敗やマッチメイクシステムについて色々文句を言ったことをお詫び申し上げます。

参加者として感想を述べると、1人で2チーム以上参加できるルールはとても快適でした。これのお陰でdlshogiとの共同開発とqhapaqの開発を両立することが出来たので、非情に助かりました(1人1チームと言われたら多分deqshi単体になった....かな)。

個人的には持ち時間のルールも良かったと思います。適度にドキドキできる一方で、割と余裕を持って試合回数をこなせるので見ていて楽しかったです。

マッチメイクの方法についてはwcscの手法によせたほうが良いと思います。大会の目的が強さの格付けであるとするのであれば、今回のマッチメイクは残念ながら、明確に失敗していたと思います。例えば、上位陣が直接対決をせず、きふわらべクローンと戦い続けた結果、勝てども勝てども勝ち星の差が埋まらないという事態はwcsc型のマッチングでは起こらない現象です。

もっとも、電竜戦は予行練習も数行っていたし、内部でテスト計算もするなど事前検査はかなり真剣にやっており、本番にガチ参加者(ときふわらべクローン)が大量参加したという超想定外の挙動に対するバグみたいなものであったと考えています。運営の経営手腕の問題ではないと思うし、考えようによっては誰が勝つかわからないドキドキ感が割り増したと言えなくもありません。

 

それでは本日もよろしくお願いします。

将棋の先手勝率=52%に騙されてはいけない

Qhapaq アドベント将棋記事15日目

将棋における最初の勝負所は「先手を引くか後手を引くか」といえましょう。先手に戦型の選択権があり、後手のほうが苦労が多いのは人間でもコンピュータでも同じです。コンピュータ将棋では、先手の勝率は約6割あります。故に振り駒の時点で勝った側がガッツポーズをすることだってあります。

しかし、これはあくまでコンピュータの話です。コンピュータは人間に比べ戦型の好みが一つのものに偏りやすく、小さな違いが大きく評価される傾向にあるだけに過ぎません。実際、プロ棋士の将棋では先手の勝率は約52%であり、これは将棋の優れたゲームバランスを示唆するものでもあります。

 

と、思われてきました。が、違うと思います。本稿ではプロ棋士の後手勝率も実効的には4割ぐらいしかない45%弱である仮説をデータを駆使して紹介したいと思います。

2020.07.29、記事の誤っていた部分を修正+藤井棋聖に関するデータを追加

 

【プレイヤーの強さの差を無視している】

棋士全体の先手勝率から先後のバランスを考えることの致命的な欠点は、プレイヤーの強さの差を無視していることです。思考実験として筆者と羽生善治九段とで100本勝負をしてみましょう。先手後手は対局毎に入れ替えるとします。先手勝率はどうなるでしょう。まず間違いなく、50%になります。先後の有利関係なしに実力差がありすぎて、羽生九段が100-0で勝つからです。勿論、プロ棋士は筆者よりも遥かに高いレベルでしのぎを削り合っています。とはいえ、プレイヤーの強さの違いを無視するのは流石に問題があると言えましょう。全く実力差がないのであれば、約30年間も7つ(8つ)しかないタイトルを一人の棋士が握り続けることはまずないでしょう。

 

【プレイヤーを固定して、先後に由来するハンデを測定する】

そこで本稿では、プレイヤーを固定して、そのプレイヤーの先手/後手の勝率差がどのぐらい出るかから、先手がどのぐらい後手に対して有利かを測定してきます。幸いプロ棋戦では先後の決定に段位などの序列を用いることはないため、先手のときだけ強い相手と戦うといった現象は起こらないと言えます。

 

本稿では加藤一二三九段、羽生善治九段、渡辺明二冠、藤井聡太棋聖の先手、後手毎の勝率を測定していきます。なお、これらの棋士について全ての棋譜を集約できたわけではありません。特に古い棋譜の抜けが激しいので、加藤九段の勝率は実際よりも低く見積もられています。なお、特定の時期の棋譜が抜けることは上記仮説には影響がでないと考えています。

 

【レーティングに換算して60ぐらい損している】

加藤一二三九段 = 先手勝率51%、後手勝率41.5% = 先後レート差 60

羽生善治九段 = 先手勝率73%、後手勝率66% = 先後レート差 65

渡辺明二冠 = 先手勝率 68.5%、後手勝率60.5% = 先後レート差 60

藤井聡太棋聖 = 先手勝率 86%、後手勝率79% = 先後レート差 85

 

 

時代によらず、だいたいEloレーティングに換算して70前後、損をしていることが解りました。面白いことにも、これは今のコンピュータ将棋の先手後手の勝率差(60%-40%)におよそ近い値です。

 

本研究によれば、仮に同じ強さの棋士が戦った場合の先手の勝率は60%55%ちょいになると予想されます。観戦者につきましては、より真剣な表情で振り駒を眺めるべきでありましょう。

f:id:qhapaq:20200728221552p:plain

電王トーナメントで23試合中4試合しか先手を引かせてもらえなかったQhapaq開発者。実況やニコ生でも途中から「Qhapaqまた後手やん」と言われていたそうです。

 

【追記:どこを間違えたか】

羽生九段の強さをX、相手の強さをY、先手であるときに入るボーナスをZとすると

羽生九段先手時の勝率から計算されるレート差 = X - Y + Z

羽生九段後手時の勝率から計算されるレート差 = X - Y - Z (相手にボーナスが入る)

先手、後手間のレートの差分 = 2Z

羽生九段先手 vs 羽生九段後手のときのレート差 = Z

というわけで、先手後手の勝率から計算されるレート差を半分にする必要があるところを、綺麗サッパリ忘れていたようです。

幸いにして、勝率52%に騙されてはいけないという命題には影響がでていないものの.....これは恥ずかしい、本稿の内容をうっかり吹聴したフレンズの皆様、申し訳ありませんでした。

やねうら王搭載の詰将棋ルーチンの千日手対応

Qhapaq アドベント将棋記事 14日目

やねうら王(tnk-)に搭載のdf-pnベースの詰将棋エンジンが図巧の1番を解けないことが発覚しました。時折聞かれる「コム将棋の開発ってどうやってやるの」という問への答えとして使えそう課題なので、図巧の1番の解決を目指したライブデバッギングをネタの水増しとしてやっていきたいと思います。

 

【1日目】

【まずどの局面で詰まないのかを二分探索する】

図巧の答えを見たい人はこちら。

park6.wakwak.com

図巧の1番は69手目という超大作です。詰むはずの局面を詰まないと言われただけで問題が見えるレベルのサイズではありません。というわけで、まずは2分探索をして、何手目から読ませたら詰まなくなるのかを確かめます。

 

30手目から...詰む

16手目から...詰む

8手目から...詰まない

12手目から...詰まない

14手目から...詰む

ということで、どうやら13手目に対して不詰の変化がある(模範解答は14手目が正確ではない)と主張していることが解りました。

f:id:qhapaq:20200722093426p:plain

この局面は意図したとおりに詰む

 

f:id:qhapaq:20200722093558p:plain

この局面は詰まない(と主張している)

 

となると、13手目の15飛車打に対して、tnkの詰め将棋ルーチンはどんな手で詰まないと主張しているかを知るのが良さそうなことが解ります。打ち歩詰めや合法手生成が間違っているのか、はたまた本当に不詰なのか......

 

【2日目】 

【詰まない変化を追いかける】

次にやねうら王を改造し、不詰の局面でどのような変化を提案するかを調べます。不詰の変化を全列挙するのは大変なので、特定の変化(手順をmove形式で与える)についてのみ、ハッシュテーブルに保存されたpn、dnをとりだせるようにした上で、詰みの場合は詰みの手を、不詰の場合は不詰の手を返すようにします。

 

その結果、13手目から探索をした場合▲15飛車打、14手目△25飛車打の手順が不詰である(▲15飛車打、14手目△25飛車打したあとの局面を初期局面にした場合は詰むにもかかわらず!)という出力が得られました。

 

となれば、何かしかの影響で、詰み手順の中の局面が不当に不詰に書き換えられていると予想できます。

 

【ハッシュの重複を探す】

局面の評価を書き換えうる要素としてまず浮かぶのが局面のハッシュ(キー)の重複です。この詰め将棋エンジンではキーは32bitであるため、億単位の局面を探索すれば重複がありえます。幸いにも、上述の「詰まない」と言われる局面で探索される局面の数は数千万オーダーなので、局面のsfen文字列を全て保持してもメモリは爆発しなさそうです。

そこで、局面が新しく探索されるたびに、その局面のハッシュとsfenのペアを保存し、異なる局面が同じハッシュを持っていないかをチェックしました(mapでデータを扱えば局面数をNとした場合の計算量はO(NlogN)なので全ての組み合わせについて検証が可能です)。ところが、局面のハッシュ衝突は見られませんでした。となると、少なくとも今回の問題ではハッシュ衝突は原因ではないようです。

 

 

千日手の処理がどうやらおかしいようだ】

ハッシュが原因ではないということで、不詰にされた局面をよく眺めると、どうやら千日手周りの局面で評価がおかしいことに気付きました。tnkの詰め将棋エンジンでは千日手になった局面は不詰の評価を付けていますが間違いです。というのも、千日手の変化は不詰」であっても「千日手の変化の途中で出てくる局面が不詰」とは限らないからです。例えば以下のような局面で千日手の筋が見つかったことを理由にこれらの局面を不詰にすると、本当は詰む問題について詰まないという結論が出てしまいます。

f:id:qhapaq:20200725164719p:plain

図巧1番の詰手順の中には千日手可能な局面がある

 

【問題の要件をまとめる】

千日手周りの問題を処理するには以下の要件を満たす必要があります。

 

・何らかの理由で千日手周りの変化の検討を打ち切る

千日手を構成する局面のpn、dnを不当に不詰に変えてしまわない

 

【3日目】

千日手処理を書き換える】

問題の要件と今回用いた解決方法を改めて図にまとめると以下のようになります。従来のルーチンでは千日手になった局面を詰まないとみなしていたため、左図のような変化で詰みを見つけることが出来ません。そこで、今回の改造では「千日手の変化で不詰とするのは千日手の変化の中でもっとも開始局面から遠い局面(末端局面)とする」、「末端局面が攻め手側の場合は、親局面に戻る手を違法とする」ことで今まで扱えなかった変化で詰み筋を見つけられるようにしました。

f:id:qhapaq:20200726184021p:plain

左:before、 中 and 右:after

 

【以下、感想戦

【原著論文の実装しょぼくね?】

原著論文の実装ではこんなありがちなケースも解けないのか、と思うかも知れませんが、通常の千日手の変化であれば、局面をそもそもループなどせず、攻め手側が別の手を探索してくれます。というのも、普通であれば局面を深く探索するほど局面のpn、dnは増えるため、ループをする時点で親局面や兄弟局面のpnを千日手の変化のpnが上回るからです。

今回の千日手で厄介だったのは受け手側に千日手を拒否する選択権がなかった(王手に対して合法手が1つしかなかった)ことです。これだと手を何度ループしてもpnは1から増えない(pn=1は詰みを除けば最も魅力的な変化)ため、攻め手側も千日手の変化を望んでしまうのです。

 

 【問題は完全解決したのか】

ぶっちゃけしてないと思います。あくまで変な不詰が出る変化が少し減っただけと言えましょう。上記改造の脆弱性としては、例えば、千日手を構成する各々の局面の初期局面からの距離が探索の過程で変わる(より短い手数でその局面にたどり着く方法が見つかる)などがありえます。

 

【以下、個人的ポエム】

連休を詰将棋の改良に使った感想は「詰将棋の解析は1日でならない」というものでした。やねうら王に搭載されている詰将棋ルーチンの原著論文では、千日手周りの処理についての解説は殆どなく、千日手の処理は「不詰判定の一部」とみなしているようです(恐らく、論文通りの実装した結果が上記の脆弱性なので、解説を端折ってるか論文のやり方に不備があるかだと思います。正直な話、今回考えたハックを原著論文の技術を正しく実装しただけと言われたらちょっとムカつく)。

 

詰将棋界隈にはまだまだ上がおり、超難しい詰将棋を安定して解かせるという意味では、脊尾詰やなのは詰めのほうがまだまだ格上なのではと正直思います。とはいえ、やねうら王には詰将棋以外のルーチンも搭載されていること、ごく一部の難しい詰将棋でなければ現状の実装でも十分解けること、計算事態が高速であること、オープンソースであり様々な環境で動くこと(個人的にはこれが一番大事)などを考えれば不完全であっても十分な価値があり、一歩ずつでも品質を高めていくのは大事なのではないかなと思います。

 

今回作ったデバッグ用のコードの中では、詰め将棋探索後にユーザが特定の局面を指定することで、その局面のpn/dnを見られるルーチンは便利だなと思いました。詰将棋エンジンの隠しコマンドとしてコイツもプルリクしたいところです。

 

【おまけ】

なのは詰めなどの既存ルーチンがwindowsでしか動かないバイナリでしか配られていないと言った所、linuxで動かす方法を色々教えてもらいました。皆様ありがとうございます。

暫く日記の更新が滞ってましたが、手強い問題解決のコツの一つに、気がめいらないように休憩をちょくちょく入れるというのもありますのでそういうことで......