気象観測ボットのための強化学習環境の実装

先日の記事では、気象観測ボットの制御を強化学習の問題としてどのように定義するかを説明しました。

実際に気象観測ボットの制御を行うためには、深層学習アルゴリズムを実装するだけでなく、強化学習の「環境」を実装する必要があります。今回は、この環境をどのように実装しているのかを説明します。

「環境」という言葉は機械学習の中でも強化学習に特有の用語で、一般的な用語としての「環境」とかなりニュアンスが異なるため、理解しづらい考え方だと思います。強化学習のエージェントが環境に対して行動(action)を入力すると、内部状態(state)が変化し、行動が良かったかどうかを報酬(reward)として提供します。また、強化学習のエージェントは、内部状態の一部の情報を観測(observation)として入手することができます。

強化学習の環境として最もよく使われているものに、OpenAIによるGymと呼ばれる環境が存在します。Gymでは、2次元空間上で棒のバランスを取ったり、3次元空間上でロボットを歩行させるなど、代表的な強化学習の問題に関する環境が提供されています。強化学習に関する新たなアルゴリズムが開発された場合、その性能を計測するためのベンチマークとしても使われています。 (細かい点ですが、強化学習の環境の実装はエージェントの学習方法が深層学習であるかどうかに依存しないため、「深層強化学習環境」ではなく、「強化学習環境」としています。)

OpenAI Gymは基本問題の集まりといえますが、専門化された分野でより現実に近い問題設定で問題を解くため、あるいはそれぞれの分野での標準のベンチマークとなることを目指して、研究機関や企業によって様々な強化学習環境が実装されています。今回の観測ボットの問題が含まれる自動制御に関する強化学習環境としては、DeepMindが提供する連続制御問題に特化したdm_controlと呼ばれるプロジェクト、3次元空間での自動運転のシミュレータを提供するCarlaと呼ばれるプロジェクト、3次元空間での多数のドローンを自律的に制御するgym-pybullet-dronesと呼ばれるプロジェクトなどが挙げられます。

一方で、今回の観測ボットの問題そのものを解くことができる既存の強化学習環境は存在しないため、強化学習の環境を自作する必要があります。今回は、OpenAI Gym準拠のカスタム環境として自作しています。実は、オープンソースのGymのプロジェクトは2022年をもってOpenAIが更新を停止してしまったため、有志によって後継のプロジェクトとして開発されている"Gymnasium"というソフトを使った方が良い気がしますが、設定などの情報があまりなかったため、Gymを使っています。

Gymのカスタム環境の作成は、Pythonのコードとしてはgym.Envクラスを継承し、独自の実装を加えていくことで作成できます。これによる利点としては、第三者から見た場合に実装が分かりやすいという点、そして他の種類の深層強化学習アルゴリズムを使いたいとなった場合に、既存のアルゴリズムのコードがGymの環境を想定して作成されていることが多いため、今後TD3以外のアルゴリズムを導入する際にもやりやすい、といった利点があります。

コメント

タイトルとURLをコピーしました