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


GPWでAoba振り飛車の発表をしました。発表した論文、スライド資料です(2024/11/15)。
論文中で紹介してる棋譜の一覧。相振り含め、縦に81種類あり、▲向△居なら横に見ます。
ご興味がある方は、ぜひ参加をお願いします。Google Colabを使えばどなたでも棋譜生成が可能です。

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

2025-02-19 v107。更新をお願いします。1手平均1600playoutを倍の3200に変更しました。+80 ELOほど強いです。またノイズなしのサンプル棋譜を1手800playoutから1手平均3200playout(w1998から)に変更しました。w1998、2004万棋譜。
2025-01-28 0.32 0.27 0.28 0.29 0.30 0.29 0.27 0.00 0.32 ボーナスを向、を上げました。w1954、1960万棋譜。
2025-01-21 ReplayBufferを50万から100万棋譜に変更しました。w1943、1949万棋譜。
2024-11-21 ハンデレートをすべて0にしました。今後の学習棋譜の勝率は中飛車だと勝率0.26(レート差184)程度まで下がると思います。ボーナスも増やさないと成功率が下がると思います。学習率も0.00001に戻しました。ハンデレートあり、の最終はw1806です。w1807、1813万棋譜。
2024-08-12 ハンデレートの説明や個々の棋譜の経過記録を掲示板に書いています。
更新履歴


2026年2月8日 13時06分現在(30分毎に更新)
過去1時間のユーザ数 1人、 2棋譜
過去1日間のユーザ数 1人、 4棋譜
合計 22027694 棋譜。現在のweight番号= w2195。次は1483.1時間後。貢献ありがとうございます!
過去 7000棋譜の平均手数 166.4手, 先手勝率 0.558, 引分率 0.043
過去100万棋譜の平均手数 165.9手, 先手勝率 0.558, 引分率 0.054

ハンデレート ELO (先手、後手の飛車をどの筋に振ったかで。プラスの値は先手有利、という意味。マイナスは後手有利)
1812万棋譜までの値です。1813万棋譜以降はすべて0です。
   9筋   8筋   7筋   6筋   5筋   4筋   3筋   2筋   1筋   後手の飛車の筋。後手が居飛車先手が居飛車
先手9筋 20 -88 -40 -24 11 -17 -34 -48 18
先手8筋 86 -95 25 45 78 54 52 30 114
先手7筋 99 -92 21 61 55 46 33 4 79
先手6筋 57 -97 -15 11 41 19 12 -3 59
先手5筋 77-130 2 21 16 1 -8 -12 35
先手4筋 80-125 -4 6 13 36 -10 1 74
先手3筋 133 -64 21 93 65 83 24 27 107
先手2筋 211 18 126 179 184 146 138 152 159   先手居飛車はこの行。相居飛車は8筋、後手3間飛車は3筋の値
先手1筋 23-163 -76 -14 -20 -11 -48 -20 20

希望する筋に飛車が振れた成功率(先手のみ。希望数が50万を超えるのは複数希望指定があるため)
過去 100万棋譜       9筋      8筋      7筋      6筋      5筋      4筋      3筋      2筋      1筋      合計
成功率 0.465 0.581 0.674 0.683 0.664 0.497 0.543 0.952 0.434 0.676
成功数 44226 101060 114137 114021 93081 40132 38928 258711 24500 828796
実現数 46585 106539 119441 119542 98021 46437 51366 383652 284171000000
希望数 95082 173985 169445 167053 140097 80737 71742 271770 564801226391
過去 1万棋譜
成功率 0.466 0.566 0.670 0.669 0.654 0.477 0.523 0.950 0.441 0.669
成功数 445 955 1126 1129 921 364 366 2583 253 8142
実現数 468 1022 1178 1191 967 423 489 3957 305 10000
希望数 954 1687 1681 1687 1408 763 700 2718 574 12172

希望する筋に飛車が振れた成功率(先手のみ。単独指定のみ)
過去 100万棋譜       9筋      8筋      7筋      6筋      5筋      4筋      3筋      2筋      1筋      合計
成功率 0.671 0.707 0.818 0.828 0.836 0.727 0.822 0.958 0.756 0.823
成功数 44087 99967 112954 112251 91522 38328 36687 226482 23750 786028
実現数 46405 105418 118203 117722 96426 44545 48895 350239 27614 955467
希望数 65740 141422 138134 135576 109478 52756 44648 236297 31416 955467
過去 1万棋譜
成功率 0.663 0.688 0.800 0.808 0.815 0.696 0.780 0.955 0.753 0.808
成功数 441 945 1113 1119 901 352 337 2268 241 7717
実現数 462 1012 1165 1180 947 410 459 3627 291 9553
希望数 665 1374 1391 1385 1106 506 432 2374 320 9553

実現した対局数 (過去100万棋譜。ハンデレートと同じ配置です。()内は先手勝率)
     9筋     8筋     7筋     6筋     5筋     4筋     3筋     2筋     1筋   後手の飛車の筋。後手が居飛車先手が居飛車
先手9筋2538(0.594)11548(0.409)5032(0.460)4986(0.503)4642(0.574)4346(0.533)4229(0.505)3318(0.480)5946(0.556)
先手8筋2228(0.637)56610(0.415)4609(0.540)3548(0.578)7889(0.639)8616(0.592)11797(0.577)8124(0.551)3118(0.636)
先手7筋2247(0.606)58974(0.403)4527(0.539)4263(0.532)10913(0.605)10486(0.576)11004(0.541)12928(0.525)4099(0.607)
先手6筋3387(0.605)59329(0.403)5623(0.481)5550(0.520)10803(0.576)10495(0.552)11004(0.526)9152(0.502)4199(0.577)
先手5筋3583(0.623)43695(0.384)4619(0.506)3328(0.559)7030(0.561)11337(0.525)11221(0.508)8865(0.485)4343(0.553)
先手4筋2511(0.613)10980(0.381)2576(0.511)2237(0.554)5409(0.568)7883(0.570)6311(0.572)3729(0.511)4801(0.604)
先手3筋2819(0.651)12522(0.474)3636(0.550)2670(0.601)6611(0.613)7929(0.597)6116(0.549)4073(0.555)4990(0.642)
先手2筋9279(0.757)96840(0.557)16161(0.648)12706(0.733)47633(0.735)66503(0.704)61735(0.703)58799(0.693)13996(0.703)   相居飛車は8筋、後手3間飛車は3筋の値
先手1筋2377(0.544)7079(0.334)2506(0.449)2324(0.527)2880(0.485)3356(0.493)3279(0.486)2283(0.472)2333(0.517)


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

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

棋力の推移。2025年4月3日時点。floodgateの実測も。


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

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


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

最善手だけ学習させる場合は、最大訪問数の手を学習させてください。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間、中、袖を下げる
w1748 ... 256x20b, 学習率 0.000002,17540000棋譜, 学習率を0.000002に下げる
w1758 ... 256x20b, 学習率 0.000002,17640000棋譜, 0.2 0.18 0.14 0.15 0.13 0.15 0.12 0.09 0.14 ボーナスを袖を下げる
w1807 ... 256x20b, 学習率 0.00001, 18130000棋譜, ハンデレートをすべて0に。学習率も0.00001に戻す
w1836 ... 256x20b, 学習率 0.00001, 18420000棋譜, 0.22 0.18 0.14 0.15 0.13 0.16 0.12 0.05 0.15 ボーナスを9間、右4、1間を上げ、居を下げる
w1840 ... 256x20b, 学習率 0.00001, 18460000棋譜, 0.24 0.18 0.14 0.15 0.13 0.17 0.12 0.01 0.16 ボーナスを9間、右4、1間を上げ、居を下げる。再度
w1856 ... 256x20b, 学習率 0.00001, 18620000棋譜, 0.26 0.19 0.15 0.16 0.16 0.19 0.14 0.01 0.19 ボーナスを居飛車以外をすべて上げる
w1866 ... 256x20b, 学習率 0.00001, 18720000棋譜, 0.28 0.21 0.17 0.18 0.19 0.22 0.18 0.00 0.25 ボーナスを居飛車を0にし、他を上げる
w1873 ... 256x20b, 学習率 0.00001, 18790000棋譜, 0.31 0.23 0.19 0.19 0.21 0.24 0.20 0.00 0.28 ボーナスを居飛車以外を上げる
w1881 ... 256x20b, 学習率 0.00001, 18870000棋譜, 0.33 0.25 0.21 0.21 0.23 0.27 0.23 0.00 0.31 ボーナスを居飛車以外を上げる。再度
w1895 ... 256x20b, 学習率 0.00001, 19010000棋譜, 0.34 0.25 0.23 0.23 0.25 0.29 0.28 0.00 0.33 ボーナスを居、向以外を上げる
w1905 ... 256x20b, 学習率 0.00001, 19010000棋譜, 0.33 0.25 0.25 0.25 0.27 0.29 0.28 0.00 0.33 ボーナスを9間を下げ、3間、4間、中を上げる
w1916 ... 256x20b, 学習率 0.00001, 19220000棋譜, 0.32 0.25 0.27 0.28 0.29 0.29 0.27 0.00 0.32 ボーナスを9間を下げ、3間、4間、中を上げる
w1930 ... 256x20b, 学習率 0.00001, 19360000棋譜, 0.32 0.25 0.28 0.29 0.30 0.29 0.27 0.00 0.32 ボーナスを3間、4間、中を上げる
w1943 ... 256x20b, 学習率 0.00001, 19490000棋譜, Replay Bufferを50万から100万棋譜に変更
w1954 ... 256x20b, 学習率 0.00001, 19600000棋譜, 0.32 0.27 0.28 0.29 0.30 0.29 0.27 0.00 0.32 ボーナスを向、を上げる
w1998 ... 256x20b, 学習率 0.00001, 20040000棋譜, 1手平均1600playoutを倍の3200に。ノイズなしのサンプル棋譜を1手800から平均3200に
ミニバッチ 128, weight decay 0.0002, momentum 0.9 は共通です。