今回はTD学習(Temporal Difference Learning)についてお話します。 TD学習は、現在の状態の状態価値関数を更新する時に、
現在より先の状態価値関数を用いる手法の総称になります。
これから詳しく説明していきます。
最もシンプルな強化学習
最もシンプルな強化学習での状態価値関数\(V(s)\)の更新式を見てみます。
$$
\begin{eqnarray}
V(s) \leftarrow \underbrace{V(s)}_{元のV値} + \alpha \underbrace{(r_t – V(s))}_{更新量}
\end{eqnarray}
$$
\begin{eqnarray}
V(s) \leftarrow \underbrace{V(s)}_{元のV値} + \alpha \underbrace{(r_t – V(s))}_{更新量}
\end{eqnarray}
$$
状態価値\(V(s)\)を実際に得られた報酬\(r_t\)と現在の状態価値\(V(s)\)、すなわち、期待報酬値との誤差分だけ更新するになっています。
強化学習において最大化したい値
しかし、強化学習において最大化したい値は
現在の状態から得られる報酬\(r_t\)の最大化ではなく、
現在から将来に渡って得られる報酬、つまり、割引累積報酬\(R_t\)となります。
$$
\begin{eqnarray}
R^{T}_t = r_{t} + \gamma r_{t+1} \cdots + \gamma ^{T} r_{t+T}
\end{eqnarray}
$$
\begin{eqnarray}
R^{T}_t = r_{t} + \gamma r_{t+1} \cdots + \gamma ^{T} r_{t+T}
\end{eqnarray}
$$
なので、理想としては以下のような更新式になるのですが、
$$
\begin{eqnarray}
V(s) \leftarrow V(s) + \alpha (R^{T}_t – V(s))
\end{eqnarray}
$$
\begin{eqnarray}
V(s) \leftarrow V(s) + \alpha (R^{T}_t – V(s))
\end{eqnarray}
$$
\(R^{T}_t\)は時刻\(T\)まで待たなくては計算できない報酬です。
これではなかなか学習ができません。
TD学習
そこで、TD学習の出番です。
今回は最もシンプルなTD(0)について説明します。
TD(0)では割引累積報酬\(R^{T}_t\)を次の状態の状態価値を用いた値\(R^{1}_t\)を代用します。
$$
\begin{eqnarray}
R^{1}_t = r_{t} + \gamma V(s_{t+1})
\end{eqnarray}
$$
\begin{eqnarray}
R^{1}_t = r_{t} + \gamma V(s_{t+1})
\end{eqnarray}
$$
なので、TD(0)においての現在の状態価値\(V(s_{t})\)の更新式は
$$
\begin{eqnarray}
V(s) &\leftarrow& V(s) + \alpha (\color{red}{R^{1}_t} – V(s)) \\
&=& V(s) + \alpha (\color{red}{r_{t} + \gamma V(s_{t+1})} – V(s))
\end{eqnarray}
$$
\begin{eqnarray}
V(s) &\leftarrow& V(s) + \alpha (\color{red}{R^{1}_t} – V(s)) \\
&=& V(s) + \alpha (\color{red}{r_{t} + \gamma V(s_{t+1})} – V(s))
\end{eqnarray}
$$
となります。
各状態価値\(V(s_{t})\)が次の状態価値を元に更新しているので、
徐々に将来の報酬が伝搬してくるようになってくるという仕組みです。
アルゴリズムなど
以前紹介した
Q学習や SARSAなどもすべてTD学習を応用したものとなります。
コメント