Re: DeepMind’s MuZero picks up the ru... | zakki | 2021年 1月 3日(日)22時41分10秒
|
Leela 0.11.0について | 灰色猫メール | 2021年 1月 7日(木)03時25分42秒
|
Re: Leela 0.11.0について | zakki | 2021年 1月 8日(金)11時14分8秒
|
Re: Leela 0.11.0について | 灰色猫メール | 2021年 1月 8日(金)15時56分40秒
|
時間切れや同種の対戦を削除したCGOSのBa... | 山下 | 2021年 1月11日(月)16時46分19秒
|
AobaZeroのリプレイバッファを100万棋譜に | 山下 | 2021年 1月11日(月)16時52分12秒
|
CGOSの時間切れ | zakki | 2021年 1月12日(火)16時53分59秒
|
Re: CGOSの時間切れ | 山下 | 2021年 1月12日(火)19時51分59秒
|
Re: CGOSの時間切れ | 山下 | 2021年 1月16日(土)15時01分16秒
|
第12回UEC杯が3月20、21日に | 山下 | 2021年 1月21日(木)17時03分39秒
|
kata1のCGOSでのBayesElo | 山下 | 2021年 1月28日(木)21時58分31秒
|
AobaZeroでの800 playout/手 vs 1600 vis... | 山下 | 2021年 2月 2日(火)21時11分59秒
|
playoutとvisitの定義 | 48 | 2021年 2月 5日(金)10時32分45秒
|
Re: playoutとvisitの定義 | 山下 | 2021年 2月 5日(金)19時06分41秒
|
LeelaZeroでの800 playout/手 vs 1600 vi... | 山下 | 2021年 2月 6日(土)17時15分53秒
|
LeelaZeroが終了 | 山下 | 2021年 2月 9日(火)09時05分43秒
|
Re: 第12回UEC杯が3月20、21日に | 山下 | 2021年 2月12日(金)15時36分43秒
|
Aobazero教師局面の更新について | たややん | 2021年 2月13日(土)19時00分0秒
|
Re: Aobazero教師局面の更新について | 山下 | 2021年 2月13日(土)23時22分36秒
|
Re: Aobazero教師局面の更新について | たややん | 2021年 2月14日(日)09時11分0秒
|
Re: 第12回UEC杯が3月20、21日に | 山下 | 2021年 2月15日(月)09時24分53秒
|
policy headの構造をdlshogiと同じ2187通り | 山下 | 2021年 2月18日(木)08時47分14秒
|
Re: プロ棋士とfloodgateのレート | 山下 | 2021年 3月 8日(月)11時28分8秒
|
AobaZeroの棋譜生成について | やねうらおメール | 2021年 3月12日(金)06時41分56秒
|
Re: AobaZeroの棋譜生成について | 山下 | 2021年 3月12日(金)10時33分8秒
|
Re: AobaZeroの棋譜生成について | やねうらおメール | 2021年 3月12日(金)18時17分17秒
|
将棋GUIとやりとりについて | トモ | 2021年 3月16日(火)21時15分8秒
|
Re: 将棋GUIとやりとりについて | 山下 | 2021年 3月19日(金)21時32分25秒
|
Re: 第12回UEC杯が3月20、21日に | 山下 | 2021年 3月19日(金)21時35分5秒
|
Re: 将棋GUIとやりとりについて | トモ | 2021年 3月20日(土)09時29分25秒
|
SAIが20bx256に移行して+350Elo | 山下 | 2021年 3月24日(水)17時50分37秒
|
lc0のkldgainでplayout数を可変にすると学... | 山下 | 2021年 3月27日(土)17時04分2秒
|
3090はAobaZeroだと2080Tiの1.58倍 | 山下 | 2021年 4月 2日(金)16時24分15秒
|
playout数で弱くするよりも、Softmaxの温... | 山下 | 2021年 4月 7日(水)16時02分2秒
|
Re: playout数で弱くするよりも、Softmax... | 山下 | 2021年 4月 9日(金)12時39分50秒
|
(無題) | 48 | 2021年 4月12日(月)13時07分44秒
|
Re: playout数で弱くするよりも、Softmax... | 山下 | 2021年 4月12日(月)21時38分44秒
|
kata1は+60Eloほど強くなっている? | 山下 | 2021年 4月17日(土)19時41分35秒
|
AobaZeroの追試を3日後に終了します | 山下 | 2021年 4月23日(金)16時43分55秒
|
(無題) | 48 | 2021年 4月23日(金)19時54分2秒
|
Re: AobaZeroの追試を3日後に終了します | 山下 | 2021年 4月24日(土)14時11分32秒
|
(無題) | tns | 2021年 4月25日(日)08時42分39秒
|
Re: AobaZeroの追試を3日後に終了します | 山下 | 2021年 4月26日(月)15時23分34秒
|
40ブロックの件 | 48 | 2021年 5月 3日(月)04時45分45秒
|
Re: 40ブロックの件 | 山下 | 2021年 5月 3日(月)11時34分20秒
|
(無題) | 48 | 2021年 5月 4日(火)09時39分32秒
|
選手権の順位の推移 | 山下 | 2021年 5月 6日(木)06時38分49秒
|
40bで一瞬つよくなる現象 | やねうらおメール | 2021年 5月11日(火)08時24分27秒
|
Re: 40bで一瞬つよくなる現象 | 山下 | 2021年 5月12日(水)08時27分16秒
|
AobaZeroに3手詰を組み込んでもほぼ効果なし | 山下 | 2021年 5月13日(木)12時46分33秒
|
(無題) | tns | 2021年 5月14日(金)16時52分36秒
|
Re: AobaZeroに3手詰を組み込んでもほぼ効... | 山下 | 2021年 5月16日(日)14時25分18秒
|
選手権の順位順の星取表 | 山下 | 2021年 5月16日(日)14時27分59秒
|
Re: AobaZeroに3手詰を組み込んでもほぼ効... | zakki | 2021年 5月18日(火)23時05分19秒
|
Re: AobaZeroに3手詰を組み込んでもほぼ効... | 山下 | 2021年 5月19日(水)13時48分39秒
|
(無題) | zakki | 2021年 5月19日(水)19時19分54秒
|
40blockに移行後の先手勝率と宣言勝ちの推移 | 山下 | 2021年 5月22日(土)15時25分47秒
|
PALの強化学習の詳細版が公開されています | 山下 | 2021年 5月23日(日)01時01分53秒
|
将棋の駒落ちを人間の知識なしで学習させ... | 山下 | 2021年 6月 6日(日)18時16分25秒
|
Aoba駒落ちの引き分け率の変化 | tns | 2021年 6月10日(木)09時29分19秒
|
Re: Aoba駒落ちの引き分け率の変化 | 山下 | 2021年 6月10日(木)16時15分38秒
|
gikou2_1c相手だと40blockは+100から+200... | 山下 | 2021年 6月20日(日)17時41分18秒
|
Aoba駒落ちのWindows版を公開しました | 山下 | 2021年 6月23日(水)14時16分54秒
|
Aoba駒落ちのWindows版を動かしてみました | 48 | 2021年 6月24日(木)04時25分27秒
|
Re: Aoba駒落ちのWindows版を動かしてみま... | 山下 | 2021年 6月24日(木)10時36分36秒
|
Aoba駒落ちの学習中のサンプルも公開しま... | 山下 | 2021年 6月25日(金)21時42分0秒
|
Colab Proを試してみました | 山下 | 2021年 6月27日(日)21時08分45秒
|
KataGoが1.9.0で+75Elo強く | 山下 | 2021年 7月 3日(土)08時48分27秒
|
コラッツ予想が解けたら1億2千万円 | 山下 | 2021年 7月12日(月)11時39分48秒
|
CGFオープンが10月9日(土)、10日(日)に開催 | 山下 | 2021年 7月21日(水)16時16分15秒
|
StockfishがChessBaseを訴える | 山下 | 2021年 7月25日(日)11時10分8秒
|
Policyのみの強さだと自己対戦の弊害は少... | 山下 | 2021年 7月25日(日)12時49分28秒
|
駒落ちでは手数が長いほど下手勝率が高く... | 山下 | 2021年 7月28日(水)10時38分54秒
|
KataGoの7路盤研究 | 山下 | 2021年 8月 7日(土)11時56分22秒
|
6枚落ちの上手だと時間をかけても水匠U、... | 山下 | 2021年 8月 9日(月)15時30分18秒
|
KataGoが60bに移行 | 山下 | 2021年 8月10日(火)12時11分35秒
|
Colab Pro + が出来たようです | 山下 | 2021年 8月27日(金)12時24分36秒
|
6枚落ちも平手とほぼ同じペースで強くなっ... | 山下 | 2021年 9月 7日(火)01時26分53秒
|
LCBはAoba駒落ちで+80から+160の効果 | 山下 | 2021年 9月 7日(火)20時28分33秒
|
6枚落ちで負けました | 山下 | 2021年 9月 8日(水)08時30分57秒
|
RE:6枚落ちで負けました | 都万 | 2021年 9月 9日(木)05時59分47秒
|
Re: 6枚落ちで負けました | 山下 | 2021年 9月 9日(木)11時34分58秒
|
六枚落ち | 都万 | 2021年 9月 9日(木)17時43分28秒
|
六枚落ち | 通りすがり | 2021年 9月 9日(木)22時04分13秒
|
六枚落ち | 48 | 2021年 9月11日(土)10時23分44秒
|
Re: 六枚落ち | 山下 | 2021年 9月11日(土)16時55分2秒
|
(無題) | 48 | 2021年 9月11日(土)19時02分37秒
|
40bが強くならないのは学習させてる変化が... | 山下 | 2021年 9月11日(土)20時24分13秒
|
(無題) | 48 | 2021年 9月11日(土)23時03分51秒
|
Re: 40bが強くならないのは学習させてる変... | 山下 | 2021年 9月12日(日)04時51分49秒
|
1手800playoutだとkldgainは効果ありです... | 山下 | 2021年 9月12日(日)12時57分18秒
|
相手が振飛車穴熊に組むだけで勝率95% | 山下 | 2021年 9月16日(木)14時51分11秒
|
重複なしの(ユニークな)局面が50%を割ると... | 山下 | 2021年 9月16日(木)21時35分44秒
|
Aoba駒落ちでの重複なしの局面の割合 | 山下 | 2021年 9月19日(日)11時58分16秒
|
KataGoの過去の学習棋譜サイトが停止中 | 山下 | 2021年 9月19日(日)13時49分34秒
|
kldgainで学習するようにしてみました | 山下 | 2021年 9月20日(月)15時45分7秒
|
駒落ちの宣言勝ち対応エンジンは+35 Eloほ... | 山下 | 2021年 9月20日(月)16時16分58秒
|
10blockのAobaZeroは20blockより120Elo弱い | 山下 | 2021年 9月21日(火)11時30分36秒
|
Re: 重複なしの(ユニークな)局面が50%を割... | zakki | 2021年 9月21日(火)19時44分21秒
|
Re: 重複なしの(ユニークな)局面が50%を割... | 山下 | 2021年 9月22日(水)19時19分39秒
|
重複なしの局面の割合、と選択されたPoli... | 山下 | 2021年 9月23日(木)21時23分6秒
|
第35回身体知研究会で渡辺名人の対談 | 山下 | 2021年 9月24日(金)11時57分6秒
|
Re: 重複なしの局面の割合、と選択された... | 山下 | 2021年 9月25日(土)11時28分55秒
|
AobaZeroで温度を変えた時のPolicyの平均... | 山下 | 2021年 9月26日(日)14時11分8秒
|
kldgain適用後のハンデELOの推移 | 山下 | 2021年 9月28日(火)11時47分1秒
|
Computer Olympiad 2021の結果 | 山下 | 2021年 9月28日(火)12時54分19秒
|
AobaZeroの40 blockの学習を終了し20 blo... | 山下 | 2021年10月 2日(土)10時17分53秒
|
CGFオープン、10月9日、10日開催の締め切... | 山下 | 2021年10月 2日(土)10時29分29秒
|
CGFオープンの結果 | 山下 | 2021年10月16日(土)15時03分9秒
|
知識ゼロからの強化学習では宣言勝ちの割... | 山下 | 2021年10月25日(月)12時10分39秒
|
宣言勝ち比率 | 48 | 2021年10月26日(火)11時37分54秒
|
Re: 宣言勝ち比率 | 山下 | 2021年10月27日(水)13時23分32秒
|
マルチスレッド | 都万 | 2021年10月29日(金)16時18分7秒
|
Re:マルチスレッド | 都万 | 2021年10月30日(土)15時43分34秒
|
UEC杯は2022年3月5日、6日に開催 | 山下 | 2021年10月31日(日)18時53分33秒
|
コンピュータ囲碁MLが消失、その代替は? | 山下 | 2021年10月31日(日)19時11分41秒
|
Aoba駒落ちの温度を1.3に変更しました | 山下 | 2021年11月 2日(火)19時25分15秒
|
KataGoはCGOSだとs964ぐらいから+50 ELOほ... | 山下 | 2021年11月10日(水)16時06分7秒
|
GPWでAoba駒落ちの発表をしました | 山下 | 2021年11月14日(日)10時47分38秒
|
KataGoの自己対戦による8路盤定石 | 山下 | 2021年11月17日(水)13時31分23秒
|
SAIはELF v0に追いついたようです | 山下 | 2021年11月19日(金)13時55分48秒
|
電竜戦のA級の先手勝率は72% | 山下 | 2021年11月22日(月)22時02分59秒
|
Re: 電竜戦のA級の先手勝率は72% | 山下 | 2021年11月23日(火)13時40分57秒
|
MixNetとSwishで+104 ELO | 山下 | 2021年11月23日(火)18時23分47秒
|
Re: MixNetとSwishで+104 ELO | zakki | 2021年11月24日(水)10時50分51秒
|
Re: MixNetとSwishで+104 ELO | 山下 | 2021年11月24日(水)16時41分49秒
|
Leela Chess Zeroの現状 | 山下 | 2021年11月24日(水)18時14分53秒
|
YSS 1.0の自己対戦の棋譜 | 山下 | 2021年11月25日(木)19時35分51秒
|
Aoba駒落ちを終了しました。 | 山下 | 2021年12月 4日(土)17時15分0秒
|
Gumbel MuZero | 匿名ファン | 2021年12月 8日(水)12時35分21秒
|
Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月10日(金)19時20分9秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | 山下 | 2021年12月10日(金)23時43分22秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月11日(土)09時36分33秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月11日(土)10時07分12秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | 山下 | 2021年12月11日(土)10時43分34秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月11日(土)12時01分58秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | 山下 | 2021年12月11日(土)13時01分57秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月11日(土)13時16分7秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月11日(土)17時32分43秒
|
Re: Aoba駒落ちのGUIへの登録に失敗します。 | masa | 2021年12月12日(日)22時31分1秒
|
駒落ちの宣言勝ちで敵陣10枚以上が無理な... | 山下 | 2021年12月18日(土)20時49分19秒
|
持将棋 | 都万 | 2021年12月19日(日)09時42分37秒
|
SwishとMishではSwishが良さそうです | 山下 | 2021年12月19日(日)19時14分46秒
|
Re: 駒落ちの宣言勝ちで敵陣10枚以上が無... | 山下 | 2021年12月20日(月)01時58分57秒
|
プロの駒落ちの入玉ルール | 都万 | 2021年12月20日(月)05時19分37秒
|
Re: SwishとMishではSwishが良さそうです | kobanium | 2021年12月21日(火)01時04分21秒
|
Re: SwishとMishではSwishが良さそうです | 山下 | 2021年12月21日(火)17時37分52秒
|
MixNetを試してみました | 山下 | 2021年12月21日(火)17時47分16秒
|
Re: SwishとMishではSwishが良さそうです | kobanium | 2021年12月22日(水)02時24分39秒
|
Re: SwishとMishではSwishが良さそうです | 山下 | 2021年12月22日(水)13時58分7秒
|
KataGoのg170のデータが再公開 | 山下 | 2021年12月22日(水)23時01分25秒
|
技巧2はgcc 8.4.0 では止まるがgcc5ならOK | 山下 | 2021年12月24日(金)11時00分27秒
|
学習回数を4倍でもMixNetの性能は+130 EL... | 山下 | 2021年12月24日(金)11時33分46秒
|
AobaZeroで温度を1から1.3に変更で+33 ELO | 山下 | 2021年12月24日(金)17時52分10秒
|
単に温度を上げると質の悪い棋譜が多くで... | 山下 | 2021年12月25日(土)21時08分6秒
|
AobaZeroで学習される局面の手数の割合 | 山下 | 2021年12月26日(日)19時28分59秒
|
Re: AobaZeroで学習される局面の手数の割合 | zakki | 2021年12月27日(月)15時04分28秒
|
Re: AobaZeroで学習される局面の手数の割合 | 山下 | 2021年12月27日(月)20時34分17秒
|
Re: AobaZeroで学習される局面の手数の割合 | zakki | 2021年12月27日(月)22時02分19秒
|
Re: AobaZeroで学習される局面の手数の割合 | 山下 | 2021年12月30日(木)12時30分5秒
|
Re: AobaZeroで学習される局面の手数の割合 | zakki | 2021年12月30日(木)15時42分27秒
|
去年の棋精?(Go Genius)がMuZeroのプレプリントを参考にした実装をしてました。
http://entcog.c.ooco.jp/entcog/new_uec/past_uec/2019uec/appeal/GoGenius.pdf
https://arxiv.org/abs/1911.08265
少し前にGitHubで、Leela 0.11.0をlizzieで使えるようにするコードが発表されました。
https://github.com/featurecat/lizzie/issues/815
私はプログラミングについてはほとんど知識がないのですが、lizzieのコンパイル方法だけは知っていますので、現在lizzieでLeela 0.11.0が使えています。
しかし、自動分析ができないのと、分析状況が安定しないという問題があります。
https://github.com/kaorahi/Leela/tree/lz-analyze
ここに、パフォーマンスを改善するよう修正されたLeela 0.11.0のソースコードがあります。
これを使えば上記の問題が解決するような気がしています。
しかし私はLeelaのコンパイルができません。GitHubのLeelaの説明を読むと、コンパイルするためにはboostとOpenCLライブラリと開発ヘッダが必要だと書いてあります。ある程度ネットで調べたのですが、実現できる感じがしませんでした。
Leela 0.11.0のコンパイルの方法をご存じの方がいらっしゃいましたら教えて頂けないでしょうか?
不躾なお願いですが、気に留めて頂けましたら幸いです。
試してませんがLeelaZeroの開発環境を参考にできませんか?
LinuxならLZと同じapt installコマンド、WindowsならNuGet設定(packages.config)の流用とかで
全2974件の内、新着の記事から10件ずつ表示します。
zakki様、ご回答頂き有難うございます。
プログラミングについての知識が乏しく、Nuget設定とか正直ピンとこない状況ですが、何とかヒントを生かせればと思います。
Remiさんによると最新の CrazyStone-81-TitV のBayesEloが
3年前の CrazyStone-18.04 より低くなっていて、BayesEloが正しくない、とのことです。
CrazyStone-81-TitV は CrazyStone-18.04 には100%近く勝つそうです。
https://www.mail-archive.com/computer-goxcomputer-go.org/msg17594.html
で、時間切れや同種の対戦を削除したCGOSのBayesEloを計算してみました。
19x19 BayesElo (時間切れを削除)
http://www.yss-aya.com/cgos/19x19/bayes_20210109_del_timeout.html
19x19 BayesElo (時間切れと、同種の対戦を削除)
http://www.yss-aya.com/cgos/19x19/bayes_20210109_del_timeout_same_program_match.html
最高レートとELFv2 (時間切れを削除)
black_hole_v7 5245
LZ_05db_ELFv2_p800 4005
最高レートとELFv2 (時間切れと、同種の対戦を削除)
black_hole_v6 4958
LZ_05db_ELFv2_p800 3855
最高レートとELFv2 (オリジナル)
Katago_40b_s37_4V 4762
LZ_05db_ELFv2_p800 3686
http://www.yss-aya.com/cgos/19x19/bayes.html
時間切れを削除すると black_hole_v7 が最強でした。
LZ_05db_ELFv2_p800 のレートも +320 ほど上がって、時間切れはかなり悪影響を与えています。
同種のプログラム同士の対戦、例えば LeelaZeroの400playout 対 800 playoutだと、
800 が7割から8割程度勝ちます。これは自己対戦の弊害で、他のプログラム相手だと6割程度です。
なので、同種のプログラム同士の対戦も削除して計算してみました。
最高レートは時間切れよりは300ほど下がって、自己対戦の弊害も大きそうです。
下のように 黒の名前に "LZ" が含まれ 白の名前に "lz" "Leela" "ELF" など含まれるなら削除しています。
LZとELFを同一、は少しやりすぎかもですが。
LZ | lz | Leela | ELF
kata | Kata | KG | k40b | k160 | Ka
Zen
CrazyStone | CS
Rnz | rn | Rn
Aya
myCtest
AQ
Dirichlet
CGI
DCNN-
Odin
731369 ... 全体局数
721122 ... 時間切れ削除後
592249 ... 時間切れと同種削除後
今まで直近の過去50万棋譜からミニバッチを作って学習させていたのを
過去100万棋譜に変更しました。
これはAlphaZeroの論文の pseudocode.py の記述に合わせています。
Supplementary Materials (Data S1 のリンク内のファイル)
https://science.sciencemag.org/content/suppl/2018/12/05/362.6419.1140.DC1
時間制御で時間一杯まで使って終盤で負けるのはルール上しょうがないんですが、ネットワーク切断で序盤で時間切れになる処理を何とか出来ないでしょうか。
クライアントが対局中に落ちたときやCGOSプロセスを落として切断した場合は、コネクションが切断されていて再起動で同一対局を再開できます。
しかし、ネットワークごと切断された場合、CGOSサーバーのコネクションが残っていて、再起動しても多重ログイン扱いになって再開できません。
コネクションのチェックが全体のマッチ開始毎にしかされていないのを、一定時間ごとにキープアライブチェックしたり
多重ログイン時にコネクションを確認するようなのは難しいんでしょうか。
実際起きているのが前者が大半ならコスパ悪いですね。
> 再起動しても多重ログイン扱いになって
これは時々おこるCGOSの欠点ですね。多重の場合は古いのを消せるか調べてみます。
なんとなく時間切れの大部分は
1. 時間ぎりぎりまで使う設定で400手を超えたら切れる。
2. マシンが落ちたり原因不明のネットワーク切断。戻ってこない
な気がします。
中国からのユーザは、通信不安定なことが多く、
またサーバは東京?にあるので欧米からだと、切れやすい、というのもあるかもしれません。
若干の時間ボーナス(1手ごとに0.25秒加算)はあるのですが。
Donさんも当時悩んでいたようです。
先にusernameだけ来て、後からpasswordがくるので
ちょっと厄介そうです。
同時に来るような仕様だと比較的簡単なのですが。
https://github.com/yssaya/CGOS/blob/main/server/cgos.vfs/lib/app-cgos/cgos.tcl#L843
UEC杯の参加申し込みが始まっています。
3月20日(土)、21日(日)の2日間です。
締め切りは2月14日までです。
今年はオンライン開催となっています。
第12回UEC杯
http://entcog.c.ooco.jp/entcog/new_uec/
公式では初期から(v1.4.5付属の40blockのs509)+70Eloぐらい伸びてる感じです。
CGOSでは+30程度?でしょうか。対局数が100局程度と少ない、
のでかなりぶれていますが。
自己対戦でなく主にLeelaZeroとの比較、なので半分のこの程度かもしれません。
https://katagotraining.org/
![]()
AobaZeroで1手800 playoutと1手1600 visit、どちらが強いか試してみました。
800playout/手が勝率0.58で勝ち越しました。800局で互角局面先後入れ替え。w3020。1スレッド。
消費時間は800plyoutが1.005倍で多く使ってますが、ほぼ同じ消費時間です。
同じ消費時間なら1600visitが勝ち越すだろう、と思ってたのですが意外でした。
1手800playout、1手800visitを学習用に自己対戦させた場合、rootで探索した合計は下のようになります。
800 playout/手 800 visit/手
root合計 実際の回数 root合計 実際の回数
0手目 800 800 800 800
1手目▲48玉 818 800 800 800
2手目△44歩 1016 800 800 626
3手目▲26歩 1395 800 800 261
4手目△34歩 2149 800 800 1
5手目▲36歩 836 800 800 787
0手目や、1手目に▲48玉と予想外の手が指された場合、playoutとvisitは同じです。
しかし3手目に▲26歩や4手目に△34歩と予想通りの手を指した場合、visitの実際の探索回数は
261回、1回、とかなり少なくなります。つまり予想が当たった場合に短時間で探索を終えることができます。
これはハッシュ表に前回の探索の結果を記憶して再利用しているためです。
他のプロジェクトでの1手ごとのplayout数は
AlphaGoZeroでは1手1600 playout
AlphaZeroでは 1手 800 playout
LeelaZeroでは 1手1600 visit
ELFでは 1手1600 playout
KataGoは 1手 600 visit(非学習局面では100 visit)から1000 visit(200 visit)
AobaZeroは 1手 800 playout
Remiは1手400playoutで学習させているそうです。AQの山口さんの話だと
減らしすぎるとPolicyの分布が得られなくてダメなのでは、とのことでした。
下では800-1200 visitぐらいでOK?みたいな結論になっています。
Optimal amount of visits per move
https://github.com/leela-zero/leela-zero/issues/1416
探索量は多い方がいいのは間違いないのでしょうが、1600playout/手以上は効果がなく?
逆に800playout/手 以下だとダメなのでしょうか。
この実験をするのは大変なので、
100,200,400,800,1600,3200 playout/手
100,200,400,800,1600,3200 visit/手
での強化学習をしたときのELOの変化グラフ、とかをDeepMindさんが出してくれないでしょうか・・・。
playoutとvisitの違いが分かってなかったのですが
再利用の差なのですね。
文字通りのplayoutをしなくなってから呼び名を変えただけかと思ってました。
最初にvisit、という用語を使いだしたのはLeelaZeroで、この用語は囲碁以外ではメジャーではない気がします。
simulation ... 最初から最後まで。rolloutをしない場合でもOK?
rollout ... UCTで末端まで降りて、そこから最後まで?カナダのアルバータ大が使い始めてAlphaGoでも。
playout ... UCTで末端まで降りて、そこから最後まで?simulationと同じ?
visit ... Rootの合計数
こんな感じでしょうか?simulation以外はいい加減な定義な気がします。
私は何となくplayoutが好きなのでよく使ってます。
MCTSもモンテカルロを使ってない現在も、普通に使われていますけど。
KataGoは学習時には探索木の再利用はせずに、
NNの結果をキャッシュしています。
再利用するとDirichlet Noiseの影響が小さくなってしまうため、だそうです。
この場合、visitとplayoutは一緒ですけど。
AobaZeroは単純に再利用なので必然手順ではDirichlet Noiseの影響はかなり小さくなってると思うのですが
論文通りなのでこのままにしています。
AlphaZeroの著者の一人のMatthewさんがGCPの質問に答えてますが、Dirichlet Noiseについては答えてませんが
最初の30手でのVisit count samplingに関しては、再利用の影響はあまりない、とのことです。
http://talkchess.com/forum3/viewtopic.php?p=782297#p782297
LeelaZeroでも試してみました。
800playout/手の 94勝106敗、勝率 0.47 でほぼ互角でした。
(最初の10手をプロの100棋譜から選び白黒交互で200局。重みはLZ_286。どちらも4スレッド)
消費時間は1600visitが1.08倍多く使ってます。
着手の強さ的には
AlphaGoZero(1手1600playout)よりも
AlphaZero (1手 800playout)に近く、
40 blockでMaster(20 block?)を超えたAlphaGoZeroの追試にはなってないかもです。
1年遅れ?ですがLeelaZeroが学習を停止するそうです。
https://github.com/leela-zero/leela-zero/issues/2560#issuecomment-775434978
参加申し込みは2月14日までとなっています。
中国から2チームとフランスからRemiさんが参加する予定になってます。
http://entcog.c.ooco.jp/entcog/new_uec/list.html
http://entcog.c.ooco.jp/entcog/new_uec/
お世話になります。
いつもAobazeroの成長に注目しています。
ところで,Aobazeroの強化学習で作成した棋譜について,GoogleDriveにアップロードされているのが12月22日の棋譜が最後となっていますが,最新棋譜のアップロードは難しい状況でしょうか(Aobazeroの棋譜を再利用して色々検証したいと思いまして…)。
もしよろしければご確認くださいますようお願いいたします。
更新が遅れていてすみません。
とりあえず
arch000026060000.csa.xz
から
arch000031950000.csa.xz
までを下にアップロードしました。
https://drive.google.com/drive/folders/13Z5i8Vi2oiQ1p8-Xt8fmXPHR6JNNtopw?usp=sharing
近日中に通常の場所に最新のものもアップロードする予定です。
早速の対応ありがとうございます。利用させていただきます。
今後とも何卒よろしくお願い申し上げます。
申し込み締め切りが22日まで延長になっています。
現在15チームが参加予定です。
http://entcog.c.ooco.jp/entcog/new_uec/list.html
中国4、フランス1、アメリカ1、と海外勢が6です。
KataGoの作者自身による参加申し込みもあります。
AobaZeroのPolicy Headは
駒の移動元(81) から 8方向 に 何マス進むか、で11259通り(9x9 x139)です。
これをdlshogiと同じ
駒の移動先(81) に どの方向(8+2)から来たか、で 2187通り(9x9 x27)にして性能を簡単ですが調べてみました。
192x10b とdlshogiと同じサイズで(AobaZeroの256x20bの約4分の1)
AobaZeroの1850万番目の棋譜から10万回だけmini-batch=128、学習率=0.01 で
学習させたデータで比較しました。
入力は駒の配置、持ち駒を現在+過去7手前まで、と同一局面になった回数、手数、手番です。
出力は指し手(Policy、11259通り or 2187通り)、Value(1つ)です。
1 playoutしかしない同士(常にPolicyで最大確率の手を選ぶ)で対戦させた場合、2187通りが
503勝237敗260引分(勝率0.633)
で勝ち越しました。(互角局面使用)
この結果だけを見ると2187通りの方が効率良さそうです。
移動元が方向だけで何マス動くか、はNNが考えないといけないので難しいかな、と思ってたのですが。
48さん指摘の長い利きをうっかりする△91馬(19)の読み抜けは
△91馬(19)のPolicy順位
11259通り 141番目の最下位
2187通り 51番目
と、2187通りの方がかなりマシになります。とはいっても51番目なのでほぼ候補にはならないレベルですが。
やはり長い利きの情報を入力として与えないと、この長い利きを見落とす問題は解決しないのかもしれません。
ちなみに最新の w3200.txt でもこの手は最下位のままで読み抜けます。
△91馬(19)と馬をタダで取られる
http://www.yss-aya.com/bbs_log/bbs2020.html#bbs91
Policy HeadはどちらもConvolution層(1x1)のみで、全結合は試していません。
2187通りで表現する方法は元々は not522 さんのアイデアですが、うまい方法ですね。
盤外からの移動とかを消すと1600通りぐらいに減るのでそれも試してみようかと思います。
将棋の最大可能手数は593手なので、その倍程度まで減らせそうです。
将棋でディープラーニングする その46(出力ラベルの表現方法)
https://tadaoyamaoka.hatenablog.com/entry/2017/11/18/001726
以前プロ棋士のfloodgateでのレートを推定したのですが間違ってました。
千田さんが1時間、切れたら1分で対戦した結果を4倍時間を使ったAperyと対戦した、として
+199 補正したのですが、千田さんが4倍の思考時間をかけるとソフトと同じように
+199 強くなる、と仮定すると、その必要はありませんでした。
つまり、
apery_WCSC25_E5-2687W_8t が495局対戦して3066点。
3066のAperyに勝率2割、は 240点差。千田さんの2015年は2826点。
棋士別成績一覧では、千田さんの2015年6月のレートは1683点。
http://kishibetsu.com/2015R/1291.html
このページのレートに 1143点 (2826-1683) 足せば floodgate のレートに一致します。
2021-03-07のトップは藤井聡太二冠の2014点(棋士別サイト)なので+1143でfloodgateでは3157点。
藤井聡太二冠 2014点(2021-03-07) floodgate 3157?
千田さん 1763点(2021-03-07) floodgate 2906?
1683点(2015-06-02) floodgate 2826?
こちらの点数の方が不屈の棋士(講談社、2016)での千田さんの考察
「平均的な棋士は2600、高く見積もって2800」
に近いかもしれません。
人間とソフトの持時間を増やしたときのレート差、はどうなるのでしょうか?
1手5秒とか極端に少ないとソフトが有利で、1手15秒から1手1分、では
人間の伸びの方が大きい気がします。
1手1分から1手10分、とかでも人間が大きい気がします。
20年以上前のデータでは対人間だとソフトの思考時間2倍での伸びは+100でなく、+63とかもっと小さかったです。
プロ棋士とfloodgateのレート
http://www.yss-aya.com/bbs_log/bbs2020.html#bbs109
最近のAobaZeroの棋譜、早い段階で投了するので入玉が学習できていないように思います。
おそらく、floodgateとの棋譜のとの指し手一致率(policyのaccuracy)も下がってるのではないかと思います。
棋譜を利用させていただいている立場で言うのも何なのですが、詰みの局面まで投了しないようにしていただくわけにはいきませんでしょうか。
// dlshogiの山岡さん、水匠のたややんさんたちもそうして欲しいそうです。
棋力の推移グラフに、policy/valueのaccuracyもプロットして、accuracyが悪化していないかを確認されたほうが良いのではないかと思います。
あと、自己対局が800poなの、増やしていただくわけにはいかないでしょうか。
// 棋力的には、とっくにサチっているように見えるのでそろそろnetworkを大きくするか、800をもっと大きくするかしないと…。
それから、入力特徴量をdlshogiに合わせていただくわけにはいかないでしょうか。
dlshogiの入力特徴量のように利きも入力するとずいぶん強くなります。
欲を言えば、入力特徴量がdlshogiと同一で、かつ、CUDA(TensorRT)で実装されていれば、modelファイルをdlshogiで読み込ませることが出来るので探索性能の違いを評価したりできるようになるのですが…。現時点では、探索の性能の差を公平に比較することすら出来ませんし、modelファイルに互換性がないので評価関数のみの強さの比較を行うこともできません。
AobaZeroはAlphaZeroの追試をするのが目的なので
論文とは異なる手法を試すのは難しいと思います。
投了の棋譜ですが、現在も投了の閾値を自動調節するために全体の10%の棋譜で投了を禁止しています。
2212万棋譜以降で、棋譜の3行目に "-r 0.0" がついている棋譜のみを対象とした場合、
'-q -r 0.0
棋譜の最後が下のいずれかで終わっているのが閾値で投了した棋譜で
%TORYO,'autousi
%TORYO,'autousi,resign-th=
何もついていない下の形式が投了を禁止して詰み上がりまで指した棋譜になります。
%TORYO
棋譜数は減ってしまいますが、この形式の棋譜だけを学習対象とすれば長手数の棋譜も以前と
ほぼ同じ割合で含まれていると思われます。
棋力がほぼ変化がないのはご指摘の通りで、いったん終了した段階で、
ブロック数を増やすかplayout数を増やすなどを検討いたします。
floodgateの棋譜に対する一致率は調べていませんが一度試してみようと思います。
下はKristallweizenと1手800playoutで対戦させた場合の宣言勝ちの割合です。
現在は先手では60%、後手では25%が宣言となっています。
一番多かったときは先手で80%で、w2770付近から急に減少しています。
ほぼweight_decayを小さくした時期(w2750)と一致しますが、それより少し前の
投了10%(w2250)、投了自動調整(w2564)の影響かもしれません。
![]()
返信ありがとうございます。諸々承知致しました。
ご対応、ありがとうございます。
WindowsForm(c#)で将棋のプログラムを作り始めました。
標準入出力を使って将棋GUIとやりとりしたいのでですが、
将棋GUIからのメッセージを受信する部分をどう作っていいかわからず困ってます。
アドバイスいただけると助かります。
C#は分からないのですがこの辺など参考にはならないでしょうか?
自プロセスの標準入出力
https://smdn.jp/programming/netfx/standard_streams/0_console/
UEC杯が明日開催されます。
1日目がスイス式7回戦で、上位6ソフトが2日目の決勝5試合を戦います。
7位から12位までは別のリーグで5試合を行います。
UEC杯
http://entcog.c.ooco.jp/entcog/new_uec/
棋譜中継 Youtube
https://www.youtube.com/channel/UCt5CU4KCMtsQQmG2v3q51Qw/
棋譜中継(30秒ごとに更新)
http://www.yss-aya.com/uec2021/
大橋プロによる棋譜解説。最終日のみ。
http://entcog.c.ooco.jp/entcog/new_uec/watch.html
19プログラムが参加予定です。(Maruはキャンセルです)
http://entcog.c.ooco.jp/entcog/new_uec/list.html
>C#は分からないのですがこの辺など参考にはならないでしょうか?
山下さん、アドバイスありがとうございます。
■Console.ReadLine()メソッドを使った時に、並列して他の処理ができず困ってました。
ThreadPool.QueueUserWorkItem(new WaitCallback(MyReadLine), null);
void MyReadLine(object userState)
{
while (true) CallBackReadLine(Console.ReadLine());
}
で自己解決しました。
※標準入力が入った時に、 CallBackReadLine()関数が呼ばれるようにしました。
SAIがようやく?20block x256に移行して+350ほど強くなったそうです。
LeelaZeroの最後の20bはLZ_173で、その一つ前のLZ_172が800playoutで
CGOSで 3407点、SAIの12bx256の 1600 playoutがほぼ同じ 3410点なので
SAIの800 playoutでも20bはLZを抜いてそうです。
もっともLZは収束またずにすぐ40bに上げてしまいましたが。
20bで40bの棋譜を学習させた LZ20b_se_1e50_p800 は3629点なので、そこには届いていないかも。
BayesElo
LZ20b_se_1e50_p800 3629
SAI_668_8702_p1600 3410
LZ_172_b1c3_p800 3407
http://sai.unich.it/
lc0で使われているkldgainという手法を試してみました。
1手800playout固定、ではなく可変にする方法です。
自己対戦 +108 Elo 平均 750 playout/手(最大8000回、最小101回)
対Kristallweizen +94 Elo 平均 704 playout/手(最大8000回、最小101回)
比較対象は 800 playout/手固定のAobaZeroで、
kldgainだと自己対戦で 750, 対Kristallweizenだと 704 と
少ないplayout数で +100 Elo 強くなっています。
自己対戦でなく、Kristallweizenでも同じくらい強くなったのが意外でした。
互角局面集使用。400局面を先後入れ替えで800局。w3020.txt
minimum-kldgain-per-node=0.000002 (最大でも8000回を上限)
kldはカルバック・ライブラー情報量(Kullback Leibler divergence)の略で
例えばA,B,Cの3つの手があって、100回playoutしたとき、調べた回数が
A 50回
B 30回
C 20回
さらに100回playout(合計200回)で
A 102回
B 59回
C 39回
だとすると、着手確率がほぼ同じ(A 50%,B 30%, C 20%)なので
本来800回playoutするのを200回で打ちきってしまおう、という手法です。
この手法がよさそうなのは、AobaZeroは着手の分布を学習しているので
分布の形が変わらないなら学習には影響なさそうな点です。
200回でなく、400、800と探索させれば別の手を発見する可能性も高いので何とも言えませんけど。
Leela Chess Zeroウォッチ
https://tadaoyamaoka.hatenablog.com/entry/2019/12/26/234734
lc0の実装
https://github.com/LeelaChessZero/lc0/blob/master/src/mcts/stoppers/stoppers.cc#L151
lc0では +120 強くなってます。kld がどの程度小さくなったら打ち切るか、は
minimum-kldgain-per-node=0.000005 平均 766 playout/手(最大5300、最小200)
AobaZeroだと
minimum-kldgain-per-node=0.000005 平均 642 playout/手(最大8000、最小200)
minimum-kldgain-per-node=0.000002 平均 750 playout/手(最大8000、最小101)
minimum-kldgain-per-node=0.0000005 平均 1243 playout/手(最大8000、最小200)
minimum-kldgain-per-node=0.000002 平均 2324 playout/手(最大8000、最小101) ... w0001.txt の自己対戦(学習初期)
lc0のデータは探索木の再利用なし、でAobaZeroはありです(0回と比較、すでに100回分以上探索済みなら)。
ディリクレノイズが入ったり、学習の初期だと minimum-kldgain-per-node はもう少し大きくする
必要があるかもしれません。
RTX 3090を買ったのでubuntu20.04でAobaZeroの速度を計ってみました。
バッチサイズ28 で 2080 Ti の 1.58倍の速度が出るようです。
バッチサイズ42 まで性能が伸びて、最速で、21314 局面/秒 でした。
batch 2080 Ti 3090
1 1820 2950 局面/秒
3 4800 8265 局面/秒
7 9200 14633 局面/秒
14 10900 15573 局面/秒
28 12100 19094 局面/秒
42 21314 局面/秒
56 18621 局面/秒
上の速度は下のように net-test で計測したもので理想的な最大速度が出ます。
$ xz -dc data/w485-out.txt.xz | bin/net-test -r 16 -w -b 42 -u 0 ./w000000000485.txt
aobaz単体だとバッチ7、スレッド28ぐらいで 13500 局面/秒 ぐらいが最速のようです。
$ ./aobaz -p 80000 -h 1 -b 7 -t 28 -w ./w000000003020.txt
autousiは下の設定(バッチ42、126プロセス)だと1時間で1000棋譜以上でるようです。
Device O-1:42:126W
SleepOpenCL 1
- Send: Sent 6232, Lost 0, Waiting 0
- Recv: Weight's ID 3371, resign-th 0.230, Last Check 04/01/21 00:10:50
- Engine: Idle 0, 5061msec/move, 1033.0send/hour, 6.0 hours running
CPUはRyzen 7 3700X(8コア16スレッド)で load average: 13.59 ぐらいです。
コア数足りない感じです。
Caffeは, CUDA 11.2, cuDNN 8.1.1 を下の非公式版を入れました。
Install OpenCV 4.4.0 and Caffe on Ubuntu 20.04 for Python 3
https://qengineering.eu/install-caffe-on-ubuntu-20.04-with-opencv-4.4.html
最初、CUDA 10.2, cuDNN v7.6.5 で公式のCaffe 1.0 を動かしていたのですが、
mnist の学習で accuracy = 0.113 (正しくはaccuracy = 0.991) と正しく収束せず
cuDNNなしだと正常、prototxtの読み込みで10分ほど固まる、と色々問題があって上のを使いました。
そもそもRTX 3090はCUDA 11.1以上じゃないと動かないみたいですね。
Caffeは更新をやめてしまって、さすがにそろそろ諦めるべきかもしれません・・・。
例えば800playoutで上位3手だけを探索して、
A 400回
B 300回
C 100回
だとすると、温度が0だと常に最大回数、Aの手を選びます。
温度 1.0 でA,B,Cを選ぶ確率が 4:3:1 (50%,37%,13%)になります。
温度が+無限大で選ぶ確率が均等(33%,33%,33%)になります。
この方法で常に1手800playoutで温度を変えて弱くすると、最大で1503点弱くなります。
1手800playoutを400、200、と減らしていくと1playoutでは最大1829点弱くなります。
(1手800playoutと1手400playoutを対戦させた場合)
ところが、1手 1 playout と互角の強さになるのは温度1.3 の 累計 692.4 点差でした。
これでplayout数のレート差を補正(692.4 / 1829 = 0.378)すると
playout数を倍にしたときのレートの伸びは
+273 ---> +103
と小さくなります(800playout -> 400playoutの場合)。
一般に自己対戦での思考時間倍での棋力の変化は前者(+273)ですが、
こちらの(+103)の方が他のソフト相手での変化に近いです。
MCTSで棋力を落とすときは、playout数で弱くするよりも、Softmaxの温度で
調整する方が正しいのかもしれません。
温度 レート差 累計レート差
0 0
0.01 13 13
0.1 0 13
0.5 67 80
0.7 114 194
0.8 79 273
1.2 366 639
1.3 692.4 --> ここで1手1playoutと互角
1.7 267 906
2.5 217 1123
3.8 150 1273
6.0 99 1372
10 35 1407
100 63 1470
10000 33 1503
playout数 レート差 累計レート差 補正レート差(x 0.378)
800 0
400 273 273 103
200 254 527 96
100 246 773 92
50 232 1005 88
25 216 1221 82
12 242 1463 92
6 183 1646 69
1 183 1829 69
AobaZeroをw3020.txt を1スレッドで800局、互角局面利用(400局面を先後)で測定
Softmax
https://en.wikipedia.org/wiki/Softmax_function#Reinforcement_learning
(グラフの横軸は対数スケール)
![]()
![]()
floodgateで1手1playout、は2150点でした。
1手800playoutが3100点ぐらいなので950点差ぐらいです。
自己対戦の1829点差の倍ぐらい小さく、Softmax換算の692点差よりは大きいです。
floodgateは弱いプレイヤーが少ないので正確なレートが出てるかは微妙ですが。
(2300点のYSSが2502点になってます)
AobaZero_w3392_p1 2150
http://wdoor.c.u-tokyo.ac.jp/shogi/view/show-player.cgi?event=LATEST&filter=floodgate&show_self_play=1&user=AobaZero_w3392_p1%2B707d4f98d9d2620cdaab58f19d02a2e4
面白い試みに思いますが
棋力を落とすときに保存しようとしているパラメータが何かうまく言語化できません。
そこが出来ないと伝わりにくい「正しさ」だと思います。
温度の影響はNNの出来に大きく依存すると思いますので本件はAobaZeroの現状のように
完成度が高い前提の議論ですよね。
正しいレート差?は人間の棋力基準のような気もしますが
それも曖昧な気もします。
ノード数を倍にしての棋力差は、ノード数の上が下を完全に飲み込むいびつ?な強さなのかもしれません。
ただ、温度を変えての弱さは時々ひどい悪手を指すので、不自然な感じは残ります。
NNの出来に依存するのは確実で、最初の重み、w0001.txtで温度変えてもほとんど変わらないです。
αβでも似たことは出来そうな気はしますけど。
ただ、人間的な「自然な弱さ」はこんな方法では実現できなそうです。
kata1のレート推移をCGOSで調べてみました。
LZ_282_0410_p400 を相手にした時の勝率だと近似直線で
最初のs517で勝率41%(-63)
最後のs773で勝率33%(-123)
なので +60 Elo 上昇
BayesEloだと、近似直線で
最初のs517で 3900点
最後のs773で 3990点
なので +90 Elo 上昇
kata1のページのグラフ(自己対戦)だと
13170 -> 13310
なので +140 Elo 上昇
https://katagotraining.org/
自己対戦を完全に排除したLZとの結果が一番正確な気がします。
もっともCGOSは100visit、と極端に探索数が少ないので800visitとかだと
もっとElo上昇は大きいかもしれません。
![]()
![]()
3日後くらいを目途にAobaZeroの追試(AlphaZeroの追試)を終了します。
その後は、40blockへ移行します。
AlphaZeroには推定で108点(後手番では48点、先手番で319点)負けています(後述)。
ただ、後手番ではほぼ追いついた、と言ってもいいのではないかと思います。
将棋のルールだけを教えて「勝ちやすい」という条件だけで一般的に指されてる囲い、戦型の大部分を再発見することができました。
確認された囲い:雁木、矢倉、美濃囲い、高美濃、銀冠、左美濃、中住まい、右玉、矢倉穴熊
確認された戦型:相掛かり、横歩取り、横歩取り青野流、角換わり棒銀、角換わり早繰り銀、角換わり腰掛け銀、
後手四間飛車、矢倉脇システム、ひねり飛車
先手番では振飛車は指しませんが、後手番では四間飛車を好んで指していました。
穴熊も矢倉から穴熊に組み替える矢倉穴熊は指します(▲78金▲67金型)。
▲78金▲79金の正統な?穴熊は見つけていません。
半面、一目散に穴熊を目指す指し方や、多彩な振飛車(中飛車、三間飛車)などは見つけていません。
人間によって長く指されている指し方を一部発見できていないのはこの手法が万能ではないことも示していると思います。
AlphaZeroの1手10秒換算でのAobaZeroの対elmo(WCSC27)との176局だと
・勝率 0.741 (127勝7分42敗) 差183
・先手勝率 0.806 ( 69勝4分15敗) 宣言68勝 差247
・後手勝率 0.676 ( 58勝3分27敗) 宣言39勝 差128
*AobaZeroは 1手580k playout/手、elmoは 1手251000k/手 (6スレッド)
AlphaZeroは持ち時間3時間で対elmo(WCSC27)に1000局で
・勝率 0.918 差420
・先手勝率 0.982 差695
・後手勝率 0.853 差305
*AlphaZeroは第1世代TPUを4つ(探索速度 58k/秒)。elmoはXeon 2.2GHz 44CPU、44スレッド(25100k/秒)
AobaZeroの重みがw1650と最新より40ほど弱い、
elmoを1手25100k固定とした場合、44スレッドは6スレッドより89弱い、を考慮して
(対Kristallweizenの16スレッド、1手5500kノードとの比較で)
(平均) 108 (420 - 183 - 89 - 40 より)
(先手) 319 (695 - 247 - 89 - 40 より)
(後手) 48 (305 - 128 - 89 - 40 より)
良い決断に思います。
可能ならPyTorchかTensorFlowなどのモダンな学習ライブラリへ移行されると嬉しいです。
今回は40blockに切り替えるだけですが、Caffeは今では環境作るのも大変なので検討いたします。
AlphaZeroの追試が終了ということは、論文にはなかった手法等もテスト、導入していく方針になるのでしょうか。
とりあえず40blockを試そう、という段階で、今後の方針はまだ未定です。
選手権直前でどうかと思うのですがひとつ教えて下さい。
40ブロック移行の最初のモデルはどうやって作成しましたか?
ちなみにうちではAobaZero教師のありったけを約2周ロスが安定するまで回した後
20ブロックで作った最新の2億局面を5,6周学習させました。
それでやっと20ブロックに追いついた感じです。
1974万棋譜までは20blockと同様の条件(学習率の推移)で学習させていました。
そこから3970万棋譜までは1局面を平均1回学習、でなく平均(1/8)回学習になるように
8倍速で学習させたものをベースにしています。
(学習が棋譜生成速度に追いつかないため)
去年の4月、700万棋譜では40blockは20blockとほぼ同じ強さで、
学習率を現在と同じ 0.000001 に下げて(ミニバッチ 64)
1590万棋譜の時点で+70ぐらい20blockより強くなりました。
学習率 0.00001 だと同程度の強さにしかならなかったのかもしれません。
KataGoは 20b -> 40b で200Eloほどしか上がっていないので(同じplayout数で)
AobaZeroもそのぐらいかな、と思っています。
CGOS name BayesElo 対局数
kata145b40s509v800 4396 342 ... 256x40 block
kata145b30s482v800 4396 342 ... 320x30 block
kata145b20s530v800 4215 513 ... 256x20 block (40 blockの棋譜で学習)
下は8倍速で学習させた途中の棋力ですが、valueのサンプルが増えて精度が上がる?かと思ったのですが
強さ的には変わりませんでした。
対Kristallweizen 500k/手への勝率
勝 分 負 勝率 ELO
40b 1590万棋譜 800p 494-18-288 800 0.629(0.033)( 91), ほぼ20blockと同一条件で学習。+70ほど20blockより強い
40b 1590万棋譜 400p 350-11-439 800 0.444(0.034)( -38), 半分のplayout数だと20blockより60ほど弱い
40b 2490万棋譜 800p 474-15-311 800 0.602(0.034)( 71), 1974万棋譜から8倍速で学習
40b 2792万棋譜 800p 484-15-301 800 0.614(0.033)( 80),
40b 3296万棋譜 800p 484-18-298 800 0.616(0.033)( 82),
40b 3670万棋譜 800p 480-13-307 800 0.608(0.034)( 76),
こちらにも少し書いています。
https://github.com/kobanium/aobazero/issues/54
ありがとうございます。
これからレートが伸びていくのを期待しております。
2年ぶりに順位の推移表を更新しました。
http://www.yss-aya.com/csa_all.html
ずいぶん横長になって歴史を感じます。
こうして見ると上位は15位の習甦以外は若いプログラムばかりで
8位の大将軍さんで参加8回で一番古いです。
一番悔しそうなのは確実に強くなってるのに決勝に進めない
9位のsakura(旧nozomi)さんでしょうか。
表は清愼一さんに作成していただいきました。
40bでの教師生成、ありがたいです。
ところで、40bに変更した瞬間だけ一時的にR40ほど上がっていますが、これは教師の性質が変わる節目で、(たぶんpolicyが)過渡状態になっていたため、強かったのではないかと思います。
// 私の手元の実験でもこの現象がよく見られます。
直近の100万棋譜だと、どうしても教師の性質が似ているので、よろしくないということです。
もっと古い教師からもサンプリングしたほうが良いです。
// 古い教師ほどサンプリングする割合を減らしながら。
AobaZeroプロジェクトではずっと学習を回しっぱなしなので、比較実験がなかなかしにくいように思いますが、この手の実験は比較しないと手法の優秀性が評価できないことが多いです。
40blockに移行してから約90万棋譜を作りましたが
レートの上昇がみられないのは、やや意外ではあります。
現在は過去100万棋譜まで見ていますが、これが少ないのか、の判断は難しいです。
過去50万棋譜からサンプリングで作った1590万棋譜時点での40blockは
20ブロックの平均より+80強く、過去50万棋譜で十分なのかもしれません。
まだ20blockが作った棋譜も学習している段階なので
200万から300万棋譜作成した時点での変化を待ちたいです。
40block 800playout/手 の Kristallweizen 500k/手 への勝率
勝 分 負 勝率 ELO
0.516 ( 11) 直近の20 blockの平均。過去100万棋譜からサンプリング
1590万棋譜 494-18-288 800 0.629(0.033)( 91) 過去50万棋譜からサンプリング
2363万棋譜 437- 9-354 800 0.552(0.034)( 36) 過去50万棋譜からサンプリング
2490万棋譜 474-15-311 800 0.602(0.034)( 71) 過去50万棋譜からサンプリング1974万棋譜から8倍速で学習
2792万棋譜 484-15-301 800 0.614(0.033)( 80) 過去50万棋譜からサンプリング 8倍速で学習
3296万棋譜 484-18-298 800 0.616(0.033)( 82) 過去50万棋譜からサンプリング 8倍速で学習
3670万棋譜 480-13-307 800 0.608(0.034)( 76) 過去50万棋譜からサンプリング 8倍速で学習。最初の40blockはこれを34285棋譜学習したもの
w3460 495-17-288 800 0.629(0.033)( 91) ここから強化学習。過去100万棋譜からサンプリング
w3465 462-14-324 800 0.586(0.034)( 60)
w3470 457-22-321 800 0.585(0.034)( 59)
w3475 452-20-328 800 0.578(0.034)( 54)
w3480 442-16-342 800 0.562(0.034)( 43)
w3485 456-10-334 800 0.576(0.034)( 53)
w3490 437-15-348 800 0.556(0.034)( 38)
AobaZeroですべてのノードで3手詰を調べる、を試してみました。
結論から言うと効果はなかったです。
「3手詰あり」の「3手詰みなし」に対する勝率。自己対戦。互角局面利用。
重み 勝 分 負 対局数 勝率 ELO
1手 10playout w3020 2275-556-2169 5000 0.511( +7)
1手800playout w3020 371- 88- 341 800 0.519( +13)
1手800playout 乱数 799- 0- 1 800 0.999(+1161)
1手 10playout w3020 AND/OR木 2332-577-2091 5000 0.524( +16)
1手800playout w3020 AND/OR木 735 150- 714 1599 0.507( +5)
1手800playout w448 AND/OR木 500- 28- 272 800 0.643( +101) 64x15 block, floodgate 2250点
1手800playout 乱数 AND/OR木 800- 0- 0 800 1.000( )
対Kristallweizen 500k/手
3手詰なし w3020 405- 17- 378 800 0.517( +11)
3手詰あり w3020 AND/OR木 447- 9- 344 800 0.564( +44) 対Kristだと +33 強い
重みが初期状態(乱数でvalue,policyを割り当て)だと「3手詰あり」が全勝するほど強いのですが
十分学習されてる重み(w3020, 20 block)だと+10 ELO強いかどうか、という程度です。
学習前半のw448(64x15block)だと、+101 Elo 強いです。
大きなネットワークだと3手詰の概念はほぼ取り込まれているのかもしれません。
ただ、こんな3手詰を見落として負けたりしてますが・・・。
(3手詰を入れると、44手目は△86角でなく△77飛を指します)
http://wdoor.c.u-tokyo.ac.jp/shogi/view/2021/05/10/wdoor+floodgate-300-10F+frenzy_human+AobaZero_w3483_n_p800+20210510130008.csa
対Kristallweizen だと+33、と自己対戦よりは効果があるかもしれません(差が小さいので誤差の可能性大)。
dlshogiで採用されている詰んだ場合はその手を選ばない(MCTSにAND/OR木)も
試してみたのですがほぼ効果ないです。
ちなみに、dlshogiが230ノードで負けを認識する局面は9248局面で認識でした(w3020で。w448だと2241局面)。
将棋AIの進捗 その32(MCTSの探索にAND/OR木を導入する)
https://tadaoyamaoka.hatenablog.com/entry/2019/08/10/212840
Bonanzaには3手詰を高速で調べるルーチンが入っていてそれを利用しました。
まれに1手詰があるのに3手詰を選んで連続王手の千日手で負けるので過去に同一局面がある局面では無視してます。
直接の効果はないですが、強化学習で使えばネットワークが3手詰の概念を理解するのに使う資源を
別の概念の学習に使えそうで、それなりの効果はあるかもしれません。
AND/OR木と詰み探索を組み合わせてもあまり強くなってないのは、直感的には違和感ありますね。
高ノードで初めて探索効率の向上効果が現れるのでしょうか。
3手詰も並べ詰みや、下段に落として頭金、みたいなよく出てくる形はほぼ学習して
下で頓死したようなちょっと難しい3手詰だと読み抜ける気がします。
98%ぐらいで出現する3手詰は認識している?ようでノード数を増やしてもあまり効果はないかもしれません。
遅ればせながら順位順の星取表を作ってみました。
今年も例によって大混戦で、3.5勝で3位、は選手権史上初な気がします。
4-3で2位、は以前ありましたけど。
elmo PAL Ryfa Qugi W@nd 白ビ Daig 大将 勝数 SB MD DB
elmo × ○ = ○ ○ ○ ○ 5.5 優勝
PAL ○ × ○ ○ × ○ ○ 5 2位
Ryfamate × ○ ○ × = × ○ 3.5 10 3.5 3位
Qugiy = × × ○ ○ ○ × 3.5 9 3.5 1 4位
W@nderER × × ○ × ○ ○ = 3.5 9 3.5 5位
白ビール × ○ = × × ○ ○ 3.5 8.5 2.0 6位
DaigorillaEX × × ○ × × × ○ 2 7位
大将軍 × × × ○ = × × 1.5 8位
Exact-Win Strategy for Overcoming AlphaZeroは囲碁だとLeelaZerベースの9路にナイーブにPASS-PASSで勝敗確定したときに探索木更新しても効果ありませんでした。
大渡さんとツイートしてたんですが、Leela Zeroのオリジナルに対して勝率61%の条件がよくわかりません…
https://twitter.com/k_matsuzaki/status/1264216598363037702
そういえば1年前のzakkiさんのツイートはこれでしたか。
さくっとLZに実装されてたんですね。
やっぱり効果ないですよね・・・特に囲碁だと。
論文だとLZ_161, 20x256 で、それに近いLZ_166がp800で3333点(BayesElo)なので
それほど弱くもないですか。
LZ_166_9c56_p800 3333 (20x256)
将棋、チェスだと実装した方が少なくとも強くなると思うのですが
囲碁で61%も出るかはかなり疑問です。
100局のSGFも見てみましたが、そのうち45局ぐらいは中押しで終わっていて、PASSは関係なさそうです。
100局で勝率61%、は相当少なく、せめて400局か1000局はやって欲しかったですね。
https://github.com/leela-zero/leela-zero/issues/2276
https://github.com/zxkyjimmy/ewin-data/releases/tag/leelazero-games-go-19x19-2019-03-13
探索ログ見る限り囲碁だと自陣に手を入れる手を延々読み続けられるので私のやつのようなシンプルな実装だとそう言う手すら列挙し切れるくらい終盤にならないと全く動作しませんでした。
将棋だとポリシー低い詰みあれば効果出そうなのにそうじゃないのは、かなりNN賢いんですね。
40blockに移行前後での学習棋譜における
先手の勝率、千日手の数、宣言勝ちの局数
を調べてみました。
あまり面白い変化はありませんでした。
先手勝率が0.55から0.58ぐらいまで上がった、ことぐらいでしょうか。
先手での宣言勝ちは緩やかな減少傾向にあるようです。
![]()
![]()
PAL、強化学習していたのですね。
2万棋譜を1世代で220世代、440万棋譜を作ったそうです。
入力の特徴の種類から具体的な学習方法まで詳細に書かれていて
とても参考になりました。
学習初期局面が比較的強ければ400万棋譜程度で十分、というのが意外でした。
V100を平均35枚で20000GPU時間、なので571時間、23日間、3週間程度ですか。早い。
https://www.apply.computer-shogi.org/wcsc31/appeal/PAL/wcsc31_PAL_detail.pdf
将棋の駒落ちを人間の知識なしで学習させる「Aoba駒落ち」を始めました。
香落、角落、飛落、2枚落、4枚落、6枚落、平手の7種類を同時に学習します。
勝率が5割になるように下手の強さを自動調整します。
AIは駒落ちの新定跡を発見できるでしょうか?
または二歩突き切りや銀多伝を再発見できるでしょうか?
気長に楽しんでいただければ幸いです。
Aoba駒落ち
http://www.yss-aya.com/komaochi/
AobaZeroとの違いや、NNの入力、強さの調整などはこちらを。
AobaZeroとの違い
http://www.yss-aya.com/komaochi/diff.html
現在のノイズなしの棋譜サンプル。まだめちゃくちゃ弱いです・・・。
http://www.yss-aya.com/komaochi/no_noise/sample.html
Aoba駒落ちの引き分け率の変化が面白いですね。
1手詰のバグ修正直後は引き分け率が0.3%程度だったのが、今は平手の引き分け率が約99%まで上がってます。
さすがに引き分け(千日手)が多すぎると思ったので
学習で、最終結果と探索勝率の平均、を取るのをやめて最終結果のみに変更してみました。
また投了の自動調節もやめて、すべて詰み上がりまで指すようにしてみました。
学習がどういう方向に進むのか、まったく予想できません。
バグの可能性も高いので引き続き調べてみます・・・。
floodgateのgikou2_1cのAobaZeroに対する勝率(レート差)を調べてみました。
グラフは低いほどAobaZeroが強い、を意味しています。
40blockに移行してから+200ぐら強くなっているようにも見えます。
20blockはw3283あたりまではレート差100、そこからw3453(最後の20blockでの計測)まではレート差200ぐらいと
なぜか弱くなっているようにも見えます。
Kristallweizen相手の800局の計測だと20blockが3120程度、40blockが3170程度で+50ぐらいしか強くなっていないように見えるのですが、
Kristallweizenの互角局面利用だと序盤の24手の強さは反映されないので40blockでは主に
序盤が強くなっている?のかもしれません。
20blockだと対局数が1局から20局程度、とかなり少なく、ブレが大きいです。
40blockだと20局から40局程度です。
勝率が1.00、もしくは0.00は除いています。
![]()
こちらで公開しています。
将棋所とShogiGUIでの動作は確認しています。
https://github.com/yssaya/komaochi/releases
最初に学習が失敗して正しくない重みで千日手が多い棋譜が生成された影響で
しばらく棋力が停滞していたのですが、
少し順調に強くなってきたようにも見えます。
http://www.yss-aya.com/komaochi/index.html
ただ、Policy(指し手選択)はある程度強くなると思うのですが
下手の棋力を調整して駒落ちの初期局面が勝率5割になる、学習は
上手くいくのか心配です。
KataGoでは強さが違う学習をPlayout Doubling Advantage(PDA)、として
NNの入力にすることで、強気、弱気な棋風を実現してるようで
Aoba駒落ちも似たような入力を与えるべきなのかもしれません。
KataGoの解説
https://github.com/lightvector/KataGo/releases/tag/v1.3
KataGoの*.cfg内での説明
https://github.com/lightvector/KataGo/blob/master/cpp/configs/gtp_example.cfg#L150
KataGoの実装
https://github.com/lightvector/KataGo/blob/master/cpp/neuralnet/nninputs.cpp#L2400
少し動かしてみましたがこれは上手も0からの強化学習でなければならないのでしょうか。
人間でも駒落ち戦はある程度強い上手に教わるものと認識しています。
また興味の中心である下手はハンデ付きなので強化学習を遅くする方向になると思います。
平手戦に比べても相当の負担なのではないでしょうか?
動かしてただいてありがとうございます。
上手の初期weightはAobaZeroを使う、というのはあったかもしれません。
ただ学習初期は上手が全勝しそうで、それはそれで難しそうな気もします。
まだ駒の損得や歩が成る、ことも覚えていない段階で、かなり学習の進み具合は遅いかもしれません。
学習率が0.01だと途中で失敗したのが痛かったです。
今にしても思えば最初はReplay Buffer 50万棋譜、でなく10万棋譜で
100万棋譜ぐらいまでは回した方がよかったのかもしれません。
ただ10万だと個々の2枚落ち、などは7分の1の1万4000程度とかなり少なくなってしまうのが心配ではありました。
学習用の棋譜のサンプル(下手の強さは勝率5割になるよう調整されています)
http://www.yss-aya.com/komaochi/train/sample.html
0手目のコメントが handicapR 0:5:43:72:161:210:275 で2枚落ちなら、下手は 161 ELO弱くされてます。
学習初期は100ELO差で勝率0.64でなく0.55など相対的な単位になります。
しかし何度見てもルールだけ教えて強くなっていく強化学習の過程は面白いですね。
AobaZeroで一度見てるのですが、こんなので強くなっていくのが不思議です。
最初に覚えるのは1手詰の形で、それで勝ちなのが分かると、徐々にその数手前の局面も勝ちやすい、と評価され
それが0手目まで伝播していく感じです。
大駒、特に飛車を使って詰ますのが一番簡単なようで、最初に飛車の使い方が一番上手くなっていくように見えます。
この辺りは人間にも似ているかも。
ただ人間(の初心者?)は駒得重視で、王から遠い駒(特に歩)でも取りたがる傾向が高い、と思うのですがAIは
いきなり寄せ重視で、敵玉の周囲しか相手にしない感じです。
最近、3.6時間程度で無料枠が終了するようになったので
1072円/月で24時間で終了するProに申し込んでみました。
きっかり24時間3分ぐらいでセッションが終了して、
2回試してP100がどちらも割り当てられました。
250WのGPU(P100)を一か月使うと、電気代が4800円ぐらいかかるのですが
電気代よりかなり安くてお得ですね。24時間ごとにクリックしなおすのがやや面倒ですが・・・。
追記:
3回目、4回目でV100を引きました。Aoba駒落ちの棋譜生成速度はだいたい下のような感じです。
V100,P100は設定を変えればもう少し速くなると思います。
(Colab Proで割り当てられたGPU:1回目から、
P100,P100,V100,V100,V100,P100,P100,P100,V100,P100,P100,P100,V100,P100,P100,V100,P100,P100,P100,P100,V100,V100,P100,P100,P100)
V100 287棋譜/時 Device O-1:28:65W ... ミニバッチ28、65プロセス同時に起動
V100 323棋譜/時 Device O-1:28:85W
P100 198棋譜/持 Device O-1:28:65W
P100 213棋譜/持 Device O-1:28:85W
T4 140棋譜/持 Device O-1:28:65W
1050Ti 38棋譜/持 Device O-1:7:21W
1080 122棋譜/持 Device O-1:28:65W
3090 800棋譜/持 Device O-1:42:126W
2080Ti 400棋譜/持 Device O-1:28:85W
KataGoの最新版が公開されていて、探索部の改良で+75Elo強くなったそうです。
CGOSでやや古いですが40blockのs509で強さを調べてみました。
対局数が202局と少ないですが、1.4.5 と比べてBayesEloで +17 の向上、
LeelaZeroの#282、1手400playout相手だと、やや勝率が下がってます。
対局数が少ないのもありますが、1手 100visit、とかなり少ない数だと
そこまで強くなっていない感じです。
名前 BayesElo 対局数
kata190b40s509v100 3898 202
kata145b40s509v100 3881 1130
LZ_282_0410_p400 3838 8575
LZ_282_0410_p400 に対する勝率は下です。
勝ち 局数 勝率
kata190b40s509v100 17 / 33 51.5
kata145b40s509v100 39 / 68 57.3
http://www.yss-aya.com/cgos/19x19/cross/kata190b40s509v100.html
http://www.yss-aya.com/cgos/19x19/cross/kata145b40s509v100.html
KataGoの最新版 1.9.1(BugFixがすでに出ています)
https://github.com/lightvector/KataGo/releases
追加された2つの手法
Dynamic Variance-Scaled cPUCT
https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md#dynamic-variance-scaled-cpuct
Uncertainty-Weighted MCTS Playouts
https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md#uncertainty-weighted-mcts-playouts
3x+1問題が解けたら1億2千万円の賞金がかけられています。
1997年ぐらいに小谷先生がホームページを作られて、どこまで解けたか、を募集していました。
ランキングには森田将棋の森田和郎さんや詰将棋を最良優先探索(探索木をすべて記憶、河野さんのは
動的評価で局面を選択)で解くプログラムを作られた河野泰人さん、などが名前を連ねています。
トップの藤波さんは「ハッカーの楽しみ」の翻訳をされた方です。
!!3X+1問題現在の記録!!
https://web.archive.org/web/19991114113824/http://www.tuat.ac.jp/~kotani/3xp1-rec.htm
3X+1の問題
https://web.archive.org/web/19990428131459/http://www.tuat.ac.jp/%7Ekotani/3xplus1.htm
藤波さんのアセンブラを駆使した高速化手法
https://web.archive.org/web/20001006212452/http://www.csl.sony.co.jp/person/fnami/asm.htm#example
「懸賞金1億2000万円」音楽系の企業が、数学の未解決問題に なぜ?
https://www.itmedia.co.jp/business/articles/2107/07/news136.html
コラッツ予想 懸賞金1億2000万円
https://mathprize.net/ja/posts/collatz-conjecture/
CGFオープンが10月9日(土)、10日(日)に開催されます。
今年も新型コロナウイルスの影響で、オンラインでの開催となります。
当日の対局の連絡などはSlack、Zoomで行います。
LeelaZeroやKataGoなどのオープンソースに独自の改良を加えたソフトでの参加も可能です。
皆様のご参加をお待ちしております。
参加申し込み締め切り 2021年 10月 4日(月)
大会 2021年 10月 9日(土) 10:00-17:00 9路盤のみ
2021年 10月10日(日) 9:30-16:00 19路盤のみ
会場: オンライン開催
CGFオープン2021、大会要綱
http://hp.vector.co.jp/authors/VA012620/cgf2021/cgf2021.html
現在の参加者予定リスト
http://hp.vector.co.jp/authors/VA012620/cgf2021/list2021.html
CGFオープン
http://hp.vector.co.jp/authors/VA012620/
StockfishがGPL違反だとしてChessBaseを訴えたそうです。
しかしGIGAZINEの記事はNNUEなどの技術的な詳細まで細かく調べていますね。
オープンソースチェスエンジンの「Stockfish」がチェスソフトの販売企業を訴える
https://gigazine.net/news/20210721-stockfish-lawsuit-against-chessbase/
Aoba駒落ちでは初期は1手1playoutの手抜きで棋力を計測していたのですが
最近の対Kristallweizenの1手10kとの推移の比較を見てると
w117からw225で自己対戦の伸びが+311、対Kristが+329とほぼ同じです。
探索させないPolicyだけの計測だと、自己対戦の弊害はほぼなさそうです。
これが正しいとすると、ほぼランダム(重み w1)のfloodgateでの強さは
1974 - 1060 = 914 ぐらいかもしれません。
重み 自己対戦レート 対Krist(1手100playout)
w117 1060 1974
w225 1371(+311) 2303(+329)
Aoba駒落ち、グラフなど
http://www.yss-aya.com/komaochi/
Aoba駒落ちで、手数の長さと下手の勝率を調べてみました。
予想では、下手は意図的に弱くしているので、手数が長くなるほど
下手の勝率は下がる、というものでした。
実際は、予想に反して手数が長いほど下手の勝率は上がってるように見えます。
200は200手以上、の合計で6枚落ちで下手勝率が低いのは入玉将棋だと
上手の方が宣言勝ちで勝ちやすいためです。
過去50万棋譜での宣言勝ちの局数
下手 上手
平手 1001 1131
香落ち 719 746
角落ち 956 1468
飛落ち 715 1026
2枚落ち 676 2097
4枚落ち 455 2819
6枚落ち 220 4287
下は20手ごとの投了手数と下手の勝率です(40手以下、と200手以上は合計)。
平手だとfloodagteで2600点ぐらい(1手800プレイアウト)で
6枚落ちだと下手は720 Elo弱いです。
![]()
囲碁は5路盤までしか完全解析はされていませんが
KataGoの自己対戦で7路盤の巨大な定石を作ったそうです。
日本ルールでの適切なコミは9目でなく、8目らしい、そうです。
下のサイトでは1手ごとに場所ごとの勝率が出て面白いです。
日本ルール、中国ルール、どちらでも初手の最善は天元になってます。
日本ルール、コミ8目での7路盤の結果
https://katagobooks.org/book7jp/root/root.html
中国ルール、コミ9目での7路盤の結果
https://katagobooks.org/book7tt/root/root.html
KataGo Opening Books
https://katagobooks.org/
5路盤の完全解析(2002年) 5x5 GO IS SOLVED
http://erikvanderwerf.tengen.nl/5x5/5x5solved.html
Aoba駒落ちの1手1playoutを下手に固定して1手100k、1手1000kでの
水匠U、Kristallweizen、elmo(WCSC27)の強さを調べてみました。
手合いは2枚落ち、4枚落ち、6枚落ちの3種類です。
どの手合いでも思考時間10倍での棋力の伸びが+100程度、と小さいです。
特に6枚落ちでは水匠U、elmoは +12、+19、とほとんど強くなっていません。
最初の16手はAoba駒落ちの学習棋譜から作った定跡を使ってます。
Kristallwiezenの自己対戦から作った6枚落ちの定跡でも試したのですが
水匠Uだと、100kから1000kで+67、1000kから10000kで+30とほとんど伸びないです。
水匠Uは2枚落ちの上手を想定して作られているだけあって、2枚落ちでは一番強いです。
それでも10倍で+104と伸びは小さいです。
平手専用で作られている評価関数で駒落ちを対戦させること自体がかなり無茶なのですが。
NNUEはともかく3駒関係で個々の位置関係を足し合わせてるelmoなら6枚落ちでも
時間をかければ伸びると思ったのですが、そうでもないようです。
ただ、平手ではNNUEに2割程度しか勝てないelmoも駒落ちではほぼ互角の強さです。
Aoba駒落ち(w334)は800playoutでfloodgateで2750点ぐらい、なのでAobaZeroと同じ割合で下がるとすると
1playoutだと950点弱くなって1800点ぐらいでしょうか。
駒落ち下手での強さが平手と同じ、と仮定するとfloodgate1800点相手に6枚落ちだと
水匠U、Kristallweizen、elmoはほとんど勝てないかもしれません。
Aoba駒落ちは自己対戦になるので微妙ですが、6枚落ちだと100playoutで互角以上(50)になってます。
ただ、Aoba駒落ちもKristallweizenで作った定跡では 100p -> 1000p で+168しか伸びてないです。
10倍の探索時間でこの伸びはかなり小さいです。
ある程度形勢に差が付いた時に、今のAIはあっさり指して負けることが多いので改良の余地があるのかもしれません。
もっとも6枚落ち程度まで差がついた状況なら多少粘っても仕方がない気もしますが・・・。
Aoba駒落ちの1手1playout(下手)に対する上手のレート(ELO)
水匠U Kristallweizen elmo(WCSC27) Aoba駒落ち dlshogi(dr2_ex)
6枚落ち(1手 100k) -384 -428 -373 -372 -623
6枚落ち(1手1000k) -372( +12) -355( +73) -354(+19) 50(+422) -487(+136)
4枚落ち(1手 100k) -161 -248 -220 -169
4枚落ち(1手1000k) -74( +87) -132(+116) -153(+67) 350(+519)
2枚落ち(1手 100k) 5 -48 -64 -87 -304
2枚落ち(1手1000k) 109(+104) 48( +96) 35(+99) 280(+367) -300( +4)
2枚落ち(1手10000k) 131( +22) 30( -18) 57(+22) 545(+265)
* -384 は6枚落ちで水匠Uの1手100kはAoba駒落ちの1手1playout相手に勝率0.099 を意味します。
*(+12) は10倍の思考時間でのレートの伸びを示します。
*探索部はYanauraou 6.00 の NNUE(水匠U,Kristallweizen) と KPPT(elmo)
*Aoba駒落ちの上手は1手10pと1手100p、1手1000p。
*すべて400対局以上。最初の16手は定跡集から選択。
*Aoba駒落ちの学習棋譜で2回以上出現した16手目までの800棋譜を定跡集として利用。
*Aoba駒落ちの重みはw334。
*持将棋は27点法(上手は落とした駒も自分の点数)。
*dlshogiは1手800pと1手8000p
Aoba駒落ちの1手1playout(下手)に対する水匠U(上手)とAoba駒落ち(上手)のレート(ELO)
水匠U
6枚落ち(1手 100k) -318
6枚落ち(1手 1000k) -251( +67)
6枚落ち(1手10000k) -221( +30)
Aoba駒落ち
6枚落ち(1手 10p) -351
6枚落ち(1手 100p) 35(+386)
6枚落ち(1手1000p) 203(+168)
*Kristallweizenの1手40k(下手)対1手10000k(上手)の自己対戦で作った定跡(16手まで)を使った場合
*下手はすぐに攻めずに王を囲っている定跡が多いです。
*Aoba駒落ちの1手1000pでは勝ちの28%が宣言勝ち。
駒落ち定跡集、各800局、16手まで。Aoba駒落ちの学習棋譜から。およびKristallweizenの自己対戦から(6枚落ちのみ)
http://www.yss-aya.com/20210809_komaochi_book_800_16.zip
以下のような設定で2枚、4枚、6枚落ちを対戦させてます。
$ komaochi/bin/playshogi -frsm 800 -d 4 -o opening/20210805_2mai.sfen -c /bin/bash -0 "~/komaochi/bin/aobak -p 1 -h 1 -w ~/w000000000334.txt" -1 "cd ../elmo; ./yane600_kppt_zen2 usi , setoption Threads value 2 , setoption USI_Hash value 64 , setoption NodesLimit value 100000 , isready" >> 2mai_w334_1p_vs_elmo600_100k_t2_64MB.csa
$ komaochi/bin/playshogi -frsm 800 -d 5 -o opening/20210805_4mai.sfen -c /bin/bash -0 "~/komaochi/bin/aobak -p 1 -h 1 -w ~/w000000000334.txt" -1 "cd ../suisho_u/; ./yane600_zen2 usi , setoption Threads value 2 , setoption USI_Hash value 64 , setoption NodesLimit value 100000 , isready" >> 4mai_w334_1p_vs_suisho_u600_100k_t2_64MB.csa
$ komaochi/bin/playshogi -frsm 800 -d 6 -o opening/20210805_6mai.sfen -c /bin/bash -0 "~/komaochi/bin/aobak -p 1 -h 1 -w ~/w000000000334.txt" -1 "cd ../Kristallweizen; ./yane600_zen2 usi , setoption Threads value 4 , setoption USI_Hash value 64 , setoption NodesLimit value 1000000 , isready" >> 6mai_w334_1p_vs_Krist600_1000k_t4_64MB.csa
今まで40bが自動的にアップされてましたが今後は60bがアップされるそうです。
60bとは言っても、
40b が 40b x256、
60b が 60b x320
とフィルターの数も256から320に増えてるので実際の重みファイルのサイズは
圧縮状態で165MBから384MBと2.3倍近くなってます。
CGOSでの棋力はv100だとほぼ40bと同じ強さで同じ思考時間だとまだ40bよりは弱いようです。
追記:
新たに40bもアップされました。棋譜生成に使うのは40bで、まだ60bは使っていないそうなので
しばらく40bと60bが混合してアップされるのかもしれません。
BayesElo
kata1_b40s815v100 4136
kata1_b40s955v100 4093
kata1_b40s773v100 4078
kata1_b40s980v100 4063
kata1_b40s802v100 4063
kata1_b60s436v100 4061 60b
kata1_b40s901v100 4058
kata1_b40s864v100 4053
kata145b20s530v400 4051
kata1_b40s740v100 4050
kata1_b40s911v100 4046
kata1_b40s964v100 4041
kata1_b40s985v100 4037
kata1_b40s660v100 4031
kata1_b40s767v100 4029
kata1_b40s782v100 4028
kata1_b40s959v100 4025
kata1_b60s405v100 4017 60b
Networks for kata1
https://katagotraining.org/networks/
Colab Proは月1072円でしたが、上位の
Colab Proが月5243円で8月12日ぐらいから使えるようです。
ブラウザを閉じても実行が続くことや、より上位のGPUが安定して使えるそうです。
現在、Colab Proを10アカウント使っているのですが
今までV100かP100を使えていたのが
8月17日からT4が登場して、最近ではT4が半分を超えてきてます。
使いすぎかな、と思ってたのですがPro+が登場してリソースが制限されたせいっぽいですね。
2021/07/28 17:28 P100:7 V100:2
2021/07/29 16:54 P100:9 V100:1
2021/07/30 16:59 P100:8 V100:2
2021/07/31 17:02 P100:8 V100:2
2021/08/01 17:32 P100:8 V100:2
2021/08/02 17:29 P100:9 V100:1
2021/08/03 18:33 P100:10 V100:0
2021/08/04 22:44 P100:10 V100:0
2021/08/06 09:26 P100:8 V100:2
2021/08/07 18:20 P100:8 V100:2
2021/08/08 18:02 P100:9 V100:1
2021/08/10 22:43 P100:9 V100:1
2021/08/11 23:41 P100:8 V100:2
2021/08/13 21:06 P100:9 V100:1
2021/08/15 23:49 P100:7 V100:3
2021/08/16 23:55 P100:7 V100:3
2021/08/17 22:28 P100:7 V100:2 T4:1
2021/08/20 18:20 P100:7 V100:3
2021/08/22 04:43 P100:8 V100:2
2021/08/24 09:02 P100:8 V100:0 T4:2
2021/08/25 11:20 P100:7 V100:0 T4:3
2021/08/26 13:58 P100:4 V100:0 T4:6
2021/08/27 12:27 P100:6 V100:0 T4:4
2021/08/29 08:45 P100:5 V100:0 T4:5 P100:2 T4:3
2021/08/30 08:05 P100:4 V100:0 T4:6 P100:0 T4:5
2021/08/31 15:51 P100:2 V100:0 T4:8 P100:0 T4:5
2021/09/01 14:06 P100:3 V100:0 T4:7 P100:3 T4:2
2021/09/02 14:24 P100:2 V100:0 T4:8 P100:0 T4:5
2021/09/03 13:39 P100:2 V100:0 T4:8 P100:1 T4:4
2021/09/04 15:25 P100:2 V100:0 T4:8 P100:1 T4:4
2021/09/05 13:56 P100:1 V100:0 T4:9 P100:1 T4:5
2021/09/06 14:02 P100:0 V100:0 T4:10 P100:0 T4:6 (cancel K80 x2)
2021/09/07 14:06 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80 x2)
2021/09/08 14:24 P100:0 V100:0 T4:8 P100:2 T4:6 K80:1 P4:1 (cancel K80 14: 3,3(P4),1,8(K80),1,1,1(P100),5,3,5,3,1,1,5)
2021/09/09 14:32 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:6, P4:1)
2021/09/10 14:44 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:12)
2021/09/11 18:20 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel P4:1,K80:9) 11時間程で14停止
2021/09/12 18:59 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:11, P4:3) 10時間程で11個停止
2021/09/13 19:06 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:12, P4:1)
2021/09/14 19:31 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:16, P4:2) 9時間で7停止
2021/09/15 19:49 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:9, P4:0)
2021/09/16 20:07 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:0, P4:0) 7時間で2停止, 0.7時間で4停止
2021/09/17 21:03 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:0, P4:0)
2021/09/18 20:58 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:0, P4:0) 6分後にrobotでパネル探しx8
2021/09/19 21:31 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:0, P4:0)
2021/09/20 22:10 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:4, P4:2)
2021/09/21 22:37 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:6, P4:0)
2021/09/22 23:57 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:3, P4:1)
2021/09/23 22:06 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:0, P4:0)
2021/09/24 22:39 P100:0 V100:0 T4:10 P100:0 T4:8 (cancel K80:2, P4:3) 連続reset後、ほぼ確実にrobotか聞かれるように
2021/09/25 22:47 P100:1 V100:0 T4:9 P100:0 T4:8 (cancel K80:0, P4:1)
2021/09/26 22:28 P100:9 V100:0 T4:1 P100:7 T4:1 (cancel K80:0, P4:0)
2021/09/27 22:30 P100:10 V100:0 T4:0 P100:8 T4:0 (cancel K80:0, P4:0)
2021/09/29 00:28 P100:5 V100:0 T4:5 P100:1 T4:7 (cancel K80:0, P4:0)
2021/09/30 08:41 P100:9 V100:0 T4:1 P100:7 T4:1 (cancel K80:0, P4:0)
2021/10/01 09:22 P100:10 V100:0 T4:0 P100:7 T4:1 (cancel K80:0, P4:0)
2021/10/02 09:42 P100:10 V100:0 T4:0 P100:8 T4:0 (cancel K80:0, P4:0)
2021/10/04 09:55 P100:10 V100:0 T4:0 P100:6 T4:0 (cancel K80:0, P4:0) cannot connect GPU backend x2(17,18)
2021/10/05 09:55 P100:1 V100:0 T4:0 P100:0 T4:0 (cancel K80:0, P4:0) cannot connect GPU backend x17 10/3に17アカウント購入停止。
2021/10/06 07:45 P100:1 V100:0 T4:0 P100:0 T4:0 (cancel K80:0, P4:0) cannot connect GPU backend x16 購読停止の16アカウントはすべて6時間で切断。以降18時間待ち。購入を続けてる1アカウントは24時間で切断。最後の購入から1か月は使える、のcolabの説明は正しくない。
https://colab.research.google.com/signup
Aoba駒落ちで6枚落ちの上手がどのくらい強くなってるのか調べてみました。
大雑把ですが、平手が400点上昇した時、6枚落ちの上手は300点ほど上昇しています。
平手 : Aoba駒落ちの1手100playout vs Kristallweizenの1手20kノード
6枚落: Aoba駒落ちの1手 20playout vs 水匠4改の1手1000ノード(下手に固定)
平手は互角局面集、6枚落ちはAoba駒落ちの学習で出現した棋譜から抽出した定跡を使いました。
最新の重みw611では6枚落ちの上手の勝ちの6割(167/263=0.63)は入玉しての宣言勝ちです。
ここまで宣言が多いと、駒落ちで入玉宣言できて下手を持てるソフトは存在しないので
一方だけルールが分かってない状態で測定するのが、かなり不公平な感じはします。
重み 勝 分 敗 局数 (宣 千 宣) 上手勝率 95% ELO
w611 263-28-109 400 (167-21-0) 0.693(0.043)( 141)
w511 202-54-144 400 (132-44-1) 0.573(0.045)( 50)
w411 198-57-145 400 (109-35-0) 0.566(0.045)( 46)
w334 130-66-204 400 ( 56-41-0) 0.407(0.044)( -65)
w215 134-58-208 400 ( 62-54-0) 0.407(0.044)( -65)
w170 95-53-252 400 ( 43-42-0) 0.304(0.041)(-144)
![]()
MCTSでは通常Rootで最大選択回数の手を選ぶのですが、LeelaZeroでは LCB という
勝率ベースの値を元に選んでいます。
Aoba駒落ちの平手でこのLCBを試してみました。
自己対戦だと1手100playoutでは+157 Elo、1手800playoutでは+103 Elo、と
かなり強くなります。
ただplayoutが増えるほど効果は減るのかもしれません。
LCBはRootでのみ、適用しています。
1手100playoutの対Kristallweizenだと +79 Elo(126-47)でした。
自己対戦(1手100playoutと800playout)でのLCBありのLCBなしに対する勝率(w616)
勝 分 敗 局数 (宣 千 宣) 先手勝率 勝率 95% ELO
100playout 273-24-103 400 ( 9-24- 9)(s=182-194,0.484), 0.713(0.043)( 157)
800playout 249-18-133 400 ( 9-18-15)(s=200-182,0.524), 0.645(0.046)( 103)
Kristallweizen(6,00)1手20kに対するAoba駒落ち(1手100playout, w615)の勝率
LCBなし 226- 2-172 400 (19- 2- 0)(s=198-200,0.497), 0.568(0.048)( 47)
LCBあり 268- 4-128 400 (10- 4- 0)(s=196-200,0.495), 0.675(0.046)( 126)
ただKataGoの学習ではLCBは悪影響だそうで、学習では使えないのかもしれません。
LCBが1位の手の探索回数を通常の最大回数の手の値に、以下、2位を2番目の回数の値に、と書き換えてみようかと思ってます。
Is LCB actually a benefit in self-play?
https://github.com/leela-zero/leela-zero/issues/2411
最初、UCBのように簡単に計算できるのかと思ったのですが、実装を見るとplayoutごとに返されるNNの勝率の分散を計算していて意外と面倒でした。
Virtual Lossの補正も必要でした。
Aoba駒落ちでの実装
https://github.com/yssaya/komaochi/commit/73258b38a52da395456ed180ea07edea8c491225
Aoba駒落ちに6枚落ちの下手で対戦してみました。
さすがに余裕で勝つだろうと思ったら負けました・・・。
棋力はアマ4段、とか吹聴してたのですがこれは恥ずかしいかも。
6枚落ちの下手を指すのは40年ぶりくらいで、相手の桂、香が取れないので
簡単に角とか切って寄せに行こうとすると駒不足で攻めが切れます。
6枚落ちの上手は歩は何枚取らせてもいいから飛車は成らせない、金銀は取らせない、
下図のように空中要塞を築いて、とにかく寄せるまでに手数がかかるように、
みたいな大局観で指すのがいいようです。
改めて思ったのは6枚落ちだと大局観が平手と相当違うので、将棋の学習(人間)で
駒落ちから始めるのはイマイチな気もしました。
下は棋譜です。
重みはw593で1手800playoutです。ノートPCのオンボードGPU(X1 Carbon)で、1手10秒くらい考えます。
1局目 http://www.yss-aya.com/komaochi/csa/sample.html#21Sep07a_6mai_game1 (負け)
2局目 http://www.yss-aya.com/komaochi/csa/sample.html#21Sep07b_6mai_game2 (勝ち)
3局目 http://www.yss-aya.com/komaochi/csa/sample.html#21Sep07c_6mai_game3 (負け)
3局指して1勝2敗でした。勝った1局は224手もかかってます。
6枚落ちですら勝つのは神経使って大変で2枚落ちでは指す気(勝てる気)はしないです・・・。
Aoba駒落ちの評価値は、下手の実際の勝ちやすさを基準にいい感じで出ているような気がします。
納得できない勝率の時もありましたが。
![]()
6枚落ちというのは、定跡があって、下手だけ書くと7六歩、6六角、7七桂から9筋の端を狙う指し方があって、それが間に合わない場合は5六歩から5七角と1筋を破りますよと脅して上手の駒を分散させれば簡単に勝てると思います。
この局面図を見ると桂馬がどちらも跳ねてないし、飛車は遊んでいるし、うーん、下手の方の棋力が低すぎるような気がします。
人間は6枚落ちなんて滅多に指さないから、人間の勉強不足のような気がします。
9筋を破る指し方などは所司さんの「【決定版】駒落ち定跡」を読んでそれなりに勉強したのですが
△84歩をただで捨ててきたり簡単に飛車が成る変化に持ち込めなかったです。
今までの将棋ソフトとはかなり違った駒落ちを指してくるので
よかったら一度試してみていただければ、と思います。
実行ファイルはこちらから、
https://github.com/yssaya/komaochi/releases
さらに下の「将棋所で遊んでみたい」の手順で
aobak.batを編集した後、ShogiGUIで aobak.bat を登録します。
GUIとしては将棋所よりShogiGUIの方が画面が大きくて遊びやすいです。
https://github.com/yssaya/komaochi
六枚落ちの場合は、7六歩、6六角と出て、9三の地点に駒のキキを集中すると、上手は苦しくなって△8四歩なんかを指してごまかしてきます。「大駒は近づいて受けよ」という受け方なんですが、これには▲同角と取って、次に▽8三金のような手で生角をいじめようとすると思うんです。これには早めに5六歩とついて、角を5七の地点に引くようにします。
すると、今度は1三の地点が狙えるようになって▲1六歩、▲1五歩とかやると今度は1三の地点が受けれなくなるので、あとは自然に下手がよくなります。
この5七の地点に角を引く指し方はNHK将棋講座で確か田中寅彦九段(?)がん十年前に講義した内容だったと思います。
だから、六枚落ちは上手が勝つのは難しいと思います。
5六歩とついて5七角と引くのはノイズを含まない棋譜でAobaZero下手もやってるので山下さんもご存知かと
それでその後2筋を突破されてもうまいこと空中戦に持ち込んでしまいます。まあ最後は無論上手が負けますが
六枚落ちの上手は何点で宣言でしょうか?
27点法だと手番で変わると思いますが上手は先手でしょうか?
やねうら王にIssues上げて置きました。
https://github.com/yaneurao/YaneuraOu/issues/190
Aoba駒落ちでは同点(27点)なら上手の勝ち、としています。
平手で同点なら不利な後手勝ち、としてるので、不利な方に有利なように、しています。
奨励会の香落ちでどうなってるのかは不明です。24点法かとは思うのですが。
追記:CSA例会で勝又さんによると、奨励会では今でも香落ちが行われていて
上手は23点(落とした香を足すと24点)で引き分け、とのことです。
27点法だとすると、香落ちなら上手は26点(香を足して27点)で上手の勝ち、ではないか、
とのことでした。
駒落ちでは上手は落とした駒も自分の点数として計算(連盟ページより)
https://www.shogi.or.jp/faq/rules/
ありがとうございます。この話題が出るまで駒落ち戦の宣言は考えたことが無かったです。
まだまだ未知なものがあるものですね。
ちなみに,やねうら王はオプション対応頂けそうです。
AobaZeroの40bは+50程度しか強くなっていません。
学習率を10分の1にして試しても棋力は上がらず、
学習率を10倍にして1000万棋譜から8倍速で4000万棋譜まで学習させても20bと同程度の強さで
棋力を上げる学習方法が思いつかないです。
実装にバグがあるから、という可能性も高いのですが
20bでほぼ収束してる状態で40bに移行したため
学習させる変化が狭い、せいもある気がします。
下は100万棋譜ごとに16手目で同一局面になった回数です。
最大、2番目、3番目、1,2,3の合計、の4つ描画してます。
2300万棋譜以降はほぼ変化ないです(40bは4000万棋譜から)。
100万棋譜のうち、8万棋譜ぐらいはまったく同じ棋譜を作っています。
最近のノイズなしの棋譜も50手目近くまで、同一、といったのが増えてます。
初期局面にプロの棋譜やfloodgateを使っているdlshogiやPALがより強くなってるのは
学習させる局面により多様性があるからな気もします。
最近、KataGoが40bから倍の60b(40bx256 -> 60bx320)に以降したのですが
ほとんど強くなっておらず、今のAobaZeroの40bに似ています。
学習が収束してる状態でネットワークのサイズを増やしても効果は少なく、
もっと前の段階で40bに移行すべきだった、のかもしれません。
![]()
現在は教師データに勝率は入っているんでしょうか?
中終盤はValueが安定しないと探索で収束する方向が定まらないように感じます。
ざっくり言うと詰めるのか受けきるのか入玉するのかって方向性ですね。
AobaZero教師を流用した二番絞りも当初はそれほど強くなかったんですが
勝率項のクロスエントロピーを評価する強化学習をするようになってから中終盤が強化されました。
勝率は見ていないです。
一度試してみようと思います。
囲碁のように盤面を左右反転も効果がありそうな気がするのですが
初期乱数状態から少し学習させた実験だと強くはならなかったです。
Aoba駒落ちの平手でkldgainとLCBの組み合わせを調べてみました。
1手800playoutで対Kristallweizenだと
kldgain : +71 Elo(47 -> 118)
kldgain + LCB: +34 Elo(47 -> 81)
LCB: +0 Elo(47 -> 47)
kldgain単体は +71 と効果があるのですが、LCBも追加すると +34 で下がり、LCB単独だと +0 と効果なしでした。
1手100playoutでのLCBを再度調べると対Kristallweizenで
LCB: +79 Elo(47 -> 126)
LCB: +90 Elo(47 -> 137) 追試
+79、+90と、やはり効果はあるようです。
LCBは1手100playoutでは効果がありますが、1手800playoutだと自己対戦では効果ありですが
対Kristallweizenだとほぼ効果はなくなるようです。
Aoba駒落ち(1手800playout,w645,平手)の対Kristallwiezen(6.00,1手100k)の勝率
勝 分 敗 局数 (宣 千 宣) 先手勝率 勝率 95% ELO
223- 8-169 400 (31-8-0)(s=197-195,0.503), 0.568(0.048)( 47)
263- 5-132 400 (45-5-0)(s=197-198,0.499), 0.664(0.046)( 118) kldgain
246- 0-154 400 (29-0-0)(s=198-202,0.495), 0.615(0.048)( 81) kldgain + LCB
225- 4-171 400 (21-4-0)(s=201-195,0.508), 0.568(0.048)( 47) LCB
kldgainは下の設定にしています。
最大1手5000 playout、minimum-kldgain-per-node = 0.000002 (平均 789playout/手)
Aoba駒落ち(1手100playout)の対Kristallweizen(6,00)1手20kの勝率
LCBなし 226- 2-172 400 (19- 2- 0)(s=198-200,0.497), 0.568(0.048)( 47) w615
LCBあり 268- 4-128 400 (10- 4- 0)(s=196-200,0.495), 0.675(0.046)( 126) w615
LCBあり 274- 3-123 400 (11- 3- 0)(s=206-191,0.519), 0.689(0.045)( 137) w645
LCBはAoba駒落ちで+80から+160の効果
https://524.teacup.com/yss/bbs/3800
lc0のkldgainでplayout数を可変にすると学習棋譜が+100Eloほど上がるようです
http://www.yss-aya.com/bbs_log/bbs2021.html#bbs32
下の局面で、後手が振飛車穴熊に組むだけで21手目の先手のAobaZeroは +1744 で勝勢と思っています。
AobaZeroの最新の重み(w3682,256x40block)だと先手勝率が95%、Aoba駒落ち(w704,256x20block)でも勝率85%です。
これはさすがにおかしいです(実際本譜では負けてますが)。
学習局面に振飛車、穴熊がほぼ出てこないのが原因だと思います。
AlphaZeroでは30手目までは乱数性を持たせる仕組みがありますが
それでも勝率が悪い変化は選択されにくいので、ほとんど振飛車は試しません。
人間が実際に指す戦法に近いような分布になる方法はないものでしょうか・・・。
21手目でAobaZeroは +1744 で勝勢と評価
http://wdoor.c.u-tokyo.ac.jp/shogi/view/2021/03/27/wdoor+floodgate-300-10F+AobaZero_w3190_kld_ave_p704+Yss1000k+20210327200013.csa
![]()
前回16手までで同一局面の数を調べましたが30手目も調べてみました。
下のグラフはAobaZeroの4600万棋譜から
「30手目での、100万棋譜ごとの重複なしの(ユニークな)局面の数(右軸)」です。
分かったのは
1. 16手目から30手目まで一本道が多い。
2. 重複なしの局面数が50%(50万)を切ったあたりの1700万棋譜で棋力の上昇も止まっている。
3. 学習率を下げると重複なしの局面もガクンと減る。
表を作って思ったのはAlphaZeroの30手、や温度のパラメータ、ディリクレノイズの係数などは
こういった性質になるように試行錯誤で決められた、感じがします。
温度を上げて、重複を減らしても、それはそれで棋力の最大値が下がるような気がします。
![]()
下は30手目でのAoba駒落ちでの重複なしの(ユニークな)局面の割合です(50万棋譜ごと)。
面白いことに手合いごとに傾向がはっきり違います。
2枚落ちはほぼ100%重複なし、つまりほぼ全部ばらばらの局面にばらけています。
平手は最新では60%程度で、AobaZeroと同じ傾向ならこれ以上の棋力の向上は小さいかもしれません。
手合いの順番になるか、と思ったのですが、そうでもなく角落ちは最新でも94%でかなりばらけています。
ハンデが大きいほど、30手目までの下手の温度は1より高くなるので2枚、4枚、6枚では
重複は少ないだろう、というのはやや予想通りです。
6枚落ちは隠れて分かりにくいですが角落ちとほぼ同じ推移です。
一番意外なのは角落ちがほとんど重複していない、ことでした。
かなり乱暴に推測すると、2枚落ち(角落ち)は変化が広く、上手、下手、ともに何をやっても大差なく?
香落ちは上手は振飛車(三間限定?)にするしか対策がなく
平手も相掛かりか角換わり系統しか互角に戦えない、と判断しているのかもしれません。
![]()
lightvectorさんによると誰かが全体のデータサイズを超える数TBものデータを落として
サーバ代が負担なので6月から停止してるそうで見えなくなってます。
https://discord.com/channels/417022162348802048/583775968804732928/852242023527481384
> I'm taking that site down for now, until I learn what's going on, since the bandwidth cost is not small.
KataGoの古い学習棋譜(9月現在見えません)
https://d3dndmfyhecmj0.cloudfront.net/
Aoba駒落ちをkldgainを使って学習するようにしてみました。
1手800playout固定だったのが1手200〜3200playoutまで可変になります。
Kristallweizen相手だと1手平均790playoutで+80 Eloぐらい強くなります。
ただ、AlphaZero方式の学習では1手800playout以上であれば
着手の強さはあまり学習に影響を与えないようで
Rootでのノイズの分布で多くの変化に分岐するか、の方が大事?なのかもしれません。
100万棋譜ぐらい作成して様子を見てみたいです。
学習用には最新のreleaseが必要になります。
http://www.yss-aya.com/komaochi/index.html
以前6枚落ちで上手のAoba駒落ちの宣言勝ちが多い、と書きましたが
やねうらおさんにエンジンの駒落ち宣言勝ちに対応していただいたので
違いを調べてみました。
結果は+35 Eloほど、宣言勝ち対応版の方が強いようです。
評価関数で対応しないとほぼ変化はないだろう、と思っていたのですが。
Kristallweizenの1手2k(400局)と4k(800局)を試して
2kは 84-50 = +34, 4kは -51-(-86) = +35でした。
6枚落ち、上手はAoba駒落ち(w745)、1手20playout固定。下手はKristallweizen(6.05)、1手2kと4k
勝 分 敗 局数 (宣 千 宣) 上手勝率 95% ELO
1手2k 237-21-142 400 (149-6-0) 0.619(0.046)( 84)
1手2k 220-18-162 400 (141-3-0) 0.573(0.047)( 50) 宣言勝ちあり(CSARule27H)
1手4k 331-21-448 800 (242-4-0) 0.427(0.034)( -51)
1手4k 290-24-486 800 (199-9-1) 0.378(0.033)( -86) 宣言勝ちあり(CSARule27H)
16手目まではAoba駒落ちの学習で出現した棋譜から抽出した定跡集を利用。
最新の6.05で駒落ちの宣言勝ちに対応されており、
setoption EnteringKingRule value CSARule27H
で駒落ちの27点法(上手は27点、下手は28点で勝ち。上手は落とした駒は自分の点数)となります。
やねうら王がAobaZeroに駒落ちで負けまくっている件について
https://yaneuraou.yaneu.com/2021/09/14/yaneuraou-is-losing-too-much-to-aobazero/
AobaZeroのResnetのサイズを通常の20blockの半分、10blockにして
学習させると120Elo弱いものが出来ました。
ELO training loss(policy+value)
40b +50 1.684 (公開学習中)
20b 0 1.799
10b -120 1.983
と微妙な結果です。それでも40bは弱すぎますが。
(追記:最後の300個ぐらいのlossの平均も追加しました。大きいモデル程小さくなってます)
予想は -150ぐらい弱い、と思ったのですが。
192x15b(同じようなサイズ)だともう少し強くなるかもしれません。
10bで棋譜を作れば-150か-200ほど弱いとは思います。
LeelaZeroだと256x40bと、40bで作った棋譜で学習させた192x15bが同じ思考時間で同じくらいの強さでした。
棋譜の最初から100万棋譜Windows、ミニバッチ256、で学習率0.01から開始して、
20万回学習(320万棋譜)ごとに学習率を2分の1にしました。
w3455(20b)に対するレート差。
Kristallweizen(6.00)の1手20kと水匠4改の1手30kの結果の平均。1手100playoutで400局
棋譜数 レート差 学習回数 学習率
1220万棋譜 -272 500000 lr = 0.00125
2020万棋譜 -199 1000000 lr = 0.0003125
2820万棋譜 -151 1500000 lr = 0.000039062
3620万棋譜 -138 2000000 lr = 0.000009765
4420万棋譜 -124 2500000 lr = 0.000001220
4661万棋譜 -120 2650625 lr = 0.000000610
10blockの重み
http://www.yss-aya.com/aobazero/20210904_234438_win1000k_lr0005_wd00002_10b_m256_wait_0ms_id0_from_20210902_122651_4200k_games_iter_2650625.txt.xz
KataGoのForced Playouts and Target Pruningあたりは囲碁に限らず将棋でも良い感じに利くんじゃないでしょうか?
ランダムノイズ分を強制的に探索して駄目だったら捨てて学習には使わない感じです。
うろ覚えでしたので論文読み直してみました。
仮に100playoutして、Polciyが0.30(ノイズで大きな値に)という手の場合、
nForced(c) = sqrt( k*P(c)*Sum(All visits) ) , k=2
nForced(c) = sqrt( 2*0.30*100 ) = 7.7
なので8回は必ず探索する、という感じでしょうか。800playoutなら22回。
最後に、最大回数で選ばれなかったら、PUCT(best) の値を超えないようにノイズで探索したplayout数を引く。
1playout、の手は削除。
30手目以降もこの手法なら枝分かれがしやすい感じはします。
AlphaZeroの30手に相当する部分は下のようになってるようです。
19路だと 0.04 * 19^2 = 14手まではPolicyの分布で打つ(これはノイズを足した後の分布?)。
9路だと 0.04 * 9^2 = 3手まで。
19路だと15手目以降は温度が0.8から0.2まで下がる(19路なら平均手数220手の半分の110手ぐらいまで?)
他にも
・ 5%の棋譜で9手後付近で3手から10手のランダム候補の中から最善を1手打って開始。
・ 2.5%の局面で70%で温度1、25%で温度2、5%で温度無限大で選ぶ。
色々やってますね・・・。
今考えてるのは激指の確率探索のように、Policyの確率が高い手を選んだ場合は温度が上がりやすい、
つまり、実現確率が高い局面ほど、温度が高い、
みたいな感じで30手目まで分布させてはどうか、と思ってます。
下は学習用の自己対戦で、最初の30手で選択された手のPolicyの値を
30回掛けた値(100棋譜の平均)と、重複なしの局面の割合です。
ぼんやりと関係性があるように見えます。
例えば、飛車落ちだと重複なしの割合は72.33%、
この時、実際に選択された手のPolicyの確率の平均は
-45.59 / 30 = -1.368, e^(-1.368) = 0.218
つまりAlphaZero方式で温度1で30手まで訪問数の分布で手を選んだ場合(Rootノイズあり)
1手の平均確率が0.218だとほぼ30手後は72.33%でばらばらになる、という感じです。
Policyの値はノイズを足す前です。
2枚落ちは0.129と確率が低く、各局面で盤上この1手、といった手が少なく
どれを選んでも1局、という感じなのかもしれません。
Aoba駒落ちの50万棋譜における重複なしの割合から(700万棋譜時点)
Policyの計算にはw754を使用。
logの平均 Policyの平均確率 重複なしの割合(%)
平手 -37.89 0.282 59.35
香落ち -38.04 0.281 66.39
角落ち -51.74 0.178 93.81
飛落ち -45.59 0.218 72.33
2枚落ち -61.36 0.129 99.8
4枚落ち -48.05 0.201 86.33
6枚落ち -56.59 0.151 93.41
![]()
2021年10月23日(土)に下記の対談が行われるとのことです。
Zoomで行われ、聴講は無料で下のページから申し込み可能です。
【特別対談2】
「将棋と身体知」
招待話者:渡辺 明(わたなべ あきら)
渡辺名人は、押しも押されもせぬ当代トッププロ棋士です。高度な思考を要求される
将棋というゲームをどのように思考し、この地位を維持していらっしゃるのか、思考
法、学習法を伺うとともに、身体と思考の関係についてお話を伺っていきたいと考え
ています。特に近年現れた将棋AIと人間の思考との関係、それをどのように使える知
識に変えて対戦に活かしていくのかについても掘り下げてみたいと思います。カーリ
ングもお好きとのことなので、カーリングの戦略的思考と将棋との類似点などについ
ても、可能であれば小笠原さんも交えてお話を伺えればと考えています。
(聞き手:伊藤 毅志(いとう たけし)ゲームを題材とした認知科学研究者。)
第35回身体知研究会
http://www.sigskl.org/activity/pg143.html
AobaZeroでも調べてみました。
Policyの平均確率で比較してます。
同じ曲線上に載るか、と思ったのですがAobaZeroとAoba駒落ちでは傾向が違うようです。
重複が多いほど平均確率は高い、は一緒ですが。
(AobaZeroは100万棋譜での重複、Aoba駒落ちは50万棋譜での重複です)
Policyの平均確率 重複なしの割合(%) 学習棋譜数 weight
0.35709 34.6% 4000万棋譜 w3455
0.36059 47.9% 2000万棋譜 w2350
0.31504 66.2% 1500万棋譜 w1850
0.25701 79.2% 1000万棋譜 w1350
0.23470 90.1% 400万棋譜 w0750
![]()
AobaZeroのw3455(20block)で温度を変えて、30手まで学習棋譜を100棋譜作ったときの
選択された手の平均Policyの確率を調べてみました。
平均確率と重複の割合が同じ、とすると
温度 1.2 ぐらいで重複なしの割合が、34%から80%ぐらいに上昇する?かもしれません。
温度 Policyの平均確率
1.0 0.357
1.1 0.291
1.2 0.253
1.25 0.211
1.3 0.179
1.5 0.148
2.0 0.080
AobaZeroの各重みによるPolicyの平均確率(30手まで)と重複なしの割合(100万棋譜)、温度1、(再掲)
学習棋譜数 weight Policyの平均確率 重複なしの割合(%)
4000万棋譜 w3455 0.35709 34.6%
2000万棋譜 w2350 0.36059 47.9%
1500万棋譜 w1850 0.31504 66.2%
1000万棋譜 w1350 0.25701 79.2%
400万棋譜 w0750 0.23470 90.1%
![]()
下はkldgain適用前後(794万棋譜)のハンデELOの推移です。
ほとんど変化がないですが、6枚落ちだけはわずかに上がっています(788 -> 803)。
逆に角落ちは下がってます(393 -> 385)。
棋力(平手)は+40ぐらい上がっているようにも見えますが変動が大きくてまだ何とも言えません。
http://www.yss-aya.com/komaochi/index.html
しかし、香落ちと角落ちのハンデの差が300点ぐらいあって大きいです。
この中間の手合い割(香車2枚落とし?)があってもいいのかもしれません。
![]()
8月23日から30日にかけてComputer Olympiadが開かれていたそうです。
14競技が参加者が2チームだけでした。
参加者が多かったのは下です。
Chinese Dark Chess 6チーム
Outer Open Gomoku 5チーム
Connect6 4チーム
麻雀 4チーム
Go 9x9 3チーム
麻雀が開催されてたのが意外でした。
Outer Open Gomoku は15路盤を使った5目並べで
黒は最初の1手を1線か2線に打つ、以外は普通の5目並べのようです。
黒の33禁止の制限とかもない?みたいです。
結果
https://drive.google.com/file/d/1_1lQ8uE6VtbBvtB3JRh_qc51EB6w8a1N/view
Computer Olympiad 2021
https://www.tcga.tw/icga-computer-olympiad-2021/en/
ICGA
http://icga.org/
AobaZeroの40 blockの実験を終了しました。
協力していただいた皆様、ありがとうございました。
725万棋譜を作成し、結果は+40 Elo程度の向上と、やや残念な結果ではありました。
引き続き、20 blcokで温度を1.0から1.3に上げた実験を行っています。
100万棋譜で30手目時点での重複なしの棋譜が30%程度だったのが90%以上になると思われます。
つまり似たような棋譜が多いのを減らし、なるべく違った局面を学習させよう、という試みです。
この変更で強くなるかは微妙です。30手目までの悪手を多く生成するので
弱くなる可能性もあります。
40blockで作った棋譜は使わず、現在のw3703はw3459(最後の20block)と同一のものです。
サーバも変更し、以前のv1.9はでは動作しませんので更新をお願いします。
開発側で棋譜生成に使っていたマシン群を縮小しました。
ペースは遅くなりますが気長に楽しんでいただければ、と思います。
http://www.yss-aya.com/aobazero/
10月9,10日のCGFオープン(コンピュータ囲碁大会)の参加申し込み締め切りは10月4日(月)までです。
現在の参加予定者はゲストを含めて9,19路とも7チームです。
http://hp.vector.co.jp/authors/VA012620/cgf2021/list2021.html
今年もオンラインでの開催となります。
LeelaZeroやKataGoなどのオープンソースに独自の改良を加えたソフトでの参加も可能です。
CGFの会員でなくても、どなたでも参加可能です。
参加費は無料ですが賞品はでます。
皆様のご参加をお待ちしております。
CGFオープン
http://hp.vector.co.jp/authors/VA012620/
9路は13勝1敗でRayが優勝、19路は7戦全勝でKohadaが優勝でした。
棋譜や詳細は下記をご覧ください。
http://hp.vector.co.jp/authors/VA012620/cgf2021/result2021.html
Aoba駒落ちも勝数のうちの宣言勝ちの割合が8%から40%と高いです。
今のAobaZeroだと40%近くが宣言勝ち(対Kristallweizen 4.83、500k/move)でそれよりは低いですが。
またAoba駒落ちの1手100playoutだと12%ぐらいで(対Kristallweizen 6.00, 40k/move)
思考時間が長いほど宣言勝ちの割合が増えるようです。
AobaZero(w1650)の1手58万playoutでは対elmo(4.79, 251000k/move)で78%が宣言勝ちです。勝率は0.68。
対dlshogiだと明らかに宣言勝ちが減って、入玉将棋はdlshogiの方がelmoや水匠4改より強そうです。
Aoba駒落ちの宣言勝ちの割合(平手)。400局。Aoba駒落ちは1手800playout。w870
1手ノード数 elmo(WCSC27) 水匠4改 水匠U dlshogi(dr2e)
100k 20% 33% 18% 8%
1000k 32% 43% 27% 0%
* 探索部はすべて6.50
* Aoba駒落ちの学習棋譜から抽出した16手目までの初期局面集を利用
* dlshogiの100k,1000kは 1000playout,10000playout
勝 分 敗 局数(宣 千 宣) 先手勝率 勝率 95% ELO
313- 3- 84 400 (63- 3-0)(s=205-192,0.516), 0.786(0.040)( 226)elmo650_100k_t1_64MB
123- 5-272 400 (39- 5-0)(s=213-182,0.539), 0.314(0.045)(-135)elmo650_1000k_t1_64MB
204- 6-190 400 (67- 6-0)(s=208-186,0.528), 0.517(0.049)( 12)suisho4kai_100k_t1_64MB
40- 9-351 400 (17- 9-1)(s=204-187,0.522), 0.111(0.030)(-360)suisho4kai_1000k_t1_64MB
295- 1-104 400 (53- 1-0)(s=213-186,0.534), 0.739(0.043)( 180)suisho_u650_100k_t1_64MB
95- 8-297 400 (26- 6-0)(s=208-184,0.531), 0.247(0.042)(-193)suisho_u650_1000k_t1_64MB
120-49-231 400 (10-49-0)(s=208-143,0.593), 0.361(0.044)( -99)dlshogi_dr2e_1000p_noresign
5- 9-386 400 ( 0- 9-0)(s=201-190,0.514), 0.024(0.013)(-645)dlshogi_dr2e_10000p_noresign
深層学習モデルでは詰みを学習するのが難しいことが知られています。
同様に勝ち確定の局面は学習するのが難しいと思われますが,例外が宣言勝ち局面だろうと思います。
また,別件で二番絞りにAobaZero教師を学習させたところ宣言勝ち傾向が強いものになりましたが,
二回強化学習をさせると詰みを読むようになりました。
その際にValueを入れておいたのが有効だったと評価値グラフの成長過程から推測しています。
勝敗項のみだと概ね勝勢までは学習できてもそこからのValue精度がうまく出ないようでした。
詰将棋が苦手なのが最大の原因ぽい感じはします。
宣言勝ちは50万棋譜とかかなり早い段階で学習してしまうので、かなり簡単?なのかもしれません。
3手から11手程度の詰将棋を読むようにすると傾向はガラッと変わりそうです。
あと、探索時間が増えるほど宣言が増えるのもいまいち理由が分かりません。
(AlphaZeroがelmoに先手番で極端に強いのは、この傾向も理由の一つかと思ってます)
二番絞りはdlshogiベースなので5手詰は常にチェックしている?
ので、それで宣言勝ちが減ったとかもありそうでしょうか?
最近、隠岐の思考ルーチンが暴走する変な現象があって、ここ数日悩まされました。
機械語を追いかけまわしてもどうしてもわからず、どっかでプログラムを壊して暴走してると思って、古いバージョンをVC2012でコンパイルしたりしてみたりしたんですが、古いバージョンでも起こる事に気付きました。
で、治す方法を模索したところ、マルチスレッドを外すと正常に動作する事に気づきました。
隠岐の思考はマルチスレッドを使っていてるんですが、こんな現象どなたか起こっていませんか?
VC2012で作ったソースをベースにして、VC2019でコンパイルしてるんですが、最近VC2019のバージョンを11.5の最新バージョンにしたのと、KB5006738のWindows Updateをかけました。
KB5006738は、外してみたのですが、どうも完全に外れず、少し残っている印象があります。
ただ、これはキーボード入力の変更らしいんで、違う印象があるのですが、それにしてはWindows updateが長いというか、大きい。うーん、よくわからん。
ただ、マルチスレッドを外して、シングルスレッドにすると暴走は止まる。
まっ、隠岐の思考部は1000万ステップと異常に大きいのが原因の可能性もある。
よー、わからん。
自己レスでもうしわけありません。
この現象、ソース等を別マシンに移して、コンパイルリンクすると起きないことを確認しました。
従って、ソフト依存の障害じゃなくて、ハード依存の障害なので、Windowsの再インストールも含めて、再度検討することにしました。
可能性としては、マシンが古くて、SSD等が4年目で寿命に近いのと、隠岐が暴走すると、ハードのどっかにメモリディスクを含めて壊す可能性があるので、ちょっとこちらで調査します。
どうもお騒がせして申し訳ありません。
次回のUEC杯は2022年の3月5日(土)、6日(日)に開催される予定です。
http://entcog.c.ooco.jp/entcog/new_uec/
参加費は無料です。
KataGoやLeelaZeroのソースに独自の改良を加えてソフトの参加も可能です。
参加申し込みは12月1日の予定です。
前回のようにオンラインか、参加者が実際に集まる形式か、もしくはその両方のハイブリッドかは未定です。
おそらく海外からの参加はオンライン限定になると思います。
資金募集のためにクラウドファンディングも立ち上げられています。
https://academia.securite.jp/donation/detail?c_id=12
AI研究や大会の運営資金、講習会の費用などに使われる予定です。
ご興味がある方はぜひご協力をお願いします。
海外向けのコンピュータ囲碁メーリングリストのドメイン computer-go.org が更新忘れ?か
第三者に取られ、もうメール配信はされなくなりました。
管理者とも連絡が取れなくなりこのまま自然消滅すると思われます。
30年近く歴史のあるMLだっただけに途絶えてしまったのは残念です。
新たなメーリングリストを作る、などもありそうですが、とりあえずの代替先として
下の2つがありそうです。
Computer Go forum (Remi Coulumさんが運営)
https://www.game-ai-forum.org/viewforum.php?f=25
Leela Zeroのdiscord。現在はKataGoの話題が盛んです。
https://discord.com/channels/417022162348802048
以下はツイッターでの会話です。少しですが。
https://twitter.com/Remi_Coulom/status/1438520745366151180
最後の管理者の方は Michael Richard (aka. roveg) さんですが、去年の3月19日を最後に
ツイートも途絶え、連絡できませんでした。
theRobot Vegetable(2021年9月現在、ドメインは別の人物で取得?)
https://twitter.com/roveg (2020年3月19日からツイートなし)
簡単な歴史
1995年? computer-go computer-go mailing list 発足(もっと古いかも)
2010年02月10日 computer-goxdvandva.org に移行
2010年03月02日 2つのドメインで動作。computer-goxcomputer-go.org avandva.org はそのうち終了。
2019年02月 一部のユーザにメールが届かない現象が多発。
2021年07月? 別サイトに飛ばされるように
https://computer-go.org/mailman/listinfo/computer-go (このページは見えます)
上のリンクの mailman/... 以下を削除したリンクは別のサイトに飛ばれます。
Aoba駒落ちの30手までの温度を1.0から1.3に変更しました。
AobaZeroの現在の設定と同じです。
これは下図のように、飛落ち、香落ち、平手、で重複なしの局面の割合が60%近くまで下がっているので
30手までの変化を増やそう、という狙いです。
2枚、角落ち、6枚、などは現状でも90%以上でばらけているので
特に変える必要はないのですが、すべての手合いの温度を1.0から1.3に変更しています。
30手までに悪手を指す割合も増えるので強くなるかは不明です。
最終的な勝敗、でなく、最終的な勝敗と探索した勝率の平均、を学習するようにしたのは+20 ELO程度効果があったようにも見えます。
![]()
KataGo(kata1、40block)はほとんど強くなっていない印象だったのですが
CGOSの結果だとBayesELO、対LZ_282_0410_p400 だと
s964ぐらいから+50ほど急に強くなっているようです。
BayesELO、対LZの勝率、ともにs964付近から急に変化しています。
KataGo Distributed Training
https://katagotraining.org/
CGOS BayesELO
http://www.yss-aya.com/cgos/19x19/bayes.html
![]()
![]()
昨日のGPWでAoba駒落ちの発表をしました
論文「将棋の駒落ちの強化学習」
https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=213425&item_no=1&page_id=13&block_id=8
スライド資料
http://www.yss-aya.com/komaochi/20211113gpw_komaochi.pdf
大雑把な各手合いのまとめは下記になります。
・平手 ... 相掛かりや角換わり。AobaZeroより100点弱い
・香落ち ... 相振り。上手も下手も三間飛車
・角落ち ... 下手が陽動三間飛車
・飛落ち ... 下手は角交換を狙ってから右四間
・2枚落 ... 銀多伝(金多伝)に似た形に囲って攻める
・4枚落 ... 下手は囲わない。9筋を狙う
・6枚落 ... 下手は囲わない。1筋を棒銀
勝又さんによると、
飛落ちで早々に腰掛銀から角交換を狙うのは定跡どおり、とのことです。
また、6枚落ちで上手が早い段階で△24歩や△84歩と(ただで取られても)突くのは
裏定跡、で普通とのことです。単純に指すと端を突破されるので、ごまかしにかかる手順ですね。
結局、香落ち、飛落ち、4枚落ち、6枚落ち、ではほぼ定跡どおりの展開を再発見してることになります。
香車落ち、角落ちで三間飛車が出てきます。四間飛車はほぼ指しません。
三間だけなのは同一のネットワークで上手、下手を共に学習している影響もあるかもしれません。
芝さんにも指摘されましたが、特に学習初期では、その傾向が高いです。
下は75万棋譜時点で飛落ちの棋譜で、上手は△12香△14歩、下手は▲98香▲96歩、と同じ形を指します。
http://www.yss-aya.com/komaochi/no_noise/sample.html#25
それでも、平手ではまったく出てこない振飛車が駒落ちでは出てくる、のは面白いですが。
角落ちの下手三間飛車は1000万棋譜ぐらいから出てきたので、また変わってしまう可能性はあります。
これは他のすべてにも言えることですが。
スライドで紹介している棋譜
平手 http://www.yss-aya.com/komaochi/no_noise/sample9.html#1134
香落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1133
角落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1132
飛落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1131
2枚落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1137
4枚落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1136
6枚落ち http://www.yss-aya.com/komaochi/no_noise/sample9.html#1135
遊びやすいように最終の重み(w1250)を同封したリリースを作りました。
よろしければこちらからお試しください。
https://github.com/yssaya/komaochi/releases
ノートPCのCPU内臓GPUでもOpenCL版は動きますので(CPU版より速い)、こちらを
最初に試していただければ、と思います。
将棋所に登録した後、ShogiGUIにも登録すると時間切れで失敗しにくいです。
思考時間を変えるには aobak.bat をメモ帳(エディタ)などで開いて
-p 4000 の4000を変更してください。
Aoba駒落ち
http://www.yss-aya.com/komaochi/index.html
戦型、指し方の変化の細かい記録は「更新履歴」を
http://www.yss-aya.com/komaochi/news.html
KataGoの作者が7路盤に続いて8路盤でも自己対戦による定石を作っています(完全解析ではないです)。
8路盤では黒の初手の最善は中央の4か所で、白の2手目はその反対がに打つのが最善らしいです。
ただ、白の2手目は他の候補も有力らしいです。
ABCDEFGH ABCDEFGH
08┌┬┬┬┬┬┬┐ 08┌┬┬┬┬┬┬┐ 黒の初手の最善は中央の4か所(左図)
07├┼┼┼┼┼┼┤ 07├┼┼┼┼┼┼┤
06├┼┼┼┼┼┼┤ 06├┼┼┼┼┼┼┤ それに対する白はの最善は反対側に。
05├┼┼┼★┼┼┤ 05├┼┼┼●┼┼┤
04├┼┼┼┼┼┼┤ 04├┼┼☆┼┼┼┤
03├┼┼┼┼┼┼┤ 03├┼┼┼┼┼┼┤
02├┼┼┼┼┼┼┤ 02├┼┼┼┼┼┼┤
01└┴┴┴┴┴┴┘ 01└┴┴┴┴┴┴┘
コミは8路だとTromp-Taylorルールで10目らしいです。
7路が9目、8路が10目、9路が7目?と法則性がよく分かりません。
7路 Tromp-Taylorルール、コミ 9目
7路 日本ルール、 コミ 8目
8路 Tromp-Taylorルール、コミ10目
8路 日本ルール、 コミ 9目
9路 中国ルール、 コミ 7目?
Tromp-Taylorは中国ルールとほぼ同じです。一番の違いは2子以上の自殺手がOKな点です。
KataGo Opening Books
https://katagobooks.org/
KataGo Opening Books - 8x8 Highlights and Discoveries
https://katagobooks.org/8x8highlights.html
discoard, LeelaZero and Friends
https://discord.com/channels/417022162348802048/583775968804732928
LeelaZeroでコミの調整を出来るようにして学習を続けていたSAIですが
ELFのv0(最初に公開されたもの)にほぼ追いついたようです。
ELFのv2(最強)には100 ELO負けてるぐらい、です。
40blockのLeelaZeroには300 ELOほど負けてます。
下はネットワークの大きさでplayout数を調整したものです。
12x256は1手1600playout、20x256は1手800playoutでCGOSで
計測しています。
![]()
電竜戦のA級の90局の先手勝率は
先手の63勝23敗4千日手、
で72%、と7割超えてるんですね。
電竜戦は先手、後手2局で1セットなので公平ですが
先後が乱数で1局しかしない選手権だと、運不運の差が大きすぎるかも。
第2回電竜戦 A級
https://golan.sakura.ne.jp/denryusen/dr2_production/league_table_pa.html
ここまで差が出るのか、と少し疑問ではあります。
PUCTだと勝率が不利な方は多くの候補手を選ぶようになるので
そのせいで、最初から不利と思ってる後手がさらに負けやすくなってる気もします。
後手の勝率を初期局面では0.50になるように補正してやると
もう少し後手が勝つ気もします。
今夜から開催されるACGでコンピュータ囲碁に関する発表も
あって、下のMixNetとSwishを使ったら+104 ELO強くなった、
というTristanの論文が面白そうです。
T. Cazenave, J. Sentuc and M. Videau
Cosine Annealing, Mixnet and Swish Activation for Computer Go
https://icga.org/wp-content/uploads/2021/11/ACG_2021_paper_9.pdf
Advances in Computer Games 2021
https://icga.org/?page_id=3328
こういうケースだとCosine Annealing便利ですね。強化学習で連続的に学習する場合どうなんでしょうか。
それから参照されてるTristanの別の論文も面白そうですね。
Improving Model and Search for Computer Go
https://arxiv.org/abs/2102.03467
Batch Monte Carlo Tree Search
https://arxiv.org/abs/2104.04278
> 強化学習で連続的に学習する場合どうなんでしょうか。
調べるとCosine Annealingって2016年からある、学習率を変動させながら小さくする手法なんですね。
論文だと追い抜くのが学習の最後の方なので、だらだら強化学習する場合ちょっと心配ですね。
最小の学習率、を段階的に変えて行く感じ?なのでしょうか。
参照の上はMobileNetが効果的で、PUCTを少し変形させると成績いいよで
下は探索木を2つ持って、一つは通常探索、もう一つはミニバッチ作成専用、ですか。
KataGoが作った学習用棋譜の方がはっきりLZよりいい、というのが一番役に立つかも。
KataGoの棋譜ってPolicyの分布や地合いなどが別ファイルになっていて使いずらそうでしたけど
SGFだけでも十分ぽいですね。
ACGでEndgameデータベースと比較してLC0の性能を調べてる論文があるのですが、
それにLC0のまとめがあって分かりやすかったです。
・2020年にAlphaZeroの強さを超えた
・「残りの投了までの手数」(moves left)を予想
・「勝ち、負け、引き分け」(WDL)を個別に予想
・「T」ネットワークは自己対戦から学習され
・「J」ネットワークは「T」で作られた自己対戦の棋譜から学習
・「J」の方が強い
・・・。TもJも同じに思えますけど何が違うのでしょう?
下を見るとJは「jhorthos」さんが独自に作ってるようで
色々学習パラメータが違うようです。
40ブロックで作った棋譜を20ブロックで学習、みたいな感じなのでしょうか?
(その方が20ブロックは強くなるので)
What is Lc0? (for non programmers)
https://lczero.org/dev/wiki/what-is-lc0-for-non-programmers/
On the Road to Perfection? Evaluating LeelaChess Zero Against Endgame Tablebases
https://icga.org/wp-content/uploads/2021/11/ACG_2021_paper_13.pdf
30年前に最初に作ったYSS1.0がエミュレータで動いたので自己対戦の棋譜を作ってみました。
YSS 1.0の自己対戦の棋譜
http://www.yss-aya.com/komaochi/csa/sampleyss100.html
弱いのですが、局面を全く動かさずに(1手も読まない)利きテーブルと
駒配置だけから優先順位で指し手を決めてる割には
結構まともな将棋になっています。
しかし、この頃の将棋はその手を指した理由、を作者が完璧に説明出来て
なんか妙な安心感はあります。
YSS 1.0 のソースコード(N88-BASIC)
http://www.yss-aya.com/yss100.html
![]()
6ヵ月で1300万棋譜を作成して駒落ちをルールだけから深層強化学習させるAoba駒落ちを終了しました。
香落ちは上手が三間に振れば下手も振る相振り、角落ちは下手の陽動三間飛車、二枚落ちは銀多伝に似た新型に、など
面白い発見があったと思います。
棋譜作成や遊んでいただいた皆様、ありがとうございました!
論文や資料などはこちらです。
GPWでAoba駒落ちの発表をしました
https://524.teacup.com/yss/bbs/3840
また興味深いものが出てきましたね。
真偽不明ですが、PDF中で、
ポリシーネットワークにディリクレノイズを加えてアクションを選択し、摂動されたポリシーを用いて探索を行う。しかし、これではポリシーの改善を確実に行うことはできない。
と言っていますね。
https://openreview.net/forum?id=bERaNdoegnO
Aoba駒落ちOpenCL版のGUIへの登録に失敗します。
CPUは2950x、GPUは GTX1080tiです。
dataディレクトリのtune-ocldev0-sgemmb-b25m256n63k256H.txt
の内容です。
# CPU AMD Ryzen Threadripper 2950X 16-Core Processor 1800.11 (sse2,avx) 32 3500
NLM:16
NLN:8
NPM:16
NPN:8
NPK:16
TUS:3163
登録に成功する場合のtune-ocldev0-sgemmb-b25m256n63k256H.txtです。
CPUはi9-10850K、GPUは RTX3090です。
# GPU NVIDIA GeForce RTX 3090 471.41 82 1695
NLM:8
NLN:8
NPM:4
NPN:4
NPK:8
TUS:38
GPUが認識されていないのでしょうか。
もしShogiGUIで登録に失敗する場合は
将棋所で先に登録できるかお試しいただけないでしょうか?
最初の登録時にOpenCLでベンチマークを取って最適な値を探すのですが
GPUによっては3分ほど時間がかかる場合があります。
ShogiGUIは30秒ほどで登録できないと失敗します。
将棋所は時間制限がないようです。
dataフォルダにファイルがない場合だけベンチマークを行います。
またノートPCでバッテリーで動かしてる場合だと時間切れになりやすいです。
それでも失敗する場合は "-h 2" を試すか、 "-h 1" を削除してみてください。
速度が低下する可能性が高いのですが。
ご回答有難うございます。
将棋所v4.9.2ですが、10分以上待ちましたが登録できませんでした。
"-h 2" および "-h 1 削除"でも登録できませんでした。
dtatディレクトリのファイルは毎回削除して試しました。
いずれの場合も data\ 以下に作成されるファイルは、CPU名で始まっていました。
ShogiGUI v7.2.6 の場合は、dataディレクトリに将棋所の場合と同様のファイルが作成された後、"エンジンの起動に失敗しました"というメッセージが表示されました。
このPC、デバイスマネージャー=>ディスプレイアダプター の所に
Microsoft Remote Display Adapter と
NVIDIA GeForce GTX 1080 Ti
の二つが登録されています。
bin\ocldevs.bat を実行して 1080Ti が
- Device ID: 1
などと見えている場合は "-u 1" を追加してください。"Device ID: 2" の場合は "-u 2" です。
bin\aobak -q -i -p 800 -h 1 -u 1 -name AobaK_26_GPU_w1250 -w weight\w000000001250.txt
標準は"-u 0" ですが、この場合、CPUがOpenCLのデバイスとして認識されているように見えます。
実行してみました。
E:\将棋関連\aobakomaochi\aobakomaochi-26-w64-opencl\bin>ocldevs.exe
Platform ID: 0
Profile: FULL_PROFILE
Version: OpenCL 2.0 AMD-APP (1800.11)
Name: AMD Accelerated Parallel Processing
Extensions: cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
- Device ID: 0
Type: CPU
Name: AMD Ryzen Threadripper 2950X 16-Core Processor
Driver Version: 1800.11 (sse2,avx)
Compute Units: 32
Max Work-Group Size: 1024
Max Clock Freq (MHz): 3500
Global Mem Size: 34247864320
Max Mem Alloc Size: 8561966080
Local Mem Type: GLOBAL
Local Mem Size: 32768
Rough Evaluation: 5600
CPUしか見えていないという事でしょうか。。
OpenCLから認識していないですか。下を試されるか、
※ うまく動作しないときには、フォルダ OpenCL-ICD-Loader 以下にある OpenCL.DLL
をフォルダ bin にコピーしてください。Intel ならば v2.2.1, AMD ならば
v25.20.14012 にあるものが良いかもしれません。
GPUのドライバをアップデートしてみる、とかでしょうか。
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
Geforce, Geforce 10 Series, 1080Ti, Game Ready ドライバ
山下さま
このPCではあきらめる事にします。
i9 + RTX3090 の環境では使えていますので、そちらで使わせていただきます。
いろいろお手数をかけすみませんでした。
本件、解決しました。
1)passを比較すると、CUDA へのパスが通っていないか
インストールされていない様に思えたので、
cuda_11.5.1_496.13_windows.exe を入手してインストール。
2)opencl-icd-loader\.. からコピーした、OpenCL.dll を削除
3)-u 0 オプションは未使用
でインストールできました。
普段、Anaconda経由のPyTorchでGPUを使っているので、素のWindows
環境には CUDA がインストールされていなかったのかもしれません。
お騒がせしました。
CUDAの有無は直接は関係ないそうです。
最新のCUDAは以前の物にくらべ他のツールも(driverも?)同封されている様で、それが良かったのかもしれません。
27点法なら6枚落ちの上手は27点(13点+落とした駒(14点))で宣言勝ちできるのですが
上手の駒が「馬」(5点)+小駒8枚だと、王以外の駒が9枚しかないので
「宣言側の敵陣三段目以内の駒は、玉を除いて10枚以上存在する。」
https://www.shogi.or.jp/faq/rules/
という条件を満たせないのですね。
上手の駒が「竜」「馬」+小駒3枚だと5枚でもっと足りません。
この条件は
「宣言側の敵陣三段目以内の駒は、玉を除いて10点以上存在する。」
と点数に書き換えないとダメそうです。
ただ、
> 上手の駒が「竜」「馬」+小駒3枚
このケースだと上手玉が寄りそうな気もします。
下の将棋では上手が27点ですが、その後、駒を取られて負けてます。
https://lishogi.org/gD3K0OaQ#402
そもそも駒落ちで27点法、というのが無理なのかもしれません・・・。
持将棋については、武者野先生から変なことを聞いたんです。
27点法とか、いろいろあるんですが、実は大駒の多い方が有利なんです。
大駒が多い方が、その駒を軸に小駒をバックしていきますと、エリアが少ない側が自殺しないといけなくなるんです。
将棋はパスできないんで、自害をはからないといけない。
すると、最後は大駒が多い方は勝つ。
駒落ちの場合は、落とした方がその駒も含めて、点数になるんですが、ちょっとねー、宣言ルールには疑問があります。
活性化関数をReLUからSwish、Mishに変えて性能を試してみました。
比較対象は192x10blockのResNet(ReLU)、です。
それぞれ3回学習を繰り返して1手1playoutで強さを比較してみました。
SwishのReLUに対する勝率
勝 引 負 局数 ELO
477-34-289 800 ( 83) 1回目
479-48-273 800 ( 91) 2回目
468-30-302 800 ( 73) 3回目
MishのReLUに対する勝率
413-49-338 800 ( 32) 1回目
487-41-272 800 ( 95) 2回目
431-71-298 800 ( 58) 3回目
一番成績の良かったSwishの対Mish(一番成績のよい)の勝率
349-91-360 800 ( -4)
たまたまかもしれませんが、Swishの方が安定して +80 ELOぐらい強いです。
Swish対Mishはほぼ互角なので、どちらでもいい感じですが、計算はSwishの方が
若干速いと思うのでSwishが良さそうです。
1手1playoutでなくvalueが入る100playoutでも同じような強さでした。
1手100playoutでのSwishのReLUに対する勝率
238-16-146 400 ( 81)
実験条件は
Aoba駒落ちの棋譜を1000万棋譜から1040万棋譜まで、学習率0.01、ミニバッチ128で10万回学習、での比較です。
局面数では1280万局面を学習、になります。PolicyとValueを学習しています。
将棋AIの実験ノート:活性化関数Swishを試す
https://tadaoyamaoka.hatenablog.com/entry/2020/08/14/144244
平手の24点法でも大駒4枚と小駒4枚で24点、の場合
駒の枚数が8枚なので、「敵陣に10枚」を満たせないですね。
プロの将棋で宣言による勝敗はまだないらしいですが、
このルールは破綻してる気がします。
27点法なら大駒4枚+小駒7枚で合計11枚、なので
「敵陣に10枚」ルールは問題ないのですが。
プロの駒落ちは奨励会で香落ちだけだと思う。
で、入玉が生じた場合は、24点法で計算して、24点に足りない方が負けになる。
ただし、上手は落とした香の1点を加算して計算する。
ただ、今はチェスクロックを使っているので、時間切れが発生するので、その辺はどうなったかは知らない。
囲碁クエスト9路の棋譜の教師あり学習でReLU, Swish, Tanhexpを同じ学習設定で比較した時は
ReLU : policy loss = 1.217563, value loss = 1.499925
Swish : policy loss = 1.212207, value loss = 1.492818
Tanhexp : policy loss = 1.207857, value loss = 1.488038
と言った感じで, LossはTanhexp, Swish, ReLUの順に小さく、
強さもTanhexpがSwishより僅かに強く(+20elo)、ReLUはSwishより劣っている(-50elo)感じでした。
ただ最初から強化学習したモデルだとSwishとTanhexpの差はあまり見られないので、
出力が0以下になった時にも誤差がちゃんと伝搬するか否かがキーになっているっぽいです。
前回のUEC杯で使ったFReLUはSwish, Mish, Tanhexpよりもいい性能が出ましたが、
Depthwise Convolutionを使っているので、計算時間はだいぶ遅いです。
TanhExp、試してみました。
TanhExpのReLUに対する勝率
勝 引 負 局数 ELO
420-55-325 800 ( 41)
+41 ELOで、1回だけなので何ともですがSwishの +80 ELOよりはやや弱かったです。
FReLUの方がもっと性能いいのですか。
UEC杯のアピール文に書かれてますね。CUDA部分は自作なのですか・・・。
http://entcog.c.ooco.jp/entcog/new_uec/past_uec/2020uec/appeal/Ray.pdf
Tritanの論文で紹介されていたMixNetを試してみました。
比較対象のResNet(192x10block)とほぼ同じパラメータ数で
+114 ELO 、さらにSwishに変更で +134 ELOでした。
192x10block(3x3)のResNetに対する勝率。mb64 はミニバッチ64での比較。それ以外はミニバッチ128
勝 引 負 局数 ELO モデルのサイズ
358- 56-386 800 ( -12) mobile_20b 10MB 半分で互角。強い。Tristanの論文から
385- 44-371 800 ( 6) mobile_30b 15MB 1.5倍でも棋力上昇なし
490- 75-235 800 ( 114) mobile_20b_1024 mb64 38MB 強いけどサイズが大きい
461- 90-249 800 ( 94) mix 512-128 3x3,5x5 mb64 16MB
441- 74-285 800 ( 68) mix 512-128 3x3,5x5,7x7 mb64 22MB
503- 85-212 800 ( 132) mix 768-196 3x3,5x5 mb64 33MB
500- 55-245 800 ( 114) mix 640-160 3x3,5x5 mb64 24MB
489-117-194 800 ( 134) mix 640-160 3x3,5x5 mb64 24MB, swish
492- 44-264 800 ( 101) mix 640-160 3x3,5x5 24MB
376- 72-352 800 ( 10) 256x20b 89MB サイズが4倍(192x10bは26MB)
299- 62-439 800 ( -61) 192x 5b 13MB
ただ、ResNetのパラメータ数を4倍(256x20block)にしても +10 ELO とほとんど同じだったので、
もっと学習を収束するまでやらないと、最終的な差は何とも言えない気はします。
Caffeだと学習にResNetの4倍ぐらいのメモリを必要とし、また学習時間も4倍かかるので、
使い勝手としてはResNet+Swish、がいいのかもしれません。
MixNetの構造はTristanの下の論文で紹介されている bottleneck_block を
丸ごと構造 3x3 と 5x5 で並列にしています。
DepthWiseだけを並列、だとなぜかCaffeで動きませんでした。
filters = 512 -> 640
trunk = 128 -> 160 (3x3が80、5x5が80)
にそれぞれ変更して、これが19ブロックです。
大雑把に書くと下のよう感じ。
conv 160 1x1, bn,relu 1層目のみ
------------------------------------------ bottleneck block, これを繰り返し
conv 640 1x1, bn,relu <- input
dw_conv 640 3x3, bn,relu dw...depthwise convolution
conv 80 1x1, bn -> A
conv 640 1x1, bn,relu <- input
dw_conv 640 5x5, bn,relu
conv 80 1x1, bn -> B
concat <- A, <- B
eltwise <- input
------------------------------------------
CaffeのDepthwise layerは下を使ってます。
https://github.com/yonghenglh6/DepthwiseConvolution
MixNetとSwishで+104 ELO
https://524.teacup.com/yss/bbs/3845
Mobile Networks for Computer Go (Tristanの論文)
https://www.researchgate.net/publication/343848982_Mobile_Networks_for_Computer_Go
caffeでの実装(ミニバッチ128ではメモリ24GBでは動かず、64にしてます。それにしても長い・・・)
https://github.com/yssaya/komaochi/blob/master/learn/aoba_mix_640_swish.prototxt
こちらで試した時のネットワークはBatchNorm抜きとかいろいろ工夫を重ねたものなので、
一概に比較はできませんが、妥当な結果だと思います。
FReLUについては、下記ソースのConvForward関数を参考に作りました。
https://github.com/yonghenglh6/DepthwiseConvolution/blob/master/caffe/src/caffe/layers/depthwise_conv_layer.cu
Depthwise Convolutionは理論値に対して実測値の計算速度が遅すぎる問題もあり、
MobileNetを実装はしてみたものの、使ってはいない状態です。
学習もめちゃくちゃ遅いじゃないかっていうので、それを高速化した研究もありました。
https://arxiv.org/pdf/1803.09926.pdf
Pytorchはいろいろ便利で好きなのですが、Depthwise Convolutionの実行速度については
TensorFlowが圧勝というのは現在も変わっていないみたいです。
DepthwiseはTensorFlowの方が速いのですか。
最近PyTorchに移行しつつあるのですが、悩ましいですね・・・。
6月ぐらいに閉鎖されていたKataGoのg170のデータが再公開されています。
https://katagoarchive.org/
kata1のsgfは個別には落とせますが、一括はないみたいですね。
SGFS url can't be opened
https://github.com/lightvector/KataGo/issues/562#issuecomment-985922410
技巧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
学習回数を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を学習しています。対戦は互角局面利用。
温度を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
![]()
AobaZeroで温度1の時と、温度1.3での投了手数の分布を調べてみました。
温度1.3だと40%近くの棋譜が30手〜39手で投了しています。
30手までの投了を禁止してるので、31,32手目での投了が多いだろうな、と
思いましたが、予想以上でした。
温度を単に上げただけでは、質の悪い短手数の棋譜がたくさん出来てしまい、
強化学習の性能は落ちてる気がします。
つまり互角に近い変化にたくさん分岐するような手法が好ましい気がします。
(なおかつ、なるべくバラバラの局面になるように)
Policyの分布確率(+ノイズ)で30手まで進めて、30手での評価関数の勝率が
0.4〜0.6の間のものだけ採用する、とか。
強くなればなるほど、互角に近い局面を生成するのは難しそうです。
グラフの100、は100手以上の投了です。温度1.3でも30手以下があるのは
詰まされてるせいだと思います。
![]()
学習される局面の手数の割合を温度1.0と温度1.3で調べてみました。
どちらも序盤、50手目ぐらいまでを学習してる割合が高く
中盤以上の手数が長い局面は少ないです。
序盤の手数が短いところは10分の1くらいに減らした方がいい気がします。
なんとなく80手ぐらいを中心とした正規分布みたいな形の方が強くなりそうな気がします。
初期局面が一番多いですが、これは単に統計を取っても(着手の回数と勝率)だいたい同じでしょうし、
0手目でなく、10手目ぐらいまでは学習させなくても統計取るだけで十分な気がしてきました。
温度1.3は30手前投了しない、という制約でガクンと下がっています。
200手以上、は200手に含めています。
![]()
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
![]()
これ面白いですね!
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がやってないことを探すのが難しい・・・。
75%の確率で少ないプレイアウト数で探索するので教師局面に使わない
25%の確率でフルの探索をして教師局面として使う
その25%の手うち、このウェイトが200だと2局面として使う、50だと50%の確率で教師局面として使う感じだったと思います。
KataGoの最新のネットワークの自己対局棋譜を100くらい持ってきてプロットすると似たような傾向のようです。
何となく下にあるように見えるのはネットワークが大きく賢くなってて探索せずに分かるようになってきてるんでしょうか。
![]()
自己対戦の途中で、教師局面にするか、の判定にも使っているのですか。複雑ですね・・・。
KataGoの棋譜コメントの「weight」はこれの意味だったのですか。少し謎が解けました。
下にあるように見えますね。左右に揺れるのでなく、強くなると
下に下がっていく感じなのかも。
AobaZeroでも調べてみました。32万局面ぐらいの集計です。
200手以上の長手数ではほぼ0で、難しいのは56手目前後、のようです。
31手目付近でグラフが変なのは30手目まで投了禁止、のせいだと思います。
![]()
将棋は終盤も詰みあってPNが外すこと結構あるのかと思ってましたがそうでも無さそうですね