いものやま。

雑多な知識の寄せ集め

強化学習について学んでみた。(その29)

昨日は関数近似の説明をするための準備を行った。

今日は関数近似を強化学習とどのように組合せていくのか説明する。

関数近似による価値ベクトルの表現

強化学習に関数近似を組合せる場合、状態価値ベクトル \boldsymbol{V} \in \mathbb{R}^{\mathcal{S}}や行動価値ベクトル \boldsymbol{Q} \in \mathbb{R}^{\mathcal{S} \times \mathcal{A}(s)}を、パラメータ \boldsymbol{\theta}をもった関数で近似的に表現する。

すなわち、状態価値ベクトル \boldsymbol{V}なら、パラメータ \boldsymbol{\theta}をもった関数 v: \mathcal{S} \rightarrow \mathbb{R}を使って、

 {
V_s = v(s; \boldsymbol{\theta})
}

行動価値ベクトル \boldsymbol{Q}なら、パラメータ \boldsymbol{\theta}をもった関数 q: \mathcal{S} \times \mathcal{A}(s) \rightarrow \mathbb{R}を使って、

 {
Q_{s, a} = q(s, a; \boldsymbol{\theta})
}

というふうに表現する。

なお、ここで v qといった関数にはいろんな関数を使うことが考えられて、シンプルな線形関数を使ったり、あるいは非線形関数を使うことも考えられる。
ニューラルネットワークSVR(Support Vector Regression)を使う場合、非線形関数となる)

パラメータの学習

さて、価値ベクトルを関数近似を使って表現した場合、パラメータ \boldsymbol{\theta}の値が更新されることで、価値ベクトルの値も更新されていくことになる。
このとき、パラメータをどのように更新させればいいのかと考えると、観測された価値との誤差が出来るだけ小さくなるように更新するのがいいと考えられる。
そこで、最急降下法を使ってパラメータを更新する。

具体的には、時間ステップ tで状態 s_tが観測されたとして、

 {
\begin{align}
\boldsymbol{\theta}^{(t+1)} &= \boldsymbol{\theta}^{(t)} - \frac12 \alpha \nabla_{\boldsymbol{\theta}} \left(V_{s_t} - v(s_t; \boldsymbol{\theta}^{(t)}) \right)^2 \\
&= \boldsymbol{\theta}^{(t)} + \alpha \left( V_{s_t} - v(s_t; \boldsymbol{\theta}^{(t)}) \right) \nabla_{\boldsymbol{\theta}} v(s_t; \boldsymbol{\theta}^{(t)})
\end{align}
}

というふうに、パラメータを更新する。
なお、 \nabla_{\boldsymbol{\theta}} v(s_t; \boldsymbol{\theta}^{(t)}) = \left( \frac{\partial v}{\partial \theta_1} (s_t; \boldsymbol{\theta}^{(t)}), \cdots, \frac{\partial v}{\partial \theta_n} (s_t; \boldsymbol{\theta}^{(t)}) \right)^{\mathrm{T}}である。

ここで、 V_{s_t}というのは、各強化学習の手法での価値の推定を使うことになり、TD( \lambda)なら \lambda収益を使うことになる。

上記のパラメータを更新する式は、元々のパラメータの値に、価値の推定の差分にステップサイズを掛けたものを、各パラメータの影響度に応じて足し込む、と読むことが出来る。
これは、TD( \lambda)と比較したとき、TD( \lambda)では、価値の推定の差分にステップサイズを掛けたものを、適格度トレースに応じて足し込む、となっていたわけだから、次のように表すことが出来る:

 {
\begin{align}
\delta^{(t)} &= r_{t+1} + \gamma v(s_{t+1}; \boldsymbol{\theta}^{(t)}) - v(s_t; \boldsymbol{\theta}^{(t)}) \\
\boldsymbol{e}^{(t)} &= \left\{ \begin{array}{ll}
\boldsymbol{0} & (t = 0) \\
\gamma \lambda \boldsymbol{e}^{(t-1)} + \nabla_{\boldsymbol{\theta}} v(s_t; \boldsymbol{\theta}^{(t)}) & (t \ge 1)
\end{array} \right.
\end{align}
}

としたとき、

 {
\boldsymbol{\theta}^{(t+1)} = \boldsymbol{\theta}^{(t)} + \alpha \delta^{(t)} \boldsymbol{e}^{(t)}
}

これがTD( \lambda)に関数近似を組合せたときのパラメータの更新式となる。

なお、これはもちろん他の手法(モンテカルロ法やQ学習)にも、同様に適用することが出来る。
(パラメータの更新式の形がちょっと変わる)

今日はここまで!

強化学習

強化学習

  • 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章
  • 出版社/メーカー: 森北出版
  • 発売日: 2000/12/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 76回
  • この商品を含むブログ (29件) を見る