0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第4回空戦AIチャレンジ最終一位チームの「最終解法」

Last updated at Posted at 2026-01-19

はじめに

こんにちは。株式会社Spakona 代表の河崎太郎(@taro_kawa6)です。「第4回 空戦AIチャレンジ」に参加し、最終一位入賞を果たすことができました。本記事では、我々のチーム Spakona_Inc がコンペティションに取り組む上で採用した解法について、技術的な詳細を交えて解説します。なお、今回のチームは河崎(@taro_kawa6)、鈴木、和地(@akifumi_wachi)、青木(@thun_c)の4名で構成されています。

我々のコンペティションにおける基本的な指針は、「今回の問題設定に過適合することなく、強化学習のポテンシャルを活かした汎用的なエージェントを構築する」 ことでした。具体的には、後述する

  1. 対戦相手の割合の動的な最適化
  2. 密な報酬による初期学習 → 疎な報酬によるファインチューニング
  3. 複数系統のエージェント群によるカリキュラム学習

など、さまざまな問題設定で用いることのできるシンプルな手法のみを採用しました。今回の問題設定に特化したヒューリスティックスやある種のハックのようなものは一切用いていません。ぜひ本記事を読んで楽しんでいただけると幸いです。

第4回空戦AIの問題設定

まず、「第4回空戦AIチャレンジ」について詳しく知らない方もいると思うので、問題設定を簡単に説明します。より詳細が気になる方は、SIGNATEの公式サイトをご覧いただければと思います。

我々はオープン部門に参加しましたので、以下のような問題設定の対戦型空戦AIゲームに取り組みました。

  • 編成: 敵味方ともに戦闘機4機 + 護衛対象機1機
  • 勝利条件: 相手の護衛対象機を先に撃墜した方の勝ち
    • 相手の戦闘機を全滅させても、護衛対象機を落とせなければ勝ちにならない
    • 制限時間が経過した場合は引き分け等の判定となる
    • 部分観測性あり (自陣営が捕捉した敵のみ見える)

以下の動画をご覧いただけると分かると思いますが、「対戦型・マルチエージェント・部分観測」 という複雑な問題設定になっているのがお分かりいただけるかと思います。

1635-summary-1.gif

また、「強さ(レーティング)」だけでは優勝できないという点も面白く、最終的な順位は、以下の2つの合計点(200点満点)で決まります。

  • 定量評価(100点): リーダーボード上の強さ(Glicko-2レーティング
  • 定性評価(100点): 上位入賞候補者が提出する「レポート」の評価

定性評価においては、技術的な合理性が求められ、以下の観点が評価されます。

  • 機械学習の活用: なぜそのアルゴリズムを選んだか?
  • アーキテクチャ: パラメータ調整の経緯や、計算コストとのバランス
  • 報酬設計: 強化学習の場合、どのような報酬を与えたか、その合理性
  • 汎用性・転用性: 機数や戦域が変わっても対応できるロバストな設計か?
  • 独自工夫: オリジナルのアイデア

コンペティション期間の振り返り

我々の空戦AIのスケジュールを振り返ると以下のような4つのフェーズに分割することができるかと思います。

  • 第一期:2025年6月中旬 - 2025年7月中旬
    • 第4回空戦AIの概要が公開されたのち、「対戦型・マルチエージェント・部分観測」の強化学習ということで、空戦AIに関する論文などをサーベイしました
    • この段階では、階層型強化学習が良いのではないかと議論していました

  • 第二期:2025年7月中旬 - 2025年8月中旬
    • SIGNATE 運営よりサンプルコードが公開されました
    • 自分たちで強化学習のコードを一から書くよりも、サンプルコードを改修するほうが短期間でより強いエージェントが作れるのではないかと判断しました
  • 第三期:2025年8月中旬 - 2025年9月中旬
    • サンプルコードを読解した後、本レポートに記載する工夫を徐々に取り入れました
    • 2025年9月初頭から、常に1 or 2位のレーティングを獲得することができました
  • 第四期:2025年9月中旬 - 2025年11月中旬
    • 「空戦AI好き好きクラブ」の台頭などもあり、1位の座から落ちることが増えてきましたが、依然として1〜3位はキープすることができました
    • 第三期の工夫をさらに重ねて、より強いエージェントを作成できるよう色々と試しました
    • レポートの執筆をしつつ、最終的にもっともレーティングが高いと思われる Espada3-kai を提出しました

我々の基本的な戦略

我々のチームでは、「強化学習研究の流れに逆らうことなくシンプルかつ合理的なアプローチを取る」 という基本方針を取りました。

実は、コンペティションの序盤では、我々もルールベースのエージェントを試作し、一時はリーダーボードの上位を獲得していました。その際の手法に関してはこちらをご覧ください。

しかし、中盤以降は強化学習ベースのエージェントが性能を伸ばし、ルールベースのエージェントを凌駕し始めました。強化学習の生みの親 Richard Sutton が The Bitter Lesson [Sutton, 2019] で述べている通り、

人間が設計した知識やルールに頼るよりも、計算資源の拡大と汎用的な学習アルゴリズムこそが長期的には優位に立つ

という強化学習ひいては人工知能の研究開発の歴史を実感しました。

AlphaZero [Silver et al., 2017] や AlphaStar [Vinyals et al., 2019] で示された通り、対戦型・マルチエージェント・部分観測という複雑な環境下では、人間の知識バイアスに依存しない強化学習の方が、コンペティション終盤では高い性能を持てると判断しました。そのため、コンペティション中盤以降は強化学習へ方針を一本化しました。

また、定性評価が半分のウェイトを占めるということもあり、今回の問題設定に過適合したようなヒューリスティックスを取り入れない方が、様々な問題設定で汎用性があり、かつ技術的に合理的な強化学習手法となる、というメリットもあると考えました。

以降の章では、我々が実際に取り入れた工夫について詳細に解説します。

学習効率向上のための対戦相手の最適化

当初、モデルサイズ(LSTMの隠れ次元やTransformerの層数)や、アフターバーナーを常時ONするかどうかを決める always_maxAB や旋回角度の候補を定めるevasion_turnTable などのハイパーパラメータ調整も試みましたが、デフォルト設定を上回る顕著な改善は見られませんでした。そのため、モデル構造を変更するのではなく、「対戦相手の質を高め、学習価値の高い空戦履歴をいかに蓄積するか」 に注力しました。

したがって、Google DeepMind の AlphaStar [Vinyals et al., 2019] に倣い、Population-based / League-based Self-play の枠組みを採用しました。自身の最新の重みや過去の重みとの Self-playを行いつつ、過去に学習したエージェントも対戦相手のプールに含め、新たなエージェントを継続的に訓練します。

対戦相手は全部で $n$ 種類とし、

  • 1 ~ $n-2$ 番目:ルールベースエージェントや過去に作成・保存された学習済みエージェント群
  • $n-1$ 番目:最新の重みを持つ学習中のエージェント自身
  • $n$ 番目:学習中のエージェントの過去スナップショット

Self-playの割合は局所解への早期収束を避けるため、勝率に依存しない定数としました。我々の実験では $p_{n-1} = p_n = 0.15$としました。

残りの確率質量を、学習効率の高い(=ほどよく強い)対戦相手に多く割り当てるよう、以下の式で動的に配分しました。エージェント $i$ に対する勝率 $w_i \in [0,1]$ に基づき、次エポックにおける対戦割合 $p_i$ を決定します。

$$
p_i := \frac{1 - p_{n-1} - p_n}{Z} \exp \left( -\beta (w_i - w^\sharp) \right)
$$

ここで、$Z$ は正規化定数です。我々は $\beta=5$、$w^\sharp = 0.8$ を採用しました。学習中のエージェントが敗れる可能性の高い対戦相手との対戦を増やすことで学習効果を向上させる狙いがあります。一方で、$w^\sharp = 0.8$ とすることにより、80%以上勝つことのできている相手との対戦割合を大幅に減らしています。以下の図に、各エージェントとの勝率と対戦割合の履歴を示していますが、我々の意図が反映されているのがお分かりいただけると思います。

スクリーンショット 2026-01-15 232629.png

この対戦割合の更新は2000エピソード毎に行いましたが、計算は1秒未満で完了し、オーバーヘッドは無視できるレベルでした。

強化学習の報酬設計

今回のようにゲーム自体のルールが明確な場合には、報酬は最終的な目的、すなわちゲームの勝敗に直結するよう定義するのが望ましいと考えました。一方で、報酬があまりに疎で初期の方策学習がうまくいかなかったため、以下のような段階的な訓練を行っています。

密な報酬による初期学習

当初は「勝利・敗北・引分」という疎な報酬のみで学習を試みましたが、SIGNATE運営が提供するルールベースのエージェントにも勝利できず、学習が停滞しました。そこで、まずはサンプルコードで定義されていた密な報酬を用いて「基本的な試合運びが可能な」レベルのエージェントを訓練しました。しかし、このエージェントは自機の生存を過度に優先するなど、報酬ハッキングの兆候が見られました。

疎な報酬によるファインチューニング

「ルールが明確な環境では、勝敗だけで学習できるならそれがベストである」という原則に従い、密な報酬で学習した方策を初期値として、「勝利・敗北・引分」のみを報酬シグナルに用いてファインチューニングを行いました。

  • 勝利: $+2$
  • 敗北: $-2$
  • 引分: $\pm 0$

結果として、敵護衛機への接近・射撃精度が向上し、敵戦闘機への牽制行動も見られるようになりました。統計的にも勝率が約10%底上げされました。

複数系統のエージェントによるカリキュラム学習

多様な戦術に対応するため、2つの系統(A系統・B系統)を用意し、段階的に強い相手を追加していくカリキュラム学習を行いました。両系統ともに、週刊少年ジャンプの有名漫画の敵キャラからエージェント名は拝借しています。A 系統が主たるエージェント群であり、B 系統は A 系統の学習効果を高めるよう意図的に弱めに訓練され、練習相手となるエージェント群となります。このとき、両系統でそれぞれ段階的により強い対戦相手を追加しながら、カリキュラム学習の要領で A 系統のエージェントを可能な限り強くすることを目指しています。

系統 エージェント名 学習中の敵対エージェント 初期方策 報酬 備考
A系統 Espada6 Initial なし ベースとなる強エージェント
Espada3 Benchmark, Initial, Kagen系 Espada6 ファインチューニング第1段階
Espada3-kai 上記 + Kagen系 Espada3 最終提出モデル
B系統 Kagen5 Initial なし 練習相手用(弱め)
Kagen4 Initial Kagen5
Kagen2 Initial, Kagen5, 4 Kagen4 B系統最強

学習の流れ:

  1. B系統で相対的に弱いエージェント(Kagen5)を作成。
  2. A系統で長時間学習させ、強い初期方策(Espada6)を作成。
  3. Kagen5をベースにB系統を強化し、練習相手(Kagen2等)を育成。
  4. Espada6をベースに、強化されたB系統も敵プールに加えながらA系統をファインチューニング(Espada3 -> Espada3-kai)。

最終投稿のEspada3-kaiの特徴

動画の右側の青チームがEspada3-kaiです。(記事投稿のために圧縮して見えにくくなったので、きれいな動画を見たい方はこちらからどうぞ)

無題のビデオ ‐ Clipchampで作成.gif

このエージェントの強みは、勝敗に直結する「生存能力」および「敵護衛機の撃墜能力」にあります。特に顕著に見られた興味深い現象としては、攻撃時に高度を獲得してから射撃を行う点です。高度を取ることで誘導弾のスピードが維持され、護衛機が回避する余裕を与えずに撃墜できます。

比較として、赤チームのEspada0は高度変更を行わない設定で学習しました。Espada3-kaiより早く護衛機に対して射撃しているにもかかわらず、誘導弾が終盤で失速し、目標を逃しています。
ここで強調したいのは、この「高度を取ってから射撃する」という戦術は、私たちがルールとして与えたものではないということです。与えたのは前述の通り疎な報酬シグナルのみで、エージェント自身がこの戦術を発見しました。強化学習、恐るべし。

スクリーンショット 2026-01-15 235834.png

困難だった点

手元での強さとレーティングが乖離する

興味深い現象として、手元の検証では(最終的に提出した)Espada3-kaiよりも強いエージェント(Espadaの後継機 Aizenなど)が実は何個か存在しました。例えば、上記の工夫をさらに複数回適用して訓練したエージェントは、運営が提供しているルールベースエージェントに95%勝つだけでなく、Espada3-kai に対しても勝率64% を誇ります。しかし、リーダーボード上でのレーティングは Espada3-kai ほどは芳しくありませんでした。

コンペティション終盤で、我々は終始この現象に苦しめられました。新たに訓練したエージェントは、Espada3-kai を含め色々なエージェントを対戦相手に訓練されて我々の手元では明らかに強くなっているはずなのに、リーダーボード上ではレーティングが Espada3-kai ほどは上がらない、という状況が数週間続きました。原因が明確には分かっているわけではありませんが、奇抜な戦略を取る低レーティングのエージェントに負けてしまい、大幅にレーティングが低下してしまっていたのだと推察しています。

ルールベースエージェントの利用について

我々の強化学習の弱点を突くようなルールベースエージェントを構築し、学習相手に混ぜる実験も行いました。しかし、ルールベースの極端な戦略に過学習してしまい、汎用性が著しく低下する結果となりました。この失敗からも、「いかなる段階でもルールベースに頼らない純粋な強化学習アプローチ」が、汎用性の観点からは優れていると結論付けました。

まとめ

  • The Bitter Lesson の実践: ルールベースに頼らず、計算資源と汎用アルゴリズム(強化学習)に投資した。
  • 対戦相手の質: モデル構造を変えるより、勝率に基づいた対戦相手の動的選択とカリキュラム学習が効果的だった。
  • 汎用性の獲得: 疎な報酬によるファインチューニングと多様な相手との対戦により、様々な対戦相手にも高い勝率を誇るエージェントを作成することができた。

今回のコンペティションで得られた知見は、空戦に限らず様々なマルチエージェント環境に応用可能だと考えています。

表彰式の時の写真(航空装備研究所の所長と一緒に)
IMG_5884.jpg

参考文献

  • J. Schrittwieser, I. Antonoglou, T. Hubert, et al. Mastering atari, go, chess and shogi by planning with a learned model. Nature, 588(7839):604–609, 2020.
  • D. Silver, T. Hubert, J. Schrittwieser, et al. Mastering chess and shogi by self-play with a general reinforcement learning algorithm. arXiv preprint arXiv:1712.01815, 2017.
  • R. Sutton. The bitter lesson. Incomplete Ideas (blog), 13(1):38, 2019.
  • R. S. Sutton, A. G. Barto, et al. Reinforcement learning: An introduction, volume 1. MIT press Cambridge, 1998.
  • O. Vinyals, I. Babuschkin, W. M. Czarnecki, et al. Grandmaster level in starcraft ii using multi-agent reinforcement learning. Nature, 575(7782):350–354, 2019.

最後に宣伝

Spakonaはエンタープライズ向けAIシステムの開発で培った技術力を基盤に、新たにDefense Tech領域への参入を開始します。事業拡大に伴い、エンジニア採用を強化中です。AIサービス開発・システム開発に携わっていただける方を募集しています。詳細は下記リンクをご覧ください。

もしくは河崎のX(@taro_kawa6)にDMください、返事します!
ぜひ一緒に仕事しましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?