📖

関数近似による価値関数学習:強化学習コース(7/N)

に公開

はじめに

前回の記事では、TD(λ)学習とEligibility Traceによって、効率的な時間差分学習を実現する方法を学びました。しかし、これまでの手法には重要な制約がありました。状態空間が離散的で比較的小規模な問題にしか適用できないという制約です。

現実世界の多くの問題では、状態空間が連続的であったり、離散的でも極めて大規模であったりします。例えば、ロボット制御では関節角度や位置座標が連続値を取り、囲碁やチェスでは状態数が天文学的な数になります。

本記事では、このような大規模・連続状態空間に対応するための関数近似(Function Approximation) 手法について解説します。特に、価値関数をパラメトリックな関数で表現し、学習を通じてパラメータを調整する方法を学びます。

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

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

なぜ関数近似が必要なのか

テーブル型学習法の限界

これまで学んできた価値反復法、モンテカルロ法、TD学習などは、すべてテーブル型(Tabular) の手法でした。各状態sに対して価値V(s)や各状態-行動ペア(s,a)に対して価値Q(s,a)を独立に記録・更新していました。

テーブル型手法の利点は明確です。理論的に完全であり、十分な学習時間があれば最適解に収束することが保証されています。また、状態間の相互作用を考える必要がなく、実装も比較的簡単です。

しかし、現実的な問題に適用する際には深刻な制約があります。

メモリ使用量の爆発

状態空間のサイズが|\mathcal{S}|の場合、状態価値関数には|\mathcal{S}|個の値を記録する必要があります。行動価値関数には|\mathcal{S}| \times |\mathcal{A}|個の値が必要です。

連続制御問題を考えてみましょう。ロボットアームが3つの関節を持ち、各関節角度を0.1度の精度で離散化すると、状態数は(360/0.1)^3 = 3600^3 \approx 4.7 \times 10^{10}となります。これだけでも現実的ではありませんが、実際のロボットはより多くの関節を持ち、より高い精度が必要です。

学習効率の問題

テーブル型手法では、各状態の価値を独立に学習します。似た状態間で学習内容を共有できません。

例えば、迷路問題でゴール近くの状態s_1で高い価値を学習したとしても、その隣の状態s_2の価値は別途学習する必要があります。s_1s_2が非常に似ていても、その類似性を活用できません。

汎化能力の不足

テーブル型手法では、学習中に訪問しなかった状態に対して価値を推定できません。これは、現実の問題では致命的な制約です。

自動運転を考えると、すべての可能な道路状況を事前に経験できません。学習中に遭遇しなかった状況に対しても、適切な価値推定を行う汎化能力が必要です。

関数近似による解決策

関数近似は、これらの制約を根本的に解決します。価値関数を直接記録する代わりに、パラメータ\boldsymbol{\theta}を持つ関数\hat{V}(s; \boldsymbol{\theta})で近似します。

数学的定式化

状態価値関数の関数近似は以下のように表現されます。

\hat{V}(s; \boldsymbol{\theta}) \approx V^{\pi}(s)

ここで、\boldsymbol{\theta} \in \mathbb{R}^dは学習対象のパラメータベクトルです。

同様に、行動価値関数は以下のように近似されます。

\hat{Q}(s, a; \boldsymbol{\theta}) \approx Q^{\pi}(s, a)

関数近似の利点

メモリ効率性が大幅に向上します。状態数|\mathcal{S}|に依存せず、パラメータ数dのみでメモリ使用量が決まります。適切に設計すれば、d \ll |\mathcal{S}|とできます。

汎化能力が獲得されます。学習中に訪問しなかった状態に対しても、類似した状態での学習結果を基に価値推定が可能になります。

学習効率が向上します。似た状態間で学習内容を共有できるため、より少ない経験で良好な性能を達成できます。

線形関数近似

特徴ベクトルの導入

線形関数近似では、各状態s特徴ベクトル(Feature Vector)\boldsymbol{\phi}(s) \in \mathbb{R}^dで表現します。価値関数は特徴の線形結合として表現されます。

特徴設計の例

適切な特徴設計は、線形関数近似の成功の鍵となります。

グリッドワールドでの座標特徴

位置座標(x, y)をそのまま特徴として使用します。

\boldsymbol{\phi}(s) = [x, y, 1]^T

最後の1はバイアス項で、定数項を表現するために必要です。

多項式特徴

より複雑な関数を表現するため、座標の高次項を特徴に含めます。

\boldsymbol{\phi}(s) = [1, x, y, x^2, xy, y^2, x^3, x^2y, xy^2, y^3]^T

放射基底関数(RBF)

特定の中心点からの距離に基づく特徴を使用します。

\phi_i(s) = \exp\left(-\frac{\|\boldsymbol{s} - \boldsymbol{c}_i\|^2}{2\sigma^2}\right)

ここで、\boldsymbol{c}_iは第i番目の中心点、\sigmaは幅パラメータです。

勾配ベース学習

線形関数近似の大きな利点は、目的関数が凸関数となり、勾配降下法による安定した学習が可能なことです。

平均二乗誤差の最小化

真の価値関数V^{\pi}(s)と近似価値関数\hat{V}(s; \boldsymbol{\theta})の間の平均二乗誤差を最小化します。

J(\boldsymbol{\theta}) = \mathbb{E}_{s \sim \mu} \left[ \left( V^{\pi}(s) - \hat{V}(s; \boldsymbol{\theta}) \right)^2 \right]

ここで、\muは状態の分布です。

勾配の計算

目的関数J(\boldsymbol{\theta})の勾配は以下のように計算されます。

\nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) = -2 \mathbb{E}_{s \sim \mu} \left[ \left( V^{\pi}(s) - \hat{V}(s; \boldsymbol{\theta}) \right) \nabla_{\boldsymbol{\theta}} \hat{V}(s; \boldsymbol{\theta}) \right]

線形関数近似では、\nabla_{\boldsymbol{\theta}} \hat{V}(s; \boldsymbol{\theta}) = \boldsymbol{\phi}(s)なので、以下が成り立ちます。

\nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) = -2 \mathbb{E}_{s \sim \mu} \left[ \left( V^{\pi}(s) - \hat{V}(s; \boldsymbol{\theta}) \right) \boldsymbol{\phi}(s) \right]

勾配降下法による更新

パラメータ更新は以下のように行われます。

\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} - \alpha \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta})

実際の学習では、真の価値V^{\pi}(s)が未知なので、推定値(ターゲット値)を使用します。

線形TD学習

TD学習を関数近似に拡張すると、以下の更新式が得られます。

基本更新式

Linear TD(0)の更新式

\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha \left[ r + \gamma \hat{V}(s'; \boldsymbol{\theta}) - \hat{V}(s; \boldsymbol{\theta}) \right] \boldsymbol{\phi}(s)

ここで、sは現在状態、s'は次状態、rは報酬です。

TD誤差\delta = r + \gamma \hat{V}(s'; \boldsymbol{\theta}) - \hat{V}(s; \boldsymbol{\theta})に現在状態の特徴ベクトル\boldsymbol{\phi}(s)を重み付けしてパラメータを更新します。

線形TD(λ)の拡張

Eligibility Traceも関数近似に自然に拡張できます。

Eligibility Traceの更新

\boldsymbol{z} \leftarrow \gamma \lambda \boldsymbol{z} + \boldsymbol{\phi}(s)

パラメータ更新

\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \alpha \delta \boldsymbol{z}

ここで、\boldsymbol{z} \in \mathbb{R}^dはパラメータ空間でのEligibility Traceベクトルです。

収束性の保証

線形関数近似を用いたTD学習は、適切な条件下で収束することが理論的に保証されています。

収束定理として、線形TD(0)は以下の条件下で一意の解に収束します。

  1. 特徴ベクトル\boldsymbol{\phi}(s)が線形独立
  2. 学習率\alphaが適切に減衰
  3. すべての状態が十分に訪問される

非線形関数近似

線形近似の限界

線形関数近似は理論的に美しく実装も簡単ですが、表現能力に制約があります。真の価値関数が特徴の線形結合で表現できない場合、近似誤差が大きくなります。

複雑な問題への対応

現実世界の多くの問題では、価値関数が非線形で複雑な形状を持ちます。例えば、ゲームAIでは盤面の複雑な組み合わせパターンが価値に影響し、ロボット制御では関節角度の非線形な相互作用が重要になります。

このような問題に対応するため、より表現力の高い非線形関数近似が必要になります。

ニューラルネットワークによる価値関数近似

最も一般的で効果的な非線形関数近似手法が、ニューラルネットワークです。

基本構造

多層パーセプトロンを用いた価値関数近似は以下のように表現されます。

\hat{V}(s; \boldsymbol{\theta}) = f_{\boldsymbol{\theta}}(\boldsymbol{\phi}(s))

ここで、f_{\boldsymbol{\theta}}はパラメータ\boldsymbol{\theta}を持つニューラルネットワークです。

2層ニューラルネットワークの例

\boldsymbol{h} = \sigma(\boldsymbol{W}^{(1)} \boldsymbol{\phi}(s) + \boldsymbol{b}^{(1)})
\hat{V}(s; \boldsymbol{\theta}) = \boldsymbol{w}^{(2)T} \boldsymbol{h} + b^{(2)}

ここで、\sigmaは活性化関数(ReLUやtanhなど)、\boldsymbol{\theta} = \{\boldsymbol{W}^{(1)}, \boldsymbol{b}^{(1)}, \boldsymbol{w}^{(2)}, b^{(2)}\}はすべてのパラメータです。

誤差逆伝播による学習

ニューラルネットワークの学習には、誤差逆伝播法(Backpropagation) を使用します。

損失関数

L(\boldsymbol{\theta}) = \frac{1}{2} \left( y - \hat{V}(s; \boldsymbol{\theta}) \right)^2

ここで、yはターゲット値(r + \gamma \hat{V}(s'; \boldsymbol{\theta}^-)など)です。

勾配計算

\nabla_{\boldsymbol{\theta}} L(\boldsymbol{\theta}) = -(y - \hat{V}(s; \boldsymbol{\theta})) \nabla_{\boldsymbol{\theta}} \hat{V}(s; \boldsymbol{\theta})

勾配\nabla_{\boldsymbol{\theta}} \hat{V}(s; \boldsymbol{\theta})は連鎖律を用いて計算されます。

Deep Q-Network(DQN)

最も有名な非線形関数近似の応用例がDQNです。DQNは多層ニューラルネットワークを用いて行動価値関数Q(s,a)を近似し、Atariゲームなどで人間レベルの性能を達成しました。

非線形関数近似の課題

不安定性の問題

非線形関数近似、特にニューラルネットワークを用いた価値関数学習には固有の課題があります。

発散の可能性

線形関数近似では収束が保証されていましたが、非線形では同じ保証がありません。学習中にパラメータが発散したり、価値推定が振動したりします。

移動するターゲット問題

TD学習では、ターゲット値r + \gamma \hat{V}(s'; \boldsymbol{\theta})も学習中のパラメータ\boldsymbol{\theta}に依存します。学習目標が学習中に変化し続け、不安定性の原因となります。

経験相関の問題

強化学習では、連続した経験が高い相関を持ちます。この相関がニューラルネットワークの学習に悪影響を与え、局所最適解に陥りやすくなります。

安定化手法

Experience Replay

DQNで導入されたExperience Replayは、過去の経験をバッファに保存し、ランダムサンプリングして学習に使用する手法です。経験の相関を破り、学習の安定性を向上させます。

Target Network

ターゲット値の計算に、別のネットワーク(Target Network)を使用する手法です。メインネットワークとは独立したパラメータを持ち、定期的に更新することで、移動するターゲット問題を軽減します。

まとめ

本記事で学んだ重要な概念

関数近似の必要性について、テーブル型手法の限界、メモリと計算の制約、汎化能力の重要性を学びました。

線形関数近似として、特徴ベクトルの設計、勾配ベース学習、収束性の保証について理解しました。

非線形関数近似では、ニューラルネットワークの応用、不安定性の課題、安定化手法の重要性を学習しました。

関数近似の意義と展望

関数近似は、強化学習を現実世界の複雑な問題に適用するための基盤技術です。

まず実用性の観点から、大規模・連続状態空間への対応、汎化能力による効率的学習、深層学習との自然な融合が可能になります。

次に理論的発展として、収束性理論の拡張、最適化理論との融合、統計学習理論への貢献があります。

さらに応用範囲の拡大として、ロボット制御、ゲームAI、自動運転、金融取引、医療診断など、多岐にわたる分野での活用が進んでいます。

次回予告:方策勾配法と方策勾配定理

これまでの記事では、価値関数を学習してそこから方策を導出する価値ベース手法を中心に学んできました。強化学習にはもう1つの重要なアプローチがあります。

次回の記事では、方策勾配法(Policy Gradient Methods) の基礎理論について詳しく解説します。

  • 方策の直接最適化:価値関数を経由せず、方策パラメータを直接改善
  • 方策勾配定理:方策の勾配を計算するための基本定理
  • REINFORCE法:最も基本的な方策勾配アルゴリズム
  • ベースラインの導入:分散削減のための基本技法

方策勾配定理の数学的導出と、それに基づく基本的なアルゴリズムを通じて、価値ベースとは異なる強化学習のアプローチを理解します。

Discussion