強化學習總結
強化學習的故事
強化學習是學習一個最優策略(policy),可以讓本體(agent)在特定環境(environment)中,根據當前的狀態(state),做出行動(action),從而獲得最大回報(G or return)。
有限馬爾卡夫決策過程
馬爾卡夫決策過程理論定義了一個數學模型,可用於隨機動態系統的最優決策過程。
強化學習利用這個數學模型將一個現實中的問題變成一個數學問題。
強化學習的故事1:找到最優價值
強化學習就是:追求最大回報G
追求最大回報G就是:找到最優的策略\(\pi_*\)。
策略\(\pi_*\)告訴在狀態\(s\),應該執行什么行動\(a\)。
最優策略可以由最優價值方法\(v_*(s)\)或者\(q_*(s, a)\)決定。
故事1的數學版
有限馬爾卡夫決策過程的基本概念:
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, s')\) 在狀態s下,執行行動a,狀態變成s'的期望獎賞。
\(\pi\) 策略\(\pi\)
\(\pi(s)\) 策略\(\pi\),在狀態s下,選擇的行動。
\(\pi_*\) 最優策略
\(\pi(a|s)\) 隨機策略在在狀態s下,選擇行動a的可能性。
\(v_{\pi}(s)\) 策略\(\pi\)的狀態價值方法。
\(q_{\pi}(s, a)\) 策略\(\pi\)的行動價值方法。
\(v_{*}(s)\) 最優狀態價值方法。
\(q_{*}(s, 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 off-policy every-visit MC policy evaluation
支持off-policy。 -
Off-policy every-visit MC control (returns \(\pi \approx \pi_*\))
使用了貪婪策略來支持off-policy。
6 時序差分方法(Temporal-Difference Learning)
時序差分方法的思想是:
- 在一個情節進行過程中學習。
比如:計算到公司的時間問題。早上晚起了10分鍾,可以認為會比以往晚到10分鍾。而不用完成從家到公司整個過程。 - 視為蒙特卡羅方法的通用化。蒙特卡羅方法是步數為完成情節的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算法。 -
Off-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)
-
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)\)。
-
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)\)。
-
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的近似控制方法。(情節性任務) -
Differential Semi-gradient Sarsa for Control
單步TD的近似控制方法。(連續性任務) -
Differential semi-gradient n-step Sarsa for estimating \(\hat{q} \approx q_*\), or \(\hat{q} \approx q_{\pi}\)
多步TD的近似控制方法。(連續性任務)
12 \(\lambda\)-return和資格跡(Eligibility traces)
求權重向量\(\theta\)是通過梯度下降的方法。比如:
這里面,有三個元素:\(\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)
-
REINFORCE, A Monte-Carlo Policy-Gradient Method (episodic)
基於蒙特卡羅方法的策略梯度算法。 -
REINFORCE with Baseline (episodic)
帶基數的蒙特卡洛方法的策略梯度算法。 -
One-step Actor-Critic (episodic)
帶基數的TD方法的策略梯度算法。 -
Actor-Critic with Eligibility Traces (episodic)
這個算法實際上是:
- 帶基數的TD方法的策略梯度算法。
- 加上資格跡(eligibility traces)
- Actor-Critic with Eligibility Traces (continuing)
基於TD方法的策略梯度算法。(連續性任務)
參照
- Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
- 強化學習讀書筆記 - 00 - 術語和數學符號
- 強化學習讀書筆記 - 01 - 強化學習的問題
- 強化學習讀書筆記 - 02 - 多臂老O虎O機問題
- 強化學習讀書筆記 - 03 - 有限馬爾科夫決策過程
- 強化學習讀書筆記 - 04 - 動態規划
- 強化學習讀書筆記 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
- 強化學習讀書筆記 - 06~07 - 時序差分學習(Temporal-Difference Learning)
- 強化學習讀書筆記 - 08 - 規划式方法和學習式方法
- 強化學習讀書筆記 - 09 - on-policy預測的近似方法
- 強化學習讀書筆記 - 10 - on-policy控制的近似方法
- 強化學習讀書筆記 - 11 - off-policy的近似方法
- 強化學習讀書筆記 - 12 - 資格痕跡(Eligibility Traces)
- 強化學習讀書筆記 - 13 - 策略梯度方法(Policy Gradient Methods)
- 強化學習讀書筆記 - 14 - 心理學