Mastering Chess with a Transformer Modelを読んだメモ

 位置エンコーディングを工夫することで従来より軽量なTransformerで強くすることができたのことなので読んでみる。著者が「The Leela Chess Zero Team」という肩書なのでそこまで雑な検証で言っているわけでもないだろうという読み。

 コードも公開されているらしい。

位置エンコーディング

 一般的な位置エンコーディングトークン間のユークリッド距離に応じてAttentionの量を減衰するなどの設計がなされているが、チェスだとBishopが斜めに動くのでそういった注意も必要になるかもしれない。

参考 : 絶対位置埋め込み

 各トーク x _ i に対して位置に応じた学習可能なパラメータ  c _ i を足す。

 
e _ {ij} = \frac{ \left( (x _ i + c _ i) W ^ Q \right) \left( (x _ j + c _ j) W ^ K \right) ^ T }{\sqrt{d}}

参考 : 相対位置埋め込み

 2つのトークンの相対位置に応じた学習可能パラメータ  d _ {ij}を足す。

 
e _ {ij} = \frac{ \left( x _ i W ^ Q \right) \left( x _ j W ^ K \right) ^ T }{\sqrt{d}} + d _ {ij}

 差  i - j = k - l となるトークン間では同じ値が用いられる。チェス盤のように2次元である場合は2つの軸にそれぞれ用意する。

提案手法

 元はShaw et al. のSelf-Attention with Relative Position Representations

 Q,K,Vのそれぞれに学習可能パラメータ a _ {ij} ^ Q, a _ {ij} ^ K, a _ {ij} ^ Vを考える。

 
e _ {ij} = \frac{ \left( x _ i W ^ Q + a _ {ij} ^ Q \right) \left( x _ j W ^ K + a _ {ij} ^ K \right) ^ T }{\sqrt{d}}

かつ、ソフトマックスの方でも

 
z _ i = \sum _ {j = 1} ^ n \alpha _ {ij} (x _ j W ^ V + a _ {ij} ^ V)

とする。

 これは系列長が大きいと計算コストが大きくなるが、チェスだと8 * 8 = 64なので問題にならない。

 どうしてこのタイミングで足し算をしたくなるのかという気持ちは(少なくとも本文部分を読んだ限りでは)あまり書いていなかったので、Appendixを見てみるか、元ネタの論文にあたるしかなさそう。

実験

学習設定

 AlphaZero的に生成した適当なモデルの自己対局データを教師としていろんなモデルを学習して比較する。

 学習に際しては知らないテクニックをいろいろ使うとのこと

  • Nadamオプティマイザー
  • 勾配クリップは10
  • stochastic weight averaging [3]

 一番大きいモデルCF-240Mは

  • 埋め込み次元1024
  • 1層あたり32ヘッド
  • FF層は次元数4096(一般的な4倍にする設定か)
  • 計243Mパラメータ
  • 8つのA100でバッチサイズ4096で3.7Mステップ学習
  • 学習率は1e-3で始めて、3.2Mステップ時点で3e-4に、3.6Mステップで1e-4にする

 一番小さいモデルCF-6Mは

  • 埋め込み次元256
  • 1層あたり8ヘッド
  • FF層は次元256
  • 計6Mパラメータ
  • A100を一枚でバッチサイズ2048で学習

 PolicyにもValueにも補助損失があるらしい。

結果

 思ったより激烈に効果あるというほどでもないのかもしれない。でもPolicyの伸びは良いのかも。

対局での比較

  • xxx-policy : Policy最大の手で行動選択
  • xxx-value : 全合法手について1手進めてValue最大の手で行動選択

 なんか普通にGCというやつも強そう。GCGrandmasterLevel Chess Without Search

 本気の探索を考えると6Mモデルの方が普通に強いのだろうか。

 AlphaZeroの時代からすると相当伸びてるらしいなぁ(ほんと?)。隔世の感。