Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

強化学習第2回講義

前回はこれ。

📄Arrow icon of a page link強化学習第1回講義

強化学習の各種

Bellman Equation

参考資料: https://qiita.com/triwave33/items/5e13e03d4d76b71bc802

Value Function

状態ssからポリシーπ\piに沿って得られる利得の条件付期待値を以下のように定義する。これはState-Value Function。これで、状態ssにいるときの価値というのを定義できる。価値は未来永劫にわたって得られる利益の和(さすがに発散するのでγ<1\gamma < 1の係数を毎回かける)

Vπ(s)=E[RtSt=s]V^{\pi}(s) = \mathbb{E}[R_t | S_t = s]

似たように、状態のみならず、行動までわかっているときの期待値はAction-Value Functionという。

Qπ(s,a)=E[RtSt=s,At=a]Q^\pi (s,a) = \mathbb{E}[R_t | S_t = s, A_t = a]

もし、Qπ(s,a)Q^\pi (s,a)がわかっているなら、最適なポリシーは毎回a=arg maxaQπ(s,a)a = \argmax _a Q^{\pi^*} (s,a)を選ぶこと。これは常に決定的である。

そして、2つの式の間では以下の関係が成り立つ。すべて合算する感じなのでそれはそう。

Vπ(s)=aAπ(as)Qπ(s,a)V^\pi(s) = \sum _{a \in A} \pi(a | s) Q^{\pi}(s, a)

Bellman Equationを導入する

以下のような式変形で、

  1. 状態ssからのポリシーに従って得られるActionのaaの期待値 aπa \sim \pi
  2. 今の状態ssと取るActionからの次の状態の期待値ss^\primesp(ss,a)s^\prime \sim p(s ^ \prime | s, a)

についての期待値として、記述することができる。

Image in a image block
  • 真ん中の説明sss \to s^\primeへ遷移したときの得られる利得。
  • 右はγVπ(s)\gamma V^{\pi}(s^\prime)であり、次のState Valueである。

毎回の利得はRt=rt+γRt+1R_t = r_t + \gamma R_{t+1}が条件付きで成り立つ。これをもとに、ポリシーπ\piを期待値に分解すると、上に述べた2つの総和となり、加算される。そして期待値の中は漸化式で再帰的に同じものが現れる。

Image in a image block

上があるポリシーに従った各状態=地点における価値Vπ(s)V^\pi(s)である。

SARSA

Bellman Equationを利用したOn-policy(=今集めているデータからわかる状況で、次のアクションを決定する。→決めたアクションをもとに、データを収集する)推測である。

次の目的関数を最小化したい。

L(w)=Esdπ,aπ[(r+γQ(st+1,at+1)Q(st,at))2]L(w) = \mathbb{E} _{s \sim d^\pi, a \sim \pi} [(r + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t)) ^ 2]

つまり、今いる時点での価値Q(st,at)Q(s_t, a_t)と、動いた後に得られる価値と将来の価値に減衰率を乗じたものと一致させたいように学習する

なお、Gradientは以下のようになる。

Image in a image block

Bellman Operator

Bellman Operatorとは、Action Value Functionについての将来を漸化式のように予測したものである。

Image in a image block

Bellman Operatorによって最適なポリシーに収束するらしい。

Optimal Value Function

さっきのValue Functionに対して、最適なポリシーπ\pi^*を与えたときの関数。V(s),Q(s,a)V^*(s), Q^*(s,a)である。

そしてそれは1つだけActionを選ぶので、通常のQπ(s,a)Q^{\pi^*}(s,a)を代入して展開するのと同じように、Vπ(s)V^{\pi^*}(s)による漸化式になる。

Qπ(s,a)=sp(ss,a)[r+γVπ(s)]Vπ(s)=maxaAQπ(s,a)=maxaE[r+γVπ(s)St=s,At=a]Q ^{\pi^*} (s,a) = \sum_{s ^ \prime} p(s ^ \prime | s, a) [r + \gamma V ^ {\pi ^ *} (s ^ \prime)]\\ V^{\pi^*}(s) = \max _{a \in A} Q ^ {\pi ^ *}(s, a) = \max _a \mathbb{E}[r + \gamma V^{\pi^*}(s ^ \prime) | S_t = s, A_t = a]

Q-learning

最適なaction-value functionのQπ(s,a)Q^{\pi^*}(s, a)を見つけたい。そのために、以下の式で学習をする。

Q(s,a)Q(s,a)+α[r+γmaxaQ(s.a)Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha[r + \gamma \max _a Q(s ^ \prime. a) - Q(s, a)]

Bellman Equationで得られた今後のOptimalなPolicyをとった時の予測と、実際にActionのaaで得られた報酬の差を、一定の学習率で更新させていく。

Replay Buffer

強化学習で遷移情報を集めるときに、そのまま使うと自己相関があまりにも強すぎるので(前後するフレームなので)、それを使わずにまずはReplay Bufferにためておく。そして、学習時はReplay Bufferから溜まっているサンプルをランダムに選択して、ミニバッチを作成する。これは以下のDQNの性能に大きく貢献している部分でもある。

Deep Q-learning

参考: https://qiita.com/wing_man/items/a9cb43711dbb188f1604

まず、最大化したい期待利得関数を選ぶ。a=arg maxaQ(s.a;w)a = \argmax _a^\prime Q(s. a^\prime; w)とする。

次に環境から行動をとった時に次にどんな環境に移り、その利得がどうなっていたかのデータを集める。D={(si,ai,si.ri)}i=1ND = \{ (s_i, a_i, s^\prime _i. r_i) \}_{i=1}^N

以下の式でに二乗誤差を最小化させる。

Image in a image block

表現力が豊かなNNを使って、Q(s,a;w)Q(s, a ; w)を作る。ただ問題点として、再帰的な式であるように、普通にやると正解に収束することを保証するのは難しい。学習したい関数のラベルに自身が大いにかかわっているから。

使うのは普通の全結合層のNNであるらしい。

Prioritized Experience Replay

参考: https://qiita.com/fujitagodai4/items/62100d63b43cd518c127

Replay Bufferからサンプルを選ぶとき、ランダムに選択するのではなく、TD誤差が多いサンプルを選ぶ。

まず、データiiがサンプリングされる確率P(i)P(i)を考える。ハイパーパラメタα\alphaでありこれが0へ収束すると、一様分布になる。

P(i)=piαkNpkαP(i)=\frac{p_i ^ \alpha}{\sum _{k}^N p_k ^ \alpha}

pip_iは次のように決定する。微小なϵ>0\epsilon > 0として、以下のようにする。

δj=Rj+γmaxaQ(sj,aj)Q(sj1,aj1)pi=δj+ϵ\delta_j = R_j + \gamma \max_{a} Q(s_j, a_j) - Q(s_{j-1}, a_{j-1}) \\ p_i = |\delta_j| + \epsilon

TD誤差とはδj\delta_jである。つまり、Q値の予測のズレが大きいほど、選ばれやすい=優先して学習することになる。

Noisy Networks for Exploration

参考: https://jsapachehtml.hatenablog.com/entry/2018/10/13/173303

ε-greedyについて改良した手法。通常の線形の計算y=Wx+b\mathbf{y} = W \mathbf{x} + \mathbf{b}に対して、パラメタのW,bW, \mathbf{b}にノイズが入ることを考える。\odotは各要素ごとの積。

y=(W+ΣE1)+b+σϵ\mathbf{y} = (W + \Sigma \odot \Epsilon_1) + \mathbf{b} + \boldsymbol{\sigma} \odot \boldsymbol{\epsilon}

E1,ϵE_1, \boldsymbol{\epsilon}はノイズで毎回学習のたびに変わる。学習するパラメタはW,Σ,b,σW, \Sigma, \mathbf{b}, \boldsymbol{\sigma}である。

このように線形の計算をDQNの最後の全結合層にしている。

A distributional perspective on reinforcement learning

参考: https://qiita.com/keisuke-nakata/items/2767c287e4ee7a71716c

強化学習において、収益の 期待値 ではなく、その 分布 が有用であることを主張している。

ようわからん スキップ

Distributional Reinforcement Learning with Quantile Regression

参考: https://qiita.com/ku2482/items/504ad60c8146ca9a1858

わからん

Rainbow: Combining the improvement of deep reinforcement learning

参考: https://qiita.com/pocokhc/items/9972a528901c15e42519