第17回世界コンピュータ将棋選手権自戦記

今年も、コンピュータ将棋選手権に参加してきました。 大槻は、5/3, 5/5は見学、5/4の二次予選には参戦してきました。 結果はYSSの優勝 !!!。おめでとうございます。
決勝の観戦では、特に決勝上位ソフトの内容を見ていて、レベルの違いを痛感しました。
大槻将棋も年々強くなっているはずなのですが、上位のソフトとの差は縮まっていないような気がします。

今大会の大槻将棋の結果は、5勝4敗で、二次予選8位(総合順位は11位)でした。
昨年は総合順位が8位(二次予選は1位通過)だったので、去年まで続いた5年連続順位を上げるという記録?は途切れてしまいました。ただ一応強くなっているはずだとは思っていて、周りの底上げが、より上だったということだと思っています。

結果は決勝に進めなかったこともあり、不満といえば不満でしたが、この半年位は棋譜の学習という、 今までとは異なる新たな方向性を模索し、かつ一定の成果を挙げることができたので割と満足してます。 そこで今回は、大会前の開発の話も書いてみたいと思います。

 

大会前のお話

今大会は、Bonanzaに倣って、評価関数の学習を採用するかどうかが一つのポイントとなった大会であったと思います。 選手権に参加した開発者のお話を伺ったところでは、学習アルゴリズムを採用した人、徹底的に研 究した結果結局採用しなかった人、従来の路線を貫き通した人、など様々なケースがありましたが、 みなBonanzaの学習による手法とその成果に大きな影響を受けていたことは間違いなさそうです。

私自身も、11月のBonanzaの学習アルゴリズムの発表以降、徹底的に研究&実験を行いました。 まず論文を熟読して整理し、アルゴリズムの設計を行うのに約1ヶ月程度かかりました。さらに、 従来バージョンの評価部を思い切って切り捨てることを決断、かつ新アルゴリズムを実装するのに1ヶ月 程度かかりました。最初は、駒の評価値だけで実装して、全駒同じ点数から始めて、あっと いう間にそれなりの点数に収束するのを見て、まずは最初の「ビックリ」でした。

そして、何とか年内に学習したパラメータで思考することができるようになって、自己対戦で動かしてみ ると、(今にして思えば、まだバグだらけではあったものの)するすると穴熊に囲うのを見て二度目の 「ビックリ」を感じました。一体、今までの落とし穴テーブルは何だったのか?というほど鮮やかでした。

さらに、デバッグが進むに連れて、時々対戦させている 将棋倶楽部24のレーティングがするすると上がり、1900程度だった最高レーティングが、評価関数 を学習したものに変更しただけで、2300程度まで一気に上昇しました。これは、まさに驚愕のアイデア。 3度目の「ビックリ」となりました。(対戦して頂いた皆様、ありがとうございました。場合によっては 大変不愉快な思いをさせているような気もし、申し訳ありませんが・・・)

これが、今年3月頃の出来事だったのですが、ここからが大変でした。このレーティングの上昇を 見て、今年の選手権はかなり上位を狙えるのではないかと楽観していたのですが、いざ市販ソフト と対戦させて見ると、去年勝っていたはずのレベルにコロコロと負かされます。

どうやら駒得重視のコンピュータソフトから見ると、非常に隙の多いプログラムとなってしまって いたようです。囲いの手を重視しすぎて、飛車先を受けずに破られてしまったり、手損で歩を取りにくる手を軽視して、あっという間に歩を掠め取られると いった現象が頻発しました。

これは、今までの落とし穴方式の評価関数でも見られたことですが、評価関 数のバランスが悪いことからくるものでした。従来のハンドチューニング方式の場合は、 「ここの評価が高すぎるので - 25 点」とか手で書き換え(これを「伝家の宝刀」と呼ぶらしい)ればよかったのですが、今回は、パラメータ の値を決めるのは、学習アルゴリズムなので、手っ取り早い方法はありません。

そこで、ここからはハイパーパラメータ(主に学習基底ごとのペナルティ)を少し変えては、市販ソフト と対戦させ確認するという、長い長い消耗戦となりました。

大会直前は、家にある3台のPCのうち、1台がBonanzaと木偶の坊で連続対戦、 1台が学習パラメータのチューニング、1台が自己対戦による更新事項の評価 実験を夜通し行っていて、私は寝ているだけ、という大変奇妙な状況となっていました。 「眠っている間に強くする」という社会人プログラマとしてあるべき姿に近づいている気もしますが・・・。

最終的には、学習棋譜数を増やしたり、いくつかの評価項目を纏めたり、いくつかの評価項目を追 加したりすることにより、何とか去年よりは強いというレベルまで到達し、選手権を迎えました。 (というつもりになっていました)

以上、コンピュータ将棋開発者にしか分からないマニアックな内容でした。


以下、自戦記です。
なお以下の棋譜表示には、勝田将棋盤 V2.3 を使用させていただいています。

一回戦:vs 神乎棋技戦 ●

居飛車 対 中飛車。
初戦は、去年の順位もあり、一次予選6位の神乎棋技が相手。さすがに負けることは無いだろうと思っていた。
定跡を持っていないらしく、いきなり初手▲78銀。落とし穴評価関数ならば、無難に囲ってくれるはずだが、今回は、学習版の評価関数ということで、開発者も何が起こるか分からない展開。案の定、開発者の期待を裏切り(しかし予想には違わず)、簡単に飛車交換&横歩取りを許してしまう。26手目▽33同桂では、▽33同銀がまさったか。以下、銀が全く働かない展開となってしまう。学習したお陰で、よくある▽22銀▽32金▽33桂の形にしてみたものの、やってみたら駒が働かなかった、というところか。
その後馬は作ったものの、結局取られてしまう何となくチグハグな展開。46手目▽26歩、48手目▽35金は甘く、遊び駒だらけになっている間に、強引に切り込まれてしまった。 56手目あたりは、こちらは千日手より無い展開で、相手に回避されてしまうほど最悪の状況となった。
以下は、相手が遊び駒を取り、ゆっくりしている間に、馬を好位置に引き付け、ようやく少し盛り返したところ、72手目▲36香に対し、▽25金と逃げている場合ではなかった。金にかまっている間に飛車を取られて打ち込まれ、絶体絶命のピンチ。ただ少しもたついてもらったせいで、101手目▲58金のところでようやく後手に手番がまわった。評価値もかなり上昇し、ここで必至をかけて、何とか勝てるだろうと思っていた。
ところが、105手目▲97玉と逃げられてみると、何と信じられないことに寄せがみつからず、みるみる評価値が下がっていく。自玉は後一手でほぼ必至なので、詰めろがかからなければ即負けである。▽84香はひどく、まだしも▽85桂だろうが、それでも容易ではなく、明解な勝ち筋は後で調べても見つからなかった。非常に不運とも言えるが、ここまでの展開にしてしまった序中盤に問題がありすぎた。
この時は相当落ち込み、9連敗するかもと本気で思った。いつも思うが、選手権で1勝を挙げることは本当に難しい。
なお、神乎棋技は次局、棚瀬将棋戦でも、評価値-∞まで追い詰めた。ところが最終的には4勝5敗の18位。不思議なソフトである。
0勝1敗。

二回戦:vs 奈良将棋戦 ○

相矢倉?。
奈良将棋は、ここ数年コンスタントに5勝以上挙げている安定感抜群の相手。大槻将棋は一度も勝ったことがない相性の悪い相手。ここらで一度は勝っておきたいところ。
定跡どおり矢倉に進むかと思ったが、17手目は▲68金???。このソフトは本当にBonanzaと同じ学習アルゴリズムを使っているのかと疑いたくなるような「好形!?」へと進めていく。45で開戦したものの、お互いに何故か45に歩を打たず、激しく金桂交換に。37手目▲44歩が実現し、後は、どちらが角をはたらかせられるかという展開。 ▲75歩が今大会で数少ない、学習版評価関数の成果とも言える手で、角を働かすことが出来た。ここでかなり有利になったはずだが、53手目に何と要の44歩を▲43歩成と成り捨ててしまい、逆に劣勢に。しかし58手目▽48と ときてくれたのが手駒に歩を加えて▲34歩が可能となることから有難く、再び優勢となった。実際に69手目▲34歩が実現したところからは、かなり良いと思う。以下は何とか勝つことが出来た。
  1勝1敗。少しほっとした。
 

三回戦:vs 臥龍戦 ○

相矢倉。
  パタパタと定跡で進んで、17手目▲66銀で定跡を外れる。今回の大槻将棋の特長として、序盤で歩 を受ける気は全く無いようで、18手目▽31角と「どちらでもどうぞ」。善悪は私の棋力では よく分からないが、もう少し手堅く指して欲しい感じがする。 歩を取らせている間に玉を囲っておいて十分と思っているのだと思うが、今大会は、 駒得重視の辛いコンピュータ相手に、この後も歩損により形勢を損ねる展開が続いてしまった。 事前にも、この学習評価関数の副作用が出まくっていて、ある程度チューニングしたつもりであった が、どうやら修正し切れていなかったようである。30手目▽65桂も多分指しすぎで、正確に指される と、この桂は取り切られてしまいそう。桂をぴょんぴょんはねてしまうのも副作用で、今までの手動の 評価関数ならば、適当にチューニングで抑えられるのだが、今回は制御が難しかった。 ただ今回はたまたま?、一応▽65桂以下、▲88角▽86飛▲54銀▽85飛▲66歩▽86歩 以下切り合う順があり、 私には善悪は、よく分からない。本譜は▽85飛と人間には気付きにくい好手があり、無理が 通ってしまい、死にそうな桂と銀の交換になって、随分よくなったようである。以下は、うまく攻め形を作って寄せきることができた。
2勝1敗。

四回戦:vs GPS将棋戦 ○

居飛車 対 三間飛車。
GPS将棋は、苦手で最近負け続けている相手。しかも個人的には非常に似た気風のソフトで あると感じていて、悪手まで当ててしまう程、読みが一致する不思議な相手。今回も44%も先読み が当たっていた。それで勝てればいいのだが、どうやら読みの深さは負けているらしく、相手の手 を読みきっているにも関わらず、評価値がどんどん下がっていくという悲しい展開が多い。
  パタパタと定跡で進んで、26手までこちらの定跡。でもこの形は嫌いらしく、35手目▲88玉と手損 して玉形の修正。もう少し緊張感を持って欲しいなあと思いながら見ていたら、この角筋に入った 嫌な瞬間に機敏に▽65歩と仕掛けられてしまった。少し無理気味に見えたが、 こちらも付き合ってしまい無理が通ってしまう。51手目の▲24歩から▲45歩の攻めはやりすぎで、 玉のこびんを開いた形がたたり、形勢を大きく損ねてしまった。いつも通り、ここから評価値がずるず ると下がっていく展開に。もう完全に駄目かと思ったが、今回は珍しくGPS将棋が少し緩めてくれた。 88手目▽45飛が評判の悪かった手で、角筋を通したまま、もう少し平凡な手で来られたら受け切れ なかったのではないか?角筋を受けきることが出来、手番が回った103手目▲64桂と打ったところでは、 逆転しているようである。以下は先手の指す手が分かりやすい展開となり、何とか勝ちきることができた。
3勝1敗。苦しい将棋を逆転でき、段々勢いづいてきた。

五回戦:vs うさぴょん戦 ○

相矢倉?。
うさぴょんは、二次予選シードの常連。巡り会わせで、非常によくあたる印象がある。 将棋は敗勢になることが多いのだが、 勝負自体は勝つことが多い。去年も必敗の将棋を大逆転勝ちで拾わせていただいた。
定跡でパタパタと進み、いきなり先手の角が26にいて、これは何だと思った。この形果たしてどちらがいいのだろう? ここから、お互い激しい攻め合いとなった。さっさと3筋に歩を受けて欲しかったが、受けてくれず、ずっと▲38飛が▽32金に直射する気持ちの悪い展開。本譜も▲52金と打ち込む手を見られながら、うまく攻めを続けられる。51手目の▲65銀は、何か決め手があるのかとあせった。しかし、53手目▲83桂で、いきなり終わってしまった。後で調べたら、ここでは、▲64桂▽同銀▲44角と勝負していたらかなり難しい展開が続いたのではないか?先手が居玉なのでさすがに先手優勢とまではいかないと思うが、相当に気持ちが悪かった。 ここからは、楽な展開となり勝つことができた。
4勝1敗。こから相手がきつくなる。

六回戦:vs 棚瀬将棋戦 ●

居飛車 対 四間飛車。
ついに大御所登場。東大将棋改め棚瀬将棋。ここまで激指に負けただけの4勝1敗。 前日の一次予選は、苦戦した(とはいえ全勝)とのことで、少しは勝機があるかと 思ったが、後で聞いたところでは、一日で見違えるように強くなったとのこと。 さすがとしか言いようがない。
藤井システムの中途半端なところで定跡が終わって、22手目。ここが最初の問題で ▽35同歩はまずかったらしい。ここで▲46銀から押さえ込まれていたら完封されていた 可能性もあった。本譜は先手が仕掛けを見送ってくれて、事なきを得た。
今回は角筋と玉の関係の評価を入れていなかったことが祟ったか、GPS戦に続いて 玉のコビンを攻められる展開に。1歩損して何とか凌いだが、変な形になってしまった。 この後、6筋と7筋に拠点を作りあったが、玉に近い分先手の方が有利だったか? 68手目▽14歩は意味がないので、▽95歩と突いた方がよかったかもしれない。先手は玉を固めて、 形を整えてから攻めてくる。この辺りの間合いはさすが。以下93手目▽47角と打って、▽83馬 と引き付けた辺りは、実践的には結構難しかったようだが、うまく馬を消されてしまい、 最後は117手目▲85金が決め手となったようだ。以下、金銀を大量に渡しても、上の広い 詰めろのかからない形にしたのが、勝又先生によると、棚瀬将棋の好判断だったようで、 負けとなった。
4勝2敗。
 

七回戦:vs K-Shogi戦 ●

居飛車穴熊 対 四間飛車穴熊。
K-Shogiは、毎年着実に力をつけており、今回の二次予選組の中では下馬評が高く、実際に最終的 に、初の決勝進出を果たしたソフトである。最近は大槻将棋との対戦はないものの、過去の対戦成 績は五分くらいである。
将棋は定跡が切れた瞬間に千日手に突入する怪しい展開で、千日手を嫌って変な手を指した瞬間 に将棋が終わってしまった。37手目▲88銀では、▲57銀とか▲68角とかで▽46歩を防いでおくべ きで、飛車先交換を許してしまってはいけない。さらに悪いのが43手目▲59金で、何故竜をただで作らせて しまったのか理解できない。この辺り、穴熊の形の評価が高すぎる副作用と思われるが、あまりに酷 いので何かのバグかもしれない。将棋はここで完全に終了で、弱いソフトならば逆転の余地があるのだろうが、 強いK-Shogiに辛く辛く手を消されて、100手くらい無駄な抵抗を続けて果てた。
これで4勝3敗。いきなり後がなくなった。しかも次の相手は決勝進出本命の一つ、柿木将棋。後 2連勝しても他力といった感じでほとんどあきらめムード。 というより、将棋の内容があまりに酷すぎて、ほとんど希望を失った。

八回戦:vs 柿木将棋戦 ○

居飛車 対 三間飛車。
古豪、柿木将棋が遂に登場。去年の二次予選では奇跡的に勝たせていただいたが、共に決勝 進出を決めた最終戦の遊び将棋だったこともあり、相手が本気だったかは微妙。今回は、柿木 2敗、大槻3敗で一転負けられない展開での勝負となった。
将棋は、▲65歩と17手目▲48銀の組合せがまずく、また歩損してしまった。こんな手、弱い作者(私) にも見えるのに。この後大好きな、▲47銀▲58金▲67銀▲78金 の形に組み上げ(これはBonanza囲い に対して、「大槻囲い」とでも言うべき隙だらけな囲いである。2駒の相対位置関係を偶数マスと奇 数マスで区別している副作用ということが、Bonanza囲いと比べてみると一目瞭然である。)49手目▲15歩 から、またしても無謀な仕掛けを敢行する。自分から仕掛けて、いつの間にか不利になっているいつもの パターン。攻撃的な所は、Bonanzaと似ているが、強さは似ていない。
進んで75手目▲66角、この手では、まだしも▲66銀がよかったとのこと。しかし、この66角がこの後、 大活躍する。この辺り大盤 で勝又先生に解説されていて、いくつも柿木将棋の勝ち筋を示される。しかし柿木将棋の手が少しづつ甘かったようだ。79手目▲21飛と打っては見たものの、後手が鉄壁なので、焼け石に水。ここで▽58香 か▽67金くらいで後手必勝と解説されたところで、柿木将棋▽56香。まあこれでも勝ちでしょう とのことで他の対局へ解説が移った。これで今年の選手権も終わったと思った。
しかし、この直後81手目▲43と が今大会のMVPの大勝負手だった。対応が悩ましかったが、 ▽62金▲54歩となっては、先手陣は遊んでいたはずの2枚の角が妙にはたらいていて、 寄りがなく、雰囲気は逆転。後手の堅陣があっという間に弱体化した。この後あれよという間に勝利 してしまった。柿木さんは今回は、つきに恵まれず、次も負けて予選落ちとなってしまった。 将棋の難しさを痛感した1局だった。
何とか最終戦まで目を残して、5勝3敗。
この時点で、激指、棚瀬将棋、備後将棋が決勝進出確定。後2つの席を、5勝3敗の柿木、竜の卵、 K-Shogi,大槻将棋、GPS将棋の5チームで争う展開となった。ここで最初のアヤは、どこが激指 と当たるか。激指と当たっていないのは、K-Shogi、大槻将棋、GPS将棋の3チーム。 激指は、この時点で8連勝、優勝候補の筆頭との向きもあり、当たれば120%負けると思われた。
そして、最終戦の対戦表が渡される。運命の相手は・・・。 

九回戦:vs 竜の卵戦 ●

四間飛車 対 居飛車。

対戦表を見ると、相手は竜の卵。運悪く、激指に当たったのはGPS将棋であった。

竜の卵は強敵であり勝率3割もないだろうが、激指に勝つ確率よりは10倍以上高そうなので、この時点でかなり 嬉しかった。
結果、かなり分かりやすくなり、GPSが数少ない可能性をものにして(失礼!)激指に勝った場合、 大槻将棋は勝っても多分厳しい。一方、GPSが負けた場合は、最終戦 柿木-K-Shogiの勝者と大槻-竜の卵の 勝者が決勝進出という、大槻将棋にとって、想定された事態の中では、比較的可能性の残る 展開となった。少し運が向いてきたような気がした。
しかし、最後に立ちはだかるのは安定感のある竜の卵。去年の二次予選では偶然勝てたものの、 一昨年は、最終戦でやはり夢を砕かれるなど、非常に厳しい相手である。

序盤、おそらくお互いの定跡ソースが一緒だったために、一気に40手目まで進んでしまい、定跡 が切れたところでは、銀桂交換になっていた。ちょっと進みすぎで、これは良くないと思うのだが、 結局毎年、定跡まで手が回らず、いい加減なことになってしまう。ただ何とこれは、藤井システム の定跡形で、勝又先生によると、久保-瀬川戦とのこと。この将棋は、本譜でも出た▽95桂が好手 で後手有利になると解説された。実践は▲78桂が褒められた手で、少し難しくなったようだが、 居玉の先手が勝ちにくい展開に見えた。 本譜は何やかやとやられている内に、馬を作られてしまった。ただ形勢は難しく、ぬるい65手目 ▲46桂の代わりに▲83歩とでも打っておけばまだ難しい戦いが続 いていたと思う。居玉のため次の▽85香が思いのほか厳しかった。ここで、▲84歩とでも打ってお けばまだ難しい部分もあったと思うが、ここで、▲43歩成と水平線気味の手が出てしまい完全に駄 目にしてしまった。
このクラス相手に2手続けて悪い手が出ると、もうどうしようもないようで、以下 はなすすべもなく完敗した。本年の戦いは最終日を待たずに終わってしまった。
  5勝4敗の8位。残念。決勝進出ならず。
 

決勝

残念ながら、選手としては参加できなかった決勝は観戦にまわった。主に、 竜の卵の中谷さんの横で観戦していた。あの強い、竜の卵 が、負け続けるのを見て、決勝のレベルの違いを痛感した。

最後に・・・
決勝、最終戦。Bonanza-YSSはYSSが勝てば優勝となる最終戦のひとコマ。
私は、YSSのマシンの前で、観戦していた。
局面は二転三転の最終盤。YSSが必死にBonanzaの攻めを凌ぎ続け、遂に王様は15まで やってきて、私のような弱い人間は、玉が向かい合っていて何が何だか訳が分からない。115手目 Bonanzaの▲11成銀。これは詰めろか、などと考えていると、後ろに居たアマ名人の加藤さんが 10秒くらいで「ここで▽49角と打てば後手勝ちですね」と断言。そしてYSSのディスプレイを見つめる 山下さん「変われっ、変われっ」。そして25秒くらいで「変わった。▽49角。変わった。指した!!!」

この瞬間、今年の選手権の勝者が決まった。

将棋を指しているのは誰で、応援しているのは誰で、強いのは誰なのか? 何か不思議な場面だった。まだまだ人間は安泰かもしれないなと思ったら、エキシビションは案の定、加藤さんの勝利。
いずれにしても山下さん、おめでとうございます。
「こういう最終戦のドキドキをいずれは体験してみたいですね。二次予選の最終戦は何度もドキドキしてるけど」と言ったら、冷静な中谷さんに「二次予選はドキドキしたくないね」と言われてしまいました。まあ確かに、ドキドキしないで上がれるに越したことはないですが。

おわりに ---今大会をふりかえって---

今大会は、結果は5勝4敗の二次予選8位だか、内容は、3勝6敗くらいで、結局温存した去年までの終盤 評価関数のお陰で何とか拾った感が否めない。
この半年間努力したはずの評価関数は、思ったほどの効果を挙げず、序盤はむしろ悪化したようだ。玉の囲い を重視し過ぎて、歩損したり、飛車先交換を許したりするのは、Bonanza式の評価関数の一種の副作用だと思う。評価関数のバランスは難しい。
同じことをやっているはずなのに、Bonanzaのように強くならないのは、静止探索や探索アルゴリズムなどのインフラがまだ甘いからだろうか? 皆さんの話を聞いた感じでは、まだまだ工夫の余地がありそうなので、 来年までには、もう少し安定させたい。
去年と比べると伸び代が増えたことが今後に向けては良かったと思う。去年までの、絶望的な評価関数に 未来はなかったと思うので。
来年までには、ぐちゃぐちゃのムーブジェネレータ&オーダリングも何とか、学習を駆使するなどして、人に見せられるようなものに、変えていきたいと思う。
今年は、最後の最後に何とか並列化にも成功したので、来年はハードに金を掛けたくなるような強いソフト を作りたい。 

2007.5.15 大槻知史