📖

Actor-Critic法:強化学習コース(9/N)

に公開

はじめに

前回の記事では、方策勾配法の基礎理論について学びました。方策勾配定理の証明、REINFORCE法、ベースラインによる分散削減、そしてAdvantage関数の概念を理解しました。しかし、REINFORCE法には重要な制約がありました。高い分散と、エピソード終了まで学習できないという問題です。

本記事では、これらの問題を解決するActor-Critic法について詳しく解説します。Actor-Critic法は方策勾配法と価値関数学習を巧妙に組み合わせた手法で、現代の深層強化学習の基盤となっています。

これまでのシリーズで学んだ内容は以下の通りです。

  • 第1回 - 強化学習の全体像と問題設定
  • 第2回 - 環境側の定式化(マルコフ決定過程)
  • 第3回 - エージェント側の概念とプランニングアルゴリズム(価値反復法)
  • 第4回 - モデルフリー学習とモンテカルロ法
  • 第5回 - 時間差分学習とTD誤差
  • 第6回 - 多段階TD学習とEligibility Trace
  • 第7回 - 関数近似による価値関数学習
  • 第8回 - 方策勾配法の基礎理論
  • 第9回(本記事)- Actor-Critic法

Actor-Critic法の動機

REINFORCE法の制約

前回学んだREINFORCE法を振り返ってみましょう。

REINFORCE法の更新式

\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha G_t \nabla_{\boldsymbol{\theta}} \log \pi(a_t|s_t; \boldsymbol{\theta})

ここで、G_tは実際の累積報酬(エピソード終了時に計算)です。

高い分散の問題

REINFORCE法の最大の問題は分散の高さです。累積報酬G_tは環境のランダム性により大きく変動し、学習の収束を遅くします。

例えば、同じ状態・行動ペアに対して以下のような累積報酬が観測されるとします。

エピソード1: G_t = 100
エピソード2: G_t = 10
エピソード3: G_t = 150
エピソード4: G_t = 5

このような大きな変動により、勾配推定の精度が低下し、学習が不安定になります。

エピソード完了の待機問題

REINFORCE法では、エピソード終了までG_tを計算できないため、学習更新を行えません。これにより以下の問題が生じます。

長いエピソードや無限長タスクでは学習が困難になります。リアルタイム学習ができないため、オンライン環境での適用が制限されます。また、早期に誤った行動を取ってもエピソード終了まで修正できません。

Actor-Critic法による解決

Actor-Critic法は、これらの問題を価値関数による置き換えで解決します。

基本アイディア

REINFORCE法では実際の累積報酬G_tを使用していましたが、Actor-Critic法では価値関数V(s_t)または行動価値関数Q(s_t, a_t)で置き換えます。

Actor-Criticの更新式(基本形)

\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha Q(s_t, a_t) \nabla_{\boldsymbol{\theta}} \log \pi(a_t|s_t; \boldsymbol{\theta})

価値関数は学習により推定されるため、エピソード完了を待つ必要がありません。適切に学習された価値関数は累積報酬の期待値を表すため、分散を大幅に削減できます。

Actor-Critic法の基本構造

ActorとCriticの役割

Actor-Critic法の名前は、2つの異なる役割を持つコンポーネントから来ています。

Actor(行為者)

Actorの役割は行動選択を担当することです。パラメトリック方策\pi(a|s; \boldsymbol{\theta})として表現され、方策勾配法により方策パラメータ\boldsymbol{\theta}を更新します。目標はより良い行動を選択できるよう方策を改善することです。

Actorは環境との相互作用を通じて行動を選択し、その結果得られる経験を学習に活用します。

Critic(批評者)

Criticの役割は行動や状態の評価を担当することです。価値関数V(s; \boldsymbol{w})またはQ(s,a; \boldsymbol{w})として表現され、TD学習により価値関数パラメータ\boldsymbol{w}を更新します。目標は状態や行動の価値を正確に推定することです。

Criticはactorの行動を評価し、その評価情報をactorの学習に提供します。

相互学習のメカニズム

Actor-Critic法の最も重要な特徴は、ActorとCriticが相互に学習し合うことです。

Criticの学習では、Actorが生成する経験(状態遷移、報酬)を使って価値関数を学習します。TD学習により、より正確な価値推定を目指します。

Actorの学習では、Criticが提供する価値推定を使って方策を改善します。価値推定に基づいて勾配を計算し、方策パラメータを更新します。

相互改善のサイクルとして、Criticの価値推定が正確になるほど、Actorの学習も安定します。Actorの方策が改善されるほど、Criticが学習する経験の質も向上します。

学習の安定性

この相互学習により、単独では困難な複雑な問題を解決できます。方策と価値関数が同時に改善されることで、より効率的で安定した学習が実現されます。

基本的なActor-Critic法

State-Value Actor-Critic

最もシンプルなActor-Critic法は、状態価値関数V(s)を使用する形式です。

アルゴリズムの概要

アルゴリズムの手順は以下の通りです。

  1. 方策パラメータ\boldsymbol{\theta}と価値関数パラメータ\boldsymbol{w}を初期化
  2. 各ステップで以下を繰り返す
    • 現在の方策\pi(\cdot|s_t; \boldsymbol{\theta})に従って行動a_tを選択
    • 行動a_tを実行して報酬r_tと次状態s_{t+1}を観測
    • TD誤差を計算: \delta_t = r_t + \gamma V(s_{t+1}; \boldsymbol{w}) - V(s_t; \boldsymbol{w})
    • Criticを更新: \boldsymbol{w} \leftarrow \boldsymbol{w} + \alpha_w \delta_t \nabla_{\boldsymbol{w}} V(s_t; \boldsymbol{w})
    • Actorを更新: \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha_\theta \delta_t \nabla_{\boldsymbol{\theta}} \log \pi(a_t|s_t; \boldsymbol{\theta})

TD誤差の意味

TD誤差\delta_tは、現在の価値推定がどれだけ「間違っていたか」を表します。

正のTD誤差 (\delta_t > 0): 実際の価値が推定より高い。行動a_tは予想より良かった。
負のTD誤差 (\delta_t < 0): 実際の価値が推定より低い。行動a_tは予想より悪かった。

Actor更新では、このTD誤差を重みとして使用することで、良い行動の確率を増加させ、悪い行動の確率を減少させます。

Action-Value Actor-Critic

行動価値関数Q(s,a)を使用する形式も可能です。

Q-Actor-Criticの更新手順は以下の通りです。

  1. TD誤差を計算: \delta_t = r_t + \gamma Q(s_{t+1}, a_{t+1}; \boldsymbol{w}) - Q(s_t, a_t; \boldsymbol{w})
  2. Criticを更新: \boldsymbol{w} \leftarrow \boldsymbol{w} + \alpha_w \delta_t \nabla_{\boldsymbol{w}} Q(s_t, a_t; \boldsymbol{w})
  3. Actorを更新: \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha_\theta \delta_t \nabla_{\boldsymbol{\theta}} \log \pi(a_t|s_t; \boldsymbol{\theta})

State-ValueとAction-Valueの比較

State-Value Actor-Criticでは、1つの価値関数のみ学習すればよいため計算効率が良く、メモリ使用量も少なくなります。

Action-Value Actor-Criticでは、各行動の価値を直接評価できるため、より詳細な評価情報を提供できます。しかし、行動空間が大きい場合は計算コストが増加します。

Advanced Actor-Critic法

Advantage Actor-Critic (A2C)

前回学んだAdvantage関数を明示的に使用する手法です。

Advantage関数の復習

A^{\pi}(s,a) = Q^{\pi}(s,a) - V^{\pi}(s)

Advantage関数は「平均と比べてどれだけ良いか」を表し、分散削減に効果的です。

A2Cのアルゴリズム

A2Cでは、状態価値関数V(s)とAdvantage関数を組み合わせます。

更新手順は以下の通りです。

  1. TD誤差を計算: \delta_t = r_t + \gamma V(s_{t+1}; \boldsymbol{w}) - V(s_t; \boldsymbol{w})
  2. Advantage推定: \hat{A}_t = \delta_t(1-stepの場合)
  3. Criticを更新: \boldsymbol{w} \leftarrow \boldsymbol{w} + \alpha_w \delta_t \nabla_{\boldsymbol{w}} V(s_t; \boldsymbol{w})
  4. Actorを更新: \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha_\theta \hat{A}_t \nabla_{\boldsymbol{\theta}} \log \pi(a_t|s_t; \boldsymbol{\theta})

なぜTD誤差がAdvantageの推定値になるのか

重要な理論的結果として、TD誤差\delta_tはAdvantage関数の不偏推定量になります。

証明の概要として以下の通りです。

\mathbb{E}[\delta_t] = \mathbb{E}[r_t + \gamma V(s_{t+1}) - V(s_t)]

期待値の線形性により、

= \mathbb{E}[r_t + \gamma V(s_{t+1})] - V(s_t)

ベルマン方程式より、\mathbb{E}[r_t + \gamma V(s_{t+1})] = Q(s_t, a_t)なので、

= Q(s_t, a_t) - V(s_t) = A(s_t, a_t)

したがって、TD誤差の期待値はAdvantage関数と一致します。

Asynchronous Advantage Actor-Critic (A3C)

A3Cは複数の並列エージェントを使用して学習を安定化・高速化する手法です。

基本アイディア

複数のワーカーは独立に環境と相互作用し、経験を非同期で共有します。各ワーカーは異なる初期条件や探索パターンを持つため、経験の多様性も増します。

並列学習の利点

経験の相関を減らすことができます。異なるワーカーが生成する経験は独立性が高く、学習の安定性が向上します。また、計算を並列化できるため学習速度が大幅に向上し、Experience Replayが不要になることでメモリ効率も良くなります。

A3Cのアルゴリズム

グローバルネットワークとして、全ワーカーで共有されるパラメータ\boldsymbol{\theta}, \boldsymbol{w}があります。

各ワーカーの処理手順は以下の通りです。

  1. グローバルパラメータをローカルにコピー
  2. t_{max}ステップ分の経験を収集
  3. 収集した経験で勾配を計算
  4. グローバルパラメータを非同期で更新

勾配計算(n-step returns使用) では以下の式を使用します。

\hat{A}_t = \sum_{k=0}^{n-1} \gamma^k r_{t+k} + \gamma^n V(s_{t+n}) - V(s_t)

これにより、1-stepよりも正確なAdvantage推定が可能になります。

実装における考慮点

関数近似の選択

実用的なActor-Critic法では、深層ニューラルネットワークによる関数近似が一般的です。

独立ネットワーク vs 共有ネットワーク

独立ネットワークでは、ActorとCriticが完全に独立したネットワークを持ちます。パラメータ間の干渉がなく、それぞれが最適化されます。しかし、特徴表現が重複し、計算効率が劣る場合があります。

共有ネットワークでは、下位層を共有し、上位層でActorとCriticに分岐します。計算効率が良く、特徴表現を共有できます。ただし、学習目標の競合により不安定になる可能性があります。

損失関数の設計

共有ネットワークの場合、複合損失関数を使用します。

L_{total} = L_{policy} + c_1 L_{value} + c_2 L_{entropy}

ここで、L_{policy}は方策損失、L_{value}は価値関数損失、L_{entropy}はエントロピー正則化項です。

学習の安定化技法

エントロピー正則化

方策のエントロピーを維持することで探索を促進します。

L_{entropy} = -\sum_a \pi(a|s) \log \pi(a|s)

エントロピー項を損失関数に追加することで、方策が早期に収束することを防ぎます。

勾配クリッピング

大きすぎる勾配による学習の不安定化を防ぎます。

\boldsymbol{g} \leftarrow \begin{cases} \boldsymbol{g} & \text{if } \|\boldsymbol{g}\| \leq \text{threshold} \\ \text{threshold} \cdot \frac{\boldsymbol{g}}{\|\boldsymbol{g}\|} & \text{otherwise} \end{cases}

学習率のスケジューリング

学習の進行に応じて学習率を調整することで、収束性を向上させます。

Actor-Critic法の理論的性質

収束性の保証

Actor-Critic法の収束性は、以下の条件下で理論的に保証されています。

Two-Timescale Stochastic Approximation

ActorとCriticが異なる時間スケールで学習することが重要です。

Criticの高速学習: \alpha_w > \alpha_\theta(Criticの学習率がActorより大きい)
理由: Criticが正確な価値推定を提供することで、Actorの学習が安定化されます。

収束定理

適切な条件下(学習率の減衰や探索の保証など)で、Actor-Critic法は局所最適解に収束することが証明されています。

重要な仮定として、方策が微分可能ですべての状態-行動ペアに対して\pi(a|s) > 0であること、価値関数近似が適切な関数クラスから選択されること、学習率が適切に設定される(Robbins-Monro条件を満たす)ことが必要です。

バイアス・分散トレードオフ

Actor-Critic法は、純粋な方策勾配法とは異なるバイアス・分散特性を持ちます。

バイアスの導入

価値関数近似により、推定にバイアスが導入されます。完璧な価値関数が利用できない限り、推定された勾配は真の方策勾配とは異なります。

分散の削減

一方で、価値関数による置き換えにより分散は大幅に削減されます。これにより、実用的には学習効率が向上します。

最適なトレードオフ

適切に学習された価値関数を使用することで、バイアスの増加を最小限に抑えながら分散を大幅に削減できます。

まとめ

Actor-Critic法の重要性

Actor-Critic法は強化学習における最も重要な手法の1つです。方策ベース手法と価値ベース手法の長所を組み合わせることで、実用的で効率的な学習を実現します。

主要な利点

分散削減により安定した学習が可能になります。オンライン学習でエピソード完了を待つ必要がありません。柔軟性があり、連続・離散両方の行動空間に対応できます。拡張性があり、様々な改良手法の基盤となっています。

現代への影響

Actor-Critic法は現代の深層強化学習の基盤となっており、PPO(Proximal Policy Optimization)、SAC(Soft Actor-Critic)、DDPG(Deep Deterministic Policy Gradient)など、多くの先進的手法がActor-Critic法の原理を基にしています。

強化学習の基礎部分の完了

本記事をもって、強化学習の基礎理論部分を完了します。これまでに学んだ内容を振り返ってみましょう。

学習した主要概念

環境のモデル化としてマルコフ決定過程による定式化を学びました。価値ベース手法では動的プログラミング、モンテカルロ法、TD学習、関数近似を理解しました。方策ベース手法として方策勾配法、REINFORCE、ベースラインを学習しました。統合手法であるActor-Critic法により、両アプローチの統合を実現しました。

理論から実践へ

これらの基礎理論は、現実世界の様々な問題に応用されています。ロボット制御、ゲームAI、自動運転、推薦システム、金融取引など、多岐にわたる分野で強化学習が活用されています。

学習の系譜

各手法は独立して存在するのではなく、相互に関連し合いながら発展してきました。価値反復法からTD学習へ、TD学習から関数近似へ、方策勾配法からActor-Criticへという発展の流れを理解することで、強化学習の全体像が見えてきます。

次回予告:LLMと強化学習

次回の記事では、現在最もホットなトピックの1つである大規模言語モデル(LLM)における強化学習について解説します。

Discussion