TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

MuZeroの論文を読む その8(ネットワーク)

付録E ネットワーク入力

表現関数

ボードゲーム
  • 囲碁、チェス、将棋の表現関数への入力として使用されるボード状態の履歴は、AlphaZeroと同様に表される。
  • 囲碁および将棋では、AlphaZeroのように最後の8つのボード状態をエンコードする。
  • チェスでは、引き分けの正確な予測を可能にするために、過去100のボード状態に履歴を増やした。
Atrari
  • Atariの場合、表現関数の入力には、解像度96x96の最後の32個のRGBフレームと、それらの各フレームにつながった最後の32個の行動が含まれる。
  • ボードゲームとは異なり、Atariの行動は必ずしも観測に目に見える影響を与えないため、行動の履歴をエンコードする。
  • RGBフレームは、色ごとに1つの面としてエンコードされ、それぞれ赤、緑、青の範囲[0,1]に再スケーリングされる。
  • RGB入力のその他の正規化、ホワイトニング、またはその他の前処理は行わない。
  • 行動履歴は、𝑎 / 18にスケーリングされた単純なバイアス面としてエンコードされる(Atariには合計18アクションがある)。

ダイナミクス関数

  • ダイナミクス関数への入力は、表現関数またはダイナミクス関数の以前の適用によって生成された隠れ状態であり、遷移の行動の表現と連結される。
  • 行動は、隠れ状態と同じ解像度の面で空間的にエンコードされる。
  • Atariでは、この解像度は6x6である(ネットワークアーキテクチャの節のダウンサンプリングの説明を参照)。
  • ボードゲームでは、これはボードサイズと同じである(囲碁では19x19、チェスでは8x8、将棋では9x9)。
囲碁の行動のエンコード
  • 囲碁では、通常の行動(盤上に石を打つ)は、すべて0の面としてエンコードされ、1つの1が着手された石の位置にある。
  • パスは、すべて0の面としてエンコードされる。
チェスの行動のエンコード
  • チェスでは、行動をエンコードするために8つの面が使用される。
  • 最初のワンホットプレーンは、駒の移動元の位置をエンコードする。
  • 次の2つの面は、駒が移動された位置をエンコードする:ボード上にある場合、ターゲット位置をエンコードするワンホットプレーン、およびターゲットが(ボード上で)有効かどうかを示す2番目のバイナリプレーン。
  • これは、簡単にするために方策の行動空間がすべての有効な行動(すべてが合法ではない)のスーパーセットを列挙するために必要である。 また、方策予測とダイナミクス関数入力をエンコードするために同じ行動空間を使用する。
  • 残りの5つのバイナリプレーンは、プロモーションのタイプ(クイーン、ナイト、ビショップ、ルーク、なし)を示すために使用される。
将棋の行動のエンコード
  • 将棋のエンコードも同様で、合計11面である。
  • 最初の8つの面を使用して、駒の移動元を示しす。盤の位置(最初のワンホットプレーン)または7種類の持ち駒(残りの7つのバイナリプレーン)のいずれかである。
  • 次の2つの面は、チェスのようにターゲットをエンコードするために使用される。
  • 残りのバイナリプレーンは、移動が成りであったかどうかを示す。
Atariの行動のエンコード
  • Atariでは、行動は面に適切に割り当てられたワンホットベクトルとしてエンコードされる。

付録F ネットワークアーキテクチャ

予測関数
  • 予測関数\mathbf{p}^k, v^k = f_\theta(s^k)は、AlphaZeroと同じアーキテクチャを使用する。
    • 1つまたは2つの畳み込み層で、解像度を維持しながら面の数を減らし、出力のサイズの全結合層が続く。
Atariでの価値と報酬の予測
  • Atariでの価値と報酬の予測では、すべての実験において\epsilon = 0.001の可逆変換h(x) = sign(x)(\sqrt{|x| + 1} - 1 + \epsilon x)を使用してターゲットをスケーリングする。
  • 次に、同等のカテゴリ表現を取得するために、スカラー報酬および価値ターゲットに変換\phiを適用する。
  • サイズ601の個別サポート(関数の台)セットを使用し、-300〜300の整数ごとに1つのサポートを使用する。
  • この変換では、各スカラーは2つの隣接するサポートの線形結合として表されるため、元の値はx = x_{low} * p_{low} + x_{high} * p_{high}によって復元できる。
  • 例として、3.7のターゲットは、3のサポートでは0.3の重み、4のサポートでは0.7の重みとして表される。
  • ネットワークの価値と報酬の出力も、サイズ601のsoftmax出力を使用してモデル化される。
  • 推論中、実際の価値と報酬は、それぞれのsoftmax分布の下で最初に期待値を計算し、その後スケーリング変換を逆変換することによって取得される。
  • 価値と報酬のスケーリングと変換はネットワーク側で透過的に行われ、アルゴリズムの残りの部分には見えない。
表現関数とダイナミクス関数
Atariの観測
  • 観測の空間分解能が大きいAtariの場合、表現関数は、空間分解能を下げるためにストライド2の畳み込みのシーケンスから始める。
  • 具体的には、解像度96x96および128の面(それぞれ3つのカラーチャネルの32の履歴フレーム、面にブロードキャストされる対応する32の行動と連結)の入力観測から始めて、次のようにダウンサンプリングする。
    • ストライド2および128の出力面で1回の畳み込み、出力解像度48x48
    • 128面の2つの残差ブロック
    • ストライド2および256の出力面を使用した1つの畳み込み、出力解像度24x24
    • 256面の3つの残差ブロック
    • ストライド2、出力解像度12x12の平均プーリング
    • 256面の3つの残差ブロック
    • ストライド2、出力解像度6x6での平均プーリング
  • ダイナミクス関数(常に6x6のダウンサンプリング解像度で動作する)の場合、行動は最初に画像としてエンコードされ、次に平面次元に従って前のステップの隠れ状態を使ってスタックされる。
感想

AlphaZeroでは、8つの履歴局面を入力としていましたが、囲碁、将棋はAlphaZeroと同じで、チェスでは履歴局面の数が100に増やされています。
理由としては、引き分けを正確に予測するためと説明されています。

AlphaZeroでは、チェス、将棋では、繰り返し数が入力特徴量にありましたが、MuZeroではシミュレーション中の局面は、埋め込み表現に変換されるため正確に繰り返しを判断することができません。
そのため、必要な処置だったと推測できます。
将棋でも千日手があるので、履歴が8つでは足りないように思いますが、チェスの方がより引き分けにする戦略を多用するゲームのようなのでチェスだけ増やしたのではないかと思います。


チェス、将棋の移動先のエンコードで、移動元と移動先の組み合わせが合法かどうかを示すフラグが表現されています。
あまり詳細に書かれていないので推測ですが、MuZeroでは合法手の判断を行わないため、方策はすべての組み合わせを列挙するため、学習時に合法手を覚えさせるために必要だったと思われます。


ネットワーク構成は、ボードゲームではAlphaZeroと同じアーキテクチャとなっています。
Atariでは、ゲームによって価値と報酬の分布が異なるため、スケーリングしてカテゴリ化を行っています。
変換の説明にsupportという用語がでてきて、何かと思いましたが、数学の用語で日本語では「関数の台」というようです。
値をスカラではなくカテゴリ化してsoftmaxで出力するようにしています。
予測を容易にするために、値の解像度を落とすような操作をしていると理解できます。


次回は、訓練についてです。
(続く)