ランド研究所の「機械学習による航空支配」を実装する（その１９）：最後に

本記事は、ランド研究所の「機械学習による航空支配」を実装する（その１9）です。（今回の記事が最後です）。

[Air Dominance Through Machine Learning: A Preliminary Exploration of Artificial Intelligence–Assisted Mission Planning, 2020](https://www.rand.org/pubs/research_reports/RR4311.html)

ランド研究所のレポートに記載されている１次元プランニング問題、２次元プランニング問題に対し、GAN と強化学習を適用し実装した感想、反省点、疑問点を中心にまとめ、今後に活かしたいと思います。

これまでの強化学習で、使用したコードは、下記 GitHub にあります。
>#### １次元問題（GAN）
 - [Conditional GANを使ったプランナー](https://github.com/DreamMaker-Ai/AirDominace_1D_GAN_Git)

>#### １次元問題（強化学習）
 - [強化学習を使ったプランナー](https://github.com/DreamMaker-Ai/AirDominance_1D_RL_Git)

>#### 2次元問題（強化学習）
 - [強化学習を使ったプランナー](https://github.com/DreamMaker-Ai/AirDominance_2D_RL)



#感想：GAN によるプランニングの将来性
 - 成功例（や失敗例）が、山ほどあるような問題で、成功例と似た静的なプランを生成するには結構使えるのではないか、と感じました。ただし、例がないような突飛なプランは生成できません。
 - ２次元問題のような時系列のプランニングができるのかどうかは、もっと GAN の勉強をしないと判りません。何らかの工夫が必要だろうと思います。 


#感想：現在の強化学習の有効性と限界
 - 今回は、アクション空間が連続だったので、評判が良い SAC（Soft Actor Critic）を使用しました。このアルゴリズムは、思ったよりもパワフルで、今回ぐらいの問題なら有用性が高いと感じました。時間があれば、PPO と比較したかったところです。
 - 空間的なプランニングに比べ、時間的なプランニングは、遥かに難しかったです。スパースな終端報酬だけでは学習は進まず、報酬シェーピングが必要でした。これは、SACに限らず、強化学習全体に言えるような気がします。
    - 空間的なプランニングでは、射程のギリギリのところをきちんと見極めることができました。これは、予想以上の性能でした。
    - 一方、時間的なプランニングでは、数タイムステップのタイミングを合わせるために報酬シェーピングに頼らざるを得ませんでした。原因は探索時に時間的なタイミングが合うケースが稀にしか発生しないことに問題があると考えました。このため、報酬シェーピングで、タイミングが合う方向に探索をさせることで無事に学習ができました。報酬シェーピングでは、どういう方向に学習させるべきかをよく考えることが重要だと思いました。


#感想：観測を相対量だけで行うことの有用性
 - 観測を、慣性空間の座標値ではなく、相対的な距離と角度に変更することで、並行移動や回転に対して不変な観測量を得ることができます。その結果、探索空間をかなり小さくできるので非常に有効です。最初は、ランド研究所のレポートに従って、慣性空間の（x, y）座標値で学習させようとしましたが、問題を少し難しくするとすぐに学習が進まなくなってしまいました。同じ問題でも、観測空間が小さくなるように観測量を工夫することは非常に重要だと感じました。


#感想：学習した解のロバストネス（汎化能力）
- 距離やイニシャル・ヘディングエラーに対し、想像以上の十分な汎化能力（ロバストネス）を示しました。特に、イニシャル・ヘディングエラーに対しては、360度の汎化能力を達成しました。
- 相対量でない観測量を用いた場合、ほとんど汎化能力はありませんでした。明記されていませんが、ランド研究所のレポートでも、汎化能力は貧弱だった感じでした。相対的な観測量にすることで、360度の全周空間を小さな観測空間に変換できるので、汎化能力が向上したものと思われます。

#疑問：各プランの統一的な取り扱い
 - 今回は、４種類のプランニング問題に対し、別々のニューラルネットをトレーニングしました。理論的には、もっと大きくて深いネットを用いれば、統一的に４種類の問題を扱うことができるはずです。つまり、1つのニューラルネットで４種類のプランニング問題すべてに対応できるはずです。この場合、扱える範囲が広くなるので、有用性はずっと高くなります。ただし、SACも含め、現在の強化学習アルゴリズムにそこまでの能力があるのか、と感じます。

#疑問：存在しないエンティティの取り扱い

- 実装した Mission 4 や、上記のように各プランを統一的に取り扱う場合、存在しないエンティティ（最初から存在しなかったり、途中で撃破されて存在しなくなったりしたエンティティ）を取り扱う必要があります。今回は、存在しなくなった段階で。観測量をすべて 0 にすることで対応しました。結果的には問題はありませんでしたが、実態とは違った取り扱いになっているので、もっと良い方法はないのだろうか、と思います。

#感想：強化学習によるプランニングの将来性

 - 今回のようなプランニングを、現実問題でどう使うのかについては、ランド研究所のレポートでは何も述べられていません。これについては、University College of London のグループが行った、複数（数隻）USV（Unmanned Surface Vehicle）のプランニング研究が参考になると思います。具体的には、下図のような３階層アーキテクチャで、USV のプランニングからコントロールまでを行うシステムが提案されています。

[Path planning algorithm for unmanned surface vehicle
formations in a practical maritime environment](https://core.ac.uk/download/pdf/78076695.pdf)

![Screenshot from 2021-06-26 17-15-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366937/018ee59d-b08a-5fe1-7987-4aeaabd308c4.png)


#感想：拡張性
 - ランド研究所のレポートの[結論](https://qiita.com/DreamMakerAi/private/95e0aad16e450cb0c53d)でも述べられてましたが、この方法では、あらかじめ設定したエンティティ数以上のエンティティには対応できません。このためレポートでは、戦場をグリッド化して対応する案が提案されています。この場合、扱える敵のエンティティ数は任意にできるのですが、味方のエンティティ数はやはりあらかじめ最大値を決めておく必要があると思われます。
 - この制約を取り払うには、例えば、各エンティティを自律エージェントとみなして、マルチエージェント強化学習を適用することが考えられます。ただし、マルチエージェント強化学習は、学習が強化学習よりもさらに困難で Long way to go なレベルです。


#感想：自律分散システム（Autonomous）というアプローチ
 - 今回のアプローチは、[AlphaStar](https://deepmind.com/blog/article/alphastar-mastering-real-time-strategy-game-starcraft-ii) 等と同じく、中央集権的なプランニングでした。これとは別のアプローチとして、[Hide & Seek](https://openai.com/blog/emergent-tool-use/) 等のように、自律エージェントによる分散自律的なアプローチが考えられます。上記のマルチエージェント強化学習はその一例です。実際に戦闘を行う現場の箱物の視点からは、自律システムの方が有用だと考えられます。一方、C4I（Command, Control, Communication, Computer and Intelligence, 指揮統制系）という視点からは、今回のようなアプローチも有用だと思います。現実問題としては、この2つの両極にあるアプローチの中間点が取られることになるものと想像できますが、今後どこでどうバランスがとられた全体システムの研究につながっていくのか楽しみです。


#感想：実世界の問題に強化学習は使えるのだろうか？
- 今回の問題設定は、実際の問題を極限までシンプルにした設定です。にもかかわらず、（少なくとも、私のビンテージマシンでは）、数日の学習が必要でした。囲碁やAtariのゲームも現実世界の問題に比べると極めてシンプルです。
- DeepMind, OpenAI, UC Berkeleyといった先端研究機関の研究でも、現実世界の問題は未だ遥か彼方な感じがします。かなりのBreak through が無い限り、現実世界の問題に対して使うのはなかなか難しいのではないかという気がします。
- 或いは、深層強化学習も、かつての Optimal Control や Robust Control と同じような道をたどるのでしょうか？


#反省：巨大化するCodeの取り扱い
 - 必要なものをその都度追加していったので、いつの間にかコードが巨大化してしまいました。やはり、モジュールに分割して作った方が、デバッグが楽です。


#追記：別の題材で、マルチエージェント強化学習の応用を取り扱った記事を書き始めました。
> [マルチエージェント強化学習を使って、複数群vs複数群のための協調戦闘戦術を生成してみる](https://shin-trdi.hatenadiary.jp/entry/2021/09/27/211646)


# 過去記事へのリンク
- [ランド研究所の「機械学習による航空支配」を実装する（その1）：レポートのまとめ](https://qiita.com/DreamMakerAi/private/95e0aad16e450cb0c53d)
- [ランド研究所の「機械学習による航空支配」を実装する（その2）：1次元問題について](https://qiita.com/DreamMakerAi/items/72c90f9df5339dedd9cd)
- [ランド研究所の「機械学習による航空支配」を実装する（その3）： 1D simulator for GAN と Random mission planner の実装）](https://qiita.com/DreamMakerAi/private/1a0e25a9f673e531ee6f)
- [ランド研究所の「機械学習による航空支配」を実装する（その4）： conditional GAN の実装とトレーニング](https://qiita.com/DreamMakerAi/private/3a416d5cb64d9b7e86db)
- [ランド研究所の「機械学習による航空支配」を実装する（その5）：トレーニング結果の分析](https://qiita.com/DreamMakerAi/items/6c78181b71c470632fcf)
- [ランド研究所の「機械学習による航空支配」を実装する（その６）：トレーニング・データの重要性と GAN の性能向上](https://qiita.com/DreamMakerAi/private/b8ae6c9afd28e90b5b5c)
- [ランド研究所の「機械学習による航空支配」を実装する（その７）：1D simulator for RL の実装](https://qiita.com/DreamMakerAi/private/f008fa9981c3ad74c3cc)
- [ランド研究所の「機械学習による航空支配」を実装する（その８）： Stable Baselines による強化学習](https://qiita.com/drafts/37e6a18810b83d759d81/edit)
- [ランド研究所の「機械学習による航空支配」を実装する（その９）： 少し複雑な環境](https://qiita.com/DreamMakerAi/private/f4d3e35c07ab053608ea)
- [ランド研究所の「機械学習による航空支配」を実装する（その１０）：GAN / 強化学習プランナーの連携を考える](https://qiita.com/DreamMakerAi/private/6cb416e42fc35a7a425c)
- [ランド研究所の「機械学習による航空支配」を実装する（その１１）： ２次元問題の概要](https://qiita.com/DreamMakerAi/private/3572afde356ba5719123)
- [ランド研究所の「機械学習による航空支配」を実装する（その１２）： 2D simulator for mission_1 の実装](https://qiita.com/DreamMakerAi/private/af22d730bf8cbff23fdd)
- [ランド研究所の「機械学習による航空支配」を実装する（その１３）： 2D 問題 mission_1 を強化学習する](https://qiita.com/DreamMakerAi/private/2922e4ad82e8e8c2a059)
- [ランド研究所の「機械学習による航空支配」を実装する（その１４）： Relative Observation による mission planner の能力アップ](https://qiita.com/DreamMakerAi/private/fb2b9971c0894d4cc49b)
- [ランド研究所の「機械学習による航空支配」を実装する（その１５）： 2D問題 mission_2](https://qiita.com/DreamMakerAi/items/63f6313247cd778030dd)
- [ランド研究所の「機械学習による航空支配」を実装する（その１６）： 2D問題 mission_3](https://qiita.com/DreamMakerAi/private/815fc203798f4ea14701)
- [ランド研究所の「機械学習による航空支配」を実装する（その１７）： 2D問題 mission_4](https://qiita.com/DreamMakerAi/private/6337377d19b62ecf0bfa)
- [ランド研究所の「機械学習による航空支配」を実装する（その１８）： 2D問題 mission_4 Reward shaping による改良](https://qiita.com/DreamMakerAi/items/33b73a29ce300596d0bb)