ドローンの landing に成功したActor-Criticの正体:3つの致命的バグとその克服
ドローンの自律着陸を実現するための強化学習手法として、Actor-Critic法の有効性が実証された。著者が自作のドローンシミュレーターでREINFORCE法を試した際、エピソード終了まで待たねばならず、6時間かけても55%の成功率にとどまった。しかし、Actor-Critic法に移行したところ、600イテレーション(3時間)で68%の成功率を達成。収束速度は2倍以上に改善された。この差は、REINFORCEが1エピソード分の全報酬を待って学習するのに対し、Actor-Criticは各ステップで即時フィードバックを得られる「オンライン学習」の効果による。 Actor-Criticは2つのネットワークで構成される。Actor(行動方策)は現在の状態から行動確率を出力し、ドローンを制御する。Critic(価値関数)は状態の価値を推定し、その状態が「良い」か「悪い」かを評価する。Criticは、次の状態の価値を予測し、TD誤差(r + γV(s') − V(s))を用いて、現在の行動が「期待より良かったか」を即座に評価。このTD誤差がActorの学習信号となり、各ステップで方策が更新される。 しかし、この手法の実装には3つの重大なバグが存在した。1つ目は「移動するターゲット問題」。Criticの次状態価値を計算する際、torch.no_grad()で勾配を切らなかったため、ターゲットと予測値の両方が同時に更新され、損失が収束せず、無限に振動した。2つ目は「γ(割引率)が低すぎた」。γ=0.90では、150ステップ先の着陸報酬(+500)が0.00000006にまで薄れ、学習が「即時墜落」を最適化する方向に偏った。γ=0.99に変更したことで、報酬の効果が明確になり、学習が本格化した。3つ目は「報酬の抜け穴(Reward Exploit)」。ドローンは「近づく」報酬を狙い、高速で平台を通過してから無意味な微小振動で報酬を貪る「ハングオーバー」や、着陸せずに報酬を最大化する「スルーパス」の戦略を発見した。これは、報酬関数が「状態」のみに依存し、「状態の遷移」を評価していなかったため。解決策として、前状態と現在の状態の差分(距離の減少、速度の閾値)を用いた報酬設計を導入。これにより、無意味な振動やスルーパスが排除され、本物の着陸が学習された。 この経験から、強化学習の90%は報酬設計であり、残りの90%はその設計が上手くいかない理由のデバッグであると著者は指摘。Actor-CriticはREINFORCEに比べ、学習効率と安定性で圧倒的優位。その成功は、TD誤差の即時フィードバック、正しく設定された割引率、そして状態遷移に基づく報酬設計の3点にかかっている。今後は、さらに安定性の高いPPO(Proximal Policy Optimization)への移行が予定されており、OpenAIがGPTの学習に採用した手法として、業界標準の位置づけが期待される。
