本日は、気象観測ボットをどのように技術的に実現するかについて説明したいと思います。
気象観測ボットでは、指定された空間内に数十から数千の観測装置を配置し、これらの動きを制御したり、オン・オフを切り替えたりして、最適な観測地点の配置を目指します。多数のボットの群れが互いに協調しながら運動していくという意味では、例えば東京オリンピックの開会式で会場の上を飛ぶドローンが行なったデモのようなイメージが思い浮かぶと思います。ドローンの群れの制御は積極的に研究されている分野で、多くの場合、強化学習、特に最近では深層強化学習という手法が用いられ、集団のコントロールが実現されています。
(以下、強化学習についてはあまり経験がなく、何か間違っていたらすみません。)
強化学習の問題設定では、エージェントが事前に定義された環境と相互作用しながら学習を進めます。エージェントは、環境に対して行動を行い、その結果を報酬として得て、環境の状態を観測します。一方、環境はエージェントの行動を受けて内部状態を変化させます。ある問題(今回の場合は気象観測ボットの自動制御)を強化学習で解決しようとする場合、これらの要素を実際の問題に合わせて定義する必要があります。定義方法は一様ではなく、どのように定義するかによって性能に影響が出るので、どの定義を用いるべきかは重要な問題です。
今回の場合、それぞれの要素を以下のように定義しました。
- 環境:2次元空間に配置された観測ボットの集団、観測ボットが得た観測データ、観測データに基づいた気象状態の推定
- 行動:観測ボットの移動に用いる推進力(加速度として定義)
- 内部状態:観測ボットの2次元上の位置(実世界では緯度や経度により指定)
- 観測:観測ボットの位置におけるその時点での気象変数の値
- 報酬:観測ボットの観測結果から推定した気象場の分布と、真の気象場との間の二乗誤差の逆数
報酬の設定については、今回の形はドローンなどの制御の文献では一般的ではなく、独自の部分となっています。通常の制御問題では、報酬としてボット間の衝突回避や特定の場所への到達が目標とされますが、今回は予測精度を向上させる配置を学ぶことを報酬として設定しました。一方で、衝突回避などは現実世界での実装においては必要な機能ですが、シミュレータ上の観測実験では必要ないため、現状では実装していません。
環境の設定については、観測ボットの位置と得られる観測データまでを環境と定義し、気象状態の推定を深層学習アルゴリズムの一部とみなすことが自然だと考えています。つまり、観測装置側を環境、推定側をエージェントとみなすことも可能です。
行動の設定については、観測ボットを何によって動かすか、という観点から、ボットの位置を直接移動させるか、ボットの速度を加速・減速させることで制御するかの選択があります。物理的なボットの実現方法ではエンジンやモーターで機体に力を加えて速度を変化させるため、今回は加速度での制御を選択しました。
内部状態の設定については、気象観測ボットの位置を2次元座標として状態としました。位置だけを状態とするか、位置と速度を共に状態とするかの選択がありますが、現状では初期案として位置のみとしています。これを変更することで、ニューラルネットワークでの行動を決定する際の説明変数として、位置のみを参照するか、位置と速度を参照するかを切り替えることができます。
*説明を書いていて気づいたのですが、これは位置・速度両方を状態にしたほうが良いですね。
以上のような考え方で、強化学習の枠組みに気象観測ボットの制御の問題を当てはめて実装していっています。
機械学習と気象学、IT系の話題について興味を持っています。本ブログの記事は考えている途中のアイディアなどを気軽に発信することが目的のため、間違いを含んでいる可能性があります。記事の編集・校正などにChatGPTを使用しています。
博士(理学)、修士(情報学)、気象予報士
コメント