強化學習總結


強化學習總結

強化學習的故事

強化學習是學習一個最優策略(policy),可以讓本體(agent)在特定環境(environment)中,根據當前的狀態(state),做出行動(action),從而獲得最大回報(G or return)。

有限馬爾卡夫決策過程

馬爾卡夫決策過程理論定義了一個數學模型,可用於隨機動態系統的最優決策過程。
強化學習利用這個數學模型將一個現實中的問題變成一個數學問題。
強化學習的故事1:找到最優價值

強化學習就是:追求最大回報G
追求最大回報G就是:找到最優的策略\(\pi_*\)
策略\(\pi_*\)告訴在狀態\(s\),應該執行什么行動\(a\)
最優策略可以由最優價值方法\(v_*(s)\)或者\(q_*(s, a)\)決定。

故事1的數學版

\[\text{Reinforcement Learning} \doteq \pi_* \\ \quad \updownarrow \\ \pi_* \doteq \{ \pi(s) \}, \ s \in \mathcal{S} \\ \quad \updownarrow \\ \begin{cases} \pi(s) = \underset{a}{argmax} \ v_{\pi}(s' | s, a), \ s' \in S(s), \quad \text{or} \\ \pi(s) = \underset{a}{argmax} \ q_{\pi}(s, a) \\ \end{cases} \\ \quad \updownarrow \\ \begin{cases} v_*(s), \quad \text{or} \\ q_*(s, a) \\ \end{cases} \\ \quad \updownarrow \\ \text{approximation cases:} \\ \begin{cases} \hat{v}(s, \theta) \doteq \theta^T \phi(s), \quad \text{state value function} \\ \hat{q}(s, a, \theta) \doteq \theta^T \phi(s, a), \quad \text{action value function} \\ \end{cases} \\ where \\ \theta \text{ - value function's weight vector} \\ \]

有限馬爾卡夫決策過程的基本概念:

state 狀態
action 行動
reward 獎賞
\(G_t\) 回報
\(p(s' | s, a)\) 表示在狀態s下,執行行動a,狀態變成s'的可能性。
\(p(s', r | s, a)\) 表示在狀態s下,執行行動a,狀態變成s',並獲得獎賞r的可能性。
\(r(s, a)\) 在狀態s下,執行行動a的期望獎賞。

\[r(s,a) \doteq \mathbb{E}[R_{t+1} | S_t = s, A_t = a] = \sum_{r \in \mathcal{R}} r \sum_{s' \in \mathcal{S}} p(s', r|s,a) \]

\(r(s, a, s')\) 在狀態s下,執行行動a,狀態變成s'的期望獎賞。

\[r(s,a,s') \doteq \mathbb{E}[R_{t+1} | S_t = s, A_t = a, S_{t+1} = s'] = \frac{\sum_{r \in \mathcal{R}} r p(s',r|s,a)}{p(s'|s,a)} \]

\(\pi\) 策略\(\pi\)

\[\pi = [\pi(s_1), \cdots, \pi(s_n)] \]

\(\pi(s)\) 策略\(\pi\),在狀態s下,選擇的行動。
\(\pi_*\) 最優策略
\(\pi(a|s)\) 隨機策略在在狀態s下,選擇行動a的可能性。
\(v_{\pi}(s)\) 策略\(\pi\)的狀態價值方法。

\[v_{\pi}(s) \doteq \mathbb{E}[G_t | S_t = s] = \mathbb{E}_{\pi} \left [ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s \right ] \\ where \\ \pi \text{ - policy} \\ \mathbb{E}_{\pi}[\cdot] \text{ - the expected value of a value follows policy } \pi \]

\(q_{\pi}(s, a)\) 策略\(\pi\)的行動價值方法。

\[q_{\pi}(s,a) \doteq \mathbb{E}[G_t | S_t = s, A_t = a] = \mathbb{E}_{\pi} \left [ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s, A_t = a \right ] \\ \]

\(v_{*}(s)\) 最優狀態價值方法。

\[v_*(s) \doteq \underset{\pi}{max} \ v_{\pi}(s), \forall s \in \mathcal{S} \]

\(q_{*}(s, a)\) 最優行動價值方法。

\[q_*(s, a) \doteq \underset{\pi}{max} \ q_{\pi}(s, a), \ \forall s \in \mathcal{S} \ and \ a \in \mathcal{A}(s) \\ q_*(s,a) = \mathbb{E}[R_{t+1} + \gamma v_* (S_{t+1}) \ | \ S_t = s, A_t = a] \]

強化學習的術語

學習任務可分為兩類:

  • 情節性任務(episodic tasks)
    指(強化學習的問題)會在有限步驟下結束。比如:圍棋。
  • 連續性任務(continuing tasks)
    指(強化學習的問題)有無限步驟。一個特征是:沒有結束。比如:讓一個立在指尖上的長棍不倒。(不知道這個例子好不好,我瞎編的。)

學習的方法:

  • online-policy方法(online-policy methods)
    評估的策略和優化的策略是同一個。
  • offline-policy方法(offline-policy methods)
    評估的策略和優化的策略不是同一個。意味着優化策略使用來自外部的模擬數據。

學習的算法:

  • 預測算法(predication algorithms)
    計算每個狀態的價值\(v(s)\)。然后預測(可以得到最大回報的)最優行動。
  • 控制算法(predication algorithms)
    計算每個狀態下每個行動的價值\(q(s, a)\)

學習的算法:

  • 列表方法(tabular methods)
    指使用表格存儲每個狀態(或者狀態-行動)的價值。

  • 近似方法(approximation methods)
    指使用一個函數來計算狀態(或者狀態-行動)的價值。

  • 模型(model)
    環境的模型。可以模擬環境,模擬行動的結果。
    Dynamic Programming need a model。

  • 基於模型的方法(model-base methods)
    通過模型來模擬。可以模擬行動,獲得(狀態或者行動)價值。

注:這個模擬叫做模型模擬。

  • 無模型的方法(model-free methods)
    使用試錯法(trial-and-error)來獲得(狀態或者行動)價值。

注:這個模擬叫做試錯、試驗、模擬等。
無模型的方法,可以用於有模型的環境。

  • 引導性(bootstrapping)
    (狀態或者行動)價值是根據其它的(狀態或者行動)價值計算得到的。
  • 取樣性(sampling)
    (狀態或者行動)價值,或者部分值(比如:獎賞)是取樣得到的。
    引導性和取樣性並不是對立的。可以是取樣的,並且是引導的。

強化學習算法的分類

強化學習的故事2:我們該用哪個方法?

如果有一個模型,可以獲得價值函數\(v(s)\)或者\(q(s, a)\)的值 \(\to\) 動態規划方法
如果可以模擬一個完整的情節 \(\to\) 蒙特卡羅方法
如果需要在模擬一個情節中間就要學習策略 \(\to\) 時序差分方法
\(\lambda\)-return用來優化近似方法中的誤差。
資格跡(Eligibility traces)用來優化近似方法中的,價值函數的微分。
預測方法是求狀態價值方法\(v(s)\)或者\(\hat{v}(s, \theta)\)
控制方法是求行動價值方法\(q(s, a)\)或者\(\hat(q)(s, a, \theta)\)
策略梯度方法(Policy Gradient Methods)是求策略方法\(\pi(a|s, \theta)\)

算法類別 需要模型 引導性 情節性任務 連續性任務
動態規划方法 Y Y - -
蒙特卡羅方法 N N Y N
時序差分方法 N Y Y Y
策略梯度方法 N Y Y Y

算法列表

在每個算法中,后面的算法會更好,或者更通用一些。

4 動態規划(Dynamic Programming)

動態規划是基於模型的方法。
注:一個常見的考慮是將每個action的reward設為-1,期望的結果\(V(S_t)\)為0。

  • Iterative policy evaluation
    使用隨機策略\(\pi(a|s)\)來迭代計算\(v(s)\)

  • Policy iteration (using iterative policy evaluation)
    通過使用迭代策略\(\pi(s)\)來優化了計算\(v(s)\)部分。但是,還是使用了期望值。

  • Value iteration
    優化了整個流程,直接用行動的最大回報作為\(v(s)\)的值。

5 蒙特卡羅方法(Monte Carlo Method)

  • First-visit MC policy evaluation (returns \(V \approx v\))
    在每個情節中,記錄狀態\(s\)第一個G。\(v(s) = avg(G(s))\)

  • Monte Carlo ES (Exploring Starts)
    從一個特定起始點的蒙特卡羅方法。
    變成了計算\(q(s, a)\)

  • On-policy fi rst-visit MC control (for \(\epsilon\)-soft policies)
    在探索中使用了\(\epsilon\)-soft策略。

  • Incremental o ff-policy every-visit MC policy evaluation
    支持off-policy。

  • Off-policy every-visit MC control (returns \(\pi \approx \pi_*\))
    使用了貪婪策略來支持off-policy。

6 時序差分方法(Temporal-Difference Learning)

時序差分方法的思想是:

  1. 在一個情節進行過程中學習。
    比如:計算到公司的時間問題。早上晚起了10分鍾,可以認為會比以往晚到10分鍾。而不用完成從家到公司整個過程。
  2. 視為蒙特卡羅方法的通用化。蒙特卡羅方法是步數為完成情節的TD算法。
  • Tabular TD(0) for estimating \(v_{\pi}\)
    計算\(v(s)\)的單步TD算法。

  • Sarsa: An on-policy TD control algorithm
    計算\(q(s, a)\)的單步TD算法。

  • Q-learning: An off -policy TD control algorithm
    是一個突破性算法。但是存在一個最大化偏差(Maximization Bias)問題。

  • Double Q-learning
    解決了最大化偏差(Maximization Bias)問題。

7 多步時序差分方法

  • n-step TD for estimating \(V \approx v_{\pi}\)
    計算\(v(s)\)的多步TD算法。

  • n-step Sarsa for estimating \(Q \approx q_*\), or \(Q \approx q_{\pi}\) for a given \(\pi\)
    計算\(q(s, a)\)的多步TD算法。

  • O ff-policy n-step Sarsa for estimating \(Q \approx q_*\), or \(Q \approx q_{\pi}\) for a given \(\pi\)
    考慮到重要樣本,把\(\rho\)帶入到Sarsa算法中,形成一個off-policy的方法。
    \(\rho\) - 重要樣本比率(importance sampling ratio)

\[\rho \gets \prod_{i = \tau + 1}^{min(\tau + n - 1, T -1 )} \frac{\pi(A_t|S_t)}{\mu(A_t|S_t)} \qquad \qquad (\rho_{\tau+n}^{(\tau+1)}) \]

  • n-step Tree Backup for estimating \(Q \approx q_*\), or \(Q \approx q_{\pi}\) for a given \(\pi\)
    Tree Backup Algorithm的思想是每步都求行動價值的期望值。
    求行動價值的期望值意味着對所有可能的行動\(a\)都評估一次。

  • Off -policy n-step \(Q(\sigma)\) for estimating \(Q \approx q_*\), or \(Q \approx q_{\pi}\) for a given \(\pi\)
    \(Q(\sigma)\)結合了Sarsa(importance sampling), Expected Sarsa, Tree Backup算法,並考慮了重要樣本。
    \(\sigma = 1\)時,使用了重要樣本的Sarsa算法。
    \(\sigma = 0\)時,使用了Tree Backup的行動期望值算法。

8 基於模型的算法

這里的思想是:通過體驗來直接優化策略和優化模型(再優化策略)。

  • Random-sample one-step tabular Q-planning
    通過從模型中獲取獎賞值,計算\(q(s, a)\)

  • Tabular Dyna-Q
    如果\(n=0\),就是Q-learning算法。Dyna-Q的算法的優勢在於性能上的提高。
    主要原因是通過建立模型,減少了執行行動的操作,模型學習到了\(Model(S, A) \gets R, S'\)

  • Prioritized sweeping for a deterministic environment
    提供了一種性能的優化,只評估那些誤差大於一定值\(\theta\)的策略價值。

9 近似預測方法

預測方法就是求\(v(s)\)

\[\hat{v}(s, \theta) \doteq \theta^T \phi(s), \quad \text{state value function} \\ where \\ \theta \text{ - value function's weight vector} \\ \]

  • Gradient Monte Carlo Algorithm for Approximating \(\hat{v} \approx v_{\pi}\)
    蒙特卡羅方法對應的近似預測方法。

  • Semi-gradient TD(0) for estimating \(\hat{v} \approx v_{\pi}\)
    單步TD方法對應的近似預測方法。
    之所以叫半梯度遞減的原因是TD(0)和n-steps TD計算價值的公式不是精確的(而蒙特卡羅方法是精確的)。

  • n-step semi-gradient TD for estimating \(\hat{v} \approx v_{\pi}\)
    多步TD方法對應的近似預測方法。

  • LSTD for estimating \(\hat{v} \approx v_{\pi}\) (O(n2) version)

10 近似控制方法

控制方法就是求\(q(s, a)\)

\[\hat{q}(s, a, \theta) \doteq \theta^T \phi(s, a), \quad \text{action value function} \\ where \\ \theta \text{ - value function's weight vector} \\ \]

  • Episodic Semi-gradient Sarsa for Control
    單步TD的近似控制方法。(情節性任務)

  • Episodic semi-gradient n-step Sarsa for estimating \(\hat{q} \approx q_*\), or \(\hat{q} \approx q_{\pi}\)
    多步TD的近似控制方法。(情節性任務)

  • Dif ferential Semi-gradient Sarsa for Control
    單步TD的近似控制方法。(連續性任務)

  • Di fferential semi-gradient n-step Sarsa for estimating \(\hat{q} \approx q_*\), or \(\hat{q} \approx q_{\pi}\)
    多步TD的近似控制方法。(連續性任務)

12 \(\lambda\)-return和資格跡(Eligibility traces)

求權重向量\(\theta\)是通過梯度下降的方法。比如:

\[\delta_t = G_t - \hat{v}(S_t, \theta_t) \\ \theta_{t+1} = \theta_t + \alpha \delta_t \nabla \hat{v}(S_t, \theta_t) \]

這里面,有三個元素:\(\alpha, G_t, \nabla \hat{v}(S_t, \theta_t)\)。每個都有自己的優化方法。

  • \(\alpha\)是學習步長
    要控制步長的大小。一般情況下步長是變化的。比如:如果誤差\(\delta_t\)變大了,步長要變小。

  • \(G_t\)的計算
    可以通過本章的\(\lambda\) - return方法。

  • \(\nabla \hat{v}(S_t, \theta_t)\)
    可以通過資格跡來優化。資格跡就是優化后的函數微分。
    為什么要優化,原因是在TD算法中\(\hat{v}(S_t, \theta_t)\)是不精確的。
    \(G_t\)也是不精確的。
    \(\lambda\)-return用來優化近似方法中的誤差。
    資格跡(Eligibility traces)用來優化近似方法中的,價值函數的微分。

  • Semi-gradient TD(\(\lambda\)) for estimating \(\hat{v} \approx v_{\pi}\)
    使用了\(\lambda\)-return和資格跡的TD算法。

  • True Online TD(\(\lambda\)) for estimating \(\theta^T \phi \approx v_{\pi}\)
    Online TD(\(\lambda\))算法

13 策略梯度方法

策略梯度方法就是求\(\pi(a | s, \theta)\)

策略梯度方法的新思路(Policy Gradient Methods)

\[\text{Reinforcement Learning} \doteq \pi_* \\ \quad \updownarrow \\ \pi_* \doteq \{ \pi(s) \}, \ s \in \mathcal{S} \\ \quad \updownarrow \\ \pi(s) = \underset{a}{argmax} \ \pi(a|s, \theta) \\ where \\ \pi(a|s, \theta) \in [0, 1] \\ s \in \mathcal{S}, \ a \in \mathcal{A} \\ \quad \updownarrow \\ \pi(a|s, \theta) \doteq \frac{exp(h(s,a,\theta))}{\sum_b exp(h(s,b,\theta))} \\ \quad \updownarrow \\ exp(h(s,a,\theta)) \doteq \theta^T \phi(s,a) \\ where \\ \theta \text{ - policy weight vector} \\ \]

  • REINFORCE, A Monte-Carlo Policy-Gradient Method (episodic)
    基於蒙特卡羅方法的策略梯度算法。

  • REINFORCE with Baseline (episodic)
    帶基數的蒙特卡洛方法的策略梯度算法。

  • One-step Actor-Critic (episodic)
    帶基數的TD方法的策略梯度算法。

  • Actor-Critic with Eligibility Traces (episodic)
    這個算法實際上是:

  1. 帶基數的TD方法的策略梯度算法。
  2. 加上資格跡(eligibility traces)
  • Actor-Critic with Eligibility Traces (continuing)
    基於TD方法的策略梯度算法。(連續性任務)

參照


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM