Q学習【Q-learning】
概要
強化学習とは機械学習の手法の一つで、システムの行動に対して評価(報酬)が与えられ、行動の試行錯誤を繰り返して評価を最大化するような行動パターンを学習させる手法である。機械の制御や競技、ゲームなどを行うAIの訓練に適している。
Q関数
強化学習ではボードゲームでいう盤面に相当する「状態」(state)と、指し手に相当する「行動」(action)の組み合わせで対象をモデル化する。コンピュータが一手ずつ行動するたびに状態が変化していき、目的に対して有利な状況になったり不利な状況になったりする。
ある状態sにおいて、取り得る行動aが「どのくらい価値があるか」を数値として与える関数を「行動価値関数」(state action value function)という。慣習的に「Q」という記号を用いて表すため、「Q関数」(Q function)とも呼ばれる。状態sにおける行動aの価値を Q(s,a) のように書き表す。
Q関数は、その状態におけるその行動によって将来に渡って得られる報酬を積算したものを表している。将来の報酬は一手遡るごとに特定の割引率に従って割り引かれ、遠い将来の報酬は小さく、近い将来の報酬は大きく評価される。
Q学習とは
Q学習は、各状態における各行動のQ関数の値を調べ、最もその値が高くなるように行動を選ぶ手法である。学習時には状態と行動を行と列とする「Qテーブル」という表を用意し、各状態における各行動のQ値を書き入れる。
一度の試行で完全なQ値の表が完成するわけではなく、何度も試行を繰り返して、前回の値を新しい値で更新するという手順を繰り返す。十分な学習が済んだら、各状態の行動の中で最も高いQ値の選択肢を選んでいけば、自然と最も良い結果へ導かれる。
学習の手順
学習時、ある状態である行動を選択すると、あらかじめ決められた特定の報酬が得られる。これを用いて対応するQ値を更新する。その際、新しいQ値は、事前に決めた学習率α、割引率γを用いて (1-α)×現在のQ値 + α×(行動で得た報酬 + γ×次の状態の行動の中で最大のQ値) という式で算出する。
学習率αは現在の値にどの程度今回の学習で得た情報を反映するかを表す係数で、0より大きく1以下の値を事前に決めておく。1ならば完全に新しい情報で値を上書きするように更新し、0.5ならば現在の値が半分、新しい情報の影響が半分だけ反映された値で更新する。
次の状態のQ値は、以前の試行で表に記入されたQ値で、その行動によって先々の状態から得られる報酬を代表している。将来の価値を現在の価値に換算するため、一定の割引率γで割り引いて加算する。何度も試行を繰り返すうち、最終的に最高の報酬(「ゲームの勝利」など)が得られる状態に繋がる行動には、徐々にQ値が伝播していく。
