TOP
> 記事閲覧

件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/02/24(Fri) 18:31 |
投稿者 | : 山下 |
参照先 | : |
すみません、ここまでの実験結果は間違いでした。
ReLUで学習させた重みをSwishで計測していました。
正しくReLUで計測しなおしたのが下のグラフになります。
同じ条件での学習でのぶれが小さくなって、手数を変えたときの
70-89手のピークも、全部使って学習よりも100ELOほど弱いです。
グラフの形は似ていますが。
選択確率を変えた場合の実験もほとんど変化がないように見えます。
ちなみにReLUで学習させたものをSwishで動かすと400ELOほど弱くなってました。
水匠を使った場合、ノード数をかなり減らさないと互角にならず、ノード打ち切りの条件が怪しいので自己対戦にしたのですが
それなりに変化は出るので気づきませんでした。
ReLUで学習させた重みをSwishで計測していました。
正しくReLUで計測しなおしたのが下のグラフになります。
同じ条件での学習でのぶれが小さくなって、手数を変えたときの
70-89手のピークも、全部使って学習よりも100ELOほど弱いです。
グラフの形は似ていますが。
選択確率を変えた場合の実験もほとんど変化がないように見えます。
ちなみにReLUで学習させたものをSwishで動かすと400ELOほど弱くなってました。
水匠を使った場合、ノード数をかなり減らさないと互角にならず、ノード打ち切りの条件が怪しいので自己対戦にしたのですが
それなりに変化は出るので気づきませんでした。
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/02/24(Fri) 17:46 |
投稿者 | : 山下 |
参照先 | : |
KL情報量での学習局面選択は少し試してみたのですが
互角近い結果しか得られませんでした。
KataGoはこの値で学習確率を変えてるのですが
どのくらい強くなったかは書いてないので不明です。
Policy Surprise Weighting
https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md#policy-surprise-weighting
互角近い結果しか得られませんでした。
KataGoはこの値で学習確率を変えてるのですが
どのくらい強くなったかは書いてないので不明です。
Policy Surprise Weighting
https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md#policy-surprise-weighting
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/02/23(Thu) 19:24 |
投稿者 | : masa |
参照先 | : |
KL情報量か、それに何らかの減衰曲線(またはピークを一致させた正規分布曲線)を掛けた関数を考え、”その値の大きい所の局面が重要”という事はないでしょうか。(添付画像は山岡さんのブログのKL情報量のグラフ)
自分は、自分で生成した棋譜は30手~100手、特に40手~80手の局面のみを教師局面として採用しています。
(ただ、棋譜数宇が20万個ほどしかなく、教師局面全体に占める割合が小さいですが。)
自分は、自分で生成した棋譜は30手~100手、特に40手~80手の局面のみを教師局面として採用しています。
(ただ、棋譜数宇が20万個ほどしかなく、教師局面全体に占める割合が小さいですが。)
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/02/20(Mon) 17:51 |
投稿者 | : 山下 |
参照先 | : |
70-89手を1.7倍の選択確率にして20bで6億局面学習させてみたのですが
ほぼ現在のweightと同一の強さにしかなりませんでした。
replay bufferも現在の100万棋譜から300万に増やしてみたのですが、なかなか簡単には強くなってくれないですね・・・。
4300万棋譜から6285万棋譜までをreplay buffer 300万棋譜、ミニバッチ256、160万回学習、cos annealing 0.01から0.0001まで。
さらに追加学習で5902万棋譜から6286万棋譜までreplay buffer384万棋譜で80万回学習、cos annealing 0.0001から0.000002まで。
対水匠5, 7.50, 1手40Kノード(800playoutは1手250k)。24手までは互角局面を利用。256x20block
勝 分 敗 局数 (宣 千 宣) 先手勝率 勝率 95% ELO
1364-37- 999 2400 (54-37-5)(s=1166-1197,0.493), 0.576(0.020)( 53)1手100playout、w4915 基準
1324-41-1035 2400 (46-41-2)(s=1189-1170,0.504), 0.560(0.020)( 42)1手100playout、70-89手を1.7倍。-11 ELO
1316-46-1038 2400 (88-44-4)(s=1188-1166,0.505), 0.558(0.020)( 40)1手800playout、w4915 基準
1346-47-1007 2400 (94-45-1)(s=1220-1133,0.518), 0.571(0.020)( 49)1手800playout、70-89手を1.7倍。 +9 ELO
ほぼ現在のweightと同一の強さにしかなりませんでした。
replay bufferも現在の100万棋譜から300万に増やしてみたのですが、なかなか簡単には強くなってくれないですね・・・。
4300万棋譜から6285万棋譜までをreplay buffer 300万棋譜、ミニバッチ256、160万回学習、cos annealing 0.01から0.0001まで。
さらに追加学習で5902万棋譜から6286万棋譜までreplay buffer384万棋譜で80万回学習、cos annealing 0.0001から0.000002まで。
対水匠5, 7.50, 1手40Kノード(800playoutは1手250k)。24手までは互角局面を利用。256x20block
勝 分 敗 局数 (宣 千 宣) 先手勝率 勝率 95% ELO
1364-37- 999 2400 (54-37-5)(s=1166-1197,0.493), 0.576(0.020)( 53)1手100playout、w4915 基準
1324-41-1035 2400 (46-41-2)(s=1189-1170,0.504), 0.560(0.020)( 42)1手100playout、70-89手を1.7倍。-11 ELO
1316-46-1038 2400 (88-44-4)(s=1188-1166,0.505), 0.558(0.020)( 40)1手800playout、w4915 基準
1346-47-1007 2400 (94-45-1)(s=1220-1133,0.518), 0.571(0.020)( 49)1手800playout、70-89手を1.7倍。 +9 ELO
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/01/31(Tue) 15:25 |
投稿者 | : 山下 |
参照先 | : |
> 長手数であることが多い入玉局面の精度が低下することは
70-89手の確率を上げると200手以上の局面の割合は1.4%から1.0%まで
下がっているので精度が低下することはありうると思います。
試してみないと分からないところですが。
入玉の精度測定のために、お互い王を詰ますことが不可能な局面集、
を作ってどの程度宣言勝ちできるか、を調べる必要はあるかもしれません。
70-89手の確率を上げると200手以上の局面の割合は1.4%から1.0%まで
下がっているので精度が低下することはありうると思います。
試してみないと分からないところですが。
入玉の精度測定のために、お互い王を詰ますことが不可能な局面集、
を作ってどの程度宣言勝ちできるか、を調べる必要はあるかもしれません。
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/01/31(Tue) 14:57 |
投稿者 | : tns |
参照先 | : |
初期値からの学習の場合、長手数であることが多い入玉局面の精度が低下することはあるのでしょうか。
それとも一定数含まれていれば十分学習できるのでしょうか。
それとも一定数含まれていれば十分学習できるのでしょうか。
件名 | : Re: 将棋は70手から89手目の局面だけを学習させるだけで十分? |
投稿日 | : 2023/01/31(Tue) 13:54 |
投稿者 | : 山下 |
参照先 | : |
この結果は正しくないです。2月24日のコメントをご覧ください。
70手から89手の選択確率を変えて学習させたのが下のグラフです。
5つの移動平均だと2.5倍前後で+40ELOぐらい有意に強くなってるようにも見えます。
同じ条件で何度か繰り返してるので移動平均は同じ条件のも足した結果です。
学習条件は上の1月21日と同じです。
自己対戦の結果、学習回数がかなり少ない段階の結果で
さらに学習と測定によるぶれが大きいので何ともですが
2.3倍で20bの再学習をしてみようと思います。
右のグラフは学習した局面の手数による割合です。
なんの制約もない場合(AlphaZeroと同じ)が左で、実験の比較対象で
序盤の手の割合を減らしたのが真ん中で、右端が70-89手を2.3倍にした場合です。下みたいなインパルス関数です。
double e80 = (1.0 / (1.0 + exp(-0.3*(x-80+15))) - 1.0 / (1.0 + exp(-0.3*(x-80-15))))*1.3 + 1.0;
70手から89手の選択確率を変えて学習させたのが下のグラフです。
5つの移動平均だと2.5倍前後で+40ELOぐらい有意に強くなってるようにも見えます。
同じ条件で何度か繰り返してるので移動平均は同じ条件のも足した結果です。
学習条件は上の1月21日と同じです。
自己対戦の結果、学習回数がかなり少ない段階の結果で
さらに学習と測定によるぶれが大きいので何ともですが
2.3倍で20bの再学習をしてみようと思います。
右のグラフは学習した局面の手数による割合です。
なんの制約もない場合(AlphaZeroと同じ)が左で、実験の比較対象で
序盤の手の割合を減らしたのが真ん中で、右端が70-89手を2.3倍にした場合です。下みたいなインパルス関数です。
double e80 = (1.0 / (1.0 + exp(-0.3*(x-80+15))) - 1.0 / (1.0 + exp(-0.3*(x-80-15))))*1.3 + 1.0;
AobaZeroで特定の手数の局面だけを学習させる実験をしてみました。
下は20手から29手目までの局面だけ、を学習させたときのELOの伸びです。
同様に30~39、・・・、110~119手、と調べています。
全部の局面を学習させたときは +0 ELOぐらいで、
面白いことに、70手から79手の局面だけ、を学習させてもほぼ同じぐらいの強さになっています。
80手から89手だけ、も。
逆に20手から29手だけ、だと -572 ELOと、何も学習させないとき(-220 ELOぐらい)
よりも弱くなります。
70手ぐらいの局面だと、20手目ぐらいの局面の勝率を何となくNNが適当に近似してくれるが
逆は無理?なのかもしれません。
実験は6195万棋譜から50万棋譜を10万回、全局面を使って学習させたデータに、
さらに20手から29手目だけを10万回追加学習させています。
ミニバッチ128で1280万局面。
最初の乱数から10万回、だとぶれが大きいのでこの形式にしてみました。
それでもぶれは ±70 ELOぐらいはあります。
AobaZeroの自己対戦、1手100playoutの勝率。Aoba駒落ちからの互角局面(16手目まで)利用。192x10block
Valueは探索勝率と実際の勝敗の平均を学習。
Replay buffer 50万棋譜(6195万棋譜からの)、4633万局面。
学習率0.01から0.001までcos annealing。ミニバッチ128で初期状態から10万回学習(1280万局面を学習)
10万回を2回、全局面を使って学習させたモデルが相手。
勝 分 敗 局数(宣 千 宣) 先手勝率 勝率 95% ELO
23-11-766 800 (0-11-0)(s=392-397,0.497), 0.036(0.012)(-572)20_29手だけを学習
91-19-690 800 (0-19-0)(s=392-389,0.502), 0.126(0.022)(-337)30_39手
169- 9-622 800 (0- 9-0)(s=391-400,0.494), 0.217(0.028)(-223)40_49手
269-11-520 800 (0-11-1)(s=416-373,0.527), 0.343(0.033)(-112)50_59手
218-14-568 800 (0-14-0)(s=394-392,0.501), 0.281(0.031)(-162)60_69手
384-11-405 800 (0-11-7)(s=410-379,0.520), 0.487(0.034)( -9)70_79手
366- 6-428 800 (0- 6-7)(s=381-413,0.480), 0.461(0.034)( -26)80_89手
242-13-545 800 (0-13-8)(s=404-383,0.513), 0.311(0.032)(-138)90_99手
164-10-626 800 (0-10-2)(s=412-378,0.522), 0.211(0.028)(-228)100_109手
76- 4-720 800 (0- 4-0)(s=421-375,0.529), 0.098(0.020)(-386)110_119手
383-36-381 800 (0-36-2)(s=368-396,0.482), 0.501(0.034)( 0)40手以下を学習しない
360-20-420 800 (1-18-1)(s=406-374,0.521), 0.463(0.034)( -26)40手以下を学習しない。2回目
313-22-465 800 (0-21-0)(s=395-383,0.508), 0.405(0.034)( -66)50手以下を学習しない。
388-21-391 800 (0-21-1)(s=388-391,0.498), 0.498(0.034)( -1)50手以下を学習しない。2回目
286-20-494 800 (1-19-0)(s=387-393,0.496), 0.370(0.033)( -92)60手以下を学習しない。
167-13-620 800 (0-13-3)(s=384-403,0.488), 0.217(0.028)(-223) 追加学習なし、の基準
248-21-531 800 (0-21-2)(s=393-386,0.504), 0.323(0.032)(-128)60手以上を学習しない
286-23-491 800 (0-23-1)(s=400-377,0.515), 0.372(0.033)( -91)60手以上を学習しない。2回目