スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 現行版が優秀なのは判った | トップページ | とりあえず、組み込んだ »

何とかなりそうなので

今は、新しいリバーシプログラムの開発フェーズなのだが、今の所、新しい評価関数はMasterReversi上で同等の評価を行わせる評価データとして構築している。この評価関数を使うとWZebraに負け越していたのだが、学習方法を変えると何とかなりそうなので先に進む。

パターン評価を行う場合に必要になる重み係数というのは、それを使った評価結果と学習データの誤差が最小になる様に計算されている。

具体的には、例えば、ある局面で、A,B,Cという局所パターンが存在していて、学習データによると、その局面が存在していた対局は、その後、10石負けした場合、a+b+c = -10という方程式が成り立つ様に、A,B,Cのそれぞれの重み係数である所のa,b,cは決められる。

もっとも、方程式が一つで変数が3つでは、a,b,cは一意には決まらない訳で、例えば、aが-10で、b,cが0でも良いし、aが+10でbが-10、cが-10でも構わない訳だ。

なので、学習データが少ないと、正しい重み係数は求められそうもないのだが、重み係数を求めるアルゴリズム的には、そういう場合にも、それらは一意に決定される。

具体的には、最初、a,b,cは0に初期化されるので、それらを使った局面評価値は0になる。なので、学習データとの差は-10になる事になるので、a,b,cの値は大きすぎるという事で、それらを求める処理関数では、それらの値は少し減らされる訳だ。

どれだけ減らされるかは状況にも依るのだが、例えば、1ずつ減らされるとすると、その状況では、それらを使った局面評価値は-3になるので、まだ、学習データとの差は-7残っている事になる。

なので、更に、前述の処理が繰り返されるのだが、その差は少し減っているので、減らす値も少し減らす格好にする。

で、そういう事を繰り返していると、最終的には、学習データにある対局結果と、a,b,cを使って求められる評価値が殆ど同じになる訳だ。

と、いう事で、前述の様なケースでは、a,b,cはそれぞれ、-3.333である、と、求められる事になるのだが、まず、前述のAとBのみが存在する局面が発生した対局では、その結果は-10だった、という学習データのみがあった場合、つまり、a+b=-10の関係のみがあった場合には、a,bはそれぞれ-5である、という結果が導き出される。

で、その状況で、更に、前述の学習データが計算された場合、既にa,bは-5、という事になっているので、cの初期値が0だったとしても、a,b,cによる評価値は、最初から-10になるので、学習データとの差は存在しない事になる。

つまり、a,b,cの値は、今度は、-5,-5,0と決定される事になる訳だ。

と、いう事で、パターン評価用の重み係数の計算というのは、通常は、それを使った評価値と学習データとしている対局結果の差が無くなるまで繰り返し計算されるのだが、学習データの適用順序を変えたりするだけで、最終的な計算結果は変わったりもする訳だ。

で、前述の様なケースでは、a,bが-3.3333だと二つ目の方程式が満たせなくなるのに対して、a,bがそれぞれ-5なら、両方の方程式が満たせる事になるので、より単純な方程式である所のa+b=-10からa,bは-5だ、と、予め決定しておいた方が正しい結果を導ける事になる。

上記の説明とは正確には少し異なるのだが、MasterReversiの評価データの学習時にも、似たような事は行える。

具体的には、現行版のMasterReversiの評価データは約250万対局の学習データを学習させているのだが、これを素直に学習させると、前述の前者の様な重み係数が割り当てられる事になる訳だ。

これに対して、例えば、ここ数日で対局させているWZebraとの対局結果のみを学習させると、前述の後者の様な重み係数が割り当てられる。

つまり、ここ数日のWZebraとの対局結果というのは、高々1,000対局程度しかないので、これらのみを学習させれば、これらにかなりマッチした評価結果を出力させる事が出来る重み係数を割り当てる事も可能な訳だ。

この場合、その重み係数が採用された評価データを使えば、WZebraとの対局で負けた局面は極力回避される事になるので、負け数を減らせる訳だ。

もっとも、高々1,000対局程度では、当然、全ての局所パターンは網羅されていないので、前述の250万対局の学習データも学習させる必要があるのだが、一旦、WZebraとの対局にマッチする重み係数に設定された局所パターンは、ゼロから学習させるよりは、その値を保持する可能性が高くなる。

なので、上記の様な学習のさせ方を行えば、理屈の上では、WZebraには負けにくい評価データも作成できる訳なのだが、実際にやってみた所、勝率は上がった感じだ。

このため、新しい評価関数も使いものになるかなあ、という感じにはなってきたので、作者的には、次のステップとして、MasterReversiへの正式適用を行ってみる事にする。

ただ、昨日書いた様に、現行版も、中々、優秀なので、MasterReversi的には、新しい評価関数を作成できる環境は用意しても、標準添付版は現行版のままにしておく可能性もなきにしも非ずだ。

« 現行版が優秀なのは判った | トップページ | とりあえず、組み込んだ »

トラックバック

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

この記事へのトラックバック一覧です: 何とかなりそうなので:

« 現行版が優秀なのは判った | トップページ | とりあえず、組み込んだ »

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