IMOKURI / Hungry-Geese

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Table of Contents generated with DocToc

🦆 Hungry Geese 🦆

https://www.kaggle.com/c/hungry-geese

🎉 Month 5 Winners - Goose luck! 🎉

Congratulations to our Month 5 Winners - Goose luck!

https://twitter.com/imokurity/status/1408578446645547012

はじめに

このレポジトリは HandyRL の fork です

私のソリューション

  • 教師あり学習 + 強化学習 + MCTS (rating 1200くらい)

チームのベストソリューションは、また別です。。😂

教師あり学習

rating 1200 以上の agent の対戦履歴をもとに、 勝者の行動を教師データとして学習する

Notebook

強化学習 (HandyRL)

使い方

  • GPUサーバーで python main.py -ts
  • CPUサーバーの config.yaml
    • num_parallel を使用するCPU数にする
    • server_address をGPUサーバーのアドレスにする
  • CPUサーバーで python main.py -w

その他

  • GPUが遊んでいるようならGPUサーバーの config.yamlnum_batchers を増やす
  • config.yamlbatch_size は GPUのメモリサイズに合わせる
    • ただし learning rate がこの batch_size に依存しているっぽい このあたり
  • config.yamlmaximum_episodes はGPUサーバーのメモリサイズに依存する (モデルサイズによるが128GBで 100万くらい)

学習

ハイパーパラメータ

parameters.md のメモ (間違っているかも)

  • gamma: 先の報酬をどのくらい減らすか - 例えば gamma が 0.8 なら 10ステップ先の評価は 0.8 ^ 10 = 0.1 倍される
  • forward_steps: 何ステップ先までの行動を評価の対象とするか
  • entropy_regularization: 最適な行動ではなくランダムな行動をする確率 (Noisy Layerを使うなら0でよさそう)
  • update_episodes: 何エピソードごとにモデルを更新するか (大きいほど安定するが時間がかかる)
  • lambda: n が 1 だと最終的な報酬を重視, n が 0 だと直近の報酬を重視
  • policy_target, value_target: 損失関数(行動評価用と状態価値評価用) (基本はTD)

対戦相手

MCTS

こちらパクる 参考にして、以下の更新をした。

  • 探索のたびに、(探索済みの局面も)推論を行う
    • 推論のたびに、ランダムにモデルが選ばれる(アンサンブル効果)
    • 推論のたびに、局面をランダムにスライドさせる
    • 推論のたびに、敵 3体のチャネルをシャッフルする
  • ベストな行動は、直近での推論結果のみで決める
    • 推論結果は、4択しかなく、選択肢の差がモデルによっては付きやすいため
  • ある確率で、推論結果にルールを適用する
    • それによって、正面衝突を回避しやすくする

評価

モデル同士で対戦し、成績の良いモデルを submit する

Kaggle への Submit

  • 学習済みモデルの upload: make model
  • ソースコードの upload: make source
  • エージェント Notebookの submit: make submit

About

License:MIT License


Languages

Language:Python 99.4%Language:Jupyter Notebook 0.6%Language:Makefile 0.0%