teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

【重要】teacup. byGMOのサービス終了について
 <思いやりのあるコミュニティ宣言>
 teacup.掲示板は、皆様の権利を守りながら、思いやり、温かみのあるコミュニティづくりを応援します。
 いつもご協力いただきありがとうございます。

 投稿者
 メール
  題名
  内容 入力補助画像・ファイル<IMG>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ]


Re: AobaZeroで学習される局面の手数の割合

 投稿者:zakki  投稿日:2021年12月30日(木)15時42分27秒
  将棋は終盤も詰みあってPNが外すこと結構あるのかと思ってましたがそうでも無さそうですね  
 

Re: AobaZeroで学習される局面の手数の割合

 投稿者:山下  投稿日:2021年12月30日(木)12時30分5秒
  自己対戦の途中で、教師局面にするか、の判定にも使っているのですか。複雑ですね・・・。
KataGoの棋譜コメントの「weight」はこれの意味だったのですか。少し謎が解けました。
下にあるように見えますね。左右に揺れるのでなく、強くなると
下に下がっていく感じなのかも。

AobaZeroでも調べてみました。32万局面ぐらいの集計です。
200手以上の長手数ではほぼ0で、難しいのは56手目前後、のようです。
31手目付近でグラフが変なのは30手目まで投了禁止、のせいだと思います。
 

Re: AobaZeroで学習される局面の手数の割合

 投稿者:zakki  投稿日:2021年12月27日(月)22時02分19秒
  75%の確率で少ないプレイアウト数で探索するので教師局面に使わない
25%の確率でフルの探索をして教師局面として使う
その25%の手うち、このウェイトが200だと2局面として使う、50だと50%の確率で教師局面として使う感じだったと思います。

KataGoの最新のネットワークの自己対局棋譜を100くらい持ってきてプロットすると似たような傾向のようです。
何となく下にあるように見えるのはネットワークが大きく賢くなってて探索せずに分かるようになってきてるんでしょうか。
 

Re: AobaZeroで学習される局面の手数の割合

 投稿者:山下  投稿日:2021年12月27日(月)20時34分17秒
  これ面白いですね!
eg的には一番難しいのは130手前後、ということですか。
逆に序盤は200手ぐらいの大ヨセ?ぐらいの難しさ、ですか。

なんとなく囲碁だと序盤が一番難しい気もするのですが。
もっと強くなるとピークがだんだん短手数になるのかも。

AobaZeroだと1局面を1回学習する割合(平均手数128の場合、今は80ぐらいなので1.5回ぐらい)なのですが
egだと400手の局面は少なくとも1回は学習する、130手では3回、みたいな感じなのでしょうか?

いまいちPolicy Surprise Weightingの計算式が分かっていませんが
AobaZeroでもKL情報量で同じようなグラフを作ってみます。

そういえば、1年前のzakkiさんのツイートで既に指摘されてましたね。
https://twitter.com/k_matsuzaki/status/1327926016279523330
> katago方式で棋譜生成する時にランダムな局面じゃなくて最小限探索したあとに
> PNやVNと探索結果の相互情報量の大きい局面でフルの探索数まで進めて教師データに
> するみたいなので効率上がんないかな?

KataGoがやってないことを探すのが難しい・・・。
 

Re: AobaZeroで学習される局面の手数の割合

 投稿者:zakki  投稿日:2021年12月27日(月)15時04分28秒
  egの自己対局(この部分に関してはKataGoと同一)での手数とPolicy Surprise Weightingの平均値のグラフです。
19路の囲碁だと50~150手目ぐらいがネットワークの生出力値と探索結果の差が大きくてそれ以降はどんどんPNやVNとの差が減っていて、囲碁の難しさは中盤>序盤>終盤のようです。
400手目以降はサンプル数10とかでぶれてます。

将棋と囲碁でゲーム性は違いますが似たような統計値使って調整できるんじゃないかと思います。

https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md#policy-surprise-weighting

 

AobaZeroで学習される局面の手数の割合

 投稿者:山下  投稿日:2021年12月26日(日)19時28分59秒
  学習される局面の手数の割合を温度1.0と温度1.3で調べてみました。
どちらも序盤、50手目ぐらいまでを学習してる割合が高く
中盤以上の手数が長い局面は少ないです。

序盤の手数が短いところは10分の1くらいに減らした方がいい気がします。
なんとなく80手ぐらいを中心とした正規分布みたいな形の方が強くなりそうな気がします。
初期局面が一番多いですが、これは単に統計を取っても(着手の回数と勝率)だいたい同じでしょうし、
0手目でなく、10手目ぐらいまでは学習させなくても統計取るだけで十分な気がしてきました。

温度1.3は30手前投了しない、という制約でガクンと下がっています。
200手以上、は200手に含めています。
 

単に温度を上げると質の悪い棋譜が多くできる

 投稿者:山下  投稿日:2021年12月25日(土)21時08分6秒
編集済
  AobaZeroで温度1の時と、温度1.3での投了手数の分布を調べてみました。
温度1.3だと40%近くの棋譜が30手~39手で投了しています。
30手までの投了を禁止してるので、31,32手目での投了が多いだろうな、と
思いましたが、予想以上でした。

温度を単に上げただけでは、質の悪い短手数の棋譜がたくさん出来てしまい、
強化学習の性能は落ちてる気がします。
つまり互角に近い変化にたくさん分岐するような手法が好ましい気がします。
(なおかつ、なるべくバラバラの局面になるように)
Policyの分布確率(+ノイズ)で30手まで進めて、30手での評価関数の勝率が
0.4~0.6の間のものだけ採用する、とか。

強くなればなるほど、互角に近い局面を生成するのは難しそうです。
グラフの100、は100手以上の投了です。温度1.3でも30手以下があるのは
詰まされてるせいだと思います。
 

AobaZeroで温度を1から1.3に変更で+33 ELO

 投稿者:山下  投稿日:2021年12月24日(金)17時52分10秒
編集済
  温度を1.3に上げてから195万棋譜作りました。
直近の85万棋譜での平均だと +33.2 ELO 強くなっています。

平均手数は88手から74手に下がり、千日手の割合は8.7%から3.2%に下がってます。

           以前   温度1.3   変化
レート     3130     3163    +33 ELO (5つの重みでの平均)
平均手数   88手     74手    -12 手
先手勝率   0.563    0.556   0.007
千日手率   8.7%     3.2%    5.5%

30手目での重複なしの棋譜の割合は30%から78%と、かなりバラバラになっています。
ただ予想で90%を超えると思っていたのですが。
30手目まで投了しないようにしています。31手目、32手目で投了する棋譜は多いです。

20blockでの比較です。40blockの棋譜は使っていません。
グラフだと40blockから続いているように見えますがたまたまです。
(重みは34285棋譜ごと、計測は5つの重みごと、なので34285 * 5 *5 = 857125 棋譜)

AobaZero(ELOのグラフなど)
http://www.yss-aya.com/aobazero/
重複なしの(ユニークな)局面が50%を割ると棋力は上がらない?
https://524.teacup.com/yss/bbs/3814
 

学習回数を4倍でもMixNetの性能は+130 ELOぐらい、と落ちない

 投稿者:山下  投稿日:2021年12月24日(金)11時33分46秒
  学習回数を10万回から40万回、20万回で学習率10分の1、で MixNetの性能を調べてみました。
MixNetは、+135 Elo、と学習回数を4倍に増やしても強さが同じで、ResNet+swish は+40 ELOとい
10万回の+83ELOから上昇がやや下がってます。
256x20bの4倍ResNetは10万回では+10だったのが+48とやや上昇。
MixNetをw1250(Aoba駒落ちの最終重み)と戦わせると-233 ELOでさすがに負けるのですが
それしか差がない、とも言えます。学習を続ければ4分の1のサイズで同じ性能になりそうです。

192x10block(3x3)のResNetに対する勝率。ミニバッチ64での比較。学習40万回。

勝   引  負 局数  ELO                           モデルのサイズ
484-130-186 800 ( 135) mix 640-160 3x3,5x5     mb64  24MB, swish
398-115-287 800 (  48) 256x20b                 mb64  89MB
401- 91-308 800 (  40) 192x10b                 mb64  26MB  swish
247- 95-458 800 ( -93) 192x 5b                 mb64  13MB

MixNet(40万回学習)の w1250(256x20b)、Aoba駒落ちの最終版に対するの勝率
117- 97-586 800 (-233) mix 640-160 3x3,5x5     mb64  24MB, swish

(再掲)学習10万回での比較
勝   引  負 局数  ELO                           モデルのサイズ
489-117-194 800 ( 134) mix 640-160 3x3,5x5     mb64  24MB, swish
376- 72-352 800 (  10) 256x20b                       89MB サイズが4倍(192x10bは26MB)
299- 62-439 800 ( -61) 192x 5b                       13MB
477- 34-289 800 (  83) 192x10b                       26MB  swish

実験条件は
Aoba駒落ちの棋譜を1000万棋譜から1050万棋譜まで、学習率0.01、ミニバッチ64で40万回学習。
20万回で学習率を0.001。ReplayBufferは30万棋譜。局面数では2560万局面を学習、になります。
PolicyとValueを学習しています。対戦は互角局面利用。
 

技巧2はgcc 8.4.0 では止まるがgcc5ならOK

 投稿者:山下  投稿日:2021年12月24日(金)11時00分27秒
  技巧2がubuntu 20, gcc 8.4.0 では Segmentation fault で止まります。
$ make release
$ cd bin
$ ./release
usi
isready
go infinite
Segmentation fault (core dumped)

make develop だと go infinite で下で止まります。
development: src/move.h:376: Move::Move(Piece, Square, Square, bool, Piece): Assertion `IsOk()' failed.

setoption name Threads value 1
でも同じでした。

gcc 5.4.0 では問題なく、下の情報でもg++-4.9 だと動くらしいので

$ sudo nano /etc/apt/sources.list
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
を追加して
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install gcc-5 g++-5

でMakefileを
CXX       = g++-5
とすれば動きました。

Linux 将棋ソフト「技巧」のビルド
https://reiwa-period.com/computer/gikou/
技巧
https://github.com/gikou-official/Gikou
 

レンタル掲示板
/318