弱いソフトを作るのはやはり難しい

2012/06/13コンピュータ将棋, 読み物

強い将棋ソフトを作る場合は、探索速度を上げるとか評価関数を良くするとか並列処理するとか、方法論そのものは存在していて(困難ではあっても)その方向に着実に進歩しているように思う。

ところが、初級者向けの弱い将棋ソフトの進歩は、強い将棋ソフトの進歩に比べると微々たるもののように思う。それでも素晴らしい初心者向けコンピュータ将棋ソフト「こまお」で紹介したように、ぽつぽつ初心者向けのソフトも出てきている。でも、まだまだ「弱ければ初心者向け」と誤解したような作りのソフトも多い。


左図はそのようなソフトと対局した一局面。論点をはっきりさせるため、先手の私はワザと駒を捨てるように指している。初手から▲2六歩△8四歩▲2五歩△8五歩▲2六飛△6二玉▲7六飛△5一金右▲7四飛。飛車がタダである。しかし、コンピュータはこの飛車を取ってくれない!


以下、 △1二香▲8四飛△9二香▲8三飛成△5二玉▲7二龍△6二金▲6一龍△4二玉▲5二龍と、龍を取らないと詰んでしまうところまで追いかけて、ようやく△5二玉と駒を取ってもらえた。  この局面だけ見たら、なぜこんなところに龍があるのか理解不可能だろう。


△5二玉に対して▲7六歩と突いたところ、後手の指し手はなんと△5八飛打!。 この後も、駒交換や駒捨てすると直に只捨て王手を行って駒をお返ししてくる。律儀というか何と言うか。 そのまま延々と駒の譲り合いをし続けていると、201手目にCPU投了。有利不利に関係なく、ある程度手数がかかると勝手に投了する仕様のようだ。


こまお作者のtiharaさんが書いているように「将棋というのは勝てないと面白くないのです」が、初心者はこのCPUに勝って面白いと思ってくれるかは(私には)疑問。勝ったというか、相手が自爆しているわけだし。

ただ、どうしてこのような動作をするのかは想像がつかないわけでもない。強いコンピュータソフトを元に「CPUの評価値があがらないように」修正すれば、こうなってしまうだろう。駒を取ると評価値があがるので取らないし、あがった評価値を手っ取り早く下げるには、駒をタダで取らざるを得ないところに打つしかない(要するに王手)。さように弱くするのは難しい。 取る一手は取る、とかも意外に難しいんだろうなあ。下手に先読みをしているとなおさら。

こまおは取れる駒は取ってきますし駒がとられないように先受けもします。ただ、数手先を受けることをしないので簡単に飛車先を突破されて負けてくれます。そのせいか、こまおにはなんとなく勝ったという気になるんですよね (猫をいじめて申し訳ないという気にもなったり)。やっぱり、良くできてるよね、こまお。

コンピュータ同士のネット対戦場である floodgate にも 程よく弱いソフトである pishogiが常駐していました。pishgi の作者の方は謙遜して「ほどよく弱いのは、考えられて作られているのではなく、全て偶然」と おっしゃってます。しかし、ほどよく乱数を利かせるのは結構大変だと思う。どこに乱数を利かせるか、も難しそう。

いろいろ探していると、 JAIST Repository: 人間らしい振る舞いをするコンピュータプレイヤーの設計という論文を見つけたけど、本文がネットでは読めないっぽい…

リンク:


コンピュータ将棋, 読み物

Posted by