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でプレイアウトが可能になる。