元バイオ系

元バイオウェット系がデータサイエンスやらを勉強していくブログ。 基本自分用のまとめ。

強化学習を理解したい #2

前回

hotoke-x.hatenablog.com

の続きで、今回はモデルフリー手法の話です。 モデルベース手法では  \pi (a|s) T(s'|s, a) が定義可能である前提でした。

モデルフリーの問題では直接これらを定義できない為に、蓄えたデータ(経験)から推定する必要があります。 また、経験を活用して行動しなければ、いつまでたっても報酬は得られません。

このようにモデルフリータスクでは経験と活用のバランスを考える必要があります。

また、どの範囲の経験をフィードバックするか、価値評価改善と戦略改善のどちらへフィードバックするかなどの問題もあります。

ここでは、

  • 経験と活用のバランスをとるEpsilon-Greedy法
  • フィードバック範囲を調整する方法
  • 価値評価と戦略のどちらを改善するか

についてまとめます。

経験と活用のバランスをとるEpsilon-Greedy法

Epsilon-Greedy法は至って単純で、確率  \mathcal{\epsilon} でエージェントをランダムに行動させるだけです。

これによって、戦略に従って行動しているだけでは取りにくい行動(選択確率の低い行動)も一定確率で行うようになり、状態の遷移と遷移によって得られる報酬を探索することができます。

フィードバック範囲を調整する方法

次に考えるべきは、経験を使った学習です。

経験を積みつつもエージェントは時々刻々と行動し続けているので、フィードバックすべき経験の範囲を考えるのも、強化学習におけるひとつのポイントとなります。

典型的には以下の方法が有名です。

  • TD法(Temporal Difference)
    • 行動するたびに逐次的にフィードバックします。
  • Monte Carlo法
    • エピソード終了時にフィードバックします。

上記の他に中間的な方法もありますが、結局TD法、Monte Carlo法含め一つの式で書けるので深く考える必要はないです。

では、TD法とMonte Carlo法における価値更新の式を見てみましょう

 \displaystyle
V(s _t) \leftarrow V(s _t) + \alpha (r _{t+1} + \gamma V(s _{t+1}) - V(s _t)) \\
V(s _t) \leftarrow V(s _t) + \alpha \left((r _{t+1} + \gamma r _{t+2} + \gamma^ 2 r _{t+3} + \ldots + \gamma ^ {T-t-1} r _ {T-t}) - V(s _ t)\right)

上段がTD法、下段がMonte Carlo法です。1 step先の価値を予測して誤差の大きさに応じて学習率  \alpha で価値関数を更新するのがTD法、 エピソード終了まで待って価値関数を更新するのがMonte Carlo法というわけですね。

ただ、フィードバック範囲が異なるだけなら1つの式で書けそうだという直感はあっていて、実際以下の式(TD ( \lambda) 法)が知られています。

 
G^\lambda_t = (1 - \lambda)\sum_{n=1}^{T-t-1} \lambda^{n-1}G_t^{(n)} + \lambda^{T-t-1}G_t^{(T-t)}

ここで、 \lambda \in [0, 1] であり、  \lambda = 0 のときはTD法、 \lambda = 1 のときはMonte Carlo法と等価になります。

 \lambda の値次第でフィードバックタイミングを調整可能ということです。

価値評価と戦略のどちらを改善するか

そして最後に、価値評価と戦略のどちらを改善するかですが、言ってしまえば扱いたい問題がValueベースか、Policyベースかという問題です。

内容まではまとめませんが、以下のような手法が知られています。

  • 価値評価の改善(Valueベース)
    • Q-learning
      • Deep learningを利用したQ-learningが、かの有名なDeep Q Network (DQN) です。
    • 戦略関係なしに行動するので、この行動基準をoff-policyと呼びます。
  • 戦略の改善(Policyベース)
    • SARSA (State-Action-Reward-State-Action)
    • 戦略の通りに行動するので、この行動基準をon-policyと呼びます。
    • 価値評価と戦略評価に同じQ-table(価値関数)を使っているのが特徴

SARSAの特徴として「価値評価と戦略評価に同じQ-table(価値関数)を使っているのが特徴」と挙げましたが、価値評価と戦略評価を別々に行うActor-Critic法という手法もあります。

Policy iterationでは、価値の推定と戦略の評価が別々に行われていたことから、価値と戦略を別々に考えることにも違和感はないと思います。

まとめ

というわけで、モデルフリー手法についても、ちょっと詳しい目次程度にまとめました。

モデルフリーとはいえ、まだ扱う状態が離散で、価値がテーブルに収まっているので真のモデルフリーではない気もします。

以降では、状態や価値を関数で近似してしまうことを考えます。

データを入力したら状態を出力する関数、状態を入力したら価値を出力する関数を求めるということですね。

しかしモデルがわかっていませんから当然関数の形も未知です。

その為、表現力の高いDeep learningモデル等を利用しているのが昨今の強化学習になります。

強化学習業界を追いかけるのは容易ではないと思いますが、これくらいまで勉強しておけば業界全体の流れは汲み取れたのではないでしょうか。

後は実装あるのみですね。

参考書籍

Pythonで学ぶ強化学習