Bonanza

情報処理 No.9

情報処理 No.9のコンピュータ将棋特集を読んだ。 金子知適「最近のコンピュータ将棋の技術背景とGPS将棋」は、コンピュータ将棋全般について大変よくまとめられている記事。Bonanzaの説明で、 持駒を含める場合は残りの2駒は玉とする等の制限を加えられては…

対称

小宮日記 なぜBona4はdv==0のときに特徴を更新するのか? 恐らく、強さはほとんど変わらないだろうと予想。確認していないので断定はできないけれど。 それではどうして調べたのかというと、単に原因が気になったからというのが一つの理由。 もう一つは、Bon…

rparam()

2009/05/22に書いた、0付近の非対称の原因がrparam()にあることを実際に確認した。 Bonanza 4.0.4で、dv==0のときにはistepの更新をしないで、乱数の効果分だけ更新するように書き換える。 static void rparam( short *pv, float dv, int istep ) { int v, …

PcPcOnSq

毎日がEveryDay! PcPcOnSqについて。 k0, l0に入る値は、駒の位置状態を表す番号。(例:歩が6七にいる) この番号は、0から1475まである。 二個の駒の位置関係を考えているのだから、0から1475の番号を縦と横それぞれに振った正方形を考えて、その中のある…

4.1.1の評価パラメタ

自分で学習させたものではなく、Bonanza 4.1.1に入っているfv.binの評価パラメタ値を調べる。(4.0.3の場合については、2009/03/20に書いている。) KPP 最小値: -11779, 最大値: 8856, 平均値:0.05, 標準偏差: 73.29 KKP 最小値: -3251, 最大値: 4911, 平均値…

学習経過

やっと10回目のiterationが終了した。以下がその結果。(各項目の意味は、2009/04/06で説明) MPは Move Prediction。 Learning result (#1 〜 #10) IterationTargetPenaltyMP 1MP 8Moves counted #10.1509910.00000018.3%50.0%120033397 #20.0716310.01428833…

FV_PENALTY

4.1.1が出ているが、途中で止めるのも無駄になるので、学習はボナンザ4.0.4で続行。 学習機会数を記録するだけでは情報として不十分な気がしたので、9回目のiterationから各パラメタのΣdT(x)/dxを記録するように改造した。(ΣdT(x)/dxは、rparam()の中のdv項)…

4.0.3 -> 4.1.1

世界コンピュータ将棋選手権はGPS将棋の優勝だった。 KCCは予選のプログラムから変更したもので、最初の三局を戦ったらしい。もし予選のままで最初から出ていれば優勝した可能性もある。しかしこのクラスになると実力が接近しているので、七局の結果だけでは…

駒の価値の変化

ボナンザの新しいバージョン4.1.1がコンピュータ将棋選手権使用可能ライブラリに出ていた。 時間がかかりそうなので、まだダウンロードしていない。学習の中で一手先読みではなく、二手先読みにしたのが最大の変更だろうと思うが、他にどのような変更が入っ…

学習(3)

03/20の表で示したように、KPP/KKPの各値は大半が±1の範囲にある。 このことから、KKP/KPPの各要素ごとの学習機会数は、やはり大半が0回なのではないかと予想していた。今動かしているボナンザは、各要素ごとの学習機会数をカウントするように改造している…

学習(2)

前回の学習の続き。5回目のiteration。 Moves Countedは減り続けている。Move Predictionは少し向上している。 iteration #5 Number of Games : 42756 Total Moves : 329406267 Moves Counted : 71243096 Illegal Moves : 6 Nodes Searched : 14483850750 M…

学習(1)

棋譜データを用意して、実際に学習させてみた。 棋譜数42757で、4回iterationした結果の出力の一部。 (Number of Games:42756と表示されているが、max-gamesを棋譜数より多く指定したときに、一個少なく表示されるバグがあると思う。) iteration #1 Number …

評価パラメタ (3)

前回示した表を見て、少し気になったこと。 KPP/KKPの値が、玉の存在する位置では必ず0になっていると思っていたが、そうなっていない場所もある。同じ場所に複数の駒が存在することはできないので、玉と玉以外の駒が同じ場所にある局面を学習する機会は存…

評価パラメタ (2)

前回は、評価パラメタ値の全体的な傾向について書いた。今回は、玉の位置を固定した特定のケースでどのようになっているかを調べる。先手玉が7八、後手玉が8二の位置にいるとする。(先手が居飛車、後手が振り飛車を想定) このときに先手の銀の位置に対する…

評価パラメタ (1)

前回書いたように、評価パラメタのKPPとKKPは、その要素数が膨大である(KPP:9000万弱、KKP:500万弱)。最早、人間が手動で調整できるものではない。 Bonanza 4.0.3の配布ファイルの中に、fv.binというファイル名で学習済みの評価パラメタが提供されている。 …

評価関数 (2)

前回書いた駒割以外の評価項目は、駒の位置関係によるものだけである。 駒の位置関係は、以下の二種類の項目に分かれる。 KPP (King-Piece-Piece) KKP (King-King-Piece) (* これらの名前は、説明のためにここで適当に与えた。) KPPは、一個の玉と玉以外の二…

評価関数 (1)

前回書いた学習によって決定された評価パラメタの値を使用して、局面の評価が行われる。 これを実行するのは、evaluate()である。この関数は、引数で指定された手番(turn)側から見た評価値を返す。手番側が有利であればプラス、不利ならマイナスになる。 評…

学習アルゴリズム

今年の一月に、Bonanzaがソースコード込みで公開されるようになったので、最近読み始めた。 コンピュータ将棋選手権使用可能ライブラリ棋譜データを使って、評価関数のパラメタを学習する部分を一通り読んだ。 学習を実行するコマンドは、以下のようになって…