コンピュータ将棋議論

週刊将棋掲載のもと原稿


 まぁ、自慢させてよ(笑)。

 冗談はおいといて、この原稿は、週刊将棋の特集「将棋ソフトの作り方」に寄稿したものです。
 他に原稿を書いた人全員が将棋ソフト作成者という、非常に「おまえ誰やねん」的な感じでした。自分の書いたものがこうやって形になると嬉しくはあるんですが、いいんかいな俺……と思ってしまったのも事実です(笑)。

 好きなことを書いていい、と言われたので、日頃思っていることを書きました。
 こうやってWeb媒体として残しておくのも悪くないと思いましたので、今回はもとの原稿をそのまんま掲載します。実は白砂はまだ週刊将棋を見ていないんで、どれだけリライトされているか判りません。もし全く違う文章になっていたら、文才のなさを笑って下さい(泣)。


■コンピュータ将棋をどこまで強くするか?

 コンピュータ将棋を考える場合、「コンピュータ将棋はプロに勝てるか?」という話がよくされます。しかし、この言葉は具体的なようでいて実は曖昧です。
 というのも、プロ、という範囲、勝つ、という方法が非常に幅広いんですね。上は名人から、下は(失礼ながら)アマのトップと棋力的に差がないくらいまであります。また、単に一回勝つだけではなく、真の実力を証明するためには少なくとも7番勝負くらいはしないといけないでしょう。中には「奨励会から順位戦を勝ち上がらないとダメだ!」なんていう人もいるかもしれません。

「コンピュータ将棋はプロに勝てるか?」という言葉(目標)は、大きく3つに分けるべきでしょう。

  1. プロと名のつく人に勝つ
  2. トッププロレベルの人に勝つ
  3. 名人に番勝負で勝つ

 トッププロの名人の間にはさほどの差がないと思いますので、名人に1回勝つ、という項目はありません。

 1については、さほど悲観的に見ていません。今のハードがそのまま進歩していけば、ソフト的な進歩はさほどなくても近いうち(あと20年くらい)に達成するでしょう。逆に言えば、それほどコンピュータ将棋は強くなっているということでもあります。
 しかし、2や3については、今のままではまだ難しいと思います。

■コンピュータ将棋の弱点

 コンピュータ将棋の強さは、人間の強さとは全く異なるものです。
 人間の場合は、多少の得手不得手はあってもその強さは大体平均的です。しかしコンピュータの場合は、プログラムというデジタルなものに表現しやすいものは極端に強く、逆に表現しにくいものは極端に弱くなる傾向があります。
 ですから、コンピュータ将棋の棋力はその局面によってバラバラです。
 序盤の定跡手順はプロ級ですが定跡からそれると3級ぐらい。中盤も目標がはっきりしていればアマ有段クラスですが茫洋とした局面では級位者クラス。終盤はかなり手強いですが、それでも2手スキや3手スキ以上になると指せません。

 トッププロに勝ち、名人に勝つには、この部分の克服が絶対に必要になってきます。

■序盤と中盤の問題

 序盤や中盤の弱点は、形や構想といった漠然とした概念をコンピュータが認識していないために発生します。人間であれば強くなると自然と身についていくことですが、コンピュータには「なんとなく」は通用しませんので、工夫をしなくてはいけません。
 単純に浮かぶ対策は、現在の局面がどんな将棋か(振り飛車か居飛車かなど)を分析し、それぞれに大まかな指針を立てておくことです。
 居飛車系か振り飛車系か、くらいならなんとか判断できると思います。また、持駒の量や大駒の有無などから局面の緊迫度も計れるかもしれません。
 ただ、「大まかな指針」となると難しい。
 玉を固める、位を取る、歩交換を狙う、といった個々の項目はいろいろ思い浮かびますが、それらの指針の取捨選択をどうやってコンピュータにさせるのかを考えると非常に大変だと思います。

■終盤の問題

 寄せ合いでは「自玉は3手余裕があるので2手スキの連続で寄せる」なんていう局面が珍しくありません。しかし、N手スキの最初の一手は直接手(守りの駒に働きかける手や駒得の手)などとは限らないので、その手を生成することがまず難しくなります。
 単純にN手スキやN手必死を指すルーチンであればできます。とにかく最初の数手は全探索し、生成された局面が詰みかどうかを判断すればいいのです。
 しかし、この方法は非効率的で時間がかかります。また、仮にN手スキを見つけたとしても、互いの玉の関連でN手スキがほどけてしまうケースも少なくありません。一番顕著な例が「詰めろ逃れの詰めろ」ですね。先のルーチンでは相手玉の詰めろしか読んでいませんので、こんなことも起きてしまいます。
 自玉の詰みも考えたルーチンを作るとなると、ほぼ一手ごとに自玉・相手玉双方の詰みを調べることになるので莫大な時間がかかります。
 単純なN手スキを探すのですらこれでは、「2手スキの連続で寄せ切る」などというのは非常に難しくなってしまいます。

■コンピュータ的解決方法

 あくまでも個人的な考えですが、コンピュータに人間と同質の強さを求める必要はないと思っています。
 先の例で言うと、形や構想の概念を、人間と同じように思考する必要はない、ということです。弱点は弱点のまま抱え、それが露呈しないように、また露呈してしまっても致命的にならないようにする努力をすべきだと考えるのです(もちろん、克服する努力は必要ですが)。

 序盤については、できるだけ「定跡外れにならない」データベースの構築が望まれます。序盤を長くすることによって、少しでも中盤の弱い部分を少なくしようという考え方です。非常に消極的ではありますが、弱点を解決する方法を考えるよりは単純です。
 例えば『激指2』は130万手の定跡を持っていますが、初手▲8六歩に対する定跡は△3四歩と△8四歩しかなく、△3四歩だと▲7六歩以下相振り飛車(!)になります。
 この定跡データベースだけで名人に挑戦するなら、名人は躊躇なく▲8六歩と指すでしょう。それだけでコンピュータの苦手な「定跡を離れた形と構想力の戦い」に持ち込めるのですから。
 現在の定跡データベースはあまりにも穴が多すぎるため、すぐに定跡を外されてしまいます。将来的には、定跡データベースのフォーマットを統一して、プロアマ含めて協力してデータベースを補完していくのが(将棋の発展のためにも)望ましいのではないかと思っています。

 終盤に関しては、ハードの進歩により読みが深く正確になれば解決できる可能性が高い、と思っています。懸案のN手スキにしても、高速に読むことができれば読みの選択肢も同時に広がるので、一見ぼんやりした手というのも見つけやすくなります。「そっぽの香を1つ上がるのが実は3手スキだった」なんていう次の一手みたいな手は探せないでしょうが、実戦ではそれで十分でしょう。
 プログラム的な高速化についても、部分的な詰み手順を保存しておいてあとで応用する(IS将棋で実装)など、かなり進歩は進んでいます。同様の発想の「詰み手順・詰み形データベース」なども、技術的にはさほど難しくはないと思われるので、考慮に入れていいのではないかと思っています。
 終盤は最善手が少ないので、いずれコンピュータが人間を制すると思います。

■弱点解決の努力

 中盤の苦手な部分の克服は困難です。形や構想力がプログラムできないからコンピュータはプロに勝てない、と考える人は少なくありません。それほど、この弱点は顕著で克服も困難です。
 しかし、個人的には、読みが深く広くなることである程度の解決できるとは思っています。
 コンピュータが茫洋とした局面を読めないのは、「はっきりと有利になる手」がないために指し手を決定できないからです。しかし、中盤であれば、その茫洋とした局面を力読みすることによって、数十手後の「はっきりと有利になる手」を拾い出すことができるかもしれません。

 本当に最大の問題になるのは、定跡を外れた序盤なのかもしれません。
 中盤なら形勢を読み切れるかもしれませんが、序盤ではあまり局面を有利に持っていくことはできません。不利にすることなら簡単なんですが(笑)。読み切れない以上、なんらかの指針を立てることになりますが、その構想力がないことがコンピュータの最大の弱点です。定跡データベースで化粧をしてもごまかせるものではありません。

 もっとも、もしも本当に序盤の部分にしか弱点がないとするなら、「コンピュータvs人間の場合、序盤を普通に(定跡通りに)指していては勝ち目がなく、いろいろ変化技を使わないと勝てない」ということになります。
 もしそうなったとしたら、コンピュータは既に名人級の強さを持っているのではないか、という気もしますが……。


 もと原稿、という言葉を使ってしまいましたので、意味が通りにくいところもわざとそのままにしています。例えば、「プロアマ含めて協力してデータベースを補完していくのが(将棋の発展のためにも)望ましいのではないかと……」というのは、将棋界、とするとよりいっそう意味が鮮明になります。

 ここで述べていることは、今現在の白砂の考えと思ってもらって間違いありません。異論、反論、間違い指摘等がありましたら、どんどん言って下さい。
 お願いします。



広告主サイトもご覧ください。