ボナメソするぞ

局面と指し手(教師)の組をたくさん用意して、2駒関係を学習する。
末端局面を得るには、RootMove::pv_を使う。
メモリの確保が必要なのは、評価ベクトル本体、次元下げでペナルティの基準値とする評価ベクトル、勾配、あと一応駒割の勾配(別に遅くならんし2駒とはいえ駒割の勾配を抽出するのは面倒だ)。
次元下げ。駒割+2駒相対+2駒絶対。まず駒割を適当に学習する。駒割を固定したら、次に2駒相対。同じ位置関係の特徴を集めて勾配を足して全体に書き戻す。それを固定して2駒絶対を。
NDFみたいにL2正則化でやるのもいいなあ(また迷って何もしないパティーン)。
あとASGDとか使う。
むぎ。
2駒相対では、持ち駒と他の駒との関係をゼロに。玉を含まない離れた駒の関係もゼロに。
ていうかみんな末端局面を得る方法とか、次元下げでの持ち駒の扱いとか、どうやってるの?BonanzaやAperyを読めばいいのかもしれないけど、探索部と違って、自分でボナメソを書けるようになったあとも、読む気になれないんだよ(たしか頑張って少しは読んだ気がするけど)。
最近気になっているのは、評価関数の学習をするのに1スレッド探索*4と4スレッド探索*1でどんな違いがあるかということ。当然前者のほうが速いが、本番と同じ並列探索にしたほうが少しでも強くなるのかどうか。学習用の棋譜を増やすことのほうが重要な気もするが。えっ、試せって?
終わり。