連続時間のTD誤差(Continuous TD)について理解する

このページではで出てくる連続時間のTD誤差について考えていきます.

連続時間のTD誤差は以下の数式で表されます.このページではこの式の導出までを行います.
\begin{align}
\delta_{TD} = \frac{d}{dt} V^\pi(s(t)) – \frac{1}{\tau_r} V^\pi(s(t)) + r(s(t),a(t))
\end{align}

連続時間のTD誤差について考えることは連続な時間の中で神経細胞のネットワークがどのように学習するのかに関連するのではないかと思います.

離散時間の場合

まず復習から始めます.強化学習の基本のキである離散時間のTD誤差の計算は以下のような式で書かれます.

\begin{align}
\delta_{TD} = r_t + \gamma V(s_{t+1}) -V(s_t)
\end{align}

このとき\(V(s_t)\)は価値関数と呼ばれ,時刻\(t\)において状態\(s_t\)にいたときに将来得られると予想していた報酬の割引累積和の期待値です.このとき,将来どのような報酬が得られるかは将来とる行動に依存するので,行動の決定規則(方策)\(\pi\)を明示して以降は\(V^\pi\)のように書きます.

そのため\(V^\pi(s_t)\)は以下のように定義されています.

\begin{align}
V^\pi(s_t) := E[r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \gamma^3 r_{t+3} + \cdots]_\pi
\end{align}

少し工夫すると一つ後の時刻の価値\(V^\pi(s_{t+1})\)を使って以下のように書けます.

\begin{align}
V^\pi(s_t) &= E[r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \gamma^3 r_{t+3} + \cdots]_\pi \\
&= r_t + \gamma (E[r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots]_\pi )\\
&= r_t + \gamma V^\pi(s_{t+1})
\end{align}

つまり\(V^\pi(s_t)\)が正しい関数の場合,上記の式の\(V^\pi(s_t)\)を右辺に移項すると

\begin{align}
0 = r_t + \gamma V^\pi(s_{t+1}) – V^\pi(s_t)
\end{align}

となり,時刻\(t\)で予想していたその状態\(s_t\)の価値と実際に状態\(s_{t+1}\)に遷移して報酬\(r_t\)を受け取った際にもう一度計算した価値が一致します.

しかし,実際の学習の初期にはある状態がどの程度の価値を持っているのか正しく予測できないので実際遷移した後に計算した価値\(r_t + \gamma V^\pi(s_{t+1})\)と遷移前に予想していた価値\(V^\pi(s_t)\)の間に差\(\delta_{TD}\)が生じます.

この誤差のことをTemporal Difference error (TD誤差)と呼びます.

TD誤差が正であれば遷移の結果が予想よりも良かったことを意味し,負であれば予想よりも悪かったことを意味します.そのため以下のように価値関数\(V\)を更新することで次第に正確な価値関数に近づいていきます.

\begin{align}
V^\pi_{i+1}(s_t) \leftarrow V^\pi_{i}(s_t) + \alpha \delta_{TD}
\end{align}

ここで\(\alpha\)は学習率,添え字の\(i\)は更新回数を表しています.

連続時間の場合

連続時間の場合,方策\(\pi\)に従う価値関数は以下のように定義されます.

\begin{align}
V^\pi(s(t)) := E\left [ \int_t^\infty e^{-\frac{(t’ – t)}{\tau_r} } r(s(t’),a(t’)) dt’ \right ]_\pi
\end{align}

離散の際には和でしたが,連続の場合には積分になっています.そして\(\gamma\)の代わりに指数関数による割引\(e^{-\frac{(t’ – t)}{\tau_r}}\)を報酬\(r(s(t’),a(t’))\)にかけています.時定数\(\tau_r\)が小さいほど報酬は多く割り引かれます.

そして連続時間なのでTD誤差を計算する際に1ステップ後との差を計算するのではなく微分します.

連続時間の価値関数を微分すると

\begin{align}
&\frac{d}{dt} V^\pi(s(t)) \\
&= \frac{d}{dt} E\left [ \int_t^\infty e^{-\frac{(t’ – t)}{\tau_r} }r(s(t’),a(t’)) dt’ \right ]_\pi\\
&= \frac{d}{dt} E\left [ e^{\frac{t}{\tau_r}} \int_t^\infty e^{-\frac{t’}{\tau_r} } r(s(t’),a(t’)) dt’ \right ]_\pi\\
&= E\left [ \left ( \frac{d}{dt}e^{\frac{t}{\tau_r}}\right ) \int_t^\infty e^{-\frac{t’}{\tau_r} } r(s(t’),a(t’)) dt’ + e^{\frac{t}{\tau_r}} \left ( \frac{d}{dt}\int_t^\infty e^{-\frac{t’}{\tau_r} } r(s(t’),a(t’)) dt’\right ) \right ]_\pi\\
&= E\left [ \frac{1}{\tau_r}e^{\frac{t}{\tau_r}} \int_t^\infty e^{-\frac{t’}{\tau_r} } r(s(t’),a(t’)) dt’ + e^{\frac{t}{\tau_r}} \left ( 0 – e^{-\frac{t}{\tau_r} } r(s(t),a(t))\right ) \right ]_\pi\\
&= E\left [ \frac{1}{\tau_r} \int_t^\infty e^{-\frac{t’-t}{\tau_r} } r(s(t’),a(t’)) dt’ – r(s(t),a(t)) \right ]_\pi\\
&= \frac{1}{\tau_r} V^\pi(s(t)) – r(s(t),a(t))
\end{align}

よって\(V^\pi(s_t)\)は以下の等式を満たす必要があります.

\begin{align}
0 = \frac{d}{dt} V^\pi(s(t)) – \frac{1}{\tau_r} V^\pi(s(t)) + r(s(t),a(t))
\end{align}

しかし,学習の際には\(V^\pi(s(t))\)は正確には計算できないので誤差が生じます.その誤差が以下のように連続時間でのTD誤差となります.

\begin{align}
\delta_{TD} = \frac{d}{dt} V^\pi(s(t)) – \frac{1}{\tau_r} V^\pi(s(t)) + r(s(t),a(t))
\end{align}

また,この式のままでは意味が理解しにくいかもしれませんがオイラー後進差分で微分を離散化すると

\begin{align}
\delta_{TD} &= \frac{d}{dt} V^\pi(s(t)) – \frac{1}{\tau_r} V^\pi(s(t)) + r(s(t),a(t)) \\
&\simeq \frac{V^\pi(s(t)) – V^\pi(s(t-\Delta t))}{\Delta t} – \frac{1}{\tau_r} V^\pi(s(t)) + r(s(t),a(t))\\
&= \frac{1}{\Delta t}\left( V^\pi(s(t)) – V^\pi(s(t-\Delta t)) – \frac{\Delta t}{\tau_r} V^\pi(s(t)) +\Delta t \times r(s(t),a(t)) \right)\\
&= \frac{1}{\Delta t}\left( (1-\frac{\Delta t}{\tau_r})V^\pi(s(t)) – V^\pi(s(t-\Delta t)) +\Delta t \times r(s(t),a(t)) \right)\\
&= \frac{1}{\Delta t}\left(\Delta t \times r(s(t),a(t)) + \gamma V^\pi(s(t)) – V^\pi(s(t-\Delta t)) \right)
\end{align}

のように離散時間の場合のTD誤差と同じような意味を持った数式になっていることが分かります.

このとき\(\gamma=1-\frac{\Delta t}{\tau_r}\)と置いています.

参考文献

まとめ

Posted by Nakamura