floodgateはしばらくお休みしています

いま通常探索部にdf-pnを組み込むための実験をしているのですが、df-pnのnode_limitを決定する計算式のパラメーターを変更するごとに勝率がごろっと変わります。

それでこのパラメーターの最適値を探すために3分×100戦ほどして前のバージョンに勝ち越したら採用というようにしているのですが、3分×100戦の繰り返しが結構馬鹿にならない時間がかかりまして、floodgate参戦用のマシン×2台が専有されております。

まあ、それはそれとしまして、こうした場合、最大のライバルは“前のバージョン”でして、当然、新しいバージョンを応援しまくっているわけです。これがまた白熱するんです。まるで馬主になって競馬を観戦している気分で、「行けー!!」ってな気分で前のめりになってモニターを注視しております。

NHKテレビ将棋トーナメントを見ているよりよほど楽しめるというものでして、これをご覧になっている将棋ファンのプログラマーの方々、是非、コンピューター将棋を作りましょう!!

将棋とは頓死のゲーム

高段の将棋でも意外と頓死は多いです。
ここで言う頓死とは次のように定義します。

・即詰みがあるのにそれを逃して負ける
・即詰みに気づかず、受け間違えて即詰みに討ち取られる

つい先日の2011JT将棋日本シリーズ決勝 羽生JT杯vs渡辺竜王*1でも渡辺竜王が▲7一銀のところで▲7五桂以下後手玉に即詰みを逃しています。(▲7五桂打△同歩▲7四銀打△同玉▲7五銀△8三玉▲7四銀打△9三玉▲8三金打△同飛▲同銀成△同玉▲6一馬△7二銀打▲8四飛打△9三玉▲8三金打△同銀▲同馬まで)

トッププロでも即詰みを見逃すことは結構あります。これを頓死と言ってしまうのは少し酷かも知れませんが、ここでは頓死という扱いをします。

さて、このように頓死を定義した場合、その頓死率はトッププロでもアマチュアでもほとんど変わらないのではないかと私は思うのです。

そもそも頓死が起きる原因とは、簡単に言いますと、N手〜N+1手しか読んでいない人同士が対戦していると、ときどきN+1手で詰むようみ詰み筋が現れて、片方の人はそれに気づいたり、あるいは両方の人が気づかなかったりするということです。

神様ではないので、N手しか読めないというのは仕方ありません。人間やコンピューターの宿命的なものです。

将棋には、有利なほうはミスしなければ優勢にでき、優勢のほうには先に詰み筋が現れるという原理のようなものがあります。「勝ち将棋、鬼の如し」などとよく表現されますが、優勢のほうはどうやっても勝つように出来ており、「勝つように出来ていないならそもそもその局面は優勢ではない」というまるで言葉遊びのようですが、まあそういうことです。

つまり、優勢の側に先にN+1手で詰む詰み筋(or 必死をかける筋)が現れるわけですが、N手しか読めない人間にはそこまで思考が到達しないんですよね。アマチュアでもプロでもこのNの値が違うだけでだいたい事情は同じなので、(同じ棋力同士の)アマvsアマと(同じ棋力同士の)プロvsプロの対局では頓死率はそんなに変わらないのではないかというのが私の持論です。

それはともかく、結局、相手より読みが浅いと頓死することは多々あるので、優勢であっても頓死はよくあります。

コンピューター将棋の場合、詰みは正確ですが、その詰みに探索エネルギーの何%ぐらいを割り当てるかという課題があります。通常探索の量を減らすと(互角の相手の場合)そもそも優勢になりませんし、優勢にならなければ詰みも何も関係ないという話もあります。

かと言って、全く詰み探索をしませんと、相手が通常探索のうちわずかだけ詰み探索にエネルギーを割き、互角で終盤を迎えたときに、相手のほうが1手先に詰みを見つけてしまうために勝率ベースで見ると全然勝率が異なってくることがあります。

結局、どんなタイミングで詰み将棋ルーチンを呼び出し、どれくらい詰み探索に時間を配分するのかというバランスの問題になってきます。

この配分のためのパラメータを少し変えるだけで勝率がごろっと変わります。

前のバージョンに7割勝ち越すバージョンにさらに7割勝ち越すバージョンにさらに7割勝ち越すものが出来たのですが、一番最初のと最後のとを対戦させたら最後のがむしろ負け越していただとか。何をやっているのかまったく意味がわかりませんが、そういうことも起こりえる不思議な世界です。

GPS将棋はなぜ強くならないか

ひよこカルロ将棋neoに詰み探索を入れると自己対戦では圧倒的に勝ち越します。序盤の弱いソフトほどこの傾向は顕著です。

ここでは何故そうなるのか順を追ってご説明します。

序盤の弱いソフトは、通常探索の量を減らしても序盤の棋力はあまり変わりません。弱いものは弱いのです。iteration回数とはあまり関係ないのです。そもそも駒得のみの評価関数ですとiteration回数が数回増えたぐらいでは玉を囲えるようにはなりません。(玉を囲うのは終盤にしか生きないので駒得のみの評価関数ですとそこまで読めないと囲う手は指さないでしょう…)

ゆえに、序盤は通常探索の量が減っていても同じぐらいの序盤の棋力を持つ相手には互角のまま終盤に突入可能性が極めて高いのです。

そのときに詰み探索があるのと無いのとでは全然話が違ってきますので、結局のところひよこカルロ将棋neoに限って言えば、詰み探索を増やせば増やすほど自己対戦の勝率は上がります。増やすと言っても限度はありますが、通常探索の半分ぐらいの時間を費やしてもいいぐらいです。

こうやっていくと、詰み探索を増やしていくと前のバージョンに6割勝ち越すようになり、その6割勝ち越すものにさらに6割勝ち越すものが出来、そのバージョンにさらに…と、どんどん自己対戦の勝率の高いものが出来上がります。

しかしながら、それは序盤が互いに弱く、互角で終盤に突入するという前提があっての話なので、他ソフト対決では(特に強いソフト相手には)全く効果を発揮しません。通常探索の量を減らしているので序中盤で取り返しのつかない形勢にさせやすく、ワンサイドゲームになりやすくなり、強いソフト相手の勝率はむしろ下がります。

つまり、自己対戦では圧倒的に強いのに、他者対戦では圧倒的に弱く、Rはむしろ下がるという現象が起きます。

私の勝手な想像ですがGPS将棋も同じ問題にハマっているのではないかと思います。

GPS将棋にここ2年ぐらいの間に追加されている特徴因子は終盤向けの特徴因子ではないかと思います。こういうのを追加すればするほど自己対戦では大きく勝ち越します。それは序盤が互角ぐらいで進行するという前提があるからです。

ところが対Bonanza戦なんかですと、序盤で大きく差をつけられるようになり、むしろ勝率は悪くなります。ここ2年ぐらいでGPS将棋がBonanzaに大きく引き離されているように見えるのはこのへんに原因があるのではないかと私は思います。

つまり何が言いたいかと言うと、終盤の特徴因子を追加したときには自己対戦の勝率を見るのはかなり危険な行為だと言うことです。

終盤向けの特徴因子は麻薬にも似ています。それは何も強くなっていないのに自己対戦では圧倒的に勝ち越すからです。終盤向けの特徴因子を増やすことに決して夢中になってはいけません。改善すべき点はそこではないのです。自戒をこめて。

自己対戦の勝率だけ考えればいいのはBonanzaだけ!!

自己対戦の勝率のみを考えてはならないとさきほど書いたばかりですが、Bonanzaだけは事情が全く異なります。

現在、floodgate、そしてコンピューター将棋選手権などでは上位にはBonanza系のソフトがたくさん位置しています。

Bonanza系が上位を独占しているとしたら、最強の座が欲しければ対Bonanzaの勝率のみを上げれば良いのです。仮にソフト的な棋力がGPS将棋と同じぐらいしかなくとも、対Bonanzaで勝率が上がるようにチューンすれば(要するに通常探索と詰み探索の配分をうまくすれば)、最強になります。(ここで言う最強とは、floodgateで一番高いRがつくだとか、選手権で優勝できるだとか、そういう意味です。)

実際のところ、そうやって無理やり対Bonanzaの勝率だけを上げただけのソフトというのは、棋力的にはGPS将棋と同じぐらいかも知れません。おそらく対人ではGPS将棋と同じぐらいのRにしかならないでしょう。

つまり全然強くないけど、コンピューター将棋のなかでは最強という、狐につままれたような現象が起きます。

しかも悪いことに、もはや、コンピューター将棋が将棋倶楽部24で最強(ボンクラーズ)である現在、GPS将棋もボンクラーズもどちらも対人ではR3200ぐらいいくでしょうから、対人の棋力が弱いことはあまり弱点には映りません。

結局のところ、いまのところ最強のコンピューター将棋を作ると言うのは、対Bonanzaの勝率が高いソフトを作るということに帰着されます。学術肌の方々は、「いいや、俺は本当に棋力の高い、強いコンピューター将棋ソフトを作るんだ!」とおっしゃられるかも知れませんし、私もそういう研究態度のほうが好感が持てるのですが、来年の選手権で優勝したければ、対Bonanzaの勝率をひたすら上げることです。これに尽きます。


ちなみにくどいようですが、私は来年の選手権に出場する予定はいまのところ全く無く、考えてもいません。選手権に出るとしたらこうなんだろうなぁと思ってあれやこれや想像して楽しんでいるだけです。皆様におかれましては今後ともひよこ将棋をよろしくお願いいたします。

ひよこカルロ将棋neo v1.69公開しました。

ひよこカルロ将棋neo v1.69を公開しました。
前のバージョンよりはR50ぐらい上がっている気がします。

終盤を重点的に強化したので鬼のような手がときどき出てきます。
もはやひよこマジックと言えるかも知れません。

その代わり序盤は何も変わっていない(むしろ弱くなっている)ので、びっくりするほど弱い手が出てきます。そのへんのギャップをお楽しみください。

floodgateにはhiyoko-carlo-neo-169_PhenomIIX6という名前で参戦しておきます。

かねてからの目標であるgps_normal(R2150)と互角ぐらいになっていると良いですが…序盤で押し切られるのでそう簡単には勝たせてもらえないですよね…。

しかしまあ、探索を改良していて、ようやく探索の意味が一通り理解できてきたので(←お、、遅いよ…)、ひよこカルロ将棋neoは、あとR100か150ぐらいまだ強くできると思います。つまりR2200ぐらいまでは行けそうな気がします。

駒得のみの評価関数+αでも結構頑張れるんだなぁと現代のコンピューターの性能の凄さをひしひしと実感している次第です。