強化學習(六):時序差分方法

強化學習(六):時序差分方法

  時序差分(TD)方法結合了動態規劃與蒙特卡洛的思想,其可以像蒙特卡洛方法一樣直接從智能體與環境互動的經驗中學習,而不需要知道環境的模型,其又可以像動態規劃一樣無須等待交互的結果,可以邊交互邊學習。總的來說,時序差分是基於已得到的其他狀態的估計值來更新當前狀態的價值函數。如果沒有學習動態規劃部分,可以瀏覽博文強化學習(四):基於表格型動態規劃算法的強化學習,如果沒有學習蒙特卡洛方法,則可以瀏覽博文強化學習(五):蒙特卡洛採樣方法


  我們知道,蒙特卡洛是基於採樣的學習,從與環境的互動過程中所得到的經驗作爲求解貝爾曼方程的方法,然而,蒙特卡洛以及較強的分幕式設定在某些場景下並不適合,例如採樣序列無限長,或者幕與幕之間沒有明確的分界等情況。時序差分則結合動態規劃的自舉思想和蒙特卡洛的採樣思想,使得其邊採樣邊自舉,不僅加快了學習的速度,也能適應諸多場景。本文將主要介紹TD(0)算法,即在採樣期間,只將相鄰的下一時刻狀態估計值更新當前的價值函數,也就是說借用的估計值所處的時刻與目標更新的時刻差爲1,亦稱單步TD。在後續章節也會介紹TD(n),即多步TD。

一、TD誤差

  我們已經非常熟悉強化學習的價值更新公式以及GPI思想,例如動態規劃的策略預測:

vk+1(s)=aπ(as)s,rp(s,rs,a)[r+γvk(s)]v_{k+1}(s)=\sum_{a}\pi(a|s)\sum_{s',r}p(s',r|s,a)[r+\gamma v_{k}(s')]

蒙特卡洛的策略控制:

Q(St,At)=Q(St,At)+WC(St,At)[GtQ(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \frac{W}{C(S_t,A_t)}[G_t-Q(S_t,A_t)]

C(St,At)=C(St,At)+WC(S_t,A_t) = C(S_t,A_t) + W

事實上,我們可以將這一類的更新公式寫成一個通用的格式:

(1)策略預測更新公式:

V(St)=V(St)+α[GtV(St)]V(S_t) = V(S_t) + \alpha[G_t - V(S_t)]

(2)策略控制更新公式:

Q(St,At)=Q(St,At)+α[GtQ(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \alpha[G_t - Q(S_t,A_t)]

其中V(St)V(S_t)表示tt時刻狀態StS_t的狀態價值預測值,Q(St,At)Q(S_t,A_t)表示在狀態StS_t下執行動作AtA_t的動作價值預測值,α\alpha是一個很小的數,在之前我們知道其表示所有經過狀態StS_t(St,At)(S_t,A_t)二元組的次數的倒數來表示取平均,因爲往往在蒙特卡洛採樣過程中都是上萬次,因此完全可以用一個預設的很小的超參數來描述它。GtG_t則表示實際的價值,在蒙特卡洛方法中,其確實表示實際的價值,因爲蒙特卡洛需要執行完整個流程,而在時序差分TD(0)中,其可以表示爲下一個時刻的價值估計值來替代實際值,GtV(St)G_t-V(S_t)GtQ(St,At)G_t - Q(S_t,A_t) 被稱爲時序差分誤差(TD誤差),如果是在蒙特卡洛方法中,則被稱爲蒙特卡洛誤差(MC誤差)。帶有α\alpha的TD誤差則可以衡量當前波動值對更新當前價值的影響程度,這個α\alpha自然而然的充當起學習率的角色,事實上仔細觀察,上述的兩個式子非常類似梯度下降的更新公式。

二、時序差分TD(0)預測

  上述已經介紹了時序差分的內容,根據GPI思想,我們先引入TD(0)預測算法。
在TD(0)預測中,其是通過將下一時刻的狀態價值帶有折扣的與當前時刻的收益的和作爲實際值調整當前的預測值,形式化的描述如下:

V(St)=V(St)+α[Rt+1+γV(St+1)V(St)]V(S_t) = V(S_t) + \alpha[R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]

R+γV(St+1)R + \gamma V(S_{t+1}) 這一項就是所謂的將下一時刻的狀態價值帶有折扣的與當前時刻收益的和作爲估計的實際價值,對比蒙特卡洛,這一部分則是需要累加所有的收益,而TD(0)只需要自舉的將相鄰的下一步作爲估計,融合動態規劃思想。TD(0)預測的算法流程如下:
在這裏插入圖片描述
首先根據一個確定的策略π\pi,初始化相關價值函數,對於某一幕,初始化一個採樣序列,在執行某一步時,根據當前的策略,在狀態StS_t下執行一個動作AtA_t,並觀察下一時刻的狀態StS_t以及收益RtR_t,然後更新上述公式V(St)=V(St)+α[Rt+1+γV(St+1)V(St)]V(S_t) = V(S_t) + \alpha[R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]。其迭代過程中,是不斷地將相鄰的下一個時刻的帶折扣價值與局部收益來調整當前預測的價值,類似動態規劃,但區別於動態規劃的是,其更新過程中下一時刻的狀態只有一個,而不是所有。

vπ(s)=Eπ[GtSt=s]v_{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s]

=Eπ[Rt+1+γGt+1St=s]=\mathbb{E}_{\pi}[R_{t+1} + \gamma G_{t+1}|S_t=s]

=Eπ[Rt+1+γvπ(St+1)St=s]=\mathbb{E}_{\pi}[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t=s]

比較上述三個等式,第一個等式則表示蒙特卡洛方法,第二行表示動態規劃法,第三行則表示時序差分法,時序差分也是動態規劃與蒙特卡洛的一種結合。

  我們通過Sutton書上的一個示例來理解:

一個駕駛員開車回家,6點離開辦公室時預估到家時間爲半小時,但花費5分鐘時間到達車庫時發現外面下雨了,於是臨時覺得到家得6:35。但幸運的是在高速路上一路暢通,6:20時刻很快下了高速路,覺得應該還有一刻鐘到家,可是在行駛普通道路時,由於路況不好降低了車速,導致6:40纔到家門口,3分鐘後採回到家。相關記錄表如圖所示:
在這裏插入圖片描述

  在這個例子中,離開辦公室,到達車庫,離開高速路,行駛在普通公路,到達家門口和到家等都是狀態,其實我們發現,駕駛員並不是到了家(最終狀態)之後纔對之前的每一個狀態進行預估,在真實情況下也的確不現實,而駕駛員是在每一個狀態之後,根據當前狀態的情況,做出的臨時預測,這一個過程就是時序差分的思想

在這裏插入圖片描述
如上圖,每一個狀態下的預測時間,與實際時間的對比,虛線爲實際時間,實線爲預測時間。左圖是蒙特卡洛的預測過程,其只有回到家之後才知道之前每個狀態下的時間(相當於價值),右圖則是根據下一個狀態的時間預測當前狀態的時間。

三、時序差分策略控制

  在GPI的策略控制階段,我們依然分別通過同軌和離軌來討論。

3.1 時序差分同軌策略控制——SARSA

  在同軌策略控制過程中,行動策略與目標策略是一致的,更新公式如下:

Q(St,At)=Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \alpha[R_{t+1} + \gamma Q(S_{t+1},A_{t+1}) - Q(S_t,A_t)]

與策略預測一樣,只是將狀態價值換爲動作價值,其執行過程中,回溯圖表現的就是一條單一的直線:

在這裏插入圖片描述
其中黑點表示狀態動作二元組,白點表示狀態。這一過程也被稱爲SARSA(State Action Reward State Action),字面意義上可知其需要執行相鄰的兩個動作,到達相鄰的兩個狀態以及期間的一次收益。算法流程如下所示:
在這裏插入圖片描述
控制過程中,也採用ϵ\epsilon-貪心策略保證開發與探索之間的矛盾。

3.2 時序差分離軌策略控制——Q-Learning

  Q學習是另一種TD(0)控制,也被稱爲離軌策略下的策略控制,其更新公式如下:

Q(St,At)=Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)Q(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \alpha[R_{t+1} + \gamma \max_{a}Q(S_{t+1},a) - Q(S_t,A_t)]

其相比SARSA不同的地方在於TD誤差的不同,SARSA的TD誤差是 Rt+1+γQ(St+1,At+1)Q(St,At)R_{t+1} + \gamma Q(S_{t+1},A_{t+1}) - Q(S_t,A_t) ,而Q學習的TD誤差是 Rt+1+γmaxaQ(St+1,a)Q(St,At)R_{t+1} + \gamma \max_{a}Q(S_{t+1},a) - Q(S_t,A_t)。Q學習描述的是將下一個時刻到達的狀態St+1S_{t+1},以及在這個狀態下執行所有可能的動作所產生的一系列狀態動作二元組中,取最大的動作價值作爲估計值(帶折扣的與局部收益的和)。回溯圖如圖所示:

在這裏插入圖片描述

通過回溯圖,可以很清晰的理解Q學習的工作過程。另外之所以稱之爲離軌策略,是因爲這裏的行動策略是基於ϵ\epsilon-貪心的π\pi策略進行的採樣序列,而目標策略則是在所有可能的狀態動作二元組中取最大的貪心策略,二者沒有關聯性。

在這裏插入圖片描述
需要注意的是,SARSA需要在當前狀態StS_t下執行動作AtA_t,獲得收益Rt+1R_{t+1}後到達狀態St+1S_{t+1},還要再執行動作At+1A_{t+1}之後才能執行SARSA回溯。而Q學習則只需要在狀態StS_t下執行動作AtA_t,獲得收益Rt+1R_{t+1}到達狀態St+1S_{t+1}後,只需要觀察按照策略π\pi所有可能的動作AtA_t與狀態St+1S_{t+1}的二元組,無須執行。

3.3 期望SARSA

  另外再介紹一個策略控制方法——期望SARSA,其所描述的則是下一時刻的所有(狀態-動作)二元組的期望值作爲估計值,其回溯圖如圖:
在這裏插入圖片描述
更新公式如下:

Q(St,At)=Q(St,At)+α[Rt+1+γaπ(aSt+1)Q(St+1,a)Q(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \alpha[R_{t+1} + \gamma \sum_{a}\pi(a|S_{t+1})Q(S_{t+1},a) - Q(S_t,A_t)]

我們結合SARSA和Q學習一起來看這三個算法的性能:
在這裏插入圖片描述
事實上,在同一個α\alpha下,期望SARSA表現的更出色。

  最後總結一下三個控制策略的一些區別,SARSA是將遵循同一個策略,下一時刻的狀態動作二元組的動作價值函數作爲當前的估計值;Q學習則是在行動策略下的採樣,用最大貪心策略對應的最大動作價值函數作爲當前的估計值;期望SARSA則是將下一時刻所有的狀態動作二元組的動作價值的期望值作爲當前的估計值。從性能的排序來看,從長遠性能來看,期望SARSA > Q > SARSA,從短期性能角度看,期望SARSA > SARSA > Q。因此說期望SARSA更優。

四、最大化偏差與雙學習

  我們知道蒙特卡洛是無偏估計,而時序差分是一個有偏估計。因爲時序差分是建立在對價值函數估計的基礎上來預測,換句話說,本身執行採樣的過程就是一種預測過程,而實際價值使用估計值則又是一個近似的過程,所以說時序差分是包含兩次估計的方法,會產生一定的正偏差,也叫做最大化偏差。
  解決這樣的辦法是採用雙學習,我們以雙Q學習爲例,其算法流程如下所示:

在這裏插入圖片描述
我們首先將所有采樣序列(相當於樣本)劃分爲兩個子集,並基於兩個子集分別訓練兩個Q值 Q1,Q2Q_1,Q_2,在迭代過程中,更新Q1Q_1時使用的樣本是Q1Q_1對應的樣本,但採用的估計值是Q2Q_2;同理更新Q2Q_2時使用的樣本是Q2Q_2對應的樣本,但採用的估計值是Q1Q_1;這樣交叉進行。雙學習才一定程度上可以緩解最大化偏差,防止同在一個樣本上出現的問題。

五、總結

  時序差分法是結合了動態規劃和蒙特卡洛兩者思想,使用蒙特卡洛的採樣方法,在經驗中學習。但在每一步執行過程中,並不是等待完整的序列,而是邊採樣邊學習。本文描述的是TD(0)單步法,其自舉的範圍只有一步,其實只自舉一步未免顯得智能體的眼光很短錢,事實上,蒙特卡洛也是一種特殊的時序差分,只不過其自舉的是整個序列,雖然眼光最長遠,但很耗時間。那有沒有介於兩個極端之間的呢?有!它就是TD(n),叫做n步自舉法,也叫做多步引導法,其描述的則是多個步之後的價值作爲當前時刻的估計值,簡單的理解則是估計的範圍不長也不短,眼光恰當正好,在一般情況下,我們也比較推薦使用TD(0)和TD(n)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章