Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AHC061解説

Avatar for Shun_PI Shun_PI
February 26, 2026

 AHC061解説

Avatar for Shun_PI

Shun_PI

February 26, 2026
Tweet

More Decks by Shun_PI

Other Decks in Programming

Transcript

  1. 問題概要 • 𝑁 × 𝑁の盤面上で、𝑀人のプレイヤーによる 陣取りゲームを行う • プレイヤー0を高橋くんが、 残りのプレイヤーをAIが操作する •

    ゲームは𝑇ターン行い、各ターンでは 高橋くん(プレイヤー0)の移動先を出力する • スコアの最も高いAIに対するプレイヤー0の スコアの比率をできるだけ大きくしたい 2026/2/26
  2. ルール案①:駒の移動を隣接移動のみにすると? • 駒の移動が隣接移動のみの場合、 「離れた場所にあるマスを狙う」 行動を表現しづらい • 隣接マス以外を全く評価しない場合、 動画のようなケースでハマりそう • 評価値を移動距離で割った値で遠くのマスを

    評価することもできるが、 「ターゲット」を設定してそれに向かって 移動を繰り返すようなアルゴリズムが必要 • 領土に隣接しているマスを自由に 選べるようにすることで、 距離の概念がなくなり評価値がシンプルに 2026/2/26
  3. ルール案②:AIの行動にランダム要素が無いと… • 敵のAIが貪欲行動をしない 𝜀 = 0 場合、複数のAIがあるマスを獲ろうと 競合し続けてハマってしまう • 当初は温度付きsoftmaxによる

    ランダム化を行っていたが、 温度の調整が難しく、 温度が低いと同様のハマり方をした • 最終的にはε-greedyとすると ゲームとして安定した • 原案からの(大きな)変更点はここだけ 2026/2/26
  4. 反省点 • スコアのブレが大きすぎた • 暫定テスト→システムテストの順位変動は今までで一番大きかった • モンテカルロ法が強すぎた • 上位が(1位を除き)ほぼモンテカルロ法で、解法バリエーションは少なかった •

    AIの行動決定方法を公開する都合上、モンテカルロ法の精度が非常に高くなる • 生成AIが強すぎた • AIからすると高度な焼きなましやビームサーチが必要とな問題に比べて取り組みやすく、 例えば『パラメータ推定+モンテカルロ法を実装し改善して』といった ゆるふわ指示でもまあまあ高いスコアが出てしまう • 強化学習が優勝した • 強化学習はマシンリソースが必要であり不平等であるという意見 • AHCの歴史上1回くらいそういう回があってもいいよね、というお気持ちで あえて強化学習有利な問題にした(ので反省していません) 2026/2/26
  5. Step2~4: 評価値の改善 2026/2/26 16 • Step2: スコア最大AIへの攻撃にボーナ ス • スコア最大のAIへの攻撃の場合、

    • 𝑤𝑐 = 3.0, 𝑤𝑑 = 0.8 • Step3: 外側のマスほどボーナス • 外側のマスほど攻撃されにくい • 中央からの距離×100を評価値に加算 • Step4: 前ターンと同じマスの競合回避 • 前のターンにあるマスを選んで敵AIと 競合した場合、そのマスを選ばない 42.8G 614位 1218perf 44.8G 556位 1289perf 46.1G 519位 1336perf
  6. Step5: 敵AIにマスが選ばれる確率を求めて評価値補正 2026/2/26 17 • Step5: 敵AIにマスが選ばれる確率を求めて 評価値補正 • 敵AIのパラメータを固定し、各マスで

    「最低1人の敵AIに選ばれる確率𝑝」を計算 • 𝑤𝑎 = 1.0, 𝑤𝑏 = 1.0, 𝑤𝑐 = 1.0, 𝑤𝑑 = 1.0, ε = 0.7 • 𝜀が高めなのは、パラメータ推定していないゆえに 敵の貪欲行動先があまり信頼できないため • 自陣の場合は評価値に1 − 𝑝、それ以外の場合は 𝑝を掛けて補正 47.8G 460位 1412perf
  7. 評価値貪欲の限界 2026/2/26 20 • 今回の問題は、複数人がランダム行動を含む同時行動をし、それに 応じて盤面が予測不可能に変化していくため、ゲームとして複雑 • 人間が設計する評価値だけだと、どうしてもスコアに限界がある • ここから大きく2つの方針が考えられる

    1. モンテカルロ法:シミュレーションの結果を利用して評価 2. 強化学習:人間には困難な複雑な評価値をニューラルネットワー クにより学習 • 以降は主にモンテカルロ法を解説し、強化学習は紹介程度とします
  8. Step9~11: モンテカルロ法の改善 2026/2/26 24 • Step9: 選択候補から以下を除外する • レベル上限に達した自陣 •

    スコア最大でないAIのレベル2以上の敵陣 • Step10:敵の行動方法をε-greedyにする • Step5同様パラメータ推定はせず、以下を使用 𝑤𝑎 = 1.0, 𝑤𝑏 = 1.0, 𝑤𝑐 = 1.0, 𝑤𝑑 = 1.0, ε = 0.8 • Step11:自分の行動方法を評価値貪欲(Step7) に • 自分の行動にもランダム行動確率𝜀 = 0.8を 入れる方が良い • スコアはあまり変わらず (自分の行動はランダムでもあまり問題ない?) 53.0G 327位 1603perf 55.5G 279位 1682perf 55.3G 280位 1680perf
  9. Step12: 粒子フィルタによる敵パラメータ推定 2026/2/26 25 • 粒子フィルタでパラメータ推定を行い、 プレイアウト中の敵の行動や自分の行動 (敵のマスの選択確率の計算)に使用する • 粒子フィルタ以外の推定方法でも

    推定精度やスコアに大きな違いは無かった • グリッドベイズ、MCMCなど • そもそもパラメータの推定精度が そこまでスコアに寄与しない? 58.7G 227位 1778perf
  10. 強化学習による提出コード 2026/2/26 33 • 50ch/5層CNN(skip connection)の シンプルな提出コード • 学習から提出まで全てのコードをAI生成 •

    平均18万点→平均22万点程度まで 強化学習により改善できた • N×Nの方策確率から(移動可能なマスの中 で)最大のものを選択し続ける • 強化学習を始めて2~3日程度でのスコア • 私の学習ではここからなかなか伸ばせなかった 67.9G 59位 2290perf