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.

強化学習第1回講義

ここで第1回と書いてあるけど第1回はガイダンスだからこれ授業では第2回だ。

強化学習のためのMLの基礎

わかってるものはさすがに飛ばす。

Maximum Entropy Principle

条件が与えられ、それ以外のものがわからないときに分布を仮定するなら、エントロピーが最大のものを仮定しなければならない。

つまり、一様分布とできるだけ距離が近い=KLダイバージェンスが近いものを選ばないといけない。

なお、KLダイバージェンスは交換則が成り立たない。成り立つJSダイバージェンスなどがある。だが、とにかく計算がしやすいのがいいところ。

例えば、ボルツマン分布のかたちをしている、期待値が○○であるとわかっているならば、以下の条件でラグランジュの未定乗数法で計算できる。

Image in a image block

Bandit Problemとベイズ最適化

強化学習の流れ

Image in a image block

状態st\mathbf{s}_tで、行動at\mathbf{a}_tを取る事で、次の状態st+1\mathbf{s}_{t+1}を得る。この1つ前のものだけを依存するのはマルコフ過程という。強化学習の目的は、以下のように直近の利得を重視しつつ=移動指数平均を最大化したい。直近の利得としているのは、γ[0,1]\gamma \in [0, 1]で実現させている。昔の利得を減衰させている。

R(τ)=t=0Hγt1r(st,at)R(\tau) = \sum_{t = 0}^H \gamma^{t-1} r(\mathbf{s}_t, \mathbf{a}_t)

これの決定する順序は以下のように、sar\mathbf{s} \to \mathbf{a} \to rで、「環境→行動→利得」となる。

K-armed Bandit Problem

K台のスロットがあって、それぞれガウス分布に従った違うかもしれない中央値の利得を出す。どのようにして利得を最大化させる?

Action Value

Q(a)=E[rA=a]Q(a) = \mathbb{E}[r | A = a]

Action ValueQ(a)Q(a)は、指定のActionを取ったときの利得という条件付期待値である。

これを推定するので一番簡単なのは以下のようにベイズ推定をすること。

Image in a image block

分子は時刻iiでの行動aaによる利得の総和。分母は時刻iiで試した行動aaの数。

Exploration vs Exploitation

探索と効用の矛盾の矛盾。

今のPolicyよりもよいものを見つけるには探索するしかないが、探索する間の損は仕方ないがしてしまうことになる。

ϵ\epsilon-greedy戦略

ϵ\epsilonの確率でランダムなアクションを取り、それ以外は今わかっているarg minaQt(a)\argmin_a Q_t(a)となる行動をとること。

Image in a image block

このように、単純なGreedyだけでは最大の利益を得ることはできない。

Upper Confidence Bound(UCB)

取るActionを以下のようにする。ここで、σ(a)\sigma(a)は、価値推定の不確かさを表す関数であり、不確かであるほど高い値を取るように。ccは定数。

at=arg maxa(Qt(a)+cσ(a))a_t = \argmax _a (Q_t(a) + c \sigma(a))

つまり不確かであるうちはどんどん現時点での最適を取らずにチャレンジすることを促している。

Contextual Bandit Problem

モデルが以下のように、中身パラメタがあるときにはパラメタを推定しながら、最適のポリシー選択にもそれを選択するということ。

Image in a image block

流れとしては以下の通り。

  1. それぞれのBandit Machineはガウス過程回帰に従うとする(以上のようであるということ)
  2. 期待値と分散を推定する。
  3. ポリシーに従って、アクションを決定
  4. 報酬と新しい環境を得て、1番に戻って再度推定する。

ベイズ最適化

観測データは真の値に、ガウス分布に従うノイズが加算されたものとする。これを多項式回帰で計算し、二乗誤差を損失とする。

この時、データ全体が従うのは、

N(yf(x,σ2))\mathcal{N}(\mathbf{y} | f(\mathbf{x}, \sigma^2))

の分布であり、これの対数尤度の最大化はmaxlogi=1N(yif(xi))2\max -\log \sum_{i=1}^N (y_i - f(\mathbf{x}_i))^2に実質相当するのでそう言える。

ベイズ最適化は、データが従う事前分布p(w)p(w)=これがこういう動きになるとすでに知っていることが前提。これに対して、尤度p(Dw)p(D|w)と分布p(D)p(D)を学習によって覚えることで、事後分布p(wD)p(w|D)を得るのが目的。

目的関数が不明である中で、その目的関数を最大化するための最適なパラメタを推定したい。気持ちとしては、以下のような帯があって不明な形の関数について、不確定性を織り込んでも、一番最大の値を引くにはどのx\mathbf{x}なのかを知りたい

Image in a image block

ここでいうAcquisition Function=獲得関数とは、予測したものに標準偏差を足したもので、上のグラフでいう色つきの帯の一番高いところを知りたい

この時以下の手順を踏む。

  1. ガウス過程回帰(先ほど言ったデータ全体がガウス分布に従うというもの)で強化学習の目的関数を推定する。
  2. 獲得関数を最大化する
  3. パラメタを代入して計算する。

これを繰り返す。

各個を解説する。

ガウス過程回帰

関数ffがガウス過程に従うとする。以下のように、期待値と共分散行列に従うとする。期待値と共分散行列はいずれもx\mathbf{x}の関数である。共分散関数は任意の2点の共分散の度合いを表しており、高いと2点が密接に関連しており、片方がわかるともう片方の値を推測しやすいことを表す。

1次元における標準偏差が大きいとデータが散らばるとはまた別の概念。

Image in a image block

獲得関数の最大化

ここでは、m(x)m(\mathbf{x})を最大化するのではなく、ある獲得関数を最大化するx\mathbf{x}を欲しい。

獲得関数の候補として以下のようなものがある。

  • Upper Confidence Bound(UCB) ccは定数
U(x)=m(x)+cσ(x)U(\mathbf{x}) = m(\mathbf{x}) + c \sigma(\mathbf{x})
  • Expected Improvement(EI)
Image in a image block
どのように予測点での分散を計算するの

ところで、共分散関数から、仮にx\mathbf{x}における標準偏差を得たい。(x\mathbf{x}でデータをサンプリングしたことはない)

すでにNN個の点を持つとき、新しい点x\mathbf{x}とそれらの共分散ベクトルは以下のようになる。

k(x)=(k(x,x1),,k(x,xN))T\mathbf{k}(\mathbf{x}) = (k(\mathbf{x}, \mathbf{x}_1), \cdots, k(\mathbf{x}, \mathbf{x}_N)) ^ T

これで、K=k(x)k(x)TK= \mathbf{k}(\mathbf{x}) \mathbf{k}(\mathbf{x}) ^ Tを計算すると、以下のようになる。

Image in a image block

新しい点での予測分散は、以下のようになる。標準偏差は√をとればいい。

Var[f(x)]=k(x,x)k(x)K1k(x)Var[f(\mathbf{x})] = k(\mathbf{x}, \mathbf{x}) - \mathbf{k}(\mathbf{x}) K ^ {-1} \mathbf{k}(\mathbf{x})
獲得関数の最大値を知りたい!

非常に簡単だが有効な手法として、Cross Entropy Methodがある。

  1. 今あるポリシーに従い、サンプルを集める。
  2. 低い報酬のサンプルを除外していく。=Elite Sample
  3. ポリシーπθ(as)\pi _\theta (\mathbf{a|s})を、残ったサンプル=Elite Sampleの報酬の和を最大化するポリシーとして訓練し、更新する。

強化学習の種類

Model-free, Model-based

参考: https://kiyosucyberclub.web.fc2.com/OpenAI_Gym/Gym02-02.html

強化学習にモデルがあって、それにパラメタを当てはめることによって、次のポリシーp(si+1si,a)p(s_{i+1} | s_i, a)を自ずと決めることができる=Model based。これは決定的である。

つまり、状態遷移確率T(ss,a)T(s^\prime|s,a)と遷移の報酬R(s,s)R(s,s^\prime)がわかっているときはModel Based。それ以外はModel Freeらしい。

しかし世の中の事象はキレイにモデリングできるものばかりではない。モデルが存在しない=Model freeのもの。今まで述べてきたQ-lerningとかもこれ。

Policy-Gradient-Free & Policy-Gradient-Based

ポリシーのθ\thetaについて、以下のように更新していくのが、Policy Gradient Free(Gradientを使わない)

θ=arg maxθE[R(τ,θ)]\theta^* = \argmax _\theta \mathbb{E}[R(\tau, \theta)]

最適化にGradientを使って勾配降下法をやるのが、Policy Gradient Basedである。

θθ+αE[R(τ,θ)]\theta \leftarrow \theta + \alpha \nabla \mathbb{E}[R(\tau, \theta)]

Episode-based & Step-based

Episode-basedは、最初にパラメタwwを生成し、そのwwを未来永劫使って今後のアクション決定をする=最初で実質アクションを全部決める。wπθ(ws0)w \sim \pi_\theta (w | s_0)のようにサンプリングして。最初の決定1つで全部決まるので、道程の中では全く意味不明な決定とはいえるんでブラックボックスでの最適化と言える。

Step-basedは既存のやり方で、1ステップずつ今のポリシーに従って、状態からどのアクションを取ればいいのかを決定する形。

proMP
Image in a image block

正規分布に従う重みw\mathbf{w}と放射基底関数のベクトル(各既定関数が各成分になっている)Ψ(t)\Psi(t)を乗じたものが軌跡(の期待値)となる。ベイズ統計的に、不確定性を取り込んでいるので軌道はユニークではない。一番下のものは正規分布の合成によって得られた結果。

Image in a image block

このように更新しているかな?

DMP(Dynamic Movement Primitive)
Image in a image block

このように、加速度はゴールまでの向きから今の速度を減らし、そこに非線形の項にあたるものを加える。

Image in a image block

非線形項では、softmaxのψi\psi_iと、温度?τ\tauを導入して、それを線形合成している。ゴールに近くなると、ffは0に近くなるようにしている(収束への保証っぽい)

On-Policy & Off-Policy

On-Policyとは以下のようなものである。

  1. 今集めているデータからわかる状況で、次のアクションを決定する。πθ(atst)\pi _\theta(a_t | s_t)
  2. 決めたアクションをもとに、データを収集する。

つまり今まで通り。

これとくらべて、Off-Policyは以下のようなもの。

  1. 今集めているデータからわかる状況で、次のアクションを決定する。πθ(atst)\pi _\theta(a_t | s_t)
  2. データ収集をするのは、πθ(atst)\pi _\theta(a_t | s_t)ではなく、別のβ(atst)\beta(a_t | s_t)というBehavior Policy。

これによると、

  1. VVがわかっているとき、ポリシーπ\piがわかっていれば期待値が求まるらしい。これがOn-policy。
  2. 逆に価値関数VVを学習できないのならば、Off-policy。

Online RL & Offline RL

Online RLは今までのやり方の通り、その場で環境からフィードバックがもらえるというもの。

Offline RLは、学習できるデータが限られている(過去に集めたデータだけ)中で、どのように強化学習をしていくのかというもの。

2020年以降から流行り始めた。