JavaScriptを有効にしてください

強化学習

 ·  ☕ 2 min read



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

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

    • 状態 sと方策 πで決める→状態価値関数
    • 状態 sと方策 πと行動 aで決める→行動価値関数 (Q関数)
  • 方策 πはグラフ遷移そのものと等しい存在

    • 例えば, π(a|s)は状態 sから行動 aを実行する確率を表す
  • 価値ベース手法

    • 価値関数を経由して適切な方策を探索
    • Q関数NNで近似するのが価値ベースにおける深層強化学習
      • Qは状態集合 Sと行動集合 Aとで, |S|×|A|個存在する
      • なので, NNでコンパクトに近似できたらうれしい
      • ⇒ 深層強化学習
        • Q学習は入力 st,atのときに出力 T:=Rt+γmaxQ(st+1,a)を出力するような関数と捉えることができるので,
        • ただの回帰問題として解くことができる → NN

Q(st,at)=Q(st,at)+α(Rt+γmaxQ(st+1,a)Q(st,at))

  - どうやって解くの?
    - まず, 適当に[サンプリング](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 の順に勉強すると良い)

    • 方策勾配法

      • 方策 πθ(a|s)をNNで近似して, その勾配を求める
      • 軌道 ττ=(s0,a0,r0),(s1,a1,r1),で与えられたとき
      • 目的関数を次のように定義
        J(θ)=Eτθ[G(τ)]
      • SGDと同様に勾配方向 J(θ)にパラメタを更新する
        J(θ)=Eτθ[tG(τ)logπθ(At|St)]
    • REINFORCE

共有

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