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でプレイアウトが可能になる。
出力 | 説明 |
policy_output | 次の1手の確率分布 |
value_output | 勝率 |
miscvalues_output | 雑多な分析情報。何目勝っているか負けているか等。 |
ownership_output | 形勢(白黒どちらの地になりそうかの確率分布) |
scoring_output | ownership_outputとほぼ同じだが、日本ルール対応している? |
futurepos_output | 8手, 16手, 32手先の予想着手 |
seki_output | セキの石
今は利用されていない? |
scorebelief_output | スコア予測 |