Skip to content

v28

Compare
Choose a tag to compare
@yssaya yssaya released this 25 Feb 06:53
· 42 commits to release since this release
61189b0

【ビルド済みバイナリ】
・aobazero-28-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-28-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
ネットワークの構造を変更しました。
・以前と互換性がありません。w3880以前はv18をご利用ください。w3881以降のみが動作します。
・ネットワークの入力に駒の利きの数、利きの種類、王手かどうかを追加。
・ネットワークのPolicyの出力を11259通り(139x9x9)から2187通り(27x9x9)に(Aoba駒落ちと同じ)。
・ネットワークの活性化関数をReLUからSwishに変更
・3手詰までの詰将棋を常に調べるように。
・30手までの乱数性を今までは
  Policyの値を元に800playoutした後の訪問回数の割合、からランダムに選ぶ。
 から
  1手指した後のValueの分布を元に、playoutしないで(探索なし)でランダムに選ぶ。
 に変更しました。
 大雑把には初期局面で▲76歩の着手確率が0.64%から12%に上がっています。
 これは最善手以外のPolicyは時々極端な値が付いて、その手を指さなくなるのを防ぐためです。
 メモリと時間の節約のため、実際は0手目から10手目程度の手だけにValueを適用して、それ以外は
 単にPolicyを使っています。
 Value,Policy、どちらの場合もディリクレノイズを足しています。
・30手後の瞬間的なValueの値が 0.35 ~ (0.55) ~ 0.75 に収まるようにしています。
 これは、今までの温度1.3だとかなり悪手も選ぶため、31手目ですぐに投了する棋譜が4割ほどになっていました。
 これを避けて、30手後の勝率が低すぎる(高すぎる)場合は、再度0手目からやりなおしています。
 過去100万棋譜の先手勝率を基準に前後0.20です。
 また、途中で勝率の範囲を超えた場合は、1手戻して、直前の手はPolicyの最善手を選ぶようにしています。
 30手までの手順が決まれば、少なくともその手を1回は探索するようにして、800playout後に強制的にその手を選びます。
・温度は1.0。探索なしなので、この温度でもノイズの手が選ばれやすいです。
・これらにより30手後にユニークな局面が出来る割合は4万棋譜作成で99.1%ぐらい、とほぼ同じ棋譜にはなりません。
・詰を見つけた後の局面は学習しない。

w3881 は100万棋譜から5200万棋譜までをCosine Annealingで5億局面学習させたものです。
weightの強さとしてはほぼ今までの最新(w3880)と同じです。
3手詰ありは、+20 ELO程度でほとんど効果はありません。
初手で▲76歩を指す確率は上がっていますが、振飛車は飛車を振るだけで勝率が10%近く下がるので
Valueを元にしても、ほとんど指してくれません。
平均手数が77手から103手に伸びたこと、Swishの実装で15%程度速度が低下したことで
棋譜生成速度は1.5倍程遅くなっています。
詰将棋、駒の利き情報などを使ってますが、全体としては「人間の知識は使っていない」を継続していると考えています。

着手のランダム性にはPolicyを使うより、1手指した後のValueの値を使った方がいい?
https://524.teacup.com/yss/bbs/3890
Cosine Annealingを複数回繰り返さず1回だけ、が効果的でした
https://524.teacup.com/yss/bbs/3893
AobaZeroのネットワークの構造を変更しました
https://524.teacup.com/yss/bbs/3895