Skip to main content

Value-Based Methods

Value-Based Methods は、Q-value (または V-value) を学習し、greedy にそれを最大化する action を選ぶ ことで policy を導出する RL の流派です。Q-learning、DQN がその代表です。

Tabular Q-Learning

Q-table を持ち、観測した遷移ごとに次の update を行います。

Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha\bigl[r + \gamma \max_{a'} Q(s', a') - Q(s, a)\bigr]
  • r+γmaxaQ(s,a)r + \gamma \max_{a'} Q(s', a')TD target
  • 括弧内は TD error

Off-policy: behavior policy (例: ε-greedy) と target policy (greedy) が異なってよい点が特徴です。

SARSA との違い

MethodTarget
Q-learningr+γmaxaQ(s,a)r + \gamma \max_{a'} Q(s', a') (off-policy)
SARSAr+γQ(s,a)r + \gamma Q(s', a') (on-policy)

SARSA は実際に取った action aa' を使う on-policy update です。

Deep Q-Network (DQN)

State / action 空間が大きい (例: Atari) と Q-table が持てません。DQN は Q を NN Qθ(s,a)Q_\theta(s, a) で近似します。重要な工夫:

  • Replay buffer: 過去の (s, a, r, s') を保存し sample
  • Target network: 学習を安定化するため slow copy を使う
  • 損失:
L(θ)=E[(r+γmaxaQθ(s,a)Qθ(s,a))2]\mathcal{L}(\theta) = \mathbb{E}\bigl[(r + \gamma \max_{a'} Q_{\theta^{-}}(s', a') - Q_\theta(s, a))^2\bigr]

DQN の改良

改良内容
Double DQNmax 操作の overestimation を緩和
Dueling DQNV(s) と advantage A(s, a) に分解
Prioritized ReplayTD error 大きい遷移を優先 sample
Distributional RL (C51)Return の分布を学習
Noisy Net探索のための parameter noise
Rainbow上記を統合

弱点

  • 連続 action 空間に直接適用できない (DDPG / SAC など別系統が必要)
  • Reward が sparse な task で学習が難しい
  • Exploration が ε-greedy に依存

数式で見る Q-learning update

Q-learning は、Bellman optimality equation に基づいて action-value function を更新します。

Q(st,at)Q(st,at)+α(rt+γmaxaQ(st+1,a)Q(st,at))Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\left(r_t+\gamma\max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\right)

括弧内は TD error です。

δt=rt+γmaxaQ(st+1,a)Q(st,at)\delta_t=r_t+\gamma\max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)

この式の気持ちは、「今の Q 値を、実際の reward と次状態で最善 action を取った場合の価値に近づける」というものです。

DQN では、neural network QθQ_\theta を使い、target network QθˉQ_{\bar{\theta}} による target を固定して学習を安定化します。

L(θ)=(rt+γmaxaQθˉ(st+1,a)Qθ(st,at))2\mathcal{L}(\theta)=\left(r_t+\gamma\max_{a'}Q_{\bar{\theta}}(s_{t+1},a')-Q_\theta(s_t,a_t)\right)^2

Target network は、bootstrap target が毎 step 大きく動きすぎることを防ぎます。

関連ページ

主なソース