KataGo(カタゴ)は、David J. Wu(通称 lightvector)によって開発されたコンピュータ囲碁プログラムである。
概要
DeepMindが発表したAlphaGo ZeroとAlphaZeroの論文に基づいてDavid J. WuがKataGoを作成した[6]。さらに、DeepMindの論文に加え、多くの関連研究と独自の研究の結果、強化学習の速度を大幅に向上させた(50倍以上[7]:1)[1]。ニューラルネットワークのデータが公開されている、世界で最も強いコンピュータ囲碁ソフトウェアの一つとなった。
KataGoによって実装されたコンピュータ囲碁プログラムには以下が含まれる [1]:
Jane Street Capital(英語版)(作者所属の会社)はトレーニングに必要な計算資源に加えて、トレーニング結果(ニューラルネットワークデータ)も公開している[1]。
KataGoは囲碁AI検討ソフト「Lizzie」の思考エンジンに採用された(2019年10月1日に公開されたLizzieバージョン0.7以降)。
その豊富な分析機能によって、囲碁オンライン分析Webサイト「AI Sensei」でデフォルトの分析エンジンとして使用されている[8]。
"KataGo" という名称は、日本語の「かた(形・型)」に因んでいる[9]。現在は、英語でも武道の形を "kata" という。作者である lightvector (David J. Wu) は、自己の強化学習によって永続的に鍛錬し、独自の形の完成を目指すボットの名称として合理的に思えたと述べている。
差異
AlphaZero
AlphaZeroとの主な違いは[7]、KataGoがオープンソースとオープンデータであることに加えて、強化学習のコストが大幅に削減されたので、自宅のPCでも比較的高いレベルの強化学習が行えることである。数日でアマチュア高段者に到達した[1]。
Leela Zero
LeelaZeroとの主な違いは、KataGoのGTPエンジンが"kata-analyze"コマンドをサポートしていることである。フロントエンドプログラム(Lizzieなど)がKataGoの目数差の分析結果を取得できるので、人間の目数計算と判断の助けになる。LeelaZeroなどに見られる終盤のヨセで損な手を打つ可能性を減らすことができる[1]。
もう一つの違いは、KataGoはOpenCL(v1.2以降でサポート[10])とCUDA[1]の両方をサポートしていることである(OpenCLの最新版は最適化されており、CUDA版より数倍も高速ということはなく、二つの版はほぼ同じ)。 LeelaZeroはOpenCLだけをサポートしている[11]。
強さ
最初のバージョン
最初のバージョン(番号はg65,v1.0
)では、2019年2月[12]に35台のNVIDIA Tesla V100を使用して7日間の強化学習が行われた。6ブロックx96フィルターから15ブロックx192フィルターまでで[13]、棋力はLeelaZeroの(ニューラルネットワークの130番目に相当する)LZ130とほぼ同じになった[14]。これは人間の棋力を既に超えている[1]。
重みコード |
版 |
注釈 |
訓練日数 |
Elo
|
b6c96-s103408384-d26419149 |
v1.0 |
6x96 |
- |
-
|
b10c128-s101899520-d60734663 |
10x128 |
- |
-
|
b15c192-s279618816-d164990022 |
15x192 |
- |
-
|
2番目のバージョン
2番目のバージョン(番号はg104,v1.1
)は、2019年5月から6月[12]に作成された。28台のNVIDIA Tesla V100で、6ブロックx96フィルターから20ブロックx256フィルターまで強化学習が行われた[15]。ハイパーパラメータが大幅に改善されたので、わずか3.5日で最初のバージョンの棋力を超えた[1][16]。さらに、LCB(英語: Lower confidence bound)の導入によって、棋力が大幅に向上した[16]。 最後に、19日間のトレーニングの後、20ブロック版が作成され、棋力が「LZ-ELFv2」(ELF OpenGoのv2の重みファイルをLeela Zeroで動かしたもの)を上回った。Leela Zeroの40ブロック版と比較すると、LZ200と同等の棋力になった[1]。
重みコード |
版 |
注釈 |
訓練日数 |
Elo
|
g104-b6c96-s97778688-d23397744 |
v1.1 |
6x96最終版 |
0.75 |
-1146
|
g104-b10c128-s110887936-d54937276 |
10x128 |
1.75 |
-476
|
g104-b15c192-s297383936-d140330251 |
15x192最終版 |
7.5 |
327
|
g104-b20c256-s447913472-d241840887 |
20x256最終版 |
19 |
908
|
3番目のバージョン
3番目のバージョン(番号はg170,v1.3
とv1.4
)は、2020年1月から6月にかけて作成された[12]。29GPUで始まり、14日後に37GPUに増加し、24日(合わせて38日)後に47GPUに増加した[1]。
v1.5.0以降[17]、GPUを使用しない純粋なCPUだけでの動作がサポートされた(Eigen(英語: Eigen (C++ library))ライブラリを使用)。また、バージョンv1.8.0以降では、分散トレーニングをサポートしているので、世界中のユーザーが重み(ニューラルネットワーク)のトレーニングに協力できるようになった[18]。
重みコード |
版 |
注釈 |
訓練日数 |
Elo
|
g170-b6c96-s175395328-d26788732 |
|
6x96最終版 |
0.75 |
-1184
|
g170-b10c128-s197428736-d67404019 |
|
10x128最終版 |
1.75 |
-280
|
g170e-b10c128-s1141046784-d204142634 |
v1.3 |
拡張再訓練10x128 |
- |
300
|
g170-b20c256x2-s668214784-d222255714 |
20x256 |
15.5 |
959
|
g170-b15c192-s497233664-d149638345 |
|
15x192 |
7.5 |
512
|
g170-b20c256x2-s1039565568-d285739972 |
v1.3.1 |
20x256 |
21.5 |
1073
|
g170e-b15c192-s1305382144-d335919935 |
v1.3.1-nets |
拡張訓練15x192 |
- |
867
|
g170-b20c256x2-s1420141824-d350969033 |
20x256 |
27.5 |
1176
|
g170e-b15c192-s1672170752-d466197061 |
v1.3.2 |
拡張訓練15x192 |
- |
935
|
g170-b20c256x2-s1913382912-d435450331 |
20x256 |
35.5 |
1269
|
g170-b20c256x2-s2107843328-d468617949 |
|
20x256 |
38.5 |
1293
|
g170e-b20c256x2-s2430231552-d525879064 |
v1.3.3 |
20x256 |
47.5 |
1346
|
g170-b30c320x2-s1287828224-d525929064 |
30x320 |
47.5 |
1412
|
g170-b40c256x2-s1349368064-d524332537 |
40x256 |
47 |
1406
|
g170e-b20c256x2-s2971705856-d633407024 |
v1.3.3-nets |
20x256 |
64.5 |
1413
|
g170-b30c320x2-s1840604672-d633482024 |
30x320 |
1524
|
g170-b40c256x2-s1929311744-d633132024 |
40x256 |
1510
|
g170e-b20c256x2-s3354994176-d716845198 |
v1.3.4 |
20x256 |
78 |
1455
|
g170-b30c320x2-s2271129088-d716970897 |
30x320 |
1551
|
g170-b40c256x2-s2383550464-d716628997 |
40x256 |
1554
|
g170e-b20c256x2-s3761649408-d809581368 |
v1.3.5-nets |
20x256 |
92 |
1513
|
g170-b30c320x2-s2846858752-d829865719 |
30x320 |
96 |
1619
|
g170-b40c256x2-s2990766336-d830712531 |
40x256 |
1613
|
g170e-b20c256x2-s4384473088-d968438914 |
v1.4.0 |
20x256 |
117 |
1529
|
g170-b30c320x2-s3530176512-d968463914 |
30x320 |
1643
|
g170-b40c256x2-s3708042240-d967973220 |
40x256 |
1687
|
g170e-b20c256x2-s4667204096-d1045479207 |
|
20x256(実験的) |
129 |
1561
|
g170-b30c320x2-s3910534144-d1045712926 |
30x320(実験的) |
1651
|
g170-b40c256x2-s4120339456-d1045882697 |
40x256(実験的) |
1698
|
g170e-b20c256x2-s4842585088-d1091433838 |
|
20x256(実験的) |
136.5 |
1547
|
g170-b30c320x2-s4141693952-d1091071549 |
30x320(実験的) |
1653
|
g170-b40c256x2-s4368856832-d1091190099 |
40x256(実験的) |
1680
|
g170e-b20c256x2-s5055114240-d1149032340 |
v1.4.2-nets |
20x256(実験的[注 1]) |
145.5 |
1539
|
g170-b30c320x2-s4432082944-d1149895217 |
30x320(実験的[注 1]) |
1648
|
g170-b40c256x2-s4679779328-d1149909226 |
40x256(実験的[注 1]) |
1690
|
g170e-b20c256x2-s5132547840-d1177695086 |
|
20x256 |
150 |
1577
|
g170-b30c320x2-s4574191104-d1178681586 |
30x320 |
1759
|
g170-b40c256x2-s4833666560-d1179059206 |
40x256 |
1788
|
g170e-b20c256x2-s5303129600-d1228401921 |
v1.4.5 |
20x256 |
157 |
1645
|
g170-b30c320x2-s4824661760-d1229536699 |
30x320 |
1908
|
g170-b40c256x2-s5095420928-d1229425124 |
40x256 |
1919
|
関連項目
脚注
注釈
- ^ a b c 人間の棋譜が一部に追加された実験的バージョン。v1.4.0のニューラルネットワークよりも優れているとは限らない。 [19]
出典