Hatena::ブログ(Diary)

Bonanzaソース完全解析ブログ

2009-11-30

棋譜からの学習について保木さんから

棋譜からの学習について保木さんからを含むブックマーク 棋譜からの学習について保木さんからのブックマークコメント

棋譜からの学習について保木さんにメールで直接教えていただきました


保木さんのご厚意により、メールで質問して構わないということでしたので、私は厚かましくもメールで根掘り葉掘り質問させていただきました。

保木さんに教えていただいた情報のうち、保木さんが公開して良いとおっしゃられた部分に関してはこのブログにて公開させてもらいます。

今回はBonanzaで学習に使用した棋譜についてのことです。以下は保木さんから私へのメールです。

学習に使用したプロ棋士棋譜 45833 局です。入玉模様の棋譜は1000局以

下だと思います。入玉の局面を Bonanza は殆ど評価することが出来ません。

昔はアマチュアの棋譜入玉模様のサンプルを増やしていたのですが、最近は

しておりません。しかし、将来また使用するかもしれません。用いた Xeon

Harpertown 程度のものだったと思います。

学習の過程で勝率が上昇していく様子等のデータはありません。本来ログファイ

ル等取っておくべきですが、リスタートやマシン移動等を途中ではさんでいて断片

的にしか残っておりません。

どのように学習させても大体同じだと思うので、あまり神経質になる必要は有りま

せん。私が今やるのであれば、以下のようにします。

1.CSA 形式の棋譜と学習用 PC を用意し、64ビットモードでコンパイルする。

2.learn1.c の SEARCH_DEPTH を 2 にセットしコンパイルBonanza のコマ

ンド

> learn ini 32 -1 -1 8 8

を実行して1ヵ月程度放置。

3.次に、SEARCH_DEPTH を 3 にセットし、param.h_ と fv.bin を使用して続きか

ら学習。PC を止めたくなった時に学習をやめる。

これで私は長年疑問に思っていた学習の謎が解けました。

これでもはや誰でもBonanzaのfv.binが作れるようになるわけですね!


Xeon Harpertownは5400系で、Corei7 Extreme 975なら5400系×dualとなら互角〜数割遅いぐらいでしょうから、同じ〜数割遅いぐらいの時間で学習が完了するのではないかと思います。


あと、現行のXeon 5500系とくらべるとHarpertownは同クロックで半分ぐらいの性能と言われているので(実際に測定したことはないのでよく知りませんが)、現在最上位のW5590×dualなら半分ぐらいの期間で終わりそうですね。つまり2週間+α。長いような短いような。

mkomiyamkomiya 2009/12/02 00:13 凄い参考になる情報

LS3600LS3600 2009/12/02 07:23 ありがとうございます。保木さんからの情報は、随時このブログに掲載していきます。

yaneuraoyaneurao 2014/05/09 00:59 メモメモ。
https://twitter.com/woodyring/status/464033284272316416
> woodyring ‏@woodyring 5月7日
> 64bitを指定している理由はphase2のときにスレッド数*300MBぐらいの容量を使うため32bitOSだとメモリ確保エラーが出るから

LS3600LS3600 2014/10/14 14:42 いまさらながら書き忘れていたので追記。

> learn ini 32 -1 -1 8 8

・iniのところ、前回からの学習の続きをするのであればno-iniを指定します。
・32はstep数(1回のiterationごとに何回パラメーターを動かすか)
・-1は棋譜に格納されている対局のうち読み込む対局数。
・-1はiteration回数(-1ならば無限回)
・8 8はworkerスレッド数(仕事が1,2と二つあるのでそれぞれ指定できるのですが、論理coreの数を指定しておくと良いでしょう。)

usus 2014/11/07 03:00 ボナンザのfv.binをfloodgateの棋譜のみから学習して改変しようと思ってるんですが,learn1.cをコンパイルしてボナンザのコマンドラインを起動する方法が分からないため,「learn ini 32 -1 8 8」コマンドを入力する以前で止まってしまいました.
普通にコンパイルしようとするとmain関数がないからか,エントリーポイントを定義しろと言われました.
学習部でない通常のコンパイルは問題なく通るのですが...


環境は Windows 8.1,Visual studio 2013です.
普通にコマンドプロンプトの方でもやってはいますが,結局同じエラーになってしまいました.

こんなことをLS3600さんに聞くのも申し訳ないですが,色々調べても方法が分からなかったため質問させていただきました.
お時間のある時で結構ですので,よろしくお願い致します

yaneuraoyaneurao 2014/11/07 08:52 ↑コンパイルオプションで "MINIMUM" を定義していると最小構成になってしまうので学習部がコンパイルされないです。

参考)
http://d.hatena.ne.jp/LS3600/20091013

usus 2014/11/07 10:54 回答ありがとうございます.

オプションでMINIMUMを無くすんですか.
デフォルトのMakeファイルのオプションのままでした.
Makeファイルの内容を変更して再度行ってみようと思います.