English
「Aoba振り飛車」は、将棋の振り飛車を人間の知識なしでゼロから深層強化学習させるユーザ参加型の将棋人工知能プロジェクトです。
対抗形の先手四間飛車、後手中飛車などに加えて、先手1間飛車、後手向飛車、などの相振りも学習します。
AIは振り飛車の新しい指し方を発見できるでしょうか?1間飛車や9間飛車はどんな指し方に?
どの筋に飛車を振っても勝率が5割になるように強さを自動調節しています。技術的な詳細など。


ご興味がある方は、ぜひ参加をお願いします。Google Colabを使えばどなたでも棋譜生成が可能です。

GitHub ソースやWindows用の実行ファイルなど。

2024-09-25 0.2 0.18 0.14 0.15 0.13 0.15 0.13 0.09 0.14 ボーナスを3間、中、袖を下げる。w1492、1498万棋譜。
2024-09-23 v106。更新をお願いします。1手平均800playoutを倍の1600に変更しました。+80 ELOほど強いです。w1466、1472万棋譜。
2024-09-20 (袖、3間)と▲3間△1間を半分に。w1339、1345万棋譜。
2024-09-20 0.2 0.18 0.15 0.15 0.15 0.15 0.14 0.09 0.14 ボーナスを袖、居、1間をほぼ戻す。w1334、1340万棋譜。
2024-08-12 ハンデレートの説明や個々の棋譜の経過記録を掲示板に書いています。
更新履歴


2024年10月13日 09時21分現在(30分毎に更新)
過去1時間のユーザ数 2人、 1007棋譜
過去1日間のユーザ数 2人、 22443棋譜
合計 17236195 棋譜。現在のweight番号= w1716。次は3.8時間後。貢献ありがとうございます!
過去 7000棋譜の平均手数 165.7手, 先手勝率 0.504, 引分率 0.035
過去 50万棋譜の平均手数 160.3手, 先手勝率 0.500, 引分率 0.041

ハンデレート ELO (先手、後手の飛車をどの筋に振ったかで。プラスの値は先手有利、という意味。マイナスは後手有利)
   9筋   8筋   7筋   6筋   5筋   4筋   3筋   2筋   1筋   後手の飛車の筋。後手が居飛車先手が居飛車
先手9筋 24 -93 -32 -23 -1 -7 -21 -49 19
先手8筋 72 -86 39 51 74 55 43 16 107
先手7筋 97 -90 45 50 72 48 26 -1 72
先手6筋 62 -89 -21 11 46 8 -6 -2 62
先手5筋 84-125 -9 32 23 -3 -13 -23 29
先手4筋 71-132 -19 13 4 23 -4 3 55
先手3筋 116 -70 15 77 59 82 6 35 88
先手2筋 195 15 132 183 173 139 138 144 152   先手居飛車はこの行。相居飛車は8筋、後手3間飛車は3筋の値
先手1筋 23-159 -75 -17 -16 -21 -51 -29 12

希望する筋に飛車が振れた成功率(先手のみ。希望数が50万を超えるのは複数希望指定があるため)
過去 50万棋譜       9筋      8筋      7筋      6筋      5筋      4筋      3筋      2筋      1筋      合計
成功率 0.365 0.533 0.741 0.700 0.710 0.509 0.605 0.824 0.513 0.658
成功数 17365 46941 62871 58366 49441 20531 21703 112431 14364 404013
実現数 18979 53303 71725 64908 58170 27930 34031 145776 25178 500000
希望数 47618 88041 84857 83338 69648 40365 35852 136387 28002 614108
過去 1万棋譜
成功率 0.395 0.523 0.736 0.696 0.698 0.489 0.602 0.818 0.520 0.655
成功数 367 897 1285 1176 1003 388 415 2215 304 8050
実現数 404 1030 1478 1306 1167 513 683 2911 508 10000
希望数 929 1715 1747 1690 1437 793 689 2709 585 12294

希望する筋に飛車が振れた成功率(先手のみ。単独指定のみ)
過去 50万棋譜       9筋      8筋      7筋      6筋      5筋      4筋      3筋      2筋      1筋      合計
成功率 0.528 0.636 0.856 0.836 0.876 0.733 0.901 0.884 0.833 0.801
成功数 17289 45609 59214 56471 47525 19219 19948 104748 12806 382829
実現数 18882 51898 67965 62914 56153 26513 32095 137846 23464 477730
希望数 32763 71708 69139 67569 54261 26218 22149 118546 15377 477730
過去 1万棋譜
成功率 0.578 0.623 0.857 0.824 0.857 0.722 0.907 0.876 0.820 0.798
成功数 365 869 1213 1136 966 366 389 2047 268 7619
実現数 401 1000 1404 1263 1130 490 652 2739 466 9545
希望数 631 1394 1415 1379 1127 507 429 2336 327 9545

実現した対局数 (過去50万棋譜。ハンデレートと同じ配置です。勝率はほぼ全て5割です)
     9筋     8筋     7筋     6筋     5筋     4筋     3筋     2筋     1筋   後手の飛車の筋。後手が居飛車先手が居飛車
先手9筋162031981744215720631904210818572328
先手8筋1965223071806236444865116725059222087
先手7筋3467281184075329075496692778181202633
先手6筋3976252573994421266236109683756842216
先手5筋3247210604075237363906281736350662315
先手4筋193257361924151834625171401522201952
先手3筋235476544147189848454725526415921552
先手2筋50092457178175813221212720027111225033631   相居飛車は8筋、後手3間飛車は3筋の値
先手1筋188949282269180729343727379120251808


棋力の推移。下は希望する振り飛車はどの筋でもOK、の設定で、水匠5と対戦させた場合のELO変化です。
1手100playoutなので学習用の1手800playoutより300Eloほど弱いです。

Aoba振り飛車 1手100playout 対 水匠5(7.50) 1手40000ノード。互角局面集で先後入れ替え、合計400局で計測。


ノイズなしの棋譜のサンプルです。強さの調整はありません。1間飛車や9間飛車は勝ちにくいです。
ノイズを含まない自己対戦の棋譜

▲居飛車 vs △四間飛車、は「▲居 △4間」の行を見てください。


棋譜
現時点での強化学習で作成した棋譜です。
xz形式で圧縮されています。1つ60MBぐらいです。2週間ごとぐらいで最新版を追加します。
0- 198- 397- 595- 832- 1050- 1204- 1345- 1480- 1580- 1676- まで。

最善手だけ学習させる場合は、最大訪問数の手を学習させてください。Policyの分布を学習させており棋譜の手は最善でない場合が多いです。
no000000000000.csa から no000000100028.csa
まではニューラルネットワークを使わずにプログラムが乱数をPolicy,Valueに与えて800playoutで作った棋譜です。
実際にニューラルネットを使った棋譜は no000000100029.csa 以降になります。
棋譜の一括ダウンロードは山岡さん水たまりさんの解説をご覧ください。棋譜のフォーマット

ネットワークの重み
ネットワークのサイズは 128 x 10 block(ResNet)です。400万棋譜付近で256 x 20 block(AlphaZeroと同じ)に移行予定です。

w002  ... 128x10b, 学習率 0.01,     100000棋譜
w013  ... 128x10b, 学習率 0.01,     200000棋譜, 希望する筋に振れたか、を独自のheadでなく勝率(Value)に組み込み。ボーナスは(0.3,全ての手)
w050  ... 128x10b, 学習率 0.01,     562363棋譜, ハンデレートを導入。ボーナスは(0.3,80手)
w063  ... 128x10b, 学習率 0.01,     690000棋譜, 希望する筋に振れたボーナスの割合、手数を実験(190万棋譜まで)
w183  ... 128x10b, 学習率 0.01,    1900000棋譜, ボーナスを(0.3,40手)
w222  ... 128x10b, 学習率 0.01,    2280000棋譜, replay bufferを10万棋譜から50万棋譜に
w294  ... 128x10b, 学習率 0.001,   3000000棋譜, 学習率を0.001に下げ、飛車を振るボーナスを(0.3,40手)から(0.2,40手)に
w394  ... 128x10b, 学習率 0.0001,  4000000棋譜, 学習率を0.0001に
w582  ... 256x20b, 学習率 0.001,   5880000棋譜, 256x20bに。学習率は0.001
w653  ... 256x20b, 学習率 0.001,   6590000棋譜, MCTSで相手の手番では「どの筋でもOK」に変更
w753  ... 256x20b, 学習率 0.0001,  7590000棋譜, 学習率を0.0001に
w828  ... 256x20b, 学習率 0.0001,  8340000棋譜, 1間、9間、右4間、袖飛車、相居飛車の生成確率を半分に
w859  ... 256x20b, 学習率 0.0001,  8650000棋譜, 1間、相居飛車の生成確率をさらに半分に。1間は実現率が高いため
w877  ... 256x20b, 学習率 0.0001,  8830000棋譜, 対抗形の中飛車、4間、3間、向飛車の生成確率を倍に。複数指定の居飛車を半分に
w913  ... 256x20b, 学習率 0.0001,  9190000棋譜, 対抗形をさらに1.5倍。複数指定を全てさらに半分に。ただし9個所指定は2倍
w950  ... 256x20b, 学習率 0.0001,  9560000棋譜, 対抗形をさらに1.3倍
w978  ... 256x20b, 学習率 0.0001,  9840000棋譜, 投了をしない、に変更
w1021 ... 256x20b, 学習率 0.0001, 10270000棋譜, △袖飛車、△右4間で▲3間▲4間▲中▲右4▲袖をさらに半分に
w1032 ... 256x20b, 学習率 0.00001,10380000棋譜, 学習率を0.00001に
w1075 ... 256x20b, 学習率 0.00001,10810000棋譜, 飛車を振るボーナスを(0.2,40手)から(0.15,40手)に下げました
w1111 ... 256x20b, 学習率 0.00001,11160000棋譜, ▲9間△9間を50 -> 100の倍に。1万棋譜で10棋譜を割ったので
w1162 ... 256x20b, 学習率 0.00001,11680000棋譜, ボーナスを振る筋ごとに個別に。(0.15,40手)を9筋から0.20 0.15 0.10 0.10 0.10 0.10 0.10 0.10 0.15
w1177 ... 256x20b, 学習率 0.00001,11830000棋譜, ボーナスの居飛車(2筋)を0.10 -> 0.05に
w1204 ... 256x20b, 学習率 0.00001,12100000棋譜, ボーナスをすべて0.20に戻す
w1213 ... 256x20b, 学習率 0.00001,12190000棋譜, 実現した筋、でなく希望する筋でボーナスを。複数の場合は平均。0.20 0.18 0.15 0.15 0.15 0.15 0.15 0.10 0.15
w1221 ... 256x20b, 学習率 0.00001,12270000棋譜, 1手800playout固定でなく、100から3200まで可変に。+100ELOほど強い
w1247 ... 256x20b, 学習率 0.00001,12530000棋譜, (居、袖)と相中飛車を半分に。(居、中)を3/4に(居、3間)(居、4間)を9/8倍に
w1257 ... 256x20b, 学習率 0.00001,12630000棋譜, (3間、向)の相振りを1.5倍に
w1259 ... 256x20b, 学習率 0.00001,12650000棋譜, (居、袖)をさらに半分に
w1275 ... 256x20b, 学習率 0.00001,12810000棋譜, 0.2 0.18 0.15 0.15 0.15 0.15 0.10 0.05 0.10 ボーナスを袖、居、1間を下げる
w1334 ... 256x20b, 学習率 0.00001,13400000棋譜, 0.2 0.18 0.15 0.15 0.15 0.15 0.14 0.09 0.14 ボーナスを袖、居、1間をほぼ戻す
w1339 ... 256x20b, 学習率 0.00001,13450000棋譜, (袖、3間)と▲3間△1間を半分に
w1466 ... 256x20b, 学習率 0.00001,14720000棋譜, 1手平均800playoutを倍の1600に変更しました。+80 ELOほど強いです
w1492 ... 256x20b, 学習率 0.00001,14980000棋譜, 0.2 0.18 0.14 0.15 0.13 0.15 0.13 0.09 0.14 ボーナスを3間、中、袖を下げる
ミニバッチ 128, weight decay 0.0002, momentum 0.9 は共通です。