前回に続いてAlphaGo Zeroの論文についてです。
ネットワーク構成
入力特徴
- 19×19の2値画像を17枚
- 8枚は現在のプレイヤーの石の座標を示す2値画像、8手分
- 8枚は相手のプレイヤーの石の座標を示す2値画像、8手分
- 1枚は石の色を示す全て0か1の画像
履歴を必要とするのは囲碁にはコウがあるため。
石の色が必要なのは囲碁にはコミがあるため。
以前(Fan Huiバージョン)のAlphaGoでは入力特徴に、呼吸点やシチョウなどの囲碁の知識を含む48の特徴を使用していましたが、石の座標情報のみになっています。
ニューラルネットワーク構成
入力層
1層の畳み込み層で以下の構成
- 畳み込み 3×3のフィルター、256枚
- Batch Normalization
- 活性化関数
以前のAlphaGoは5×5のフィルター192枚でしたが、より枚数が増えています。
Batch Normalizationも以前はありませんでした。
活性化関数には、具体的に何の関数を使っているか記載がありません。
以前はReLUだったので、同じと思われます。
中間層
19個、または39個の残差ブロック
1つの残差ブロックは以下の構成
- 畳み込み 3×3のフィルター、256枚
- Batch Normalization
- 活性化関数
- 畳み込み 3×3のフィルター、256枚
- Batch Normalization
- 残差入力の接続
- 活性化関数
図示すると以下のようになります。
オーソドックスなResNetのブロックです。
残差ブロックの数は、はじめは19個で自己対局を行い、最終的に39個としています。
出力層
ネットワークを分岐して、PolicyとValueを出力します。
Policyの出力は以下の構成
- 畳み込み 1×1のフィルター、2枚
- Batch Normalization
- 活性化関数
- 19×19(打ち石の座標)+1(pass)を示す362ノードの全結合層でlogit probabilitiesを出力
logit probabilitiesはsoftmax関数(対局時はボルツマン分布)の入力となる値で、softmax関数の出力が打ち手の確率を示します。
以前のAlphaGoでは1×1のフィルター1枚の出力をlogit probabilitiesとしていましたが、全結合層が加わっています。
Valueの出力は以下の構成
Batch Normalization以外は、以前のAlphaGoと同じ構成です。
将棋AIに応用する際の考察
入力特徴について
将棋AIに応用する際には、将棋には駒の取り合いや千日手があるので、入力特徴の履歴の情報は有用と思われます。
現在のプレイヤーの石の色の情報は、将棋にはコミがないので不要かもしれません。
ニューラルネットワーク構成について
ResNetが将棋でも有用であることは、以前の実験で確かめています。
私の実験では5ブロックで192枚のフィルターでしたが、39層で256枚のフィルターはかなりの規模です。
試そうと思うと学習時間は相当かかるので覚悟が必要そうです。
出力層の構成について
Policyの出力に全結合層が加わっています。
この構成にした理由は書かれていませんが、この方が精度が上がるということでしょうか。
将棋でも有用か試してみようと思います。
1×1のフィルターを出力としていると、移動できない座標もラベルとする必要がありましたが、全結合を使うなら、出力ラベル数は減らせるのでその効果もでるかもしれません。
Valueには以前のAlphaGoと同様にtanh関数が使われていますが、コンピュータ将棋では評価関数の出力にsigmoidを使う方が主流ですね。
sigmoidでも大差はないと思っていますが、tanh関数を使った方がよい理由とかあるのでしょうか。
分かる人がいらっしゃたら教えてもらえると助かります。
続く