気象観測ボットの技術的な実現方法:深層強化学習のアルゴリズム選択

前回のエントリーでは、気象観測ボットを自動的に制御する仕組みを、強化学習の問題としてどのように定義するかを説明しました。実際に問題を解けるようにするためには問題設定をしただけでは不十分で、深層強化学習の中でもどのようなアルゴリズムを適用するかを決める必要があります。この記事では、現状のアルゴリズムを選択するに至った経緯について説明します。

深層強化学習の手法としては、「離散系」に対する手法と「連続系」に対する手法に分けられ、両者で若干異なるアルゴリズムが用いられています。離散系の代表的な問題としては、囲碁や将棋などのボードゲーム、あるいは2Dのコンピュータゲームが挙げられ、状態や行動がいくつかの有限な選択肢の組合せで表現されます。

連続系で表現される代表的な問題としては、ロボットの制御や、自動車の自動運転などが挙げられ、状態や行動やは現実空間の位置や加える推進力などの形で連続的に表現されます。今回の場合は、気象観測ボットの位置は現実世界の平面上の2次元の座標、あるいは空間上の3次元の座標で表されるため、連続系のアルゴリズムを用いることが適切です。連続系の問題のうち、上記に挙げたように何らかの物体を状況に合わせてうまく制御する問題は、学術的な文献では連続制御(continuous control)と呼ばれています。

連続制御のために用いられる手法としては、私が関係の文献などを見ていたところ、DDPG(Deep Deterministic Policy Gradient)法がよく使われているように思います。この手法の特徴の説明としては、離散系向けの有名な手法である深層Q学習(Deep Q-learning)を連続系向けに応用したと説明されることが多いです。現在の与えられた状況からどの方向に動くべきか、行動を決めるActorモデルと、現在の状況での各行動の価値(Q関数)を評価するCriticモデルの2種類のネットワークを同時に学習する方法です。

今回の実装では、DDPGをベースとして、学習時の数値の発散を防ぐための技術的な工夫が施されたTD3(Twin Delayed DDPG)という手法のPytorchによる実装を使っています。

多数あるアルゴリズムのうち今回の問題でどれが良いのか、というのはまだ経験が浅く正直よくわからないため、今回の手法のほかにいくつかの手法を試してみたいと思います。

各アルゴリズムの説明は、OpenAIによる下記の説明が分かりやすいと思いました。

DDPGの説明(OpenAI)

Deep Deterministic Policy Gradient — Spinning Up documentation

Twin Delayed DDPGの説明(OpenAI)

Twin Delayed DDPG — Spinning Up documentation

コメント

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