問題設定
環境はマルコフ決定過程(MDP)で表されるとします。MDP は
M=(S,A,P,R,γ)
として、時刻 t からの割引報酬を
Gt=k=0∑∞γkRt+k+1
で定義します。ある方策 π(a∣s) のもとでの行動価値関数(state action value)は
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
です。価値観数はベルマン方程式を満たします。行動価値関数は
Qπ(s,a)=s′∑P(s′∣s,a)[R(s,a,s′)+γa′∑π(a′∣s′)Qπ(s′,a′)](★)
として書き表せます。このあたりの計算の詳細については
価値反復に基づくアルゴリズム①
強化学習における基本知識、価値関数について成り立つ再帰的なベルマン方程式についてをまとめています。
で議論していますのでご参考まで。
補足
価値関数のベルマン方程式の右辺は次のように書けます。
RHS of (★)=s′∑P(s′∣s,a)[R(s,a,s′)+γa′∑π(a′∣s′)Qπ(s′,a′)]=s′∑a′∑P(s′∣s,a)π(a′∣s′)[R(s,a,s′)+γQπ(s′,a′)]=s′∑a′∑P(s′∣s,a)π(a′∣s′)f(s′,a′).
ここで、MDP と方策の定義より
Pr(St+1=s′,At+1=a′∣St=s,At=a)=P(s′∣s,a)π(a′∣s′)
が成り立つので、上式は
RHS of (★)=s′∑a′∑Pr(St+1=s′,At+1=a′∣St=s,At=a)f(s′,a′)=E[f(St+1,At+1)St=s,At=a]
となり、
Qπ(St,At)=E[Rt+1+γQπ(St+1,At+1)∣St,At]
という条件付き期待値の形に書き換えられます。この式を眺めるとベルマン方程式では
- 現時点で将来的に得ると思っている報酬(左辺)は、
- 「1 ステップ実際に行動して得られた報酬と、現時点で予測できる将来の報酬」の期待値(右辺)
に等しいということが分かります。かなり噛み砕くと、現在見えている景色と Q(s,a)と、実際に動いて見えた景色 Rt+1+Q(s′,a′)とはだいたい平均的には等しい、という表現です。
行動価値関数の意味
強化学習の大目標は最良な方策 πθ を見つけることですが、その時の基準となり方策の良し悪しを図るのが行動価値関数です。行動価値関数
Qπ(s,a)=E_π[Gt∣St=s,At=a]
は
状態 s で行動 a をとり方策 π に従って行動したときに、将来得られる割引累積報酬の期待値
を表します。ここで、ある 2 つの方策 π1,π2 を比較するときには、
Qπ1(s,a)>Qπ2(s,a)
のように方策における行動価値を比較してその大小で、「より大きな Qπ を与える方策」を、より良い方策とみなします。しかし実際には、
- 環境の遷移確率 P(s′∣s,a) や報酬関数 R(s,a,s′) が未知である
- 状態・行動空間が巨大で、厳密な計算が現実的でない
といった理由から、行動価値関数をそのまま解析的に計算することはほとんどできません。そこで、サンプル(エピソード)からの推定と関数近似(テーブルやニューラルネットなど)を用いて、
Qπ(s,a)≈Qϕ(s,a)
といった形で、行動価値関数を「近似的に学習する」というアプローチを取ります。行動価値関数さえ分かってしまえば
π(s)=aargmaxQϕ(s,a)
のように、行動価値を最大化するように方策を設定することができます。これは 価値ベースの手法(value based method)と呼ばれます。
Sarsa
上記で議論したことを改めてまとめておきます。方策 π のもとでの行動価値関数 Qπ は、ベルマン方程式として
Qπ(St,At)=E[Rt+1+γQπ(St+1,At+1)∣St,At]
という期待値レベルでの自己一致条件を満たします。 ここで等号で結ばれているのは、
- 左辺:現在の行動価値 Qπ(St,At)
- 右辺:1 ステップ先の報酬と、その先の価値の期待値
です。
この式を次のように書き換えます。条件 St,At のもとで Qπ(St,At) は定数であることに注意すると
E[Rt+1+γQπ(St+1,At+1)−Qπ(St,At)St,At]=0
と移項することで =0 の形になります。中カッコの部分
Rt+1+γQπ(St+1,At+1)−Qπ(St,At)
が、ベルマン方程式の「1 ステップあたりのズレ」を表しています。真の Qπ であれば 1 ステップあたりのズレの期待値は 0 になることが分かります。
TD 誤差の定義
「行動価値関数は実際には計算できないので近似する」という話を思い出すと、実際には何らかの形で Qπ を推定している(ニューラールネットワークなど)ことになります。この場合のズレ
δt:=Rt+1+γQ(St+1,At+1)−Q(St,At)
を TD 誤差 (Temporal-Difference error) と呼びます。
- δt>0 なら「右辺の方が大きい → Q(St,At) を引き上げたい」
- δt<0 なら「右辺の方が小さい → Q(St,At) を下げたい」
という指標として解釈できます。ここで重要なのは、δt は ベルマン方程式の右辺と左辺の差の「1 サンプルぶん」 だという点です。
TD(0) 更新則から Sarsa へ
ベルマン方程式を再現するようにこのズレが小さくするよう Q(St,At) を更新する、という最も素直な一歩は
Q(St,At)←Q(St,At)+αδt
です。すなわち
Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)].
ここで α は学習率です。この更新は
- 右辺の Rt+1+γQ(St+1,At+1) を「その時点でのターゲット(目標値)」とみなし、
- 左辺の Q(St,At)(現在の予測)を、ターゲットに近づけるよう一歩動かす
という形になっています。期待値 E[⋅] を直接計算する代わりに、実際に観測された Rt+1,St+1,At+1 から得られる 1 サンプルぶんのターゲットを使って確率的に探索していると解釈できます。
Sarsa アルゴリズムの流れ
上の TD 更新を、on-policyに適用したものが Sarsa です。1 エピソード内の流れは次のようになります。
- すべての Q(s,a) を初期化する。
- 初期状態 S0 を観測し、Q に基づく ε-greedy 方策などで A0 を選ぶ。
- 各時刻 t で以下を繰り返す:
- 行動 At を環境に実行し、Rt+1,St+1 を観測する。
- 終端状態でなければ、同じ方策(ε-greedy など)で At+1 を選ぶ。
- TD 誤差
δt=Rt+1+γQ(St+1,At+1)−Q(St,At)
を計算する。
- TD 更新則
Q(St,At)←Q(St,At)+αδt
で Q を更新する。
- St+1→St, At+1→At として次ステップへ進む。
まとめ
今回は価値ベースの学習手法の一つである Sarsa について導入しました。Sarsa を理解するためには価値関数のベルマン方程式が、
和の形から条件付き期待値の形へと書き換えられ、Qπ(St,At) と Rt+1+γQπ(St+1,At+1) の平均的な一致を要求している
という解釈を抑えておく必要がありました。また、遷移確率 P(s′∣s,a) や報酬関数 R(s,a,s′) は多くの場合未知であり、状態・行動空間も高次元なので Qπ を解析的に計算するのは現実的ではなく、サンプルから推定された Qϕ(s,a) を用いる価値ベースの手法が重要になるということが Sarsa などの入口になっていることも議論できたと思っています。
脚注
- 行動価値関数の近似、にだけ目が行っていて強化学習の大目標が達成できないように感じていました。その後の、行動価値関数をそのまま方策として使用するという考え方までをしっかりと理解しておく必要がありました。
- 定数A は A=E[A] という期待値の性質です。単に定数であればランダム性がない(確率変数ではない)ので期待値計算しても特に意味がないということです。
- 実際に行動を選んでいる方策と、学習している方策とが同じものであること。