dlshogiは昨年はほぼ定跡の自動生成しか行っておらず、モデルの改善は後回しにしていた。
定跡の自動生成については、手法がほぼ確立できたので、最近はモデルの改善を行っている。
学習データの質と量を増やして、モデルサイズを大きくすれば強くなっていくという考えで、モデル構造についてはこれまであまり注力していなかった。
しかし、直近の大会でRyfamateがモデル構造の工夫で強くすることに成功しており、モデル構造の工夫も重要と認識を改めた。
Ryfamateの方法
Ryfamateが採用しているモデル構造の工夫は、WCSC33のアピール文書によると、
1. 3x3のカーネルの代わりに、9x1と1x9のカーネルサイズの畳み込みを組み合わせる
2. 畳み込みのブロックの代わりに、セルフアテンション(Transformer)層を使う
の2点である。
前者については、Xで詳細が公開されている。
【開発者向け】Ryfamateは、ResNetとTransformerの組み合わせ(Attentionの導入)でご注目いただくことが多いのですが、精度と速度の両立という点ではCross Layer (C-Layer)の役割も大きいようです。
— 駒の書体@将棋AI Ryfamate (@komafont) 2024年5月5日
応用例として図のネットワークを公開しますので、ご参考になれば幸いです。(上がS-Layer、下がC-Layer) pic.twitter.com/YlBrlvl7ha
ラージカーネル
コンピュータビジョンの領域では、ViTやSwinTransformerといったTransformerを用いたモデルが従来の畳み込みニューラルネットワーク(CNN)の性能を凌駕するようになっている。
Transformer系のモデルはサイズをスケールしやすいという特徴がある。
一方、CNN系モデルでも、Transformer系モデルで採用された手法を用いることで同等以上の性能が出せることが報告されている。
[2201.03545] A ConvNet for the 2020s
調査で明らかになったのは、Transformerモデルで重要なのは、離れたトークン(画素)間の関連の情報を捉えることができることで、それはCNNでカーネルサイズを大きくすることでも同じ効果が得られるということだ。
CNNには、ローカル(部分的)な特徴を効果的に捉えやすいという帰納バイアスがあり、グローバル(全体)の特徴を捉えるには複数の層を積み重ねる必要がある。
大きなカーネルサイズは、より効率的にグローバルの情報を次の層に伝えることができる。
以前から大きなカーネルサイズが効果的であることは知られていたが、CNNで大きなカーネルサイズが使用されてこなかった理由は、GPUが3x3のカーネルサイズに最適化されているというパフォーマンス面が理由である。
ConvNextでは逆ボトルネック構造によりチャンネル数を減らして計算量を下げる工夫や、InceptionNeXtではチャンネルを分割して3x3、1x11、11x1のカーネルサイズを並列に計算して計算量を減らす工夫をしている。
Ryfamateで採用している上記1.の手法は、InceptionNeXtと同等の効果を狙ったものと言える。
将棋AIにおけるラージカーネルの効果
将棋AIにおいてラージカーネルがどれくらい効果があるかを実験して確かめる。
3x3カーネルのローカルな特徴を捉えやすいというバイアスも活かして、ResNetのブロックの一部にラージカーネルを導入する。
事前の実験により、入力層に近すぎる位置ではラージカーネルの効果が薄いことがわかったので、4ブロック目以降で一定間隔でラージカーネルのブロックに置き換える。
結果
条件 | 方策損失 | 価値損失 | 方策正解率 | 価値正解率 |
---|---|---|---|---|
ResNet | 1.4413 | 0.4682 | 0.5224 | 0.7580 |
条件1 | 1.4314 | 0.4654 | 0.5254 | 0.7603 |
条件2 | 1.4433 | 0.4677 | 0.5217 | 0.7582 |
条件3 | 1.4344 | 0.4652 | 0.5243 | 0.7605 |
条件4 | 1.4329 | 0.4656 | 0.5241 | 0.7598 |
条件5 | 1.4334 | 0.4652 | 0.5246 | 0.7601 |
条件1の7x7カーネルが、方策の精度が最も高く、価値の精度も高いという結果になった。
次に、条件4と5の、Ryfamateと同様の9x1と1x9カーネルを並列にしたブロックの精度が良かった。
条件4と5は大きな違いはなかった。
条件2のdepth wiseの畳み込みは通常のResNetよりも精度が悪くなった。
大きいカーネルの効果が確認できる結果となった。
訓練時間
1エポック当たりの平均訓練時間は、以下の通り。
条件 | 訓練時間 |
---|---|
条件1 | 8:55:58 |
条件2 | 10:40:23 |
条件3 | 10:53:31 |
条件4 | 9:19:22 |
条件5 | 9:02:23 |
条件6 | 9:02:29 |
条件1と2のカーネルサイズ7x7を使用したモデルは、通常のResNetと比較して、訓練時間が約1.2倍になっている。
条件4と5の、Ryfamateと同様の9x1と1x9カーネルを並列にしたブロックは、訓練時間は1%くらいしか変わっていない。
カーネルサイズ7x7は精度が高くなるものの計算量が増えるのと比べて、Ryfamateと同様の9x1と1x9カーネルを並列にしたブロックは、精度と計算量のバランスが取れている。