強化学習:関数近似(パラメータの更新)
はじめに
前回は、近似式と目標値の差を表す誤差関数を最小化するパラメータの探索手法の1つである勾配法について整理しました.
強化学習:関数近似(勾配法とか) - 他力本願で生き抜く(本気)
今回は、強化学習におけるパラメータの更新について詳しく見ていきます.
パラメータの更新
以下では、Sutton本に合わせて状態価値関数を使って説明しています.もちろん、行動価値関数にも関数近似は適用できます.行動価値関数のパラメータ更新については最後に紹介するようにします.
誤差関数(おさらい)
『真の状態価値』と『近似式による推定値』を使った誤差関数をあらためて示します.これは、教師あり学習のやり方に沿って定式化したものになります.
$$E_{SE}(\boldsymbol{w}) = \sum_{s}[v^* (s)- \hat{v}(s,\boldsymbol{w})]^2 \qquad \cdots (1)$$
この誤差関数を最小化するパラメータを勾配法を使って求めたいのですが、式中で示した真の価値(教師あり学習で言う正解データ)は、強化学習では与えられません.
そのため、何か真の価値の代わりになるものをターゲットにする必要があるのですが、とりあえずそのままターゲット()と呼ぶことにします.
ターゲットは自分で行動して決める
具体的なターゲットの中身は後程説明しますが、どのようにターゲットを決めるかと言うと、強化学習ではこれまでと同じように行動しながら決めることになります.
教師あり学習をベースにした(1)式では複数の正解データが与えらることを想定して誤差の2乗和()を取っていましたが、強化学習における誤差関数は、ターゲットと近似値の差の2乗を毎ステップ、誤差関数として計算することになります.
以上のことから、強化学習における誤差関数は以下の(2)式のように表します.ややこしいので添え字のSEは消しました.
$$E(\boldsymbol{w}) = [Target- \hat{v}(s,\boldsymbol{w})]^2 \qquad \cdots (2)$$
図におけるイメージで説明
では、(2)式を最小化するパラメータを求めることになりますが、以下に誤差関数の更新イメージを示します.
式の導出
正直、導出と呼べるほどのことはしていませんが語彙力不足のため、他の言葉が思い浮かびませんでした.
要は、上のイメージを式で表していくだけです.
上に示したイメージ図から、更新されるパラメータは(2)式で表すことができます.(3)式中のは学習率(定数)になります.
$$ \boldsymbol{w}\leftarrow \boldsymbol{w} - \alpha \frac{\partial E(\boldsymbol{w})}{\partial \boldsymbol{w}} \qquad \cdots (3)$$
(3)式中の、の部分は(2)式で示した誤差関数のパラメータによる偏微分を示すので、(2)式を使うと以下のように書くことができ、(4)式が得られます.
$$\begin{eqnarray} \frac{\partial E(\boldsymbol{w})}{\partial \boldsymbol{w}} &=& \frac{\partial}{\partial \boldsymbol{w}} \Bigl[Target - \hat{v}(s; \boldsymbol{w})\Bigr]^2 \\ &=& 2\Bigl[Target - \hat{v}(s; \boldsymbol{w})\Bigr] \Bigl(- \nabla \hat{v}(s; \boldsymbol{w})\Bigr)\\ &=& -2\Bigl[Target - \hat{v}(s; \boldsymbol{w})\Bigr] \nabla \hat{v}(s; \boldsymbol{w}) \qquad \cdots (4)\\ \end{eqnarray}$$
(4)式を(3)式に代入すると、以下のように書けます.
$$ \boldsymbol{w} \leftarrow \boldsymbol{w} + 2 \alpha \Bigl[Target - \hat{v}(s; \boldsymbol{w})\Bigr] \nabla \hat{v}(s; \boldsymbol{w}) $$
これで、大方の形は出来上がりましたが、少しだけSutton本に合わせて化粧をします.
まず、は定数になりますので、まとめてとしてしまいます.また時刻における状態におけるパラメータの更新という意味で添え字を付けます.
$$ \boldsymbol{w_{t+1}} \leftarrow \boldsymbol{w}_{t} + \alpha \Bigl[Target - \hat{v}(s_t; \boldsymbol{w}_{t})\Bigr] \nabla \hat{v}(s_t; \boldsymbol{w}_t) \qquad \cdots (5)$$
これで、パラメータの更新式の基本の形は完成になります.
Targetについて
いよいよ問題のターゲット(Target)について、説明していきます.
基本的には、これまでのテーブル形式でやってきた更新と考え方は同じです. テーブル型における、TD(0)学習の更新式を以下に示します.(sutton本の(6.2)式)
$$ V(s_t) \leftarrow V(s_t) - \alpha [R_{t+1} + \gamma V(s_{t+1}) - V(s_t)]$$
上記の式におけるは、報酬と遷移後の状態価値を使った、『状態における状態価値の推定値』になります.学習率を使っているのでいきなり置換するわけではありませんが、これが目標値になっていました.
関数近似においても、同じくこの推定値を目標値と考えることができます.
テーブル型の場合は、の部分をテーブルを用いて求めていましたが、今回はそこが近似式を使った近似値になるだけです.
つまり、をに置き換えればよく、関数近似における目標値は以下のように表すことができます.
$$R_{t+1} + \gamma \hat{v}_(s_{t+1}:\boldsymbol{w})$$
これを(5)式のに代入すれば以下の(6)式が得られます.
$$ \boldsymbol{w_{t+1}} \leftarrow \boldsymbol{w}_{t} + \alpha \Bigl[R_{t+1} + \gamma \hat{v}_(s_{t+1}:\boldsymbol{w}) - \hat{v}(s_t; \boldsymbol{w}_{t})\Bigr] \nabla \hat{v}(s_t; \boldsymbol{w}_t) \qquad \cdots (6)$$
疑似コード
最後に疑似コードを示します.
行動価値関数への適用(10章、On-Policy Controlの範囲)
ここまで、状態価値関数を中心に説明してきましたが、当然、行動価値関数もをパラメータに持つ関数を用いて近似することができます.
行動価値関数では状態と行動を入力になりますので、(6)式をもとにした行動価値関数のパラメータ更新式は以下のように書くことができます.(Sutton本の10章、(10.2)式に該当します)
$$ \boldsymbol{w_{t+1}} \leftarrow \boldsymbol{w}_{t} + \alpha \Bigl[R_{t+1} + \gamma \hat{q}_(s_{t+1}, a_{t+1}:\boldsymbol{w}) - \hat{q}(s_t, a_t; \boldsymbol{w}_{t})\Bigr] \nabla \hat{q}(s_t, a_t; \boldsymbol{w}_t) \qquad \cdots (7)$$
局所最適解について補足
前回、最適化において局所解に落ち込んでしまうことを問題に挙げました.
しかし、Sutton本の9.2章をよく読んでみると
『理想としては、すべてのパラメータに対して誤差関数が最小となる となる * を求めることである.しかし、(中略)それが求まる可能性はほとんどない.』
というようなことが書かれています.これは、あまりGlobal minimumにこだわる必要はなくて、実務的には局所最適解が求まればまずまず.といったことなのかもしれません.
まとめ
今回は、強化学習における関数近似のパラメータ更新について整理しました.
もう少し関数について勉強するか、あるいは何かしら関数近似を使って問題を解くなどもしてみたいですが未定です.