Table of Contents generated with DocToc
https://www.kaggle.com/c/hungry-geese
Congratulations to our Month 5 Winners - Goose luck!
https://twitter.com/imokurity/status/1408578446645547012
このレポジトリは HandyRL の fork です
- 教師あり学習 + 強化学習 + MCTS (rating 1200くらい)
チームのベストソリューションは、また別です。。😂
rating 1200 以上の agent の対戦履歴をもとに、 勝者の行動を教師データとして学習する
- GPUサーバーで
python main.py -ts - CPUサーバーの
config.yamlでnum_parallelを使用するCPU数にするserver_addressをGPUサーバーのアドレスにする
- CPUサーバーで
python main.py -w
- GPUが遊んでいるようならGPUサーバーの
config.yamlのnum_batchersを増やす config.yamlのbatch_sizeは GPUのメモリサイズに合わせる- ただし learning rate がこの
batch_sizeに依存しているっぽい このあたり
- ただし learning rate がこの
config.yamlのmaximum_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)
こちら を パクる 参考にして、以下の更新をした。
- 探索のたびに、(探索済みの局面も)推論を行う
- 推論のたびに、ランダムにモデルが選ばれる(アンサンブル効果)
- 推論のたびに、局面をランダムにスライドさせる
- 推論のたびに、敵 3体のチャネルをシャッフルする
- ベストな行動は、直近での推論結果のみで決める
- 推論結果は、4択しかなく、選択肢の差がモデルによっては付きやすいため
- ある確率で、推論結果にルールを適用する
- それによって、正面衝突を回避しやすくする
モデル同士で対戦し、成績の良いモデルを submit する
- 学習済みモデルの upload:
make model - ソースコードの upload:
make source - エージェント Notebookの submit:
make submit