スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 方針は大体決まった | トップページ | MasterReversiでテスト中 »

Potential Mobilityとか

今は、新しいリバーシプログラムの開発フェーズなのだが、これを開発しているのは、現行版MasterReversiの評価関数の弱点を克服できないかを模索する為でもある。弱点というのは、パターン評価の重み係数が変な場合、ヘンテコな評価値を出す事がある所だ。

数日前から書いてきている様に、作者的には、パターン評価による評価値があまり信用できない30手目くらいまでは、昔ながらの評価関数を使う格好にしようか、と、している。

昔ながらの評価関数というのは、どんなモノなのか、というと、自分と対局相手との石差、着手可能数差、角/辺の状態、なんかに重みづけして足し算するモノ、という事になる。

もっとも、ネットでリバーシの戦略を検索をしてみると、「開放度理論」というキーワードが出てくるのだが、リバーシのAIアルゴリズムを検索してみると、「Potential Mobility」というキーワードも出てくる。

で、細かい違いを無視すると、作者的には、この「開放度理論」と「Potential Mobility」とは、同じモノである様に見える。

何故なら、両者共、石の隣に空きマスがあると、少なくとも将来的には、敵がその空きマスに着手できる可能性がある事から、その石の手番にとっては不利になる、という考え方をしているからだ。

つまり、その結果として、両者共に、自分の石の隣に空きマスがあると不利、相手の石の隣にあると有利、という局面評価を行うのだが、「Potential Mobility」というキーワードは、1980年頃のリバーシ関連の論文にも出てくる程、由緒正しい評価項目になっている。

なので、リバーシ用AIとしても、この「Potential Mobility」または「開放度理論」というのは本質的に重要な評価ファクターになる訳なのだが、LOGISTELLOやMasterReversiの評価関数では、これらの評価は行っていない。

これは何故なのか、というと、これらの評価を行おうとすると処理に時間がかかるからなのだが、実際の所としては、これは見かけ上の話で、LOGISTELLOやMasterReversiが評価パターンに「斜め4~7」、「対角」、「水平A~C」、なんて、普通に鑑みると局面の良し悪しに影響なさそうなパターンを追加しているのは、これらの評価値に、着手可能数(Mobility)とPotential Mobilityの影響を反映させようとしているからだ。

つまり、着手可能数(Mobility)だとかPotential Mobilityの計算を普通に行うと時間がかかるので、これらについても、角や辺なんかのパターンと同様に、盤面上の石の並びからインデックスを得て、予め計算してある評価値をインデックスを引数として取りだせる様にしてある訳だ。

と、いう事なので、実際の所、LOGISTELLOやMasterReversiでも、着手可能数(Mobility)だとか開放度理論(Potential Mobility)を軽視している訳ではないのだが、これらのパターン値が正確にMobilityやPotential Mobilityを反映する値になっているのか、というと、そんな事もない。

なので、LOGISTELLOやMasterReversiが使っているのは、これらの概算値、という事になるのだが、昔ながらの評価関数でも、これらの値はそのまま使っている訳ではなく、その他の評価項目と合わせて重みづけした上で、その線形和を評価値としている訳だ。

つまり、評価関数では、MobilityやPotential Mobilityの影響を無視する事は出来ないのだが、その正確な値を使う必要もないので、LOGISTELLOやMasterReversiでは、上記のパターンを採用し、隅や辺なんかの、より局面の良し悪しに直接影響する重要なパターンと合わせて、パターン値として計算できる様にしてある訳だ。

と、いう事なので、実際の所、LOGISTELLOのパターン評価というのは、より古い、昔ながらの評価関数と比べて、それほど、斬新、という訳でもない訳だ。

何故なら、前述のその他パターンというのは、本来の意味合いとしては、昔ながらの評価関数でも評価項目とされていた「Mobility」と「Potential Mobility」と同様のモノでしかないし、主要パターンについても、昔ながらの評価関数が重要視していた角と辺の影響度を反映させているに過ぎないからだ。

にも関わらず、LOGISTELLOの登場は革新的だったのだが、これは、実際の所、評価項目が斬新だったからではなく、昔ながらの評価関数では、各評価項目の重みづけを人間が経験値に従って手動で設定しなければならなかった所を、機械学習によって自動的に設定できる様にした所、という事になる。

更に言えば、機械学習が前提となったので、前述の「Mobility」や「Potential Mobility」の影響度についても、その値を直接計算しなくても、それらが反映されそうなパターンを追加しておけば、それだけで、それらも反映させた評価値を出力可能になった、という事になるかもしれない。

と、いう事で、LOGISTELLOの機械学習を前提としたパターン評価というのは革新的だったのだが、ここ数日書いてきた様に、実際の所としては、膨大な数のパターンの意味を人間は理解できないので、その重み係数が正しいかどうかが判断できなくなった訳だ。

その結果として、重み係数の学習結果に問題があったとしても、それを使った局面評価が行われた結果、ヘンテコな評価値が得られるまで、人間的には、その異常さに気が付けなくなった。

なので、作者的には、より古い昔ながらの評価を行う事で、ヘンテコな評価値を出力する可能性が高いパターン評価を極力行わない様にして、評価関数の安定性を向上させようとしている訳なのだが、前述の様に、LOGISTELLOのパターン評価というのも、その理屈を鑑みれば、それほど古い評価関数との違いはない。

このため、作者的には、少なくとも序盤や中盤では、概算値としても正確さを欠く可能性が高くなるMobilityとPotential Motilityの影響については、パターン評価ではなく、通常評価に切り替える評価関数を作ってテストしたりしてみている訳だ。

« 方針は大体決まった | トップページ | MasterReversiでテスト中 »

トラックバック

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

この記事へのトラックバック一覧です: Potential Mobilityとか:

« 方針は大体決まった | トップページ | MasterReversiでテスト中 »

2018年11月
        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  

広告

プライバシーポリシー

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

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

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

    ポリシーと規約 - Google