本文へ移動

G検定(ジェネラリスト検定)

きゅーがくしゅう

Q 学習

Q-learning

Q学習は、Watkins(1989)が提案した強化学習の方策オフ型(off-policy)のTD制御アルゴリズムで、行動価値関数Q(s,a)を1ステップごとに更新し、実際に従っている方策によらず最適な行動価値関数に直接近づけていく手法です。

詳しい説明

Q学習とは

Q学習(Q-learning)は、強化学習における初期の大きな進展の1つとされる手法で、Watkins(1989)によって提案されました。方策オフ型(off-policy)のTD制御アルゴリズムに分類されます。

Q学習が学習する対象は行動価値関数Q(s,a)です。行動価値関数の定義そのものは別の項目で扱います。

Q学習の更新式

Q学習は、次の式で行動価値関数を更新します。

Q(St,At) ← Q(St,At) + alpha[Rt+1 + gamma * max_a Q(St+1,a) - Q(St,At)]

式の中の記号は次のとおりです。

  • St: 時刻tの状態
  • At: 時刻tに選んだ行動
  • Rt+1: その行動のあとに得られた報酬
  • St+1: その行動のあとに移った次の状態
  • alpha: 学習率
  • gamma: 割引率
  • max_a Q(St+1,a): 次の状態St+1でとりうる行動aのうち、Qの値が最も大きいものの値

角括弧の中は、Rt+1 + gamma * max_a Q(St+1,a) と、いまの推定値 Q(St,At) との差です。この差に学習率alphaを掛けた分だけ、Q(St,At)を修正します。

更新式に数値を当てはめた計算例

次の値で、1回分の更新を計算します。

  • 更新前の Q(St,At) = 2.0
  • 学習率 alpha = 0.1
  • 報酬 Rt+1 = 1.0
  • 割引率 gamma = 0.9
  • 次の状態St+1でとりうる行動は2つで、Q(St+1,a1) = 3.0、Q(St+1,a2) = 5.0

1. 次の状態で最大のQの値を選びます。max_a Q(St+1,a) = 5.0 です。
2. 報酬と割引した最大値を足します。1.0 + 0.9 * 5.0 = 1.0 + 4.5 = 5.5 です。

3. いまの推定値との差をとります。5.5 - 2.0 = 3.5 です。

4. 差に学習率を掛けます。0.1 * 3.5 = 0.35 です。

5. いまの推定値に足します。2.0 + 0.35 = 2.35 です。

更新後の Q(St,At) は 2.35 になります。この計算では、次の状態の値として a1 の 3.0 は使わず、最大の 5.0 だけを使っています。

次の状態で最大の値を使う点

更新式の中で次の状態の価値を見積もるとき、Q学習は実際に次に選ぶ行動の値ではなく、次の状態でQの値が最大になる行動の値 max_a Q(St+1,a) を使います。このため、学習されるQは、エージェントが実際に従っている方策によらず、最適な行動価値関数 q* を直接近似していきます。

方策オフ型であることの意味

Q学習が方策オフ型と呼ばれるのは、行動を選ぶために従っている方策と、Qが近似していく対象(最適な行動価値関数 q*)とが切り離されているためです。

それでも方策に役割が無いわけではありません。方策は、どの状態と行動の組が訪問され、更新されるかを決めます。正しく収束するために必要なのは、すべての状態と行動の組が更新され続けることだけです。

試験で問われること

G検定

  • Q学習はWatkins(1989)による、方策オフ型(off-policy)のTD制御アルゴリズムです。
  • 更新式は Q(St,At) ← Q(St,At) + alpha[Rt+1 + gamma * max_a Q(St+1,a) - Q(St,At)] で、alphaは学習率、gammaは割引率です。
  • 次の状態の価値として、実際に次に選ぶ行動の値ではなく、次の状態でQが最大になる行動の値 max_a Q(St+1,a) を使う点が特徴です。
  • 学習されるQは、従っている方策によらず、最適な行動価値関数 q* を直接近似します。
  • 方策の役割は、どの状態と行動の組が訪問され更新されるかを決めることです。正しく収束するために必要なのは、すべての組が更新され続けることだけです。
  • 更新式に数値を当てはめると、Q(St,At) = 2.0、alpha = 0.1、Rt+1 = 1.0、gamma = 0.9、max_a Q(St+1,a) = 5.0 のとき、2.0 + 0.1 * (1.0 + 0.9 * 5.0 - 2.0) = 2.0 + 0.1 * 3.5 = 2.35 と計算できます。

最終更新日: 2026/09/23