Skip to content

Releases: kobanium/aobazero

v43

25 Feb 07:39
47737a6
Compare
Choose a tag to compare

【ビルド済みバイナリ】
・aobazero-43-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-43-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
NVIDIAのドライバを最新に更新するとTensorCoreを使えるGPUだとWindowsで起動時にエラーになるを修正しました。
また棋譜生成で探索内部で513手超えで引き分けを返すようにしました。
これで若干宣言勝ちがしやすくなるかと思います。

上はv42での修正ですが、これに追加で
CPUに内蔵のGPU(第11世代Intel Iris Xe Graphics)でもOpenCL版が動作するように修正しました。

OpenCL版がCPU内蔵GPU(第11世代Intel Iris Xe)でも動作するように
http://www.yss-aya.com/bbs/patio.cgi?read=103&ukey=0
AobaZeroの棋譜生成で探索内部で513手超えで引き分けに
http://www.yss-aya.com/bbs/patio.cgi?read=98&ukey=0

v42

24 Feb 12:11
577b4c1
Compare
Choose a tag to compare
v42

【ビルド済みバイナリ】
・aobazero-42-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-42-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
NVIDIAのドライバを最新に更新するとTensorCoreを使えるGPUだとWindowsで起動時にエラーになるを修正しました。
また棋譜生成で探索内部で513手超えで引き分けを返すようにしました。
これで若干宣言勝ちがしやすくなるかと思います。

NVIDIAのドライバを更新すると起動に失敗するのを修正しました
http://www.yss-aya.com/bbs/patio.cgi?read=102&ukey=0
AobaZeroの棋譜生成で探索内部で513手超えで引き分けに
http://www.yss-aya.com/bbs/patio.cgi?read=98&ukey=0

v41

08 Dec 10:13
b452d10
Compare
Choose a tag to compare
v41

【ビルド済みバイナリ】
・aobazero-41-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-41-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
強化学習で生成する棋譜の強さを1手平均1600playoutsから3200playoutsに変更しました。
400playoutごとに探索を停止するか判定し(kldinterval 400)、前回と比べて探索数の分布が似てるなら(kldgain 0.0000004)停止します。最短で1手400playout、最大で1手12800playout行います。
正確には1手3180playouts/moveぐらいです。
推定で+80 ELOほど生成される棋譜が強くなり、これで学習したWeightが今後強くなるのを
期待しています。
ほぼ同じ設定でfloodgateで流しています。
http://wdoor.c.u-tokyo.ac.jp/shogi/view/show-player.cgi?event=LATEST&filter=floodgate&show_self_play=1&user=AobaZero_w4260_kld_avg_3200p

v39

21 Dec 07:30
1e01885
Compare
Choose a tag to compare
v39

【ビルド済みバイナリ】
・aobazero-39-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-39-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・王が逃げる手が1手だけの時は、この局面を評価せずに1手進めてNNで評価
・Dynamic Variance-Scaled cPUCT。これはKataGoで使われている手法で、定数のcPUCTを評価値の分散によって動的に変化させる手法です。上の2つで合計+25 Elo程度の向上。
・生成される棋譜に、その局面を探索する前のNNのValueとPolicyの出力を記録するように。
これは学習する局面の選択を均等でなく、重要と思われる局面の学習確率を変える実験をするための準備です。
Policyの値はA-Z,a-zの52段階に圧縮されています。

詳しくはこちらを。
AobaZeroをcPUCTを動的に変更、王が逃げる手が1手を延長で、+25 Elo強く
http://www.yss-aya.com/bbs/patio.cgi?read=33&ukey=0

v37

29 Jul 06:17
9b961e3
Compare
Choose a tag to compare
v37

【ビルド済みバイナリ】
・aobazero-37-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-37-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・kldgainを0.000005から0.00000075に。平均playout数が772から1568に増えます。1手800playoutから1手1600playoutと倍の強さで学習棋譜を生成して重みに変化が出るのか確認します。今までは1手最小100playout、最大3200playoutでしたが、1手最小100、最大6400になっています。
・aobazのバイナリ自体に棋力の変更はありません。学習時の棋譜生成が異なるだけです。

v36

26 Jun 04:15
31513e4
Compare
Choose a tag to compare
v36

【ビルド済みバイナリ】
・aobazero-36-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-36-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・歩角飛の不成を生成しないように。打歩詰の打開でまれに有効ですが、実際に飛車の不成で打ち歩詰めを打開できる局面では指せず、出現例が極端に少ないので学習は無理と思われます。
・空き王手や王手での素抜きで駒を取る手が読み抜ける(Policyの上位にならない)のを防ぐため、Policyの最善の30%の値になるように強制補正しました。
・最大回数以下の手で、残り全敗でも最大回数の勝率を上回る場合は、その手を選ぶように。
・上記3つ修正で+20ELO程度強くなっています。不成や素抜き補正でのELO変化はほぼありませんでした。
・kldgainを0.000006から0.000005に。平均playout数が729まで下がっていたのが772まで増えます。

v34

30 Apr 02:14
dd6eb18
Compare
Choose a tag to compare
v34

【ビルド済みバイナリ】
・aobazero-34-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-34-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・王手がからむ千日手を認識しないバグを修正しました。
・dfpnの内部で時間打ち切りを追加しました。-s オプションで時間指定した場合、最大でも0.2秒程度の遅れかと思います。

v32

18 Apr 06:23
a66c76b
Compare
Choose a tag to compare
v32

【ビルド済みバイナリ】
・aobazero-32-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-32-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・勝率の初期値を親ノードの勝率を元に調整しました。first play urgency(fpu)と呼ばれてるものです。今までは負け(-1.0)固定だったのを「(親の勝率/2)-0.65」にしてます。負けの局面はすべての手を探索し、勝ちの局面では1手しか調べない、が常に同じぐらいの数の手を調べるようになってます。+20 Eloほどの効果です。
・すべてのノードでdfpnで詰を探索するように。10ノードで10000回のdfpn、100ノードで100000回、と1000倍のノード数を読みます。CPUのコア数が1.2倍ほど必要になります。+40 ELOほどの効果です。
・上2つで合計+60 ELOほど強くなっています。
・王手の同一局面は2回目で着手しないようにしました。王手を逃げる手で4回目、で負けるケースがあるため。
・詰将棋エンジンとしても将棋所で動作します。ただし相玉のみで、詰手順は最初の1手しか返さないため、すべて1手詰みと表示されます。

v30

07 Apr 17:45
4d0da9b
Compare
Choose a tag to compare
v30

【ビルド済みバイナリ】
・aobazero-30-w64-opencl.zip (64ビット版 Windows で GPU を利用したいユーザ用)
・aobazero-30-w64-cpu-only.zip (64ビット版 Windows で GPU を利用したくないユーザ用)
【主な変更点】
・policyを出力するsoftmaxの温度を1.0から1.8に変更しました。これによって1手800playoutだと+50 Eloほど強くなっています。
Policyを出力するときのSoftmaxの温度
https://524.teacup.com/yss/bbs/3914

以降は自己対戦で学習棋譜を作る場合の変更点です。
・kldgainを0.0000013から 0.000006 に変更しました。policyの温度を1.8にしたことで1手平均1485playoutに増えるのが1手平均789playoutになります。
・30手目までを探索なしでPolicyの確率で着手し、かつ、30手後の勝率がある範囲に収まるのを中止しました。
勝率の調整は強化学習ではまずく、これによって初手にどんな手を指しても1手後の勝率(value)は同じ、に
なっていました。
・30手までのランダム性はもとに戻しました。温度も1.3ではなく、1.0です。
・30手以内での投了を禁止、をやめました。いつでも投了します。
・これによって、一時期勝率が0.70を超えていたのが0.56まで戻っています。双方30手までは悪手を指すので実際はもっと先手勝率は高いはずです。

v28

25 Feb 06:53
61189b0
Compare
Choose a tag to compare
v28

【ビルド済みバイナリ】
・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