« え? | トップページ | usa_testが何かバグってる感じです on floodgate »

2008年3月30日 (日)

UCTはまだ効率をあげられるんじゃないのだろうか?

裸玉の詰め将棋を、証明数で解くのが非常に困難であることは知られているかと思いますが、UCTでこれを解決出来ないかなーなんていうことを結構前から考えてました。

ただ、効率のいい実装は、『詰み・不詰みが判明していないノードでは、読む優先順位として、証明数の代わりに詰む確率を用いる』だけで、中身は普通のMinMax探索に近いものになりそうな気がしています。

囲碁は、何と言うか、「少しの差を徐々に拡げて行って、大きな見落としがない限りはそのままの差でゴールできるゲーム」で、詰め将棋などはまさにその逆で、見落としが許されないゲーム、なのですよね。で、将棋は、詰め将棋に近い性格を持っている面がある気がします。(少々のリードを保っていても、最後にミスをすると負け)

で、こういうゲームをUCTで解析するのは、無駄な部分が出るんじゃないかな、と。

こういうゲームでは、あるノードで正しい応手を指されたら負け、な局面は、それ以上シミュレートの対象にする必要のなくなったノード…勝率0が確定したノードになるのではないかと。今の私のUCTの実装だと、以前にシミュレートした結果が残っている(例えば、その局面では、99勝『1敗』、勝率0.99だったかも知れない。)ので、いきなり勝率0にはならないんですよね。何回も、その『実は決定的な1敗』のノードをシミュレートしてみて、始めて勝率が0に近付いていく。多分、これって、無駄なんです。

ただし、『相手が正しい手を選べない可能性がある』ことを考慮すると、また話が変わってきます(苦笑)。勝負手として、『正しく指されたら負けることが分かっているけれど、その正しい応手を見つけられる可能性は低い』なんてことまで判断できると、対人ではまさに『理想的』です。

…相手がαβベースで全幅探索を行っているコンピュータだと、きっちり負けそうですけど(苦笑)。

そんなわけで、UCTの改良を少し思索中。…まだ試作に至る段階ではないです。

勝率の上位への繰上げをどう考えるか、なんですよねぇ。

今は、一回のシミュレーションの結果を最上位にまで一回の結果として伝えているだけ、なので、ここで大きな改造が出来そうな気がしています。

ただ、現実的には、『囲碁では』1回のシミュレーションの精度をあげるだけで、十分な成果があげられそうな気も『ものすごーく』しています。

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/148072/40685008

この記事へのトラックバック一覧です: UCTはまだ効率をあげられるんじゃないのだろうか?:

コメント

>少しの差を徐々に拡げて行って、大きな見落としがない限りはそのままの差でゴールできるゲーム

将棋も序盤だけ見たら同じ特性ですかね?


裸王詰め将棋 確かに証明数では扱いにくそうですね。本来、「長い詰めより短い必至」な局面ですか?

裸王詰め将棋が難解ってのは研究例もあるんですか?

「裸王 詰将棋 証明数」でググったら
検索結果0件なんですよ(^^;
進歩本もCOM創作は載ってますが……


投稿 | 2008年3月30日 (日) 15時19分

進歩本では、創作っていうよりも、ある位置に裸玉を置いて、この持ち駒なら詰む、とかをやってますよね。

でも、解かせるために、最初の一手~三手位を手で進めて見て、とか、そういう記述もあった通りで、実際、証明数で解くと証明数がやたらにバカでかくなってなかなか解けなくなります(苦笑)。

反証明数も入れたらこの辺りがどれ位改善されたのか、というのは、実は私も実験していない領域なんですが(少なくとも何も考えないで反証明数を入れたら、GHI問題にぶちあたってやはり解けないっぽいことだけは確認した記憶がありますけれど)…この辺りの未解決問題に、うまく応用していかないとな、という思いはある、というのが現況、ですかね。

投稿 うさぴょんの育ての親 | 2008年3月30日 (日) 20時33分

もう一つ。
将棋では、序盤だけ見れば同じ特性を持っていそうなんですが、序盤で端歩を突いている・いない『だけ』のことで、終盤で結論が変わってしまうと言うこれまた困った特性も持っているんで、序盤でリードしているってこと自体が判定が難しいなーと思います。

私程度の実力の将棋のプレイヤーでも、人間的には、この形は勝ちにくいとか思うものなんですが、数値化しろと言われると困っちゃうんですよねぇ。

GPSnormalとusapyon-on-noteの対局とか見ていても、駒がぶつかる前に(評価関数的には差が付いてなくても)負けだなーとか思ってる局面が結構あります(苦笑)。逆に、評価関数的にはマイナスでも、私程度のプレイヤーが見てて、あ、うさぴょんが勝ったな、とか思ってる局面が選手権では出てきて、実際にそのまま勝ってくれたりするのもまた面白いところ、ですかね。

単に王手のかかりにくさ、だけではなくて、相手が多分取って来る駒だと、まず攻めにならないだろう、とか、私が見てても分かるのに、うさぴょんにそれを理解させるのは超難しい(w。

投稿 うさぴょんの育ての親 | 2008年3月30日 (日) 20時45分

必至問題をUCTで解かしてみるのも良さそうですね。

GPSnormalとの対戦の評価グラフを見ていると、
こっちが全然形勢判断出来てない時から、
評価グラフががんがん上がってるので、
中盤の形勢判断の精度が全然違うだなーと私も思います(^^;

なんにせよ、へたに知識を入れると関係ない局面で暴走するし、なかなか難しいですね。

投稿 小宮 | 2008年3月31日 (月) 00時13分

うーん、私は、評価関数の違い以上に、読みの深さの違いを感じますね。>GPSnormalとの対戦

中盤で100倍位時間をかければ、GPSnormalと同じように(有利だとか不利だとかを)評価できたりするので…。

そう考えると、今年のテーマは、αβ法の強化だなぁ、やっぱり。以前導入したらかえって遅くなってしまったNullMoveの導入とか、真面目に考えてみよう。

投稿 うさぴょんの育ての親 | 2008年4月 1日 (火) 04時50分

やっぱり読みの深さの差なんでしょうね。
Bonanzaは、同じ時間で2~3手ぐらい深く読むので、根本的に差がありそうです。
それを評価関数を改良しても追いつけない。

やはり1手でも深く読むためnpsを上げるしかないですね。
CPUを速くしたり、並列化したりも一つの方法ですが…

投稿 小宮 | 2008年4月 1日 (火) 08時12分

コメントを書く