目次 — 知りたいところから読む
前提と読み方

前提知識 確率と機械学習の基礎。

入門 · 原理・構成・判断のための解説です。

Q学習やDQNは、有限個の行動から最大Q値を選ぶ。では、車輪の速度、ドローンの推力、マニピュレータのトルクのように行動が連続していたらどうするか。方策勾配法は、状態を入力すると行動の確率分布(または連続分布のパラメータ)を出す方策\pi_\thetaを直接更新する。Actorが行動を提案し、Criticがその良し悪しを評価するActor-Criticへ発展し、PPOとSACが現在のロボット研究で扱いやすい安定化を加えた。

30秒で分かる結論

  • 方策勾配は、期待リターンJ(\theta)を増やす方向へ方策パラメータを更新する。連続行動を自然に出せるが、サンプルの分散が大きい。
  • Actor-Criticは、Criticの価値推定をベースラインにして勾配の分散を減らす。Advantage(その行動が平均よりどれだけ良いか)が中心量になる。
  • PPOは、更新前の方策から離れ過ぎないよう確率比をクリップする。実装は比較的簡単だが、オンポリシーなのでデータを再利用しにくい。
  • SACは、報酬だけでなく方策エントロピーも最大化するオフポリシー手法。経験再生を使い、連続制御で探索と安定性を両立しやすい。
  • どちらも安全制約を自動で保証しない。行動範囲、レート制限、低位PID/MPC、非常停止を学習器の外側へ置く。

1. 方策を直接最適化する

図1 · ボタンで表示を切り替え
Actor–Critic:経験から方策を更新

図1 — Actorは連続行動の分布を出し、Criticは得られた報酬列から更新方向を評価する。実機ではActorの出力をそのままトルクにせず、安全な下位制御器へ渡す。

確率的な方策\pi_\theta(a\mid s)を使うと、期待リターンJ(\theta)=\mathbb{E}_{\pi_\theta}[G_t]の勾配は、ログ確率の勾配で表せる。

\nabla_\theta J(\theta)=\mathbb{E}_{\pi_\theta}\left[\nabla_\theta\log\pi_\theta(a_t\mid s_t)\,G_t\right]

良いリターンの行動が出た確率を上げ、悪いリターンの行動が出た確率を下げる式である。しかしG_tは乱数と長期遅延を含むため、同じ方策でも勾配の分散が大きい。平均報酬を引くベースラインb(s_t)を使っても期待値は変わらない。

\nabla_\theta J(\theta)=\mathbb{E}\left[\nabla_\theta\log\pi_\theta(a_t\mid s_t)\,(G_t-b(s_t))\right]

2. AdvantageとActor-Critic

Criticが状態価値V_\phi(s)を学び、A_t=Q(s_t,a_t)-V(s_t)をAdvantageとして使うと、「その状態の平均的な行動より良かったか」を直接学べる。TD誤差による近似なら

\hat A_t=r_{t+1}+\gamma V_\phi(s_{t+1})-V_\phi(s_t)

となる。複数ステップの推定やGAE(Generalized Advantage Estimation)は、バイアスと分散を調整するハイパーパラメータ\lambdaを持つ。\lambdaを1へ近づけると長期の正確さが増える一方、分散が増える。短い制御周期で姿勢を直すなら短い推定、疎な把持報酬なら長い推定というように、遅延と課題の時間スケールで決める。

Actorの損失を

L_\pi=-\mathbb{E}[\log\pi_\theta(a_t\mid s_t)\hat A_t]

とし、Criticは価値の二乗誤差

L_V=\mathbb{E}[(V_\phi(s_t)-\hat V_t)^2]

を最小化する。共有エンコーダを使う場合は、画像特徴の更新がActorとCriticの双方へ影響するため、学習率や勾配クリップを分けて監視する。

3. PPO:方策を一度に変え過ぎない

オンポリシーの方策勾配は、データを集めた直後の方策を更新する。更新回数を増やすと同じデータを過信し、現在の方策がデータ分布から離れる。PPOは旧方策\pi_{\theta_{old}}と新方策の確率比

r_t(\theta)=\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\theta_{old}}(a_t\mid s_t)}

を計算し、次のクリップ目的関数を最大化する。

L^{CLIP}=\mathbb{E}\left[\min\left(r_t\hat A_t,\operatorname{clip}(r_t,1-\epsilon,1+\epsilon)\hat A_t\right)\right]

Advantageが正のとき確率を増やし過ぎず、負のときも減らし過ぎない。\epsilonを小さくすれば保守的、大きくすれば一回の更新が大胆になる。クリップは安全制約ではないため、関節角や速度の物理上限は別途設ける。

PPOの実装では、一定長のロールアウトを集め、Advantageを平均0・分散1へ正規化し、複数エポックのミニバッチでActor/Criticを更新する。データ収集中に方策を変えないこと、タイムアウトと真の終端を区別すること、行動のlog-probabilityを保存することが重要である。観測の正規化統計を評価時に固定しないと、学習が再現できない。

4. SAC:報酬とエントロピーを同時に最大化

SAC(Soft Actor-Critic)は、将来報酬だけでなく方策のエントロピー\mathcal{H}(\pi)も目的へ加える。

J(\pi)=\mathbb{E}\left[\sum_t\gamma^t\left(r_t+\alpha\mathcal{H}(\pi(\cdot\mid s_t))\right)\right]

エントロピー項は、同程度に良い行動を一つへ早く固定せず、探索を保つ温度\alphaとして働く。SACはリプレイバッファを使うオフポリシーなので、実機データを繰り返し利用しやすい。一方、古いデータと現在方策の分布差、報酬スケール、温度調整が性能を左右する。

連続行動では、Actorがガウス分布の平均\mu_\theta(s)と標準偏差\sigma_\theta(s)を出し、tanhなどで範囲へ写像する。tanh後のlog-probabilityにはヤコビアン補正が必要で、ここを省くとエントロピーとQ値のバランスが崩れる。Twin Qネットワークの小さい方を使う設計は、Q値の過大評価を抑える。学習後に決定論的な平均行動だけを使うか、探索ノイズを残すかも運用仕様にする。

5. PPOとSACの使い分け

観点 PPO SAC
データ オンポリシー、ロールアウト中心 オフポリシー、経験再生
探索 方策分布とエントロピー係数 エントロピーを目的へ明示
データ効率 低〜中、同じデータの再利用に限界 高め、古いデータも利用
実装の落とし穴 log-prob、終端、クリップ Q過大評価、報酬スケール、tanh補正
向く例 シミュレータで大量並列、離散/連続混在 連続トルク、実機データを節約

これは優劣表ではない。PPOは並列シミュレータを大量に動かせると安定しやすく、SACは経験再生でサンプルを節約しやすい。どちらも、観測遅延やアクチュエータ飽和を学習環境に入れなければ、実機へ移した瞬間に分布が変わる。

6. Sim-to-Real:方策を現実へ移す境界

シミュレーションと実機の差(sim-to-real gap)は、質量・摩擦・バックラッシュ、センサの露光とノイズ、通信遅延、バッテリー電圧、床面・照明で生じる。Domain Randomizationでこれらを分布として揺らし、方策が一つの理想値へ過適合しないようにする。逆に、実機で測ったパラメータの範囲を無視してランダム化すると、学習が難しくなるだけでなく、現実にない挙動を覚える。

段階的な移行では、(1) 完全シミュレーション、(2) 実機センサを記録する受動再生、(3) 車輪を浮かせた低出力、(4) 速度・力を制限した平坦な環境、(5) 目的タスク、の順にする。各段階で、方策が出した指令と安全制限器が実際に通した指令を分けてログする。Sim-to-Realは「一度の転移」ではなく、モデル同定と評価を繰り返す工程である。

7. 安全監視と評価

PPO/SACのクリップやエントロピーは、衝突を防ぐ機能ではない。速度、加速度、関節角、接触力、油圧圧力、電流、温度を独立監視し、範囲外なら低位制御器が減速・停止する。監視器は学習ネットワークと別プロセス/別マイコンに置き、通信断・NaN・期限切れの観測を安全側へ処理する。

報酬曲線以外に、成功率、衝突率、最大偏差、停止距離、エネルギー、行動の滑らかさ、推論遅延、制限器介入率を測る。介入率が高い方策は、見かけの成功率が高くても、実際には安全制限器へ依存している。評価では乱数seedを複数使い、平均だけでなく分散と最悪値を残す。

実装チェックリスト

  1. 行動分布の単位、範囲、tanh/クリップの順序、log-prob補正をテストしたか。
  2. PPOなら旧方策のlog-prob、Advantage、終端/タイムアウトを保存したか。
  3. SACならリプレイの分布、Twin Q、温度\alpha、報酬スケールを監視したか。
  4. 観測の正規化、画像前処理、乱数seed、モデル重み、環境パラメータを実験IDへ固定したか。
  5. 低位PID/MPC、レート制限、watchdog、非常停止が学習器から独立しているか。
  6. 受動ログ→低出力→通常運転の移行段階ごとに停止条件を決めたか。
  7. 成功率と同じ試験で、衝突、制限器介入、遅延、電力、最大偏差を記録したか。

まとめ

方策勾配は、連続行動を確率分布として直接最適化する。Actor-CriticでAdvantageを使うと勾配の分散を抑えられ、PPOは更新幅をクリップし、SACはエントロピーと経験再生で探索とデータ効率を高める。いずれも安全制約や実機の不確かさを自動で解決しない。シミュレーションの方策を現実へ移すときは、低位の検証済み制御器、独立監視、段階的な試験、最悪値を含む評価を一つの設計として扱う。

理解を確かめる
PPOのクリップは更新の安全性を完全に保証する?

目的関数で更新を抑える仕組みであり、実環境の安全制約とは別である。学習の安定性と行動の安全性を分けて評価する。

参考資料

現在の項目 · 3 / 8 · 強化学習入門

次に読む

前提を確認するQ学習とDQN入門 — 表のQ値から深層強化学習へシリーズの次の内容へ進む報酬設計入門 — 「何を最大化させるか」がRLで一番難しい理由同じ分野を別の観点から読むマルチエージェント強化学習入門 — 相手も学習する世界でどう最適化するか