スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« モンテカルロ法のAIは弱い | トップページ | パターン評価の問題点 »

今までの経緯を書いてみた

今は、新しいリバーシプログラムの開発フェーズで、今週から真面目な作業に入ろうとしているのだが、作者的には何がしたいのか、というと、精度が高い評価関数の開発だ。ただし、まずは、MasterReversiが採用したパターン評価を使わないで何処までやれるかを試したい。

MasterReversiが採用したパターン評価は、一昨日の記事にあった「LOGISTELLO」が搭載していた評価方式と方式的には同じものだ。

これは偶然という訳ではなく、作者的には、MasterReversiの原型のリバーシソフトを作るにあたって、まず、前述のリンクにある論文を読み、そこに書かれていた評価方式をそのまま採用して評価関数を作ってみたからだ。

なので、MasterReversiの評価関数の精度というのは、方式的には、最初から、人間の世界チャンピオンを破ったLOGISTELLOと同程度はあった筈なのだが、LOGISTELLOが採用したパターン評価というのは、パラメータが山の様にあって、その値によって、評価値の精度は変わってくる。

そして、MasterReversiのパターン評価で使っているパラメータは、LOGISTELLOが採用していたモノとは異なるので、評価値の精度も、MasterReversiのソレとLOGISTELLOのソレは異なる筈だ。

何故、作者的には、同一の方式を採用したにも関わらず、同一のパラメータを使わなかったのか、というと、LOGISTELLOのパターン評価用のパラメータというのは、学習させて決定する事が前提になっていたからだ。

更に言えば、LOGISTELLOというのは、1997年に当時の人間の世界チャンピオンを破ったソフトになるのだが、その成果を受けて、その直後くらいに、研究開発は終了扱いになった。

なので、LOGISTELLOの評価関数のパラメータというのは、その当時以前のコンピュータ環境を使って学習させていたモノなので、作者がMasterReversiの前身のリバーシソフトの開発を始めた2003年時点では、既に、古めかしいモノとなっていた訳だ。

つまり、2003年時点のPC環境というのは、1997年当時のPC環境よりもCPUの処理速度も何倍も高速化されていたし、メモリ搭載量もHDD容量も大幅に増えていたので、作者的には、より大規模な学習データを使って学習が行えた訳だ。

なので、パラメータについては、LOGISTELLOのモノは使わず、より大規模なデータを使って自前で学習させたモノを使う事にした訳だ。

その結果、MasterReversiの前身のリバーシプログラムの評価精度はそれなりのモノになったので、2003年時点で、既に、巷のリバーシプログラムの多くに、普通に勝てる様になっていた。

しかし、この時点では、ビットボード等の高速化手法は採用していなかったので、ネットを検索していて見つけたWZebraの終盤解析の速さには驚かされた訳だ。

なので、既存のソフトよりも劣るモノは公開できない、という事で、作者的には、WZebraの終盤解析速度に追いつくまで、MasterReversiを公開できなくなった訳なのだが、WZebraの速さの要因は、基本的には、ビットボードとそれを使った高速な着手可能位置の検出だ。

で、その辺のトリックについては、WZebraの作者のホームページのここに記載があったので、2004年くらいには、作者的には、同様の手法を使ったビットボードによる高速な処理ルーチンも作れていた。

にも関わらず、MasterReversiの終盤解析速度はWZebraのそれに敵わなかった訳なのだが、その後、2005年くらいにZebraのソースコードが公開された。

で、作者的には、折角、自前で苦労してきたので、Zebraのソースコードは見たくなかったのだが、まあ、背に腹は代えられず、結局、そのソースコードを見る事になったのだが、結果的に、その当時のMasterReversiの処理コードと比べて、特にZebraの処理コードが優れている、という所は見つからなかった。

と、いう事で、作者的には、コードの改良は必要ない、と判断できたので、前述の評価データのパラメータを改良する事になった訳だ。

その結果、MasterReversiの終盤解析速度はZebraのソレ並に上げる事が出来たのだが、それだけでは追いついただけで、追い越せてはいなかったので、MasterReversiには並列演算を行わせる事にした訳だ。

しかし、当時は、まだ、デュアルコアCPUなんてモノが巷に出回っていなかったので、並列演算を行わせる為には複数のPCのCPUを使う必要があった。

なので、作者的には、MasterReversiにネットワーク処理ルーチンを追加し、MRWorker相当のプログラムも作成し、とりあえず、ネットワーク分散処理の形態で、並列演算を可能にした訳だ。

で、そこまで作りこんでいる内に、月日は流れ、巷にはデュアルコアCPU搭載PCが出始めたので、作者的には、やっとMasterReversiを公開する事が出来た訳なのだが、巷では、そんな作者の努力とは無関係に、MasterReversiの演算処理の速さは殆ど話題にならず、WZebraよりも強い、みたいな話ばかりが話題になってしまった訳だ。

つまり、作者的には、MasterReversiを速いプログラムにする努力はかなり行ったのだが、強いプログラムにするための努力は殆ど行ってこなかった訳なので、世間の評価は、作者的には、心外だった訳だ。

もっとも、MasterReversiが採用したパターン評価による評価関数というのは、Edaxなんかを含めた今時の強いプログラムの全てが採用している方式なので、それと同じ方式を採用しているMasterReversiが強いのは間違いではない筈だ。

更に、前述の様に、MasterReversi的には、終盤解析速度を上げる為に、特に終盤のパターン評価パラメータの精度を上げたので、読みを深くすれば、中盤の評価精度が高くなっているのも不思議ではない。

なので、強さ的にも、強くても不思議ではないのだが、作者的には、MasterReversiの評価関数を、その強さ、つまり、精度を重視して最適化してみた事はないので、今回、そういった事をやってみたいかなあ、と、思っている訳だ。

その為には、今までにやってこなかった事をやってみる必要があるので、とりあえず、パターン評価以外の評価関数を使って何が出来るのかを見てみたいと思っている訳だ。

« モンテカルロ法のAIは弱い | トップページ | パターン評価の問題点 »

トラックバック

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

この記事へのトラックバック一覧です: 今までの経緯を書いてみた:

« モンテカルロ法のAIは弱い | トップページ | パターン評価の問題点 »

2018年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google