枝狩りの規定精度を変更
予測誤差データの修正に伴い、探索枝狩りの規定精度の変更も行った。基本的には、現行データと同じくらいの処理時間で着手を行えるように調整したのだが、ハイブリッド評価モードを導入した事もあるので、気持ち、精度は高めにした。なので、評価速度は少し遅くなる。
« 2010年9月 | トップページ | 2010年11月 »
予測誤差データの修正に伴い、探索枝狩りの規定精度の変更も行った。基本的には、現行データと同じくらいの処理時間で着手を行えるように調整したのだが、ハイブリッド評価モードを導入した事もあるので、気持ち、精度は高めにした。なので、評価速度は少し遅くなる。
今日はハイブリッド評価モードを使用した状態でWZebraにある5種類のBook乱数設定の全てで先手/後手を選択して10局ずつ計100対局させてみたのだが、負けたのは2回だけだった。1回は終盤での、もう一つは序盤での評価値の誤差による悪手打ちだった。
MasterReversiのVer1.4.0のリリース版候補については、現在、セルフ対局等でのBookの修正と評価データの調整を行っている。評価データにはパターン評価用の重み係数以外に枝狩り用の予測誤差を決定するデータが入っている。今はこのデータを変更してみている。
MasterReversi Ver1.4.0のリリース版では、β1版に対して、評価データとBookを微修正し、ハイブリッド評価モードを追加する。そのために、現在はハイブリッド評価モードを使いつつWZebraとのエンジン対局を行ったりしているのだが、対局は手に汗握る展開になっている。
評価データの微修正を行ったのだが、序盤の悪手については、少しは減ったような気もしないではないのだが、そうでもない気もする。微修正後も、7手目だとか9手目だとか11手目で、結構悪手を打つ。序盤については学習データの信頼度が低いので、諦めた方が良さそうだ。
今回のMasterReversiのバージョンアップ開発では、MasterReversiをブログで扱うのが初めてだったため、MasterReversiの立ち位置についても書いてきた。それから行くと、Bookや評価データを変更するのは変なのだが、今回は、評価データも微修正するかもしれない。
ハイブリッド評価モードにより、評価関数がBook値を吟味した上で着手を行わせる事が出来るようになり、Bookにある明らかな誤りによる悪手打ちは減ったのだが、逆に、評価値の誤差による悪手打ちが出てきた。なので、今はBookに評価値の誤りを正す進行を追加中だ。
今日はハイブリッド評価モードで使用するBook値にオフセットを付けたり、Loss/Draw/Win値を指定できるオプションを追加した。これらのオプションを指定する事で、Bookに登録されていない着手候補への着手を促したり、特定評価値の範囲内でのランダム着手が行える。
今日はハイブリッド評価モードを使って少し乱数を付加したBookを使用したWZebraとの対局を行ってみたのだが、100対局で1敗しかしてくれなかった。しかも、これは、序盤でBook値-2の候補に着手した結果だった。なので、もうWZebraとの対局は意味が無いかもしれない。
ハイブリッド評価モードの実装を終えたので、鬼門だったBookに乱数を入れたWZebraとのエンジン対局をやったりしているのだが、MasterReversiはあまり負けない。これは一部の人にとっては良いことかもしれないのだが、別の人達にとっては悪い事かもしれない。
現在は、MasterReversi Ver1.4.0に関してはβ1版をアップしてあるのだが、リリース版ではハイブリッド評価モードを追加する事にした。これを使うと、序盤/中盤の評価速度が高速化され、評価精度もアップし、対局を学習させることで精度も向上していく、と、誤解してもらえる。
MasterReversi Ver1.4.0β1版をホームページにアップした。ブログに書いてきたものに加え、さらに何個かの不具合が修正されている。ほぼ問題は無い筈なので、RC版にしようか、とも思ったのだが、リリース版では、Bookと初期設定を変えるかもしれないのでβ1版にした。
今日、MasterReversiのレジストユーザーの一人に、今後はメールをくれても回答はしないと返信した。この人からは毎日のようにメールが来ていて、既にメール数は50通くらいになっていた。今日までは、それなりに、返信していたのだが、もう疲れた。なので、素性を明かしておくので、作者にメールしたい人は、その素性の人間に出せるメールだけ出して欲しい。
MasterReversi Ver1.4.0β版で見つかっている不具合の修正は、ほぼ完了した。と、いっても、例によって修正できているのは64Bit版のみなので、32Bit版にも修正を適用しなければならない。もっとも、修正量は少ないので、明日には32Bit版も修正できている筈だ。
MasterReversi Ver1.4.0β版の不具合修正については、今日も進展なしだ。正確には、少し進展はあったのだが、このブログに書いてきた不具合については、今日も修正していない。今日はβ版に対する不具合報告への対応だとか、強化版Bookの修正だとかをしていた。
MasterReversi Ver1.4.0β版の詳細評価の結果、何点かの不具合が見つかっているので、次はその修正を行わなければならないのだが、今日はEdaxとの完全読みの速度比較だとか、強化版Bookの修正状況だとかを見ていたので進展は無しだ。
昨日に引き続き、今日もMasterReversi Ver1.4.0β版の使い込みを継続し、殆ど使わない機能についても、大体は動かせた。その結果、さらに数個の不具合が見つかったのだが、主要機能については大丈夫のようだ。結構、アグレッシブな使い方もしてみたのだが。
現在は、MasterReversi Ver1.4.0β版の使い込みを行っている。既に、あまり使わない機能には何点かの不具合を見つけているのだが、良く使う機能については、今の所、不具合は見つかっていない。修正はもう少し使い込んで不具合が出尽くした所で行うつもりだ。
MasterReversi Ver1.4.0β版の詳細評価を開始した。とりあえず、Professional版で局面評価を行わせた時の盤面表示ステータスは少し変なのだが、これはβ版では変更をサボっていただけなのでリリース版では修正する。それ以外には、今の所、問題は見つかっていない。
「95%勝つらしい」という記事で書いていた、将棋の女流王将とコンピュータとの対局は、コンピュータ側に軍配が上がったようだ。将棋を真面目にやっている人には、少しショッキングな出来事かもしれないのだが、作者は将棋をしない人なので、当然かな、という印象だ。
MasterReversi Ver1.4.0の変更作業は、ほぼ終了した。詳細評価を別にすれば、後は、32Bit版の仮想記憶方式BOOK用の隠しコマンドを追加し、評価ルーチンの序盤/中盤性能を調整するだけだ。なので、開発中バージョンのアップはヤメにして、明日β版をアップする。
昨日書いた変更は適用でき、使い勝手は上がったのだが、さらに、大規模なデータベースを読み込んでいる場合に、着手比率と勝率の計算に時間がかかっているのが気になった。なので、その計算ルーチンもマルチスレッド化しておくことにした。
今回のMasterReversi Ver1.4.0のバージョンアップ開発では、基本的には、機能変更は行わないのだが、気になっている点が3つほどあるので、それらについては変更しておく。何れも、大した変更ではないので、現行バージョンと操作体系が変わる、ということはない。
今日はBookの編集関連ルーチンのマルチスレッド化を行った。その結果、Core2Quadの開発マシンでは、Bookへの対局登録やデータベース等からのBook生成速度は2倍強高速になった。比較対象が存在しないので、所謂、当社比2倍、ということでしかないのだが。
今日は、64Bit版のBookルーチンを最適化し、従来版と同等以上の性能を出せるようにしたのだが、MasterReversiでは描画ルーチンまでマルチスレッド化していたにもかかわらず、Bookはシングルスレッドだった。なので、ついでにマルチスレッド化もしておくことにした。
今回のMasterReversiのバージョンアップ開発では64Bit版を作成し、評価演算では32Bit版よりも64Bit版を少し高速に出来た。しかし、Book処理に関しては、64Bit版は32Bit版よりも少し遅い。従来版に対する高速化要因はあるのだが、32Bit版に対するものは無いからだ。
今日は32Bit版のコードに仮想記憶方式のBook処理を追加して、Standard版では、その処理が使われるようにした。現行のStandard版のBook検索は遅いので、決めうちの設定でも性能は向上するのだが、設定変更は出来た方が便利だ。しかし、設定項目は増やしたくない。
MasterReversi Ver1.4.0の開発は仕上げフェーズに入ったのたが、単純作業で済むとはいえ、作業量的には、まだかなりのコード変更が必要だ。なので、今日はチャゲ&飛鳥のベスト版を聴きながらの作業となった。何度も書いてきたように、作者は単純作業が苦手なのだ。
今回のMasterReversiのバージョンアップ開発は、元々は64Bit版を開発することが目的だったのだが、他にも色々とやったため、すでに開発期間が2ヶ月を超えてしまった。作者も結構疲れてきたため、Ver1.4.0の開発については、今週で終わらせることにした。
Bookの処理ルーチンを少し変え、処理速度を高速化してみたのだが、仮想記憶を使った場合にはそれなりの効果があるものの、使わない場合には、あまり良い感じではない。これは仮想記憶を使う場合と使わない場合でボトルネックとなる処理が変わるからだ。
今日も仮想記憶で色々と試したのだが、やはり遅い。加えて、今回のバージョンアップ開発では、より大規模なBookも利用可能にするのだが、そのためにも、処理ルーチンは高速化しておきたいところだ。なので、今回の変更ではBookルーチンも少し高速化しておくことにした。