強化学習
強化学習とは, 最適な方策 $ \pi(a|s)を得る手法である
https://gyazo.com/4b97a0089c0831049b6381d99bd4e717
価値を如何に定めるか?
状態 $ sと方策 $ \piで決める→状態価値関数
状態 $ sと方策 $ \piと行動$ aで決める→行動価値関数 (Q関数) 方策 $ \piはグラフ遷移そのものと等しい存在
例えば, $ \pi(a|s)は状態$ sから行動$ aを実行する確率を表す
価値ベース手法
価値関数を経由して適切な方策を探索
Q関数をNNで近似するのが価値ベースにおける深層強化学習 Qは状態集合 $ Sと行動集合 $ Aとで, $ |S|\times|A|個存在する
なので, NNでコンパクトに近似できたらうれしい
⇒ 深層強化学習
Q学習は入力 $ s_t, a_tのときに出力 $ T := R_t + \gamma \max Q(s_{t+1},a)を出力するような関数と捉えることができるので, $ Q'(s_t,a_t) = Q(s_t,a_t) + \alpha(R_t + \gamma \max Q(s_{t+1},a)-Q(s_t,a_t))
どうやって解くの?
まず, 適当にサンプリングしてきた状態 $ sから$ Tが最大となる$ a, Q'を探す 現在の $ Qと$ Q'の差を誤差と捉え, モデルを更新
DQN では, これらに加えて「経験再生」と「ターゲットネットワーク」という概念が導入される 方策ベース手法
Q関数のように価値を近似するのではなく, 方策を直接近似する
方策勾配法
方策 $ \pi_{\theta}(a|s)をNNで近似して, その勾配を求める
軌道 $ \tauが $ \tau = \{(s_0, a_0, r_0), ( s_1,a_1,r_1),...\}で与えられたとき
目的関数を次のように定義
$ J(\theta) = \mathrm{E}_{\tau_\theta}\lbrack G(\tau) \rbrack
SGDと同様に勾配方向$ \nabla J(\theta)にパラメタを更新する $ \nabla J(\theta) = \mathrm{E}_{\tau_\theta} \lbrack \sum_t G(\tau) \nabla log \pi_\theta (A_t|S_t) \rbrack