アピール文から読み解くWCSC27の見どころ(技巧編)
久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。
前回記事:アピール文から読み解くWCSC27の見どころ(ponanza_chainer編)
注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。
・新境地を切り開く孤高のマイスター 技巧
技巧のアピール文:
http://www2.computer-shogi.org/wcsc27/appeal/Gikou/gikou_appeal_wcsc27.pdf
floodgateに彗星の如く現れ、ponanzaを四間飛車で倒すという鮮烈なデビューを果たした技巧。その伝説は、当時(2017年時点では今も)最もメジャーだった3駒ではなく、2駒と効きを使った評価関数を編み出したこと、突然(?)オープンソース化されたことなど枚挙に暇がありません。技巧が切り開いた将棋は、開発者のみならず、将棋界全体に多大な利益をもたらしています。
以下、技巧がどれだけ偉大であるかをできるだけ解りやすく(?)解説していきたいと思います。
・2駒と効きを用いた評価関数
注:幸運なことにもsdt4でのQhapaqのテスト対局の相手は技巧でした(結果は途中終了)。ソフトが無事に稼働するかを眺める間、やることがないので開発者の出村さんと色々ディスカッションをさせていただきました。以下の考察には出村さんから教えていただいた情報も含まれていますが、あくまで私の記憶が元であることをご承知おきください。
技巧を語る上で欠かせない特徴は、評価関数が2駒と効きで表されていることでしょう。効きを評価に組み入れたのは「数の攻めによる突破」や、「玉は包み込むようにして寄せる」といった人間的な将棋の考え方を将棋に取り入れたかったからだと聞いています。
例えば、矢倉の86の地点は歩と銀が効いており、これを突破するには3つ以上の駒で攻める(棒銀なら飛銀歩)必要があります。従来の3駒の評価関数では、関与する駒が4個以上ある形を直接扱うことが出来ないため、実際に駒を動かして検証する他ありませんが、効きを使えば静止探索でもある程度正確に評価できるという寸法です。
こうした特徴から、技巧は駒がぶつかってからが強いと予想することが出来ます。手前味噌の解析で恐縮ですが、技巧 vs silentmajority(浮かむ瀬のバイナリが8月頃のものであり、勝率はほぼイーブン)でのソフトごとの評価値と勝率の分布も似たような現象を示唆(技巧のほうが評価値がより正確に勝率を示している)しています。
棋譜統計解析カシマちゃんで遊ぼう:魔女 vs 技巧編
— Qhapaq (@Qhapaq_49) November 6, 2016
魔女が技巧に対して終盤よく逆転負けする気がする説は本当か否かの検証。評価値毎の勝率をプロットすると、確かに、魔女の逆転負けが多いことが解る。 pic.twitter.com/0PhryIZMIu
アイデアとしては割と人間的なものである一方、それをゼロから実装するとなると地獄が待っています。技巧のソースコードは非常に解りやすく、美しく書かれていますが、読んでいると段々と怖くなってくることがままあります。
・技巧の抱える幾つかのアキレス腱
技巧は特に中終盤の盤面を正確に表せる一方、序盤で形勢を損ねがち(特に6月技巧は)という弱点を抱えているようです(sdt4でのQhapaq vs 技巧も50手目ぐらいで終わったけど、その時点ではQhapaqが少し有利をとっていました)。これは、囲いを評価するときには3駒関係が便利だからではないかと私は予想しています。
例えば、横歩で玉を52においた場合、61金+72銀型や、62銀+72金型などが囲いの候補になります。3駒関係を使えば、これら玉形の点数を変数一つで決められますが、2駒+効きではこうした囲いを評価するのに複数の変数が必要になります。
また、技巧は他のKPPT型のソフトとは評価軸が異なるため、良くも悪くも力にブレが生じがちです。sdt4で技巧は真やねうら王に勝ち、白美神に負けていますが、他のKPPT型ソフトがだいたいレート通りの勝敗をする中で、技巧だけはレートの特異点的な振る舞いをしています。
・今回技巧がやって来そうなこと
技巧のアピール文で特に目が行くのは前年度比4倍のXeon軍団です(技巧の技術力を買ってスポンサーが付いたのだと思いたい)。6月技巧のクラスタは短い持ち時間で読んだ良手の候補を、1ノードに1手ずつ割り振るという手法でしたが、64台もあると64位の手はめったに仕事をしないと思うので、1つの手に2つ以上のノードを割り振って楽観合議制にしてくるのかなと予想しています。
学習部について、技巧は実現確率(棋譜から出やすい手筋を学習させているようです。学習部のための学習部は6月技巧でも公開されており、初めて読んだ時は思わず「oh、クレイジー...」とツブヤキました。)を使っていると書いてますが、multipvなどを駆使した実現確率もどきの雑巾ではQhapaqは強くならなかったので、それ以上の工夫を仕掛けてきてると予想しています。ポーカーの論文で話題のQ-learningとかは技巧が組み入れてきそうです。
あと、出村さんがこの記事を読んでいる可能性は低いと思いますが、勝率は自己対戦ではなく浮かむ瀬ややねうら王の勝率ベースでチューニングしたほうがいいと思います。本大会も大半はKPPT勢のようなので。
・Qhapaq的総評
独自技術を貫くと、ユーザが多い技術の数の攻めに苦しむことが多々あります。技巧は優れたソフトである一方、独自性に由来した苦戦(前回みたいにponanza以外には全勝とはならない)もすると予想しています。
ただ、ponanzaを倒せる確率が最も高いソフトも技巧だと思います。アンチ雑巾絞りを掲げるライブラリ勢のQhapaq如きが言っていい言葉だかは知りませんが、理論やくざ仲間として技巧のことは応援しています!
前回のWCSCでは当たることが出来なかったので、今回はぜひ戦ってみたい(できれば2次予選の突破を確定させた後で)です。
Qhapaqは大将軍に敗れてお役御免。「負けた時のダメージは研究時間と正の相関あるの目に見えてるし、こんなに頑張りたくなかったんですよ。何故にこうなってしまったのでしょう」とぼやいたら出村さんに「ようこそ(意訳)」と言われました。
— Qhapaq (@Qhapaq_49) 2016年10月10日
アピール文から読み解くWCSC27の見どころ(ponanza_chainer編)
コンピュータ将棋選手権(WCSC27)まであと半月。最年少棋士の躍進によってすっかり忘れられがち(当社比)なコンピュータ将棋ですが、今年も実に面白い独自性を発揮したソフトがWCSCに参加しています。そこで、久々のシリーズ物として、WCSC27に参加しているソフトのアピール文を、私、Qhapaqの開発者が読解/解説していきたいと思います。
本シリーズを通じて、皆様がコンピュータ将棋を好きになってくれれば、そして、人工知能の織りなす科学を楽しんでいただければ幸いです。
注:以下の考察はQhapaq開発者の予想です。開発者に確認をとっているわけではありません。あくまで参考として楽しんでいただけると幸いです。
・コンピュータ将棋業界の絶対王者 ponanza
ponanza_chainerのアピール文:
http://www2.computer-shogi.org/wcsc27/appeal/Ponanza_Chainer/Ponanza_Chainer.pdf
sdt、WCSCを連覇し続ける絶対王者ponanza。その後につく恐るべきchainerの文字。そう、彼らは遂にディープラーニングを将棋に取り入れてきました。ponanza開発陣、PFNの精鋭、超高火力ハード。一つだけでも即死級のヤバさですが、そんなのが3つも4つもくっついています。そこまでしなくても勝てるのに。独創賞まで狙ってこなくてもいいのに。
以下、怨嗟の声をぐっとこらえて、ponanza_chainerのアピール文を読み解いていきます。
・ディープラーニングを用いた完全情報ゲーム
ディープラーニングを使って完全情報ゲーム(将棋、チェス、囲碁etc)の盤面を評価させる際には、まず最初に、局面をネットワーク(以下DNN)に入れた時に「その局面の点数を出力する」か「指すべき手の確率分布を出力する」かに注目する必要があります。
例えば、DNNを用いたチェスの研究では、局面をinputにして評価値をoutputにする学習がなされています(web上のチェスの棋譜と勝ち負けの結果を教師に作っているようです)。
https://erikbern.com/2014/11/29/deep-learning-for-chess.html
DNN自体は悪くない精度で局面を評価できるようですが、計算コストが割に合っていないらしく、既存ソフト(sunfish。どのぐらい強いかは知りません)に勝ち越すことはできていないようです。
チェスや将棋のように駒得が勝敗に強く響くゲームでは、ある駒が別の駒を取れるという位置関係がとても重要で、逆に、それさえ抑えればある程度の精度で盤面を表せる(KPPTとかはそういった発想から来ています)ため、DNNにしたときの計算コストが割に合わないことが多いというわけです(ゲームによってはこれでも割に合うとは思いますが)。
一方、alpha goなどでは、局面をinputに評価値ではなく指すべき手の分布を出力してくれます。こうすることで、局面毎に合法手全ての分岐を扱う必要がなくなるので探索の効率がぐっと上がります。
AlphaGo の論文をざっくり紹介 - technocrat ←有志による読みやすい解説
アピール分などの言い回しから推理するに、今回、ponanza_chainerが成功させたDNNによる局面評価もalpha go型(局面をinputに指すべき手の分布を出すタイプ)であると考えられます。
注:DNNの学習方法については私個人の知識+集められる情報だけでは判断できませんでした。alpha goのような棋譜の再現率を上げる→その後にTD学習、または、ポーカーの論文のようなreinforcement learningである可能性は高いと思ってますが...
しかし、DNNが高精度な局面判定ができる(アピール文によると54%当たるらしい)としても、将棋によくある長い変化手順を静止局面判定だけで扱える見込みは低いです。故に、開発者的にはどうやってDNNを使って深く読むかが気になります。
・alpha goの方法 + ponanzaによる補正と予想
DNNを使った探索方法。私は基本的にはalpha goの方法(木探索モンテカルロ法。良さ気な手を実際に指させてみて、勝率が一番高い手を採択する)を使ってくると予想しています。
合法手の読む順番を決める(良い手を先に読んだほうが探索効率が上がる。既存ソフトでは相手の駒を取る手などが優先的に読まれる)のにDNNを使うなど、既存の探索に組み込むのもアリですが、枝狩りとDNN双方で新しいアルゴリズムを使うと、仮に強くならなかった時にその原因が枝狩りにあるのかDNNにあるのかが解らず、開発の難易度が指数関数的に上昇するからです(業界用語で次元の呪いと言います)。
また、ponanza_chainerが用意しているという高火力ハードは特にgpuが強い(知人からの又聞きですが)らしく、並列性の高い木探索モンテカルロ法と相性がよいのもポイントです。
さて、DNN+モンテカルロベースの探索には、不利を認識すると良く解らない手を指す(alpha goもセドル戦4戦目で引っかかった)などの弱点がありますが、ponanza_chainerの場合、こうした弱点をponanzaで埋めあわせてくる可能性があると思っています。
例えば、開始局面で浅く読ませることで局面の有利さを大雑把に見積もる。終局まで指させず、50手ぐらいでponanzaの評価値を参照し、有利な方を勝ちとするなどは比較的実装が容易なのではないでしょうか。
ponana_chainerはponanzaによるダブルチェックが使える分、alpha go以上に隙がない作りになっていると予想しています。
・Qhapaq的総評
今回もponanzaが優勝候補なのは間違いないでしょう。普通に戦ってきても優勝候補なのに、DNNという新しい概念を持ちだしてくれたことには尊敬の念を抱かずにはいられません。
ただ、KPPT型の評価関数と評価軸(読み筋)が変わるのであれば、その分付け入る隙もあると思っています。浮かむ瀬ややねうら王を相手にそのへんの穴も埋めてるとは思いますが、諦めずに挑戦していきたいところです。
ちなみに、Qhapaqは昨年のWCSCでもponanzaにあたっていますが、多分誰も覚えていないのではないかと思います。
対局表貰うときにおめでとうございますって言われた。赤紙かな。 pic.twitter.com/YToDre2oIW
— Qhapaq (@Qhapaq_49) 2016年5月4日
【将棋は】台湾人に日本アニメの説明を求められた件【一切関係ない】
海外出張中は流石に将棋の開発のしようがないので、おとなしくアピール文を書いています。さて、台湾の学会ということで台湾の学生と喋る機会があったので、今日のゆるふわ拡大版ということで此方で紹介します。
【以下、完全なる駄文です】
【結論を言うと「けものフレンズの面白さがわからない」と言われたので、その面白さを如何にして説明したらいいか助言が欲しいという話です】
【締切は3/28昼まで。海外からは最終回を見られないので、最終回に関するネタバレはおやめください> <】
# 実際は英語で会話してるので意訳が入ってます
# あとストーリーのわかりやすさ重視で順番とか調整してます
台1「台湾はどう?」
私「良いところですね。蛙を食べたり蛇を食べたりしてエンジョイしてます」
台1「わおスゴイ」(スゴイは日本語で言ってる)
私「え、日本語喋れるのですか?」
台1「ええ、授業で少しやりました」
台2「まて、お前が日本語喋れるのは動画見てたからだろ」
台1「ああ、バレてしまった」
私「www」
台1「最近みた日本の有名な動画はこれです」
私「・・・・なんぞこれ?」
台2「え、知らないのですか?」
私「遺憾ながら」
台1「じゃあ、遊戯王は知ってます?」
私「ええ。遊戯王は遊んでたので」
台1「あ、でしたら海馬解ります? 私の友人は海馬のモノマネができるのですよ」
私「HAHAHA。信じませんよそんなの」
# おもむろに友人を召喚し中国語でなにか喋ってる
台3「え、何、海馬のモノマネ?」(地面でカードを引くモーションをしながら)
私「オベリスク」
台3「そう、オベリスクwww」
台3「リバースカードオープン(日本語で)」
私「エネミーコントローラーッ」
# 何かに満足し役割を終えた台3は元居た机に戻った
台2「じゃあ、これは?」(恋ダンスのポーズをしながら)
私「ああ、恋ダンス!」
台1「これは日本でも有名ですか?」
私「はい。有名です。ちなみにこの役者はアイマスシリーズが好きなことでも知られています」
台1「え、ミキミキですか?」
私「いえ。アイマスには事務所が2つあるのでそっちじゃない方です」
台2「シンデレラのほうですか?」
私「ええまあ」
台1「シンデレラの誰ですか?」
私「みくにゃんですね。猫の頭を被ってる人です(モーションしながら)」
台2「ああ、これかあ(ググりながら)」
台1「そういえば、アイマスとラブライブはどっちが強いんですか?」
私「コンピュータ将棋業界では拮抗してます」
# Nozomiちゃんと必ずや倒すという鉄の誓いを立てながら
台2「じゃあ、アイマスと艦これは?」
台1「艦これはアニメ爆死したやん」
私「いや、あれは本当に嫌な事件でしたね。」
台1「今季のアニメのオススメってあります?」
私「一番バズったのはけものフレンズですね」
台1「うーん、あまり聞かないですね(ググりながら)。ああ、これか」
私「わーい、たーのしー」
台1「心がピョンピョンするんじゃあ」
台2「で、けものフレンズは何が面白いんですか?」
私「IQが下がることとか、全てを受け入れる精神に疲れきった日本人が魅了されたとか、雨後の筍的に議論がされてますね。私としては仄かに香るディストピアの香りが好きなのですが」
台湾1・2「うーん、ちょっとわからん」
私「ちょっと時間をください。私のタイムライン上には優れた研究スキルと下がりきったIQを両立した達人がいますので、彼らにアドバイスをもらってきます...」
親愛なるフレンズの皆様。
このままで良いのでしょうか。
どうか私に力を貸してください。
あと、只管私のことを白い目で見ていた後輩諸君、国際交流というのはこういう小技を蓄えることから始まるのだよ。
両成将棋における腰掛け馬のススメ
ponanzaに勝ったら300万円貰えるチャレンジが今年も始まったようです。特に目新しいのがオプションとして選べる飛車、角の両方が初手から成っている+先手というハンディキャップでしょう。
この初期局面は先手が既に1000点前後良いことに加え、コンピュータ将棋は平手で他のソフトを殴り倒せるようにチューニングするので、相手の評価ミスを誘えるのではないかと、検証部隊が動き始めているようです。
fg_fanさんが検証してしまっている以上、私の記事にどれだけの価値があるかは謎ですが、Qhapaqの検証によるとオススメの指し手が少し異なるようなので此処に記録しておきます。
Qhapaq側の検証では手が短いこと、手のバリエーションが少ないことを特に重要視しています。具体的には持ち時間を変えたりmultipvによる検証をすることで、ponanzaが未知の手を指してくる可能性を少しでも下げようとしています。故に、最終的には先手が+1500-1700程度になっているとはいえ、もしかしたら人間的な勝ちやすさは伴っていないかも知れません。
1.66歩、78馬の構え
初手から66歩、84歩、68馬、85歩、68龍
一目珍妙な構えですが、Qhapaq的にはこれがベストのようです。34と23の拠点を睨むことで、相手の玉形に大きな制約をかけると同時に、6筋攻めも見せています。相手は23の地点を金駒で守りたい関係で、相振り飛車にしにくくもなっています。戦型絞るの is 大事。
振り飛車模様にしたので、ここから暫くは玉の整備になります。相手の陣形は23を守らなければならない+此方が振り飛車の関係で32銀からの居角美濃になる見込みが高いです。こちらもとりあえず美濃にしておけば安心でしょう。
2.銀と腰掛け馬による速攻
図1から32銀、48玉、86歩、同歩、同飛、88銀、82飛、58金、42玉、38銀、72銀、39玉、31玉、28玉、52金、76歩、64歩、77銀、63銀、75歩、74歩、同歩、34歩、76銀、74銀、56馬、75歩、74銀、89飛成、75銀
玉を整備したら(整備しなくてもいいのでしょうけど、玉は固めておいたほうが人間的には安心)銀を76に繰り出し馬を56に据えて6筋を攻撃します。この時点でQhapaq的には1600点程度の先手有利。初期陣形と違って駒がさばけていて玉が硬いので、人間的にも割と勝ちやすい局面だと思います。
3.7筋に龍を振り直すパターン
図1から32銀、48玉、86歩、同歩、同飛、88銀、82飛、58金、42玉、38銀、72銀、76歩、64歩、77銀、63銀、75歩、34歩、39玉、74歩、同歩、72金、76銀、74銀、77龍、88歩打、56馬、73歩打、75歩打、65銀、同歩、89歩成、67龍、65歩、同龍、51金、45馬
相手が早めに34歩から此方を牽制してきた場合、34馬として歩得することも可能ですが、相手の牽制を無視して攻めるのが早いようです。
攻め駒の並べ方は先ほどと同じで、76歩、77銀、75歩、76銀、56馬から攻めを組み立てていきます。腰掛け馬によって、6筋の突破を見せると同時に、相手の74歩を強く牽制しています。7筋の駒を牽制するだけなら55や46に馬を置く手も考えられますが、相手から角交換を見せる手があるせいか、短い持ち時間でやると逆転されてしまうことがあるようです。
4.まとめ
Qhapaqで検証する限りでは、66歩、78馬、68龍から美濃囲いを作り、88銀、76歩、77銀、75歩、56馬の形で攻めるのが手の変化が少なくて良いようです。この他の変化としては、77銀から86歩打、56馬、88龍と向かい飛車にする手も有効なようです。
飛車同士の睨み合い自体は角交換四間飛車でもある形ですが、56の馬が相手の78筋を牽制しているため、飛車同士の睨み合いを有利に進めるという寸法です。
ただ、この戦型は相手の82の桂馬の活用を許してしまいがちであり、手の変化が豊富になりやすいので人間がponanzaを倒す上ではあまりよろしくないと思います。
使って負けても責任は取れませんが、戦型の一つとして覚えておいていただけると良いかと思います。
Futility marginがdepthの線形でいい理由
定跡研究の知見をまとめつつある裏で、WCSCに備えて探索部の改造にも手を出しています。
評価関数は億単位の局面を使って億単位のパラメタを最適化するという人間の直感に反するものである一方、探索部は「まずは取る手から考える」とか「この局面は仮に盛り返しても、今考えるベストな展開に及ばないだろうから探索を打ち切る」とか「ある程度考えたらそれ以上考えても仕方ないので指して相手の手を見てから考えよう」とか、割と人間的にも納得の行く理念で作られています。
しかし、その理念をコンピュータの思考に焼きなおすには、幾分かの数理的な小技が必要となります。昨今のコンピュータ将棋の探索部はstockfishから引っ張ってきたルーチンが多く、よもすれば、式の意味を解らずに枝狩りをしている人、いるのではないでしょうか?
今回はstockfishの数あるルーチンの中からfutility marginについて考察していきます。
1.futility margin/pruningってなんぞ
futility pruningはn手以内に今考えてる最善手のスコアを追い抜けそうにない手を枝狩りする探索ルーチンの一つです。例えば、横歩取りで横歩を取る手の暫定評価値が+100だったとします。
暫定評価値は所詮は暫定であるので、他の手(例えば飛車を引いて相掛かり風味にするなど)に抜かれる可能性があります。故に、他の手を今の点数が低いからと枝狩りするわけには行きません。しかし、見込みのない手(飛車をただで捨てる手とか)はさっさと枝狩りしてしまったほうが、有力な手に費やせる時間が増えて、レートが上昇します。
28飛車は読むとして。96歩や98香はどうだろう。どこから枝狩りすればよいのだろう。こうした判断をするときに使うのが、futility marginです。
具体的には、其の局面の浅く読んだ時の点数(score)が
bestscore - score > margin * depth *const
となった時に枝狩りを発動させます。depthは残り探索深さで、仮に読むとしたらdepth手先ぐらいまで読むということを意味します。
marginがdepthに比例するのは、将棋の局面は深く読めば読むほど評価値が変わりうるからなのですが、さて此処で問題。なぜdepthに比例なのでしょうか。やねうら王も読み太も線形にしていますが本当にこの形でいいのでしょうか?
2.点数の変化度はdepthではなくdepthのルートに比例する
まず、depthが1の時について考えます。1手深く読むことで評価値はずれますが、概ね(99%ぐらい?)X点以下に収まるとしましょう。
depthが2の時はどうでしょう。2手先の手の点数のブレは「1手先の点数のブレ」+「1手先の局面から見た1手先の点数のブレ」で表されます。futility margin的にはブレは概ね2X点以下に収まるとのことですが、実際に2Xが出る確率はもっと低いはずです。というのも、2手連続でめったに出ないX点を出さねばならないからです。1手深く読むことでX点点数がずれる確率が1%だとすれば、2手深く読むことで2X点点数がずれる確率は0.01%です。
細かい導出はおまけに任せますが、stockfishさん、深く読むときにビビり過ぎなのではないでしょうか?
3.枝狩りする局面の数を考えると釣り合う
ある局面からd手離れた局面の評価値がxずれる確率は
で表せるとしましょう(実際は規格化係数などがいるけど)。このとき、点数の変化値がαd以下になる確率=futility pruningして問題ない確率は
で表されます(αはfutility marginの係数とする、Zはdに依存しない定数)。ガウス関数の積分はガウス積分の公式 [物理のかぎしっぽ]あたりを参照してください。
しかし、d手読む予定だった局面を読むのをやめるということは、局面分の読みを省略するということを意味します(Aは各々局面の合法手のようなもの)。
即ち、futility pruningに失敗しないためには、上述の賭けに回連続で勝つ必要があります。
に対して1次のテイラー展開を用いると
適切なαを選ぶことでdによらず上記の式が一定になることが確認できます。
おまけ.点数の変化度はdepthではなくdepthのルートに比例する(小難しい補足)
depth手先まで読むということは
1.1手深く読むと、前の局面に比べて駒が一つ動きます(そりゃそうだ)
2.駒が動くと、評価値は動いた駒の分だけ変化します
3.深く読むと2のプロセスを何回も重ねあわせることになります
ということを意味します。駒を一つ動かすことによって生じる評価値の差分の分布はKPPTのパラメタで特徴つけられた関数になります。深く読むことでこの分布関数に従って、何度も評価値が変調されていきます。
実は、分布関数の形が何であろうと(例外はあるけど)、十分な数depthを重ねると、最終的な分布はガウス関数に収束していきます。中心極限定理と呼ばれる定理であり、大学初頭の統計などで出てきます。中心極限定理を用いれば半値幅はdepthのルートに比例すると予想できます。
振り飛車最強決定戦(本戦) in Qhapaq
※ この記事は 振り飛車最強決定戦(前哨戦) in Qhapaq - qhapaq’s diaryの続編です
前回の記事で三間飛車(2手目32飛)、四間飛車、ゴキゲン中飛車、角交換四間飛車の勝率を測定してみた結果、序盤の角交換をQhapaqは良くないと思っていること、振り飛車における肝は振り飛車側が如何に開戦のタイミングを握るかであることが予想されました。
しかしながら、今まで調べた戦型では振り飛車の勝率は全て40%前後であり、振り飛車は不利という定説を覆すには至りませんでした。そこで、本稿ではこうした傾向をベースに、数ある振り飛車戦略の中から振り飛車側が戦えそうな戦略を更に抽出、検証していきます。
0.向かい飛車とダイレクト向かい飛車の検討を忘れてた
345筋に飛車を振って満足していましたが、向かい飛車も検討するべきでした。
向かい飛車。余談ですが私が最初に覚えた将棋の戦形は向かい飛車です。
勝率:801-43-519 (39 %) 左翼を守るために離れ駒になった金が腐る展開になりやすいようでした。中飛車と同じですね。
ダイレクト向かい飛車。NHKの佐藤千田戦は本当にエキサイティングでした。
勝率:1286-39-813 (38 %) 角交換系の例にもれず振り飛車の勝率は悪いです。居飛車側の攻め駒が豊富すぎてとにかく攻めを受け止められない展開になりがちです。
ここまで見てきたように、振り飛車の序盤形では振り飛車の不利を覆すことができませんでした。ならば、しょうがありません。人間の棋譜からもう少し進んだ局面を用意しましょう。
1.初期局面から10手以上進んだ定跡局面を使う
ほぼ無限と言ってもいい振り飛車戦略の中から何を選べばいいかはよく解らなかったので、今までの研究で示唆されてきたこと(相手に攻めのタイミングを握らせないのが鍵)をある程度満たす、振り飛車戦略の中から、タイトルホルダーの棋譜を使って検証してみることにします。
初期陣形は広瀬穴熊より引用。66銀からの持久戦が苦手と聞いていますが。。。
勝率 292-21-192(39%):四間飛車穴熊対策でよく書かれている66銀型に持ち込まれ、そのまま作戦負けする棋譜が多かったです。人間とコンピュータの読みが一致したのに少し感動しました。
銀河戦の船江 vs 藤井戦より引用。研究者の例にもれず、私も藤井ファンです。
勝率:1072-48-1069(50%) そう、藤井システムこそQhapaqが思う最強の振り飛車システムなのです。次章でもう少し細かく解説します。
勝率が高い振り飛車戦略というと最初に疑わなければならないのが、この初期陣形になる前に、居飛車が悪い手を指しているのではないかということです。
しかし、Qhapaqの検証によれば、藤井システムの初期形までに居飛車があからさまな悪手は指していないようです。というのも、上図の初期形のQhapaqでの評価値(4コアPCで2分程度検討)は200程度の先手良しであり、四間飛車の初期陣形(76歩、33歩、26歩、44歩、48銀、44飛)の評価値(180程度で先手良し)とさほど変わらないからです。以下、実際にどんな棋譜が出てきたか簡単に紹介したいと思います。
77角なので穴熊での持久戦に絞って検証します。
# コンピュータ的には35歩からの急戦も有力だそうですが(Qhapaqに検証させると66歩、88玉、35歩が主な候補手となる)
さて、藤井システムで穴熊模様を撃破するとなると、船江藤井戦のような桂馬を85に単騎で跳ねる展開を期待しがちですが、Qhapaqで特によく見る局面は上図に出てくるような美濃囲い+端歩攻めという超古典的陣形です。この局面の評価値も200弱程度先手が良いと言っていますが、実際の勝率は5割程度でるようです。
Qhapaq藤井システムの対穴熊陣形で特に目立つ(桂単騎跳ね急戦以外のほぼ全ての対穴熊に言えること)のは
・銀冠にはしない。美濃のまま戦う
・54に銀か金を配置する
という点です。
ここから予想するに(あくまで私の勝手な予想ですが)
・藤井システムを見せることで66銀型の穴熊を妨害する(57の銀を腐りやすくする)
・角道を塞いできたら美濃囲い+腰掛け銀でコビンをカバーしながら玉頭の戦闘準備を整える
・穴熊に対する玉頭攻め vs 美濃囲いに対する横からの攻めの構図に持ち込むことで防御力の差を無力化する
と言った戦い方が、Qhapaqが思う、勝てる振り飛車側のストーリーのようです。
4.結局なんで勝てるの?
評価値が似たようなものであるにもかかわらず、勝率に大きな差がでる理由として、特にありそうなのが「コンピュータの評価軸が誤っている」、「読みぬけが生じやすい局面である」です。
前者(コンピュータが特定の局面で判断を誤る)についてはまふ氏の検証(アマチュアなどの棋譜を元に従来のコンピュータ定跡よりも強い定跡を作ってる方)でも示唆されています。しかし、今回の検証は手がバラけやすいように持ち時間を調整(0.1-2秒)しているため、評価関数の質に起因するミスはある程度緩和(流石に10%も差は出ないと思う)できていると思われます。
となると考えられるのが、居飛車側が読み抜けしやすい展開が多いという話です。枝の複雑さは評価値にはなかなか出にくいですが、コンピュータも、人間同様に自分の手の読みぬけが致命傷になる、いわゆる”苦労の多い展開”では読みぬけの確率が上がるので、評価値外の実力差の要素には成り得ます。
5.藤井システムを指しこなすコンピュータの難しさ
ここまで来ると、藤井システムを指しこなすコンピュータ(またはその定跡)を作りたくなります。しかし残念ながら、藤井システムの良さが評価値に出ないためコンピュータによる自動調整は難しいです(過去に量子ガシャを試したときも居飛車穴熊相手に穴熊を組みたがる傾向が強かったですし)。また、初手からの手数が長いため、人間が手動で棋譜を食わせようとしてもその変化が膨大になってしまいます。
ただ、こうした知見は局面をニュアンスで判断できる人間には有益な話だと思います。コンピュータは人間を遥かに凌駕した計算力で局面を判断するため、人間との読み筋の違いが取り沙汰されますが、枝狩りの考え方などは人間にも近いところもあります。コンピュータ同士の自己対戦から、勝ちやすい戦型を探すことは人間の棋力向上に役立つのではないでしょうか。
6.次回予告
さて、コンピュータに指させることができるかは別にしても、藤井システムを使えば振り飛車も戦えそうという結論が得られたため、振り飛車戦型探索は再びお休みに入ります、
次回からは、「エンジニアこそテニミュを見に行くべき」と題しまして、ひたすらテニミュの面白さを紹介していきます。
テニミュの話だけしかしないと、将棋大好きな皆様は記事を読んでくれないでしょうから、人間のスパーリング相手になるコンピュータ将棋の理論とその実装についても少し触れる予定です。
振り飛車最強決定戦(前哨戦) in Qhapaq
プロ棋士の大半が居飛車を指す時代。コンピュータ将棋でも相手が飛車を振るとついガッツポーズをしてしまいがちですが、藤井銀河の爆誕や久保九段の王将戦での活躍など、振り飛車のポテンシャルはまだまだ底が見えていません。
本稿では、藤井猛九段のインタビューで先発の三本柱と言われていた三間、四間、中飛車のなかから、最強の振り飛車は何であるかを検証してみます。それと同時に、コンピュータ流の振り飛車の考え方について考察してみたいと思います。
1.選手入場
本稿ではノーマル四間、ゴキゲン中飛車、32飛車戦法、角交換四間飛車に出場してもらいます(全て振り飛車を後手番とします)。誤差を真面目に削るには万単位で戦わせなければならないのですが、面倒だったのでノーマル四間以外は約500試合ずつです。お時間あるようでしたら、どれが優勝するか予想してみてください。
ノーマル四間飛車
今なお絶大な人気を誇る、振り飛車の主役です。
2000年代後半の後手番勝率の上昇に貢献した戦略の一つです。
なお、英語名称はCheerful Central Rookだそうです。
二手目32飛
稼いだ戦略です。32飛車を嫌がり初手を26歩にする居飛車党も居るとか。
角交換四間飛車
藤井銀河の二度目の升田幸三賞受賞の立役者。
なお、研究者界隈では藤井銀河の人気は羽生三冠をも凌ぐとかなんとか。
2.対戦結果
ノーマル四間飛車:40.5%
ジリジリした駒組が多い。水平線効果からかノーリスクで穴熊を許すなどの人間ならやらない類の作戦負けをしやすい。
ゴキゲン中飛車:40.5%
超速37銀はあまりみない。居飛車側は5筋を守るのに使った金銀をそのまま玉の防御にも使えるのに対し、振り飛車側は41の金が最後まで浮くのが痛い。大駒交換から守備力の差で負ける展開が目につくが、居飛車急戦に毒されたQhapaqは割とそれに気付かない。
2手目32飛:37%
角交換四間飛車:37.5%
居飛車側からのコンピュータ特有の攻め将棋が炸裂しやすい。振り飛車(もとい美濃囲い)は角の打ち込みには確かに強いが、壁銀を繰り出しての玉頭攻めなどと組み合わせられると後手が何もできずにやられることもしばしば。戦形の再現性が少なく、見ていて目が痛くなる。
結果は、ノーマル四間≒ゴキゲン中飛車 > 32飛車≒角交換 となりました。渡辺竜王が最近後手番で採用しているゴキ中が強いのは予想通りでしたが、ノーマル四間飛車が強いのは驚きました。私個人は、ノーマル四間飛車が戦いにくいからこそ、他の振り飛車の手法が生まれた経緯からノーマル四間が一番弱いだろうと思っていました。
さて、偉そうに決定戦と宣ってますが、各々の試合の誤差は大きく、この順位はさほど当てになるものではありません。しかし、どうやら、序盤に角を交換する(2手目32飛はQhapaqだと殆ど角交換になる)のは損であるというのがQhapaqの見解ではあるようです。
# まあ、角交換系とそうでないのを足しても1000ちょいにしかならず、2σの誤差は抜けられてないのですが。
3.コンピュータが考える振り飛車の肝
大会結果では角交換系は散々な目にあっていますが、コンピュータは後手の角交換系を苦手としているかといえば、必ずしもそうではありません。
過去に行った振り飛車定跡の研究では振り飛車側は相手の陣形が自分の陣形より薄いと見るや、自分から積極的に角交換を持ちかけています。
これらのデータから、コンピュータが考える振り飛車の肝は飛車を動かす手損を、形の良さ(美濃囲いは角打ちに強い。角が相手の玉を直接睨んでいるetc)で埋め合わせることであると予想ができます。
ノーマル四間の45歩のように、自分が望んだタイミングで戦いを始めることが大事であり、角交換で下手に居飛車に攻撃力を与えてしまうとむしろ困るというわけです。
4.次回予告
本大会で優勝したノーマル四間飛車やゴキ中を以てしても、コンピュータ将棋の後手勝率が47-8%程度であることを考えると、振り飛車はかなり苦しい状況と言えます。しかし、本稿の実験を通じて振り飛車の肝は、手の損を形の得に変換してから開戦するという、開戦のタイミング制御であることが示唆されました。
そして次回、後手番平均勝率ライン(47%)に匹敵する不利じゃない振り飛車が遂に爆誕します。(現在手元PCで検証中。このまま行けば80%ぐらいの確率で平均ラインに届きそう。)
長かった振り飛車の冒険の一つの終点とも言える戦略が何であるか、皆様是非予想してみてください...