Q学習とは強化学習のTD学習のひとつである。
Q値
Q値という名前の由来は、「統計学でのP値の次の文字ということでQ値」という説が有力。
Q(s,a) = E [ \sum ^{\infty }_{t=0} \gamma ^{t} r_{t}|s_{0}=s,a_{0}= a ]
- $Q(s,a)$は状態$s$で行動$a$をとった場合の$Q$値。
- $\gamma$は割引率で、将来の報酬の価値を現在の報酬よりも低く評価するための係数。(通常は$0$以上$1$以下の値で、$0.9$程度に設定されることが一般的。)
- $r_t$は時刻$t$における報酬を表す。
Q学習手続き
(1) 全ての$Q$値を乱数により初期化する。
(2) 学習が十分進むまで以下を繰り返す。
(2-1) 動作の初期状態に戻る。
(2-2) 選択可能な行動からQ値に基づいて次の行動を決定する。
(2-3) 行動後、Q値を更新する。
(2-4) ある条件(目標状態、あるいは一定の時間経過)に至ったら、(2-1)に戻る。
(2-5) (2-2)に戻る。
Deep Q-Network(DQN)
Q学習と深層学習を組み合わせたもの
ε-greedy法
単にQ値が一番大きいものを選択するだけではQ学習はうまくいかない。もしそうすると、初期値の乱数でたまたま大きな値となった行動だけが常に選択されてしまい、いくら動作を繰り返してもそれ以外の行動が選択されることはない。
その対策として、ε-greedy法と呼ばれる方法がある。まずあらかじめεを$0$から$1$の間の適当な定数として決めておく。行動選択に際しては、$0$から$1$の間の乱数を生成し、この値がε以下であればランダムに行動を選択する。またεを超えていれば、Q値の大きいものに対応する行動を選択する。