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

Kaggleシミュレーションコンペの動向

nagiss
January 24, 2023

 Kaggleシミュレーションコンペの動向

DeNAの2022/8/23のDS輪講の発表資料です。

nagiss

January 24, 2023
Tweet

More Decks by nagiss

Other Decks in Technology

Transcript

  1. 8 シミュレーションコンペとは? (詳しめのルール 1 / 2) • 参加者は、ゲーム AI (エージェント)

    を作成してコンペに提出する • エージェントは、観測 (observation, エージェントから見えるゲームの状態 ) を与えられ てから一定の制限時間 (actTimeout, 2 秒程度) 以内に次の行動を決定しなければい けない ◦ 制限時間を過ぎてもすぐに負けにはならず、持ち時間 (remainingOverageTime, 60 秒程度) が消費される。消費し切ったら負け ◦ 1 手に数秒、1 ゲームに数百ターンかかるので、 1 ゲームに最大数十分 • 1 日に 5 個程度のエージェントが提出可能、提出した全てが評価対象になる ◦ (2023/1 追記) Lux AI 2022 beta から評価対象となるエージェントを 3 つ選ぶ形式になった
  2. 9 シミュレーションコンペとは? (詳しめのルール 2 / 2) • エージェントを提出すると、まず自己対戦でエージェントが正しく動作するか確認が行わ れる。自己対戦でエラーが出なかったエージェントは、他チームが提出した同程度の レーティングのエージェントと対戦を行い、勝敗に応じてレーティングが変動する。対戦

    はコンペの終わりまで繰り返される。 ◦ 自己対戦でエラーが出た場合、提出回数は消化されない ◦ 対戦の頻度はそこまで高くないので、評価は気長に待つ • 提出したエージェントのレーティングのうち最大の値が順位表に反映される • 提出したエージェントは削除できない • エージェント提出の締め切り後にも、レーティング収束のために 2 週間程度対戦が繰り 返される
  3. 10 シミュレーションコンペとは? • メダルありのコンペはこれまでに 7 回 ◦ 過去コンペには提出できない ▪ (2023/1

    追記) 一部コンペは clone して内輪で楽しむなどできるようになった • 主な戦略 ◦ ルールベース ◦ 模倣学習 ▪ API で取得できる上位の対戦のリプレイから行動を学習する ◦ 強化学習 ▪ 模倣学習と併用されることも多い • (ので後のsolution紹介では併用された場合も特に明記しないことにする ) ◦ それぞれゲーム木探索 (主に MCTS) と併用されることもある
  4. 11 全コンペ 略称 期間 メダル有無 概要    Connect X 常設

    コネクトフォー    Halite by Two Sigma Halite 2020/6-9 🥇🥈🥉 宇宙船でバトル    Halite by Two Sigma - Playground Edition 2020/9-12 (延長戦)    Google Research Football with Manchester City F.C. Football 2020/9-12 🥇🥈🥉 サッカー    Rock, Paper, Scissors RPS 2020/11-2021/2 🥇🥈🥉 じゃんけん    Santa 2020 - The Candy Cane Contest MAB 2020/12-2021/2 🥇🥈🥉 多腕バンディット    Hungry Geese 2021/1-8 🥇🥈🥉 スネークゲーム    Lux AI 2021/8-12 🥇🥈🥉 資源集めて生き残る    Kore 2022 - Beta 2022/3-4 (ルール調整)    Kore 2022 Kore 2022/4-7 🥇🥈🥉 宇宙船でバトル
  5. 13 Connect X • コネクトフォー(重力付き四目並べ) • 唯一の常設コンペ • 唯一の交互に行動するゲーム? •

    唯一の二人零和有限確定完全情報ゲーム? • 個人的には強化学習を練習するには面白くないゲームだと思っている ◦ 二人零和有限確定完全情報ゲームなのでゲーム木探索が強い ◦ 先手必勝が知られている
  6. 14 Halite by Two Sigma • 宇宙船ゲーム ◦ 4 人対戦、ターンごとに各艦隊と造船所の行動を決め、行動は全員同時

    ◦ 盤面に設置された Halite を多く集めたプレイヤーの勝ち ◦ 敵艦隊との衝突で Halite を奪ったり奪われたりする • 1 位解法 ◦ ルールベース、コードは 11000 行を超える • 2位ルールベース、4位ルールベース、5位模倣学習、6位ルールベース
  7. 15 Google Research Football with Manchester City F.C. • サッカー

    ◦ ボールに近い 1 人のみを操作する ◦ 各方向の移動、パス、シュート等 19 通りの行動がある • 1 位解法 ◦ 強化学習 ▪ Deheng Ye, et al に近い手法らしい ▪ PPO • 2位強化学習(IMPALA)、3位強化学習(TD(λ),IMPALA,UPGO)、5位強化学習 (TD(λ),UPGO)、6位強化学習(PPO)、7位模倣学習(GBDT)
  8. 16 Rock, Paper, Scissors • じゃんけん ◦ 2 人対戦 ◦

    1000 回じゃんけんして 20 回勝ち越せば最終的に勝ち • 1 位解法 ◦ 公開 notebook のエージェント、rpscontest.com のエージェントと、それぞれの 出力 x に対して (x+1)%3, (x+2)%3 を計算したものから多腕バンディットとかで 選んだりする ◦ 決定論的な公開 notebook エージェントに対しては完勝できる • 他の上位解放も大体似ている
  9. 17 Santa 2020 - The Candy Cane Contest • 対戦型の多腕バンディット問題

    ◦ 2 人対戦 ◦ 100 個のマシンがあり、各ターンに各エージェント 1 つ選ぶ ◦ 各マシンに設定された確率に基づいて当たりが出る ◦ 相手がどのマシンを選んだかは見えるが、結果は見えない ◦ マシンを選ぶたびにそのマシンの当たり確率に 0.97 が乗算される • 1 位解法 ◦ GBDT で確率を予測 (ただし確度が低いものは予測値を上げる ) • 2位GBDT(1位と類似)、3位確率予測+強化学習(V-trace)、4位確率予測+相手に手の 内がバレないようにする
  10. 18 Hungry Geese • スネークゲーム ◦ 4 人対戦 ◦ 盤面の食べ物を食べると体が

    1 マス伸びる ◦ 長く生き残っていた方が勝ち、同じターンの場合長い方が勝ち • 1 位解法 ◦ HandyRL ◦ 線形モデルを評価関数にした MCTS と大きい NN のアンサンブル ▪ これ Ponanza では? • 2位模倣学習+MCTS、3位強化学習(V-trace,UPGO)+MCTS、4位強化学習、5位強 化学習+MCTS(AlphaZero)
  11. 19 Lux AI • フィールドの木、石炭、ウランを集めて厳しい夜を生き残るゲーム ◦ 1 ターンに複数のユニット (workers /

    carts) を操作する ◦ 盤面サイズがランダム(結構大きい場合もある) • 1 位解法 ◦ 強化学習 (IMPALA, UPGO, TD(λ)) ◦ NN のアーキテクチャに Squeeze Excitation を含む • 2位強化学習(PPO,ResNet) 4位模倣学習(SENet)、5位模倣学習(UNet)、6位模倣学 習(UNet)
  12. 20 Kore 2022 • 宇宙船ゲーム ◦ 造船所から艦隊を飛ばしてフィールドの kore を集める ◦

    艦隊の航行計画は出航と同時に決める ◦ 出航済みの艦隊の航行計画は相手プレイヤーからも見える ◦ 行動空間が組合せ論的に増えるので超広い • 1 位解法 ◦ ルールベース ▪ 5000 行以上の Python コード • 2位ルールベース、3位ルールベース、4位ルールベース、5位ルールベース
  13. 21 解法まとめ 優勝解法 2位以降    Halite ルールベース ルールベース ルールベース 模倣学習

    ルールベース    Football 強化学習 強化学習 強化学習 強化学習 強化学習    RPS 特殊 特殊 特殊 特殊 特殊    MAB 特殊 特殊 強化学習 特殊 特殊    Hungry Geese 強化学習 模倣学習 強化学習 強化学習 強化学習    Lux AI 強化学習 強化学習 模倣学習 模倣学習 模倣学習    Kore ルールベース ルールベース ルールベース ルールベース ルールベース
  14. 22 所感 • 強化学習思ったより使われてるじゃん ◦ KL Divergence がどうとかという話もよく出てきた印象 (RL わからん)

    ◦ RL わからんので次にシミュレーションコンペ来た時とかに勉強したい • DQN 誰も使ってないじゃん
  15. 26 Kaggle Environments • シミュレーションコンペのだいたい全てが詰まったモジュール • ローカルで対戦とかしたい場合はインストールする必要がある • Kaggle notebook

    にもインストールされているのでちょっと試す時はそれで • 内容物 ◦ 実行環境 ◦ 各ゲームの実装 ◦ Docker 関連 ◦ API
  16. 27 Kaggle Environments - 実行環境 • 動かす方法は README.md の通り •

    env.run の引数にエージェントのリストを渡して対戦を行う ◦ エージェントには Python の関数、Python スクリプトのパス、ゲームごとに設定 されたデフォルトのエージェント名などを指定できる ◦ スクリプトのパスが渡された場合は、その中で最後に定義された関数がエージェン トとして扱われる ▪ こういうのも OK っぽい →
  17. 30 Kaggle Environments - API • 評価環境での対戦のリプレイを取得する API が提供されており、それを叩くための関 数

    が kaggle-environments/kaggle_environments/api.py にある • 叩いていいのは 1 分に 60 回まで、1 日に 3600 回まで • Meta Kaggle にエージェントのレート変動の記録などがあるので、それと併用すると良 い
  18. 32 提出ファイルの作成方法 (2 / 2) • Python スクリプトを提出する場合 ◦ Kaggle

    Environments で対戦させる場合と同じようなファイルを作る • 複数のファイルを提出する場合 ◦ エージェントとなる関数を含んだファイルの名前は main.py とする ◦ 評価時、.tar.gz は /kaggle_simulations/agent に展開されるが、作業ディレク トリは /kaggle/working となる ▪ 例えば、Python スクリプトを分ける場合は以下のようなコードを最初に入れる • sys.path.append(“/kaggle_simulations/agent”) ◦ 固めるコマンドの例 ▪ tar.cvzf submission.tar.gz main.py model.py parameters.pth
  19. 33 その他 • エラーのログ ◦ ゲーム画面からログをダウンロードしてエージェントの標準出力 /標準エラー出力を 確認できる ◦ ログは自チームのものだけ見ることができるので安心

    ◦ 各ターン 1024 文字以内、それ以上は切り落とされる • エージェントは独立したコンテナの中で動作、相手からの干渉は受けない • 評価環境のリソースは、最も新しい情報 (結構古い) で 1.6 CPUs / 8GB RAM