JavaScriptを有効にしてください

強化学習

 ·  ☕ 2 min read



引用: ゼロから作るDeep Learning ❹ ―強化学習編

  • 価値を如何に定めるか?

    • 状態 $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)$を出力するような関数と捉えることができるので,
        • ただの回帰問題として解くことができる → NN

$$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))$$

  - どうやって解くの?
    - まず, 適当に[サンプリング](https://scrapbox.io/yuwd/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0)してきた状態  $s$から $T$が最大となる $a, Q'$を探す
    - 現在の  $Q$と $Q'$の差を誤差と捉え, モデルを更新


- [DQN](https://yuiga.dev/blog/ja/posts/dqn//) では, これらに加えて「経験再生」と「ターゲットネットワーク」という概念が導入される
  • 方策ベース手法
    • Q関数のように価値を近似するのではなく, 方策を直接近似する

    • REINFORCE / Actor-Critic (方策勾配法 → REINFORCEActor-Critic の順に勉強すると良い)

    • 方策勾配法

      • 方策 $\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$$
    • REINFORCE

共有

YuWd (Yuiga Wada)
著者
YuWd (Yuiga Wada)
機械学習・競プロ・iOS・Web