ぷよ碁 開発ブログ

初心者向け囲碁ブラウザゲーム「ぷよ碁」の開発状況やTipsをまとめています。

Katagoモデルの入出力

Katagoの学習済みモデルの入出力がよくわからないというか、ホワイトペーパーも書いてあるものと現在のソースコードのモデルの実態が既に乖離していたので調べてみました。

調査したのはVersion8モデルの構成。

バージョンによって少しずつ入出力の形式が違うようなので注意。

入力

入力には大きくわけて、global_input_dataとbin_input_dataの2つがある。

global_input_dataはゲーム全体に影響を及ぼす系の設定(ルール等)

bin_input_dataは現在の局面を表すデータを入力する。

global_input_data
index 説明
0 1手前がパスか否か
1 2手前がパスか否か
2 3手前がパスか否か
3 4手前がパスか否か
4 5手前がパスか否か
5 コミ
ただし20で割った数値で埋める
例えばコミ6.5目なら、6.5/20=0.325
6 スーパーコウルールか否か
7 スーパーコウルールの種類によって値が変わる模様
Positional Superkoの場合、0.5
Situational Superkoの場合、-0.5
8 自殺手有りか否か
9 日本ルール化か否か
10 セキを地としてカウントしない場合1
11 切り賃の有無
12 encorePhase
どういう設定なのかいまいちわからない
日本ルールでコウの時に関係する設定っぽいので、おそらく3コウ関係の何か
13 同上
14 パスがフェーズを終了するか否か
フェーズについてはKatago独自の処理方法にかかわってくるので詳細はここでは省く
15 asymPowersOfTwo
読みの深さを黒番と白番で非対称にした場合に利用?
おそらく自己対局中でしか使われない
16 同上
17 Button
先手に0.5目のコミを与えることでパスしやすいようにする?
おそらく自己対局中にしか利用されない
18 1目未満のコミの端数を表現している?
bin_input_data
index 説明
0 着手可能な盤サイズ分を1で埋める
モデル自体は19x19の入力サイズを入力可能になっているが、例えば7路盤でプレイしたい場合は、7x7分のサイズを1で埋める。
1 プレイヤーのすべての着手点
2 相手のすべての着手点
3 呼吸点が1のすべての石
4 呼吸点が2のすべての石
5 呼吸点が3のすべての石
6 通常のコウルールでの着手禁止点
7 スーパーコウルール(Positional Superko)での着手禁止点
同一局面の繰り返し不可ルール。ただし手番は考慮しない。(黒番で出てきた局面を白番が繰り返すことも不可)
8 スーパーコウルール(Situational Superko)での着手禁止点
同一局面の繰り返し不可ルール。ただし手番を考慮する。(黒番で出てきた局面を白番が繰り返すことは可能)
9 1手前の着手点
10 2手前の着手点
11 3手前の着手点
12 4手前の着手点
13 5手前の着手点
14 現在シチョウアタリになっているすべての石
15 1手前の局面でシチョウアタリになっているすべての石
16 2手前の局面でシチョウアタリになっているすべての石
17 シチョウのアタリを続けるすべての着手点
18 プレイヤーの確定地(パスしても生きている地)
Bensonのアルゴリズムで求めているっぽい?
19 相手の確定地
20 プレイヤー側の2コウの着手点
21 相手側の2コウの着手点

出力

様々な情報が出力されるようになっているが、重要なのは上の2つ。

policyとvalueが判明すればMCTSでプレイアウトが可能になる。