ym将棋

2012-05-04

第22回世界コンピュータ将棋選手権 1次予選 5回戦

18:36

5回戦の相手は「帰ってきたあうあう将棋」。

続きを読む

第22回世界コンピュータ将棋選手権 1次予選 3回戦

18:22

3回戦の相手は「まったりゆうちゃん」。

続きを読む

第22回世界コンピュータ将棋選手権 1次予選 1回戦

18:16

5年連続の選手権となりましたが、一昨年・昨年に引き続き、オープン戦にもfloodgateにも参戦しないままの本番。

ただ、自宅PCではかなりの数の連続対局をこなしていて、だいぶバグをつぶしたので、

それなりの戦いはできるだろうと見込んでました。

以下、自戦記です。


1回戦の相手は「GA将!!!!!」。

続きを読む

gamideregamidere 2012/05/05 00:47 お疲れさまでした。
Treestrapの話ができて非常に有意義でした。
来年は見るに耐える将棋が指せるようがんばります。
来年もよろしくお願いします。

GasyouGasyou 2012/05/05 23:35 お疲れ様でした&対局ありがとうございます。
>▲35歩△同歩の後、▲38飛と回られると、後手は35の歩が浮いています。
ログを確認したのですが、38飛は読み筋に無く、当全桂馬を取れるのも読んでいませんでした。
なんで35歩を指したのかは、永遠の謎になりそうです。
来年も対局出来るのを楽しみにしています。

hyperion_ymhyperion_ym 2012/05/06 23:49 >gamidereさん
コメント返しします

>Gasyouさん
お疲れ様でした。
2次予選進出おめでとうございます(今更ですが…)
来年もよろしくお願いします。

▲38飛読んでなかったんですか?不思議ですね。

2012-05-03

1次予選を終えて

22:58

ym将棋は2勝5敗で、5回目の出場で一番悪い戦績に終わりました。

戦前の感触では、予選通過を狙える4勝3敗くらいはいくのでは、と勝手に思っていたのですが、とんでもなかったです。


実際に戦ってみて、周囲のレベルが自分の予想以上に上がっているのを実感しました。

来年も出るつもりですが、よほど強くならないと、今年と同じだけの成績を残すことすら難しい気がします。


来年に向けてやりたいことはいろいろありますが、まずは例年通り、自戦記を書くことから始めたいと思います。

山田 剛@CSA山田 剛@CSA 2012/05/03 23:13 今年もお疲れさまでした。
今年は、予選通過8チームのうち5チームが初出場で、モティベーションの高さと厳しさを感じます。

jinsei_okuribunt_shippaijinsei_okuribunt_shippai 2012/05/04 00:29 お疲れ様でした、ブログでははじめましてですね。
自分も甘かったですね、修正するだけで強くなるわけなかったです・・・。

ということで、来年も出ようかと思います、来年もよろしくお願いします!

hyperion_ymhyperion_ym 2012/05/04 18:00 >CSA山田さん
ありがとうございました。
確かに、初出場組のレベルの高さには驚きました。優秀な開発者の方が続々参入されているということなんでしょうか。

>人生送りバント失敗さん
コメント返しします!

2012-04-11

選手権に向けて

23:52

久しぶりの更新だと思ったら、昨年の選手権の自戦記以来でした…


今年の選手権の参加申し込みをした後、仕事の都合でキャンセルの危機もあったのですが、最終的には何とかなって、無事参加できる見込みです。


プログラムの方は、昨年からの変更点は、主にバグ修正で、他には小さな機能追加と変更をいくつか入れています。

ここで少し機能追加の話をしますと、

通常探索の方は、探索延長や枝刈りの細かいところをいじった程度です。

一時、Aspiration Searchの導入を試みて、いろいろやってみたものの、ym将棋の実装とは相性がよくないようでした。

結局原因はわからなかったのですが、探索ノード数がかえって増加してしまい、逆効果だということで今は外しています。

モンテカルロ探索(UCT)の方は、比較的大きな変更を入れています。

1つ目は、playoutの打ち切りを評価関数で行うようにしたこと。

(詳細はアピール文書で)

論文にあるように、この仕組みは評価関数が「当てになる」ことが前提なのですが、今のym将棋の評価関数ではちょっと無理があるようで、

確かに高速でplayoutが終わることは終わるものの、終局しないよりまし、という程度の効果のようです。

もちろんこれは、ym将棋に限った話なので、ちゃんとした評価関数を使えばもっと効果が出るのだと思います。

本来は、ランダム部分の指し手選択をもっと改善して、終局までplayoutを続けるべきなのだと思います。

これは来年の課題ということで。

2つ目は、playout時に通常探索のハッシュテーブルの最善手を参照するようにしたことです。

これは、アピール文書を提出してから入れた機能なので、そちらには書いてないのですが、ym将棋特有だと思います。

内部ノード(UCBで指し手を決めるノード)では、progressive wideningを利用している場合、一度も選択されたことのない指し手は、何らかの基準で「仮の」UCB値を決め、それによって指し手を決めます。

「仮の」UCB値を一定にせず、指し手ごとに差をつけることで、有望でなさそうな手は選択しない、緩やかな*1枝刈りを実現しています。

このときの「何らかの基準」には、王手、駒得をする手といった、指し手の性質が反映されているわけですが、その中に、「通常探索のハッシュの最善手」という条件を加えています。

また、一度でも選択された指し手は、勝率と選択回数からUCBを算出しますが、このときにも、ハッシュの最善手はUCB値にボーナスを与え、選択されやすいようにしています。*2

指し手の仮評価だけでは、駒損する手などはどうしても選びにくいのですが、読みを入れた結果、後でよくなると分かれば、playoutでも選んであげようというものです。


実は、この1年で一番力を入れたのは、何といってもバグ修正です。

昨年、一昨年と、選手権前に実戦練習ができなかったので、本番でバグのために痛い目にあいました。

今年はその轍を踏まぬよう、家のPCで持ち時間15分の対局を繰り返して、地道にバグ潰しを行っています。

それと並行して、評価関数の学習を進めています。

アピール文書にも書いたとおり、TreeStrapを使っているのですが、どうやら、横着して駒割を固定にしたのは良くなかったようです。

要するに、駒得重視の評価関数になってしまうようなのです。

強いプログラムと対戦すると、駒得しながら陣形をバラバラにされて、機を見て一気に潰されるというパターンが目に付きます。

まあ、たまには、駒得したまま逃げ切るというパターンもありますが。

本来は、駒割も初期値から学習を始めるべきなので、来年向けの課題として。

ということで、参加者の皆さま、大会関係者の皆さま、よろしくお願いいたします。

*1:playoutを無限回実行すれば、いずれは選択される

*2:ym将棋の実装では、選択回数にマイナスの補正を与えている。説明は割愛するが、選択回数が小さいとUCB値は大きくなる

2011-05-04

第21回世界コンピュータ将棋選手権 1次予選 1回戦

10:25

4年連続の選手権となりましたが、昨年に引き続きオープン戦にもfloodgateにも参戦しないままの本番。

実戦での検証があまりできていない点が最大の不安要素です。

以下、自戦記です。


1回戦の相手は「無明2」。

続きを読む

2010-05-16

どうぶつしょうぎ

12:59

コンピュータ対戦可能などうぶつしょうぎ

http://train.gomi.info/shogi.html

一度対戦したらあっさり負けました。。

やさしい「どうぶつしょうぎ」の作り方*1というページもあって、なかなか凝っています。

あと、この方鉄道ファンのようですね。

*1:本物の盤駒を作るのではなく、コンピュータどうぶつしょうぎの作り方

tiharatihara 2010/05/16 19:34 本家がiPhoneアプリを作っているときに、無料のどうぶつしょうぎを公開してしまって大丈夫なのか、ちょっと気になりますね。
http://doubutsushogi.jp/
> 現在、iPhone、iPod touch、iPad向けのアプリケーションを開発中です。もう少々お待ち下さい。

hyperion_ymhyperion_ym 2010/05/17 23:19 iPhone対応予定だったのですね。。それは知らなかったです。
このブログを見てくださるのは、コンピュータ将棋関係の方がほとんどだと思うので、mixiの「どうぶつしょうぎ」コミュにも投稿してみました。