来年は…

うさぴょんの開発が行き詰ってきているので、時間に余裕があったら、れさぴょんもベースにしないで書き直して…Infinity Redという名前で参加しようかなぁ…。

元々、別のネタのために温めておいた名前なんですが。

もう、時効だろうw

| | コメント (3) | トラックバック (0)

もう少しメモ

gpsでは、実現確率を二つ使っている。

一つは、枝刈用の実現確率

もう一つは、本来の意味での実現確率=その手を指した時にdepthに足す値(あまり正確な言い方じゃないけど、自分用のメモなので勘弁)

静止探索は、YSSの残り深さxで読む手、を参考に作成&KFEndを参考に、脅威を評価。

| | コメント (1) | トラックバック (0)

GPS将棋の発表から得たヒントなど

ほとんど個人的なメモです。

…Bonanza Methodを一度は実装した経験がないと意味不明だと思う。

  • Bonanza Methodで『進行度』の計算の仕方を調整
  • 『進行度』を学習する時は、他の特徴量の学習はOFF
  • 序盤/中盤/終盤に評価関数を分けている。ここで、進行度を0~1とすると、例えばある局面の評価値は、
    • 0<=進行度<0.5 の場合 序盤の評価関数×(0.5-進行度)+中盤の評価関数×進行度
    • 0.5<=進行度の場合 中盤の評価関数×(1.0-進行度)+終盤の評価関数×進行度
    のように求めている。
  • Bonanza Methodを行うにあたって、特徴の変更中にPVが変わらないという(かなり強い)仮定を置いている。
    全てのPVを求めて保存→各局面に対してBonanza Method実行を50step程度(これで大体値が収束)
    再びPVを求めて保存→Bonanza Method実行…の繰り返し。
    毎回PVを求める方法と比べるとかなり高速化が期待できそう。
  • 静的探索の中では、stand-patする際に脅威を評価しているが、学習用では普通にstand-patしている。やはり脅威の評価をするとうまくPVが求められなかったりとかややこしい問題に突き当たったそう。(うさぴょんもそれではまった)
  • Bonanza Methodの実行中、慣性項(のようなもの)を持たせて、同じ方向に特徴が動く場合には、大きく動かす。正負が逆転する場合には、直前の学習が過学習だったのではないかと看做して、前回のイテレーションでの増分値の半分だけ戻すなどの工夫を行っている。他にも怪しいヒューリスティックスが入っている(ある条件化で、全ての特徴を全部1/8にするとか)ので、詳しい条件は、gpsshogiの学習部分のソースを読むべし。
  • featureを考えるのは、将棋四段位の人の仕事。ただし、最初は考えたfeatureを入れても強くならなかったそうで、こういうfeatureが足りないからこういう手が指せないとかここで受けに回れないとか、そう言うのはプログラミング的な知識と将棋の知識と両方がないと非常に難しそう。
  • 棚瀬さんの意見では、将棋の知識は初段位あればいいんじゃないかとも言っていたが。
    • 余談として、保木さん=将棋倶楽部24でR500位だと、へぼい道場だと初段相当だとか(^^;
    • R250のオレはどこへ行けばいいのやらwww
  • 特徴を追加・学習した場合、中盤の10局面を用意し、先後を入れ替えて各々一手30秒で直前のバージョンとの自己対戦でチェック/stableなバージョン(手で評価値を調整したもの)との対戦でチェックし、両方に対して13勝7敗(これだと本当は有意性が足りないみたいだけど)以上しない場合、その特徴はReject
  • さらに、featureを追加した四段程度の棋力の人が棋譜を見て、変な指し手がないかどうかチェック。あからさまに変な指し手がある場合にはやはりReject or 再学習
  • 上記のようにしないと、超攻撃性が高い個体が攻撃性の高い個体に勝つというような現象が起きるそう。
  • そして、超攻撃性の高い個体は、うさぴょんみたいなのにもぽろっと負けたり、と。
  • 実際、自己対戦は危ないよなぁ…<個人的経験から。

用語とかは全く正確じゃありませんw 特に、『Bonanza Methodの実行中』と言うのは、本来の意味だと『PVを求める部分』と『PVに対して特徴ベクトルの調整を行う』のは一つの処理のはずなので。上記では、『PVに対して特徴ベクトルの調整を行う』部分のみを指して『Bonanza Methodの実行中』とか言ってたりします。

進行度の調整の仕方に関しては、序盤・中盤・終盤の評価関数がある程度ちゃんとしてからでないと進行度が計算出来なさそう。

| | コメント (0) | トラックバック (0)

選手権、行って来ました。

第19回コンピュータ将棋選手権、参加してきました。

二次予選からの参加で、4勝5敗。二次予選24チーム中18位。

…昨年と同じ成績です。

午前中は、駒組関連のプログラムがバグっているのに気が付きませんでした _no

「みさき」とやってる時には全然気が付かず、「臥龍」とやっている時にも気が付かず…SPEARとやってる時に、すげー変な手を指し初めて気が付きました… _no

あまりの変さ加減に、SPEARの開発者のグリンベルゲンさんには

『ここからSPEARが負けたら、もうコンピュータ将棋の開発は辞めま~すw』
とか言われる始末…(苦笑)。

ちなみに、上を言われたのは、ここの棋譜の23手目の局面。 17手目が既に変で、二人で笑い出したのですが、致命的に変だったのは23手目です。

その後、ようやっとバグも治ったかと思って迎えたのが、最終のTACOS戦。

…まだこれから難しい捻り合いが延々と続くんだろうなぁという局面で、TACOSがバグで停止してしまい、反則勝ち。

駒組みが変かどうかは、TACOS戦は定跡手順で大分進んでしまったので不明…。

まぁ色々課題があったり、色々知見があったりしたのですが、徹夜で寝ぼけてるので今日はこの辺で…。

| | コメント (2) | トラックバック (2)

学習のバグは取れそうだけど

学習結果を収束させるのに、回しっぱなしでも120時間位かかりそう(--;

というわけで、うさぴょん2は諦めましたw

うさぴょんで出るなら、後は細かい調整をするだけなんで、明日は見学に行くかなぁ。

| | コメント (2) | トラックバック (0)

うさぴょん2 半ば ギブアップ

…『うさぴょん2』選手権までに形になりそうにないですw

『静止探索の中でややこしいことをしているのが仇になって、試しに学習をしていたものの、失敗した』のは3月24日にも書いた通りですが、その静止探索を捨てるのも忍びないまま、ついついそのまま過ごしてしまいました。(仕事の方が忙しかったのもありますが。)

で、気合を入れ直して、学習の失敗の原因を探していたら、PVノードの末端で、脅威を考慮している部分の評価値の更新の処理がまずくて、これがどうも学習が収束しなかった原因の模様。このバグ、原因としては分かったけれど、うまく学習の方がコーディング出来ない(爆)。

今から(って、後2日しかないよ?)普通のstand-pat型の静止探索にするかなぁ(--;

他の代案としては、とりあえず駒の位置評価だけでも簡単な方法で求めるとか。(とにかく、定跡を外れた後の駒組みをまともにしてくれないのが一番問題なので。)

今は、対振り飛車に対して、51に玉がいるままに、53銀・52金・41金・42銀に組むという有様ですw いや、有様というよりも無様と言うべき?

| | コメント (1) | トラックバック (0)

結局バグが気になってしまった…

この前に書いた、変な突き捨てのバグ、結局原因を突き止めて修正してしまいました。

結論から書くと、スレッドをコントロールする部分にかなり恥ずかしいバグが残っていまして…探索のスレッド毎に、別のスレッドでβカットが発生した/時間切れなどで、探索を中断されたかどうかのフラグを持っているのですが、昔使っていたフラグで今は使っていないフラグを参照している箇所が残ってました _no

というわけで、今までのプログラムでは、探索途中で時間が来た場合に最善手が変な手になっていた可能性があります。もしかすると、ほんの少しだけ挙動がまともになるかも知れないけれど、強さには影響しない…かなぁ…。探索の中断のされ方とか次第で、指し手への影響が変わるのと、デバッグモードでコンパイルした場合には、VC++が特定の数値で構造体の中を初期化するために、フラグが立ちっぱなしになり、影響がもろに出るけれど、リリースモードでコンパイルした場合には、フラグが立たない状態になって、読み筋に影響しないことになりそうな気がします。

しかし、この手のバグは、ちまちまと残っていそうな気がします(--;

| | コメント (0) | トラックバック (0)

明らかにバグってるw

先手私・後手うさぴょん

Usabug 後手のうさぴょんが、『何故か飛車先の歩を突き捨てた』ので、それを同歩と取ったところです。(ログを見る限り、どうみても読み筋が変。変な枝刈が効いてる気がします。)

この後、多少後手が暴れても、先手は8八に飛車を回ればほぼ必勝でしょう(--;

ちなみに、8八飛車でまずくなるのが見えてからは水平線効果でもっとむちゃくちゃな手を指し始めます。

…深くバグを追求しないで、うさぴょん2を書く方針で…(--;

| | コメント (0) | トラックバック (0)

やっと開梱したぜ!

選手権まで後1ヶ月を切りましたが、やっと昨年の選手権で使ったマシンを開梱しました。

で、ただ今、昨年の選手権バージョンに、ちょっとだけ手を入れて、usapyonとしてfloodgateで走らせてます。何か意外に成績がいいなぁと思ったら、「文殊」がうさぴょん相手に何回も時間切れ負けしてくれているようです…(--;

そのうち、『うさぴょん2』で参加できるようになり次第、usapyonを引っ込めますので…今、floodgateに参加してるのが最後の『うさぴょん』の活躍(?)となる予定です。

…まぐれでBonanzaかbingoに一回位勝てたらいいなぁ。最後の花道って感じで。

| | コメント (0) | トラックバック (0)

次はうさぴょん2の学習

とりあえず、全幅探索にするのかどうかはまだ置いておいて…。

現在、評価関数の自動調整に挑戦しています。

ニ駒の位置関係と、玉を含めた3駒の位置関係、玉の周りの利きの数をとりあえず評価関数の組み込みデータにしようとしています。なお、駒割は、現在のままで、学習しない方向です。

さて、今回、学習で問題になったのが、うさぴょんの静止探索。

元々Odd/Even Effectが大きいのは分かってたのですが…これは酷い(苦笑)。

しばらくまわしてみて、収束していく雰囲気がない(爆発)

というわけで、そんな基本的な部分から作り直さないといけないだろうなぁと思う今日この頃…。

ちなみに、学習する前の状態では、くそ重い手の評価を用いており、『手の評価関数』では、最善手よりも前に来てしまう手の平均は5~6前後でした。これから、どれ位減るんでしょうかね?

| | コメント (0) | トラックバック (0)

より以前の記事一覧