鵺(NNUE)の飼育日記 vol.1
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

鵺(NNUE)の飼育日記 vol.1

2018-06-08 21:00
  • 1
鵺=NNUE評価関数
WCSC28で公開された新機軸
the end of genesis T.N.K.evolution turbo type D
チーム(@nodchip @ynasu87)敬称略

暫くは育成日記として失敗を綴っていきたいと思います

気づいた点
・ KPPT型よりCPUの負荷が大きい(Xeonフルロード時で70℃ほど)
・ 1cのみの使用時でも0.2GHzほどクロックdownするので仕様のようです
・ 序盤は独創的というか従来の整備された序盤とはかなり違う
・ 中盤以降にKPPT型より表現能力が高そうで読み勝ってる事や逆転が見られる
・ 容量が小さく軽い!(スマホやタブレットにKPP_KKPTから置き換われそう)
・ クロックdownの影響かNPSはKPPT比で10%ほど低め
・ 従来のKPPT型に比べて棋風が違う印象
・ KPPTとは違い入玉少なくなっている
・ 低スペックPCでも詰み50手付近まで読めるので終盤は本当に悪魔のごとき強さ
・ 計測時は負荷やクロックdownする事もあり物理コアで計測するほうが正確かもしれない

※学習して気づいた点などは一番下部

先ずはTNKさんや他の方の文献などを読みはじめる
当然の事ながら何も理解できません
何時もの如く体当たりを開始
コマンドの意味すら理解できておらず学習は失敗続き
※そもそもBLAS/OpenMPを有効に出来ないので激遅学習しか出来ない体たらく

一回目の学習内容
tttakさんの追加学習済みnn.binに自前教師を学習
やねうら王depth10での学習はKPPTだとyaselmoより少し強い程度
自前教師はそれより進捗が確認されておりましたので流用する事に
「validation_set_file_name」を指定しないで学習してたようで失敗
・ aperypaqからdepth8
・Apery_sdt5,wakame1st,wakame1sty,waqwaq,Geheimnisからdepth10
・合計20億弱

二回目の学習
validation_set_file_name(検証データファイルパス)を
QQRより少し強いと思われる評価関数からdepth14で100000局面作成
学習の途中でeta30とKPPT型の時の数値を直してない事に気づいたが時すでにお寿司
仕方なく出来上がりまで待ってテストしたが案の定ブッ壊れ関数の大失敗;;

三回目の学習
学習速度はスペック依存が少なさそうなのでサブPCで学習を試みる
※i7-3930k RAM16GB 「threads 10,Hash 8192」
AVX2命令に対応していないのでSSE4.2のlearn.exeを使用
暫くして確認してみるとRAMの使用率が落ちている?
何度か確認しながらやり直してみたが最初は8192MB使用しているが
暫くすると使用率が下がっているのでバグ?なのかは不明
以上の事からサブPCでの学習は諦める事に

・ 後にHash値は指定しなくても良いと気づく
・ nn_batch_sizeの大きさでHashが変動するようで
・ デフォ1000ですが1000000に指定するとシステム込みで17~18GBほど使用になる

四回目の学習
メインPCでコマンド類なども確認して学習を再スタート
RAMの使用量も落ちる事もなく最低限の学習ラインに到達した模様(Hash値16384指定)
etaを0.1,lambda0.33で20億弱の学習をしたところ元より弱くなっている
etaの値が0.1では小さすぎたのか1.0にして再学習

五回目の学習
メインPC使用 Hash値指定せずnn_batch_sizeはデフォの1000
etaを1.0 lambda0.33 標準てきな?学習コマンドで自前depth10のみで学習
弱くなっているので悩ましい・・・

六回目の学習
eta1.0 lambda0.01と最小値?での学習中
これで成果が出ないとすると教師との相性が悪いか
BLAS/OpenMPを有効に出来ていないせいで学習が失敗するのかもしれない
T.N.K.wcsc28にやねうら王depth10を使ってtttakさんと同じような学習をして
環境依存なのかを調べる苦行をする予定
結果はどえらいのが出来た
nn_20180603との対戦で18-1という今までで最高の駄目っぷり
検証データファイルパスがdepth14と学習教師から剥離しているせいか
nn_batch_sizeが1000では小さいからなのか・・・

七回目の学習
nn_batch_sizeを1000から1000000に変更(Hash16384相当?)
eval_save_intervalを100000000に変更以外はNNUE標準?のコマンド使用
5億ほどで一旦様子を見てみると若干進化?
明らかに弱くなってる事はないようで互角以上にはなっているのかも

八回目の学習
前回最低限弱くならない事を確認したので
tnk-wcsc28に自前教師を学習
nn_20180603と互角以上に渡り合える感じに育つ
このタイミングで「まふ」さんが新しい学習を提案
少ない教師でも効果があるようなので次は試す予定

九回目の学習
batch_sizeとnn_batch_sizeを1500000に変更
etaを可変絞りに設定して5億学習
少し弱くなっている?
もの凄い学習失敗は見られないが
進捗を確認するのも難しい

十回目の学習
まふさん提案の学習を試す
学習式はまふさん推奨のものを使用して
自前depth10を2億学習するので
etaなどを倍に指定
結果は弱くなっている
まふさん秘伝の方法があるのか
自前教師とWCSC28後の評価関数から出来た教師とは剥離があるのかを
確認するために教師を軽く作って実験の予定
tttakさん作成のものと同程度にはなるので教師が原因だと苦しい

十一回目の学習
WCSC28以降の評価関数から教師を作成
まふさんはdepth8という事なのでdepth9で1億を作成
学習式もまふ式を用いて学習するが大幅に弱くなる
lambda0.1だったので次回は増やして再学習の予定

十二回目の学習
lambda0.5に変更
0.1よりはましだが弱くなっている
次はNNUE標準?(batchsizeは大きめ)で
再学習の予定

十三回目の学習
先に検証としてtanuki-wcsc28にdepth9の1億をまふ式で学習
教師の質とまふ式学習の効果を調べるため
結果は1億の学習でも少しだけ強くなる事を確認
これはKPPT型で1億では必ず弱くなった事から考えると驚嘆の事実
まふさんはdepth8の1億でtttakさんの作成より+R30ほどに出来たようなので
学習専用定跡が優秀なのかもしれません

十四回目の学習
nn_batch_sizeを1500000に変更
新しく作成した2億で学習するも変化は少ない
※微弱くなってる?

十五回目の学習
nn_batch_sizeを2000000に変更
同じく変化は感じられない
※微弱くなってる?

十六回目の学習
eta可変を試してみる
教師数に合わせて最終が0.1と1になるようにする予定
最終0.1にすると若干の進捗?
次は最終を1にする予定

十七回目の学習
最終を1にするが変化は少ない
そもそも大失敗以外は進捗しているのかは誤差範囲内の気がする
違う教師でも質が変化しにくいので環境が整っていないせいかもしれない

十八回目の学習
一先ず一番良かったであろう方法で自前depth10をtanuki-wcsc28に学習
nn_20180603に互角以上になったので良しとする
※ベース評価関数

十九回目の学習
ベース評価関数にWCSC28以降に作った教師を学習
nn_20180603に+30~40程度?
誤差程度の可能性もあるが少し進捗はありそう
教師の質と量を増やして進捗が感じられれば成果を出せるかもしれない

二十回目の学習
ベースに新しい教師を全て学習
やっと、まふさんの評価関数と同等以上になる
・・・この段階でまふさんがブレイクスルーしたようで
+R100に到達した模様らしく影すら見えない状態に
教師を増やすか環境をさらに整えるか知識がない身は悩ましい限り

二十一回目の学習
教師をNNUEからも作成
depth8と浅め?で3億作成したものを学習してみる
強さは変化があまり感じられないが学習時の数値がよく動いてるように見える
少しの進捗では数百局程度の対戦だと誤差も含めて成否が分かりにくい

二十二回目の学習
次の学習との比較で3億程度の教師でetaを0.1 lambda0.33で学習

二十三回目の学習
etaを0.3 lambda0.33で学習をして二十二回目と比較してみる
結果は二十三回目のほうが大幅に弱くなる
Qhapaqさんが以前に言及していたように
教師が少ないとlambdaを使用しないほうがいいのかもしれない
tttakさんもlambda0.01が強かったと言及している
eta0.1のように薄い学習の場合はlambdaを使用しても効果が出そう
次はeta0.3 lambda0.01で比較予定

二十四回目の学習
eta0.3 lambda0.01で学習
eval_save_intervalを10000000と1000000000(一回で全てを学習)の
二種類も試すが弱くなっているようで特に1000000000のほうは明らかに駄目
少ない教師でnn_batch_sizeを多目にとってる場合はeval_save_intervalを10000000
にしたほうが幾分「マシ」の結果(マシなだけで最適解かは分からない)

二十五回目の学習
eval_save_intervalを1000000 loss_output_intervalを同じく1000000
newbob_decay 0.8で細かく保存しつつリストアも使用
悪くはなさそうだが進捗確認は相変わらず難しい
この辺りで一旦整理する事に

対 20180608mafu 備考 探索は同じ


対 QQR 備考 探索 k_ohaga氏作成のGW(KPPT,NNUE)


対 nn_20180519 備考 探索は同じ

評価関数 M-Fang0

一番伸びがありそうな学習でできたものは「20180608mafu」より進捗が見られた
※業界標準ではなく1000~1200万ノードで投了値も1500 +R30程度?
QQRに対してもロタさん計測のYOではなくGWなので概ね合っていそう(差は無いに等しい)
ただQQRとの計測を見てみると序盤が奔放すぎて必ずリードされてしまい
中盤から終盤入り口にならないと力が出ない偏った子の印象で
20180608mafuにも序盤で差がつけられてしまうので評価が難しいところ

KPPTのほうもQQRより若干勝率が良い評価関数は存在しているが
相性など多くの対局で検証するのは6割ほどの勝率ができてからにする予定


学習備忘録
注意 理論的なものではなく素人が体当たりした感想です
------------------------------------------------------------------------------------------------
nn_batch_sizeを大きくする(100万以上)これは開発者の方も言及していましたが
学習がうまく進まないかもしれません
具体的に100万.150万.200万(batch_sizeも同じ)で比べてみても
100万が一番良さそうですし10万にするとCPUがよく動いている
もちろん教師の質や数でも変化するでしょうが10億程度ではこのような結果でした
------------------------------------------------------------------------------------------------
学習時に
INFO: largest min activation = 0, smallest max activation = 1
INFO: largest min activation = 0, smallest max activation = 0.171841
INFO: largest min activation = 0, smallest max activation = 1
このようなログがでますが
1行目は1固定? 2行目はよく変動している 3行目は1が多い
気になるのは3行目で学習が進まない時はずっと1になっている気がする
逆に1以外が多い場合は学習が進んでいる気がする
------------------------------------------------------------------------------------------------
「まふ式」を用いてもそんなに差は出ない
まふさんの方式は学習用定跡が優秀なのかもしれないし
tttakさんの未学習部分にうまくハマッた可能性も考えられる
ブレイクスルーしたものは公開されないようなので比較はできないのと
教師は1億で弱くなりにくいが進捗させるには教師が足らないようだ
検証データを用いてnewbob_decayもお守りとして使用したほうが
今のところ精度が一番高い結果となっているし正規の手法で失敗するほうが
駄目ブログとしての意味も幾分マシなようにも思える
depth8で多目の教師作成かdepth10で10億程度を作成しなければ検証は難しいかも
------------------------------------------------------------------------------------------------
やねうら王depth10教師よりKPPTでは進捗があった自前教師(+R50程度のもの)
学習させても何故か伸びはなくtttakさんのNNUEにぶつけても弱くなる
教師にも相性があるかもしれないのとtttakさんは凄く上手に学習できている気がする
------------------------------------------------------------------------------------------------
一番良かった学習式でtanuki-wcsc28に教師を弱い順?にdepth8,depth10,depth9,depth10
全て突っ込んでみたもののtttakさんと五分程度にしかならず
依然として学習方式が成功しているのかは全く分からない状態
基準となるtttakさんの物と20180608mafuに6割勝てるように目標を設定
------------------------------------------------------------------------------------------------
教師が1億程度でも確かに伸びは散見できる・・・が、
NNUE特有なのかもしれないが多目の教師で学習したものに比べて
評価値が強く出ていたりガタガタのグラフが多く見受けられる
NNUE同士の対局でも評価割れている事が多いので工夫の余地はありそう
------------------------------------------------------------------------------------------------
新しく作った教師などで学習を進めるとNNUE特有?の序盤が薄れて
飛車先を切っていく棋風が多くなってきた
tttakさんの振り飛車関数もそうだが少ない教師でも反応するあたり
教師によって棋風が左右されそうな気もする
KPPTの時のように結局は飛車先を切る棋風が多くなるのは
学習するにしても偏りそうだし面白味がなくなりそう
NNUEやAperyなどのように広い序盤で学習を進めたい気もする
定跡を使用する前提での再考なども考えたい
------------------------------------------------------------------------------------------------
NNUEから教師を作成するとKPPTより大分時間がかかる気がする
BLAS/OpenMPを有効に出来ないせいかもしれないが・・・
NNUEの中終盤以降の粘り強さも時間がかかる要因かもしれない
------------------------------------------------------------------------------------------------
新しく作成した教師はランダムムーブを序盤に使用して定跡を使用しない
この教師で学習するとNNUE特有?の棋風がさらに濃くなり
棒銀や忍者銀のように銀を繰り出す棋風が多く見けられるようになってきました
20180608mafuや+R30程度の評価関数などもそうですが
古の後手横歩でハメる?棋譜が散見しています
ノード数が1500万程度では選んでしまう危険性があって
30手程度で評価値が-2500を超えて後手勝勢になってしまうようです
(具体的には横歩で先手が角交換した後に8九飛成り)
------------------------------------------------------------------------------------------------
序盤を好みに矯正するために教師作成時に工夫を入れてみましたが
以前から気になっているのがno_bookでランダム要素を全て0にすると
教師の作成が凄く遅くなるのとlimitを1000とかにすると同じように
凄い時間がかかるというか進まない現象がある
苦肉の策として2手目まで定跡を使用してみたりランダム要素を入れてみたり
誤魔化してきたのだがlimitが1000とかで序盤だけ矯正出来るような教師作成時に
時間節約が出来るかと思ったみたのだが何か間違っているのか
あとgodwhale_childのlearn.exeは存在しているのだろうか?(後にしてた事を確認)
------------------------------------------------------------------------------------------------
20180608mafuとの対戦を見ていると20180608mafuは
評価値が少し大きい感じで序盤でも+50程度高い印象
limit3000で教師作成と学習をしているようなので
中盤過ぎまでは強めの評価値で押し切る場合が多い
自前教師はlimit32000でdepth10な事もあるのか
中盤以降に逆転が多くて-500程度は頻繁に-1000でも
ジワジワ逆転するNNUE特有の傾向が強い分
序盤の奔放な部分をどう矯正するかが課題でもありそう
(角換わりで3三や7七に玉で顔面受けしたり棒銀穴熊してみたり)
------------------------------------------------------------------------------------------------
ゴリゴリの定跡で(詰みまで収録)教師を浅いdepthで作成
学習時にlimitを300.500.1000.1500などで調べてみる
limitによって学習する量が結構違うので検証は合ってそう
KPPTなどは浅いdepthで学習すると必ず弱体化したのだが
NNUEではそうでもない様子で20180608mafuに序盤でリードを許さない
中盤の入り口まで互角以上に進行できるようになるっぽいが
今度は中盤で必ず逆転されてしまうような感じになった
序盤で矯正もできるみたいだが中盤との繋がりがよくないのかもしれない
今度は中盤を工夫してみたいがlambdaを効かせてlimit2000~3000に
照準を合わせた教師と学習法を見つけてみたい
------------------------------------------------------------------------------------------------
学習パラメーターの重要な項目の一つのetaを同じ評価関数、教師に数値を変えて学習観察
以前も触れた「INFO: largest min activation = 0, smallest max activation =」の三行目が
etaやlambdaを上げると動きが多くなる事が見受けられるが
動けば学習成功している訳ではなさそう
etaのみを0.1~1.0程度まで上げて観察すると「hirate eval」がよく変動するようになる
0.1で何度も擦り倒しても変動はほとんどなく10~20以内で変動は少ないが
eta1.0などにすると-20~80程度までかなりブレ幅があるようなのだが
これが何を意味するものなのかも分からないので要検証中
------------------------------------------------------------------------------------------------
学習式は出来る限り試したけどどれが成功なのかは結局不明
最近作った教師でも20180608mafuに勝ち越すのが難しい状況
唯一勝ち越せてる評価関数をQQRやnn_20180519と相性見てから
さらなる教師作成に作業を変更する予定
depth10の5億 depth11の2億 depth12の一億
どれが実験には向いてるのかよく考えてから
------------------------------------------------------------------------------------------------
一先ず良さそうな出来の評価関数(上部に画像添付)をuuunuuunさんや他の方に預けました
計測でいつもお世話になっているロタさんにもお渡ししたので
ありがたい事に直ぐ計測をして頂きました
その計測結果が20180608mafuの勝率59%となっており
手元の計測結果三種類(20180608mafu,QQR,20180519tttak)と
かなり差があるようで環境の違いでここまで差が出ると個人で作業しての確認は無理;
計測の違いはCPUは当然として
ロタさん
ハッシュ1GB スレッド18 終盤でのNPSが約1300万 エンジンtanuki-wcsc28
手元の設定は
ハッシュ8GB スレッド26~30 終盤でのNPSは20180608mafuで約1000万 他は1300~1500万
NPSの差が200~300万で勝率がここまで変わってしまう?
エンジン k_ohagaさんのGW_NNUE
ハッシュの差は1秒程度では1GB程度でも問題なさそう?(ECCとロタさんのほうは高速)
スレッド数による精度?
一番考えられるのはGWとYOのエンジンの違い
20180608mafuが勝率60%だとするとnn_20180519tttak以下のRとなりそうですし
nn_20180519tttakとは58%の勝率なのも環境差としたら計測が役に立たない
この条件を差し引いても学習ー計測で良い物を探すのは個人では大変すぎるし
今の作業が終わったらこの先続けるのは難しい・・・
------------------------------------------------------------------------------------------------
最後の悪あがき前にHT/OFF 物理コアのみ使用で2秒計測(2200万~終盤約1800万)
思い当たるのがクロックdownするのでスレッドを多くすると弊害があるかもしれない
この条件で若干伸びがあったものをuuunuuunさんに確認してもらう事に
これで大幅に誤差があるとすると投了に近づく
------------------------------------------------------------------------------------------------
uuunuuunさんに確認してもらってる間に再度同じ条件で確認
(HT/OFF 物理コアのみ使用で2秒計測 2200万~終盤約1800万)
やはりQQRにも少しだけ強そう?(エンジンはk_ohagaさんのものを両方使用)

途中経過


終了

評価関数 M-Fang0.1

------------------------------------------------------------------------------------------------
遅ればせながら「illqha」関数にも調べてみました
沢山の人が言及しており、ただただ強い!
色んな考察などもされていて早く勉強しておけばと悔やまれる
良い学習式やエンジン開発などもされてるようで
今の確認作業が終わったら考察してみたいと思っております
------------------------------------------------------------------------------------------------
懸案の計測誤差についてillqha1.1とも対戦してみました



※ 探索は両方ともk_ohaga氏作成のGW_NNUE
いま確認しているuuunuuunさん方式よりノードが少し高い方法で
HT/OFFの物理コアのみで計測する方法を取り一番良さそうなものは
100局と少ないですが若干良さそうな結果になっており
やはり環境差や少ないノード数で変化するのでしょうか
新しい計測は従来より逆に200~300万ほど高めなので
さらに上げていけば逆になり兼ねないし何を基準に進捗を見るのかが不明になる気がする
この評価関数が失敗作と断定出来たならば最後の失敗物として
棋譜や学習logなど詰めて放出するかもしれません(誰もいらんだろうけど
評価関数 M-Fang0.2
------------------------------------------------------------------------------------------------
uuunuuunさんに環境差による計測誤差を図々しくもお願いしておりましたが
HT/OFF 物理コアのみ使用で2秒計測で良さそうだったものは
illqha1.1に探索GWで若干負けでdolphin使用で互角となっているようで
20180608mafuより若干進捗あった事は間違ってなかったようです
驚いたのはdolphinは専用かと思っておりましたがNNUE用にチューニングされてるせいか
こちらの評価関数でも少し良いのかもしれません(相性?)
評価関数 M-Fang0.1
------------------------------------------------------------------------------------------------
HT/OFF 物理コアのみ使用で2秒計測で良さそうだったillqha1.1に56%だったものに
新しい学習式で追加学習したものは58%まで勝率が上がった
これが正しいのか追加学習分の効果は不明だが
60%まで勝率が見えてきたのと60%まで勝率が確認出来れば
誤差や相性問題から流石に解放されて次の教師作成に移行できそう
基準となるillqha1.1意外にもQQRかnn_20180519tttakとも
計測を少しだけ追加できれば確認したいところ


評価関数 M-Fang0.3
------------------------------------------------------------------------------------------------
M-Fang0.3にNNUE系から作成したdepth8&9の混合教師を学習してみる
学習logがかなり違うようだが結果がどのように出るかで
次の教師作成がKPPTかNNUEどちらが向いているのかを決める予定
それともオリジナルKPPTにも追加学習させて進捗を確認できるかの愚行をおかす事も考え中
------------------------------------------------------------------------------------------------
M-Fang0.3にNNUEから作成したdepth8&9の混合教師を学習
結果はかなり弱くなっているようなの最低ラインがdepth10なのかもしれない
NNUEで教師を作るのが難しいのかを調べるのも課題になりそう
illqha1.1はQQRよりR50くらい違うので
depthを一つ上げるくらいの差はありそうなんだが。。。
もう一つが教師作成遅すぎ問題
これが悩みの種でdepthを下げたから単に遅いという訳ではなく
NNUEからdepth14でランダム要素0で定跡使用の場合などに
3時間くらいかけても全く進まなかった
逆にランダム要素を使い定跡を使用しないと何とか進む
NNUEの奔放な序盤を矯正するのに定跡は使用したほうがいいとは思うのだけれども
elmo瀧澤さんにご教授頂いたのはNNUEは一気に次元が下がるので
「重複局面ばかりで進まないのでは」と、アドバイスを頂く事ができました
そうすると定跡終わった部分でランダム要素投入?(これは危険な気がする)
KPPTから教師作成時もYOとGWでは1.5~2倍近く時間が違う事も確認しているので
重複局面に対するアプローチが学習部によっても違うのかもしれない?
定跡使用時にdepthを10以上にする場合はKPPTを使うか
学習部を弄る他今のところ思いつかない
ランダムのみでdepth12に手を出すかdepthを10でゴリゴリいくか・・・悩ましい
------------------------------------------------------------------------------------------------
KPPTからdepth12 NNUEからdepth10
教師作成速度はKPPT_depth10<NNUE_depth10<KPPT_depth12
大体倍になっていく程度の時間がかかる
depth8だとゴリゴリ進んでいく錯覚に陥るほどに麻痺してるので
そのうちKPPP_depth10も同じ感覚になりそう(既になりかけてる)
KPPTとNNUEの混合教師は性質があまりに違いそうだし
ただでさえ少ない教師でやりくりする事を前提にすると
学習が散らかり過ぎる気もするので別に作成したほうがいいかもしれない
一先ず伸びしろはKPPTでも残っていそうなのでdepth10を増量する事に
新しい学習式の効果も検証しながら進捗を確認作業
これが効果がありそうなら環境をさらに上げないといけなくなりそうで不安でもある
------------------------------------------------------------------------------------------------
計測誤差で行き詰ってしまいuuunuuunさんに甘えてしまいました
思ってた以上の計測数とお手本を見せて頂きましたので
この場をお借りしまして再度御礼申し上げます

GW/M-Fang0.1 160-28-183 Dolphin/illqha1.1
371局 174勝 197敗
勝率: 0.46900269541778977
標準誤差: 0.025961310190672972
95% 信頼区間 [0.42048517520215634, 0.5202156334231806]
相対イロレーティング: -21.566791151597286
標準誤差: 18.109366313242653
95% 信頼区間 [-55.72554462445748, 14.054922679551893]

Dolphin/M-Fang0.1 233-38-229 Dolphin/illqha1.1
500局 252勝 248敗
勝率: 0.504
標準誤差: 0.022393579822166783
95% 信頼区間 [0.46, 0.546]
相対イロレーティング: 2.7795439821311296
標準誤差: 15.561648980458006
95% 信頼区間 [-27.85437125655777, 32.05471593905337]

棋譜はuuunuuunさんのドライブから
https://t.co/zv31xptOPz
------------------------------------------------------------------------------------------------
当面の目標はillqha1.1に多少の誤差はあっても60%超えの勝率を目標
教師はdepth10で作成しながらdepth12,14でも進む方法を見つけないと時間が無駄に
depth14で進まないとなると何処かで限界が近いのかもしれない
学習式も「tttakさん」「まふさん」「めきっとさん」とかなり違うので
提案できるかどうかの検証も必要なのですが・・・(学習logは保管,添付)
他の人の学習式のほう効果があると真似したくなるので暫く我慢
計測は誤差が出にくいように「HT/OFF 物理コアのみ 1.5秒」
これで1500万ノードは担保できそうなので基準と設定
M-Fang0.1とのuuunuuunさん計測でk_ohagaさんのNNUEエンジンより強い事が
確認されているのですが今後もアプデされるようなので暫くは変更無しでいこうと
NNUEを強くしながらエンジン開発も出来るなんて野生でも凄い人が多すぎる
k_ohagaさん然りどこかの凄腕エンジニアなんでしょう
------------------------------------------------------------------------------------------------
M-Fang0.4(illqha1.1に64%)
※内容は別記事に記載



思った以上の勝率となりましたが誤差があっても60%以上なら
相性などはそこまで気にしなくて良い気がする
誤差を加味してもillqha1.1に+R50は期待したい
計測前にテスト対局した時は後手振り飛車がこのノード帯で出現していた
添付の棋譜の中に存在しているのならば定跡で矯正しやすいと言えそう
そもそも学習式を提案できるほどでもなく教師数で進捗しているだけかもしれない
最初の2億と新しいのが3億の計5億のおかげかもしれないし
その教師数のおかげで学習式による効果を悪くても誤魔化せてるだけかも
嬉しい誤算はKPPTのdepth10でも伸びしろがありそうだという事
------------------------------------------------------------------------------------------------
エンジンによるRの差異があるので比較は難しいですが
uuunuuunさんサイトを基準としておりますので
比較的計測数の多いものとの比較から推定する事に
illqha1.1に同じエンジン使用で64%(+R100)と
自分でも嘘っぽい結果となっているので少し確認も兼ねて
GW/QQR 対 GW/M-Fang0.4
R150差とかありえないでしょうけど勝率70%で到達
DolphinエンジンはGW/NNUEより+R20ほどのようなので
68%の勝率でクリアとこれでもハードルが高い
illqha1.1に+R50だと仮定で64%の勝率が必要
この事から最低64%~68%で合格
T.N.K-WCSC28/nn20180519tttak
今度はこちらのエンジンがGWなので+R20?
最大R200差は勝率76%(無理でしょ)
R150差として70%
最低70%~76%で合格
この計測するくらいなら教師増量のほうがいい気もする
------------------------------------------------------------------------------------------------
今後の測定テストも兼ねて
GW/QQR VS GW/M-Fang
物理コアのみ 2秒でテスト対局を観察
NNUE 2200万~終盤約1800万/KPPT 3000万~終盤約2000万
70%勝つのって絶対無理な気がしました
観察してみるとQQRは上記ノードでも袖飛車したり横歩は青野流を指す
M-Fangは青野流を指す事は出来ないし(3六に飛車を引く)
KPPT系の序中盤の定跡に近い進行のまま負ける事も多い
教師作成に定跡をうまく使用しないといけないし学習用定跡も必要かも
確かに-1000くらいからナイアガラさせる棋譜もチラホラあるけど
NNUEにもスッポ抜けもあるし評価値が違い過ぎる
逆にNNUE同士だと中盤くらいまで拮抗して読み勝つ場合がほとんどで
似たような進行で勝率が高くなっている可能性が凄く感じられる
めきっとさんはillqha1.1がGW/QQRに勝率65%
ロタさん計測によるとillqha1.1が52%でYO4.82だと60%
M-Fang0.1(uuunuuunさん計測用)で終盤1800万ノードで57%
57%は+R50なのでuuunuuunさん計測と整合性があるといえそう
※QQRに+R50だとDolphin/illqha1.1と同等
QQRに65%だとR4350換算になるので色んなところでも
ノード数の差で計測誤差に苦しんでいるような気がいたします
個人的に極端な相性はあまり信じていない性質なのですが
違った形式の評価関数では傾向が違って当然かと思いますし
NNUE系同士では勝率が強く出る傾向は確かにありそうですね
(それでもQQRに学習のみで+R50超えは凄い事ですが)
相対的にM-Fang0.4でもR4330程度になると予想されます
大会で使用する場合などは序盤の奔放さを定跡で補えるし
NNUEの改良ポイントでもあります
M-Fang0.4は確かに進捗はあったようですが
相対的な+R50以上の壁はもう少し先にありそう
100局×3では計測には少なすぎますが60%以上の勝率でも
実Rとは結構な誤差がある例だと確認できますね
※illqha1.1に56%58%64%計100局づつの合計300局 平均すると+R63
KPPTの時は大概学習しても元より弱くなる事がほとんどで
せめて弱くならないようにするのも大変でした
+R10にするだけでも大変な労力と根気が必要だったのですが
NNUEは過学習が抑えられているようなので大失敗が少なく
徐々にでも進捗が見られるのが継続力に繋がっています

GW/M-Fang(0.2~0.4) GW/illqha1.1
300局 177勝 123敗
勝率: 0.59
標準誤差: 0.02846726645871519
95% 信頼区間 [0.5333333333333333, 0.6433333333333333]
相対イロレーティング: 63.22726196896345
標準誤差: 20.443450579395666
95% 信頼区間 [23.196778791074692, 102.46941252902563]
------------------------------------------------------------------------------------------------
一先ず学習式の提案が出来るか再検証する事に
T.N.K-WCSC28に「やねうら王depth10」で学習成功している
nn_20180603(tttakさん作成)にSDT5前に作った自前depth10を再度ぶつけてみる
KPPT学習時には若干進捗があったので今回成功すれば
今の学習式はこれまでより幾分マシとの提案ができると思うのですが
------------------------------------------------------------------------------------------------
nn_20180603(tttakさん作成)にSDT5前の教師で追加学習
ノード数は2200万~終盤約1800万 エンジンGW
20180608mafuと互角程度の勝率なので進捗があると提案できそう
dropboxに開発者用のリンクを作成して資料となれば嬉しいかぎり


------------------------------------------------------------------------------------------------
M-Fangはillqha1.1に強めの勝率が出ているだけの気もする
illqha1.1はQQRとの対局はロタさん計測では低めの勝率で
Qhapaq(wcsc28)との比較では+R120でR4330程度になっている
全ての相性からRを算出するのは個人で無理ですし
その時の一番Rが高いものと比較するのは当てこすりにしか思えない
60%以上の勝率を確認しても結局は今までと同じで正確な事は分からないので
学習式の提案が終わったら失敗ブログとしての役目は終わりそう
------------------------------------------------------------------------------------------------
M-Fang0.4に教師を増量して追加学習
う~~ん・・・・・二種類試したけどillqha1.1より明確に弱い
過学習になっているのだろうか
増量しても効果が無いとなると新しく要素を変えた教師作成が必要なのかも
こうなるとM-Fang0.2あたりに先祖返し的な戻し学習で検証しないといけない
illqha1.1に勝率を上げるというよりKPPT系にも勝率を良くしたい
エンジンや評価関数の形式の差異による誤差はKPP_KKPTの時も思ったけど
個性の差なので何方に贔屓目で見るかにも考えは変わる筈だけど
uuunuuunさんサイトの膨大な計測作業を目安にするしか信用するのは難しい
棋譜も保存されて計測条件なども平等になるように考察されておられるし
自分の都合だけで計測を信じてしまうと痛い目を見る
めきっとさんのillqha1.1に自前教師を一度ぶつけてみる予定
これで少しでも進捗があれば教師と学習式は問題ないと言えそう
リンクなどは作成して添付は終わったので確認作業を残すのみ
------------------------------------------------------------------------------------------------
illqha1.1に追加学習するも微弱くなっている
対局を見ても横歩系が多くなっていてM-Fangとは
棋風も違うように感じられるので育て方の違いなのかも
M-Fangもversion0.5にいけるほど伸びはなくなっていて
ここにきて頭打ち感が否めない
次はNNUE系からdepth10の教師作成がラインになりそう
学習式を真似るのは何故かしたくないし
提出も終わったのでこの辺りで整理する事に
------------------------------------------------------------------------------------------------
鵺(NNUE)の飼育日記 vol.2 ar1636874
広告
コメントを書く
コメントをするには、
ログインして下さい。