SSブログ

棋譜からの学習、再考 [将棋]

結構前だが、Bonanza 6.0の学習ルーチンを動かすだけ動かしてみようと思ったことがあった。
なんでそう思ったのかは今となっては思い出せないが、きっとLS3600さんのBlogを見ていたのだと思う。

で、保木さんから聞いたと言われる方式を前にやってみたのである。

learn ini 32 -1 -1 8 8


学習は2つのPhaseにわかれている

・Phase1
 棋譜から学習するべきデータを作る
 その際に探索も行い、PVリストを作成しtmp.binに保存される

・Phase2
 Phase1で作成されたtmp.binを元に、評価関数のパラメータを変化させる
 全部終わったら、ペナルティで補正をかける
 元の評価関数に展開する

ループの時はPhase1に戻る

という動きをするが、Phase2のときに、1スレッド当たり300MBぐらい消費する。(FV.BINのサイズ)
並列で処理するために、保木さんのコマンドである8を指定すると、300*8で2GB以上確保しようとするが、処理系によってはメモリ確保エラーで落ちてしまう。

というのをまとめるのが面倒で、Tweetしてたら、本家にメモられていたw

http://d.hatena.ne.jp/LS3600/20091130/p1

なんか見覚えあるななんて思ってたら、自分だった。

というわけで、急に思い出したので、1000局ほど学習させてみた
一局でした。

  Iteration 001
  Parse 1  done
   Number of Games : 1
   Total Moves     : 10919
   Moves Counted   : 1366
   Illegal Moves   : 0
   Nodes Searched  : 914644
   Max pos_buf     : 1801
   Prediction ()  : 32.17 57.39 70.43 78.26 84.35 88.70 92.17 92.17
   Target          : 0.030882 (0.004179)
   Futility        : misc=385 drop=236 cap=675 mt=1000 misc(k)=672 cap(k)=680
  Parse 2
   Moves Counted   : 1366
   Objective Func. : 515.61111712 0.03088198 515.58023514
   Steps ................................ done


1000局ぐらいだとあっという間におわってしまった。 あんまり早く終わったので用意したデータが悪いのかもしれない。 プロファイラで見てみると、学習後の再展開処理が4割を占めるという、あまり意味のない学習だった。 あんまり一瞬で終わったので、これがんばって4万局ぐらい集めて学習すれば俺も作れるようになるんじゃね? と思ったのだが、サーチデプス2のままだったので、3にしたらまた時間かかるのだろう。

Number of Gamesが局数で、1,つまり一局しかやっていなかったので、学習後の再展開ルーチンの負荷のほうが大きかっただけだった。実際再展開はテーブル全部に対して再計算を行うために高コストではあるが、一番負荷が高いのはPhase1の学習時における評価コストであった。

Blunderは開発時は4とかにして学習させていたというのをどっかで見た。
学習時の評価の精度が高ければ高いほどよいのだろうが、時間とマシンパワー(というか金)が必要になる。

それはともかく、Predictionは上記のようになっている。

ここで、やねうら王Blogを思い出した。

http://yaneuraou.yaneu.com/2014/12/18/%E5%B0%86%E6%A3%8B%E3%81%AE%E6%8E%A2%E7%B4%A2%E7%A9%BA%E9%96%93%E3%81%AE%E5%BA%83%E3%81%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

やねうら王では探索をしない場合、プロの棋譜との指し手一致率は、以下のようになっています。

Prediction(%) = 43.5828, 64.8331, 75.9408, 82.7774, 87.3075, 90.4403, 92.6531, 94.2629, 95.4584, 96.3543, 97.0501, 97.5901


Bonanzaの一致率と比較していいと仮定する。
Stockfishでは3手ぐらいまでの有望な手でカットが始まることを考えると
最初の3つの%が深い探索に影響をあたえると思われる。

前々から人間でいう「一目」がここら変のことだと勝手に思っているのだが
一致率で見てみると、10%~5%ぐらい差がある

また、深く読んでもBonanzaはやねうら王に比べて5%は多くミスをするということであり、
100手で決着がついたとしてその半分の5%=2、3手は悪手を挿すことになる。

これがレーティング200以上の差と考えてよいのだろうか。
Nozomiの棋譜をちょっと確認してみたが、評価値そのものはBonanzaのもののようで、まじめにBonafish作ればR2800ぐらいになるだろうということがわかった。

そこからR200以上上乗せするには評価関数そのものの精度を上げる必要がある。
というのが今の結論なのだが・・・

http://yaneuraou.yaneu.com/2014/12/23/kpp%E3%81%A7%E3%81%AF%E5%B7%A6%E5%8F%B3%E3%81%AE%E5%AF%BE%E7%A7%B0%E6%80%A7%E3%82%92%E8%80%83%E6%85%AE%E3%81%99%E3%82%8B%E3%81%A8%E5%BC%B1%E3%81%8F%E3%81%AA%E3%82%8B%EF%BC%81%EF%BC%9F/

これによるとNDFのKPP相対をやねうら王では採用していて、8コアマシンで収束に一ヶ月かかるようだ

この間のツイートでAperyの平岡さんは12月の電気代が8000円だったという。
一人暮らしでかつ家にほとんどいない風なので、8000円はほぼ5960Xの電気代だろう。

家族がいるPonanzaの山本さんは3万円だったという。
家に人がいると暖房を使うので、それだけで1万円ぐらいはあるとしても2万円分ぐらいは電気代だろうか。

<追記>
すでにLS3600の2009年のエントリにも同じことが書かれている。
また、なのはのかずさんの試算によれば月3000円はかかるとのこと。
<追記終わり>

というのがあって、此処から先は覚悟がある人の領域なので現状はやる気が起きていない。
左右対称KPP相対とか、いろいろ試してみたいのだが・・・

<追記>
左右対称は元からありまぁす
これについては後日書く。
nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。