強化學習導論 | 第六章 時序差分方法

前面講到的動態規劃方法和蒙特卡洛方法都可以用來計算價值函數。動態規劃方法是model-based的,需要知道狀態的轉換概率,某個狀態的價值是根據其後續的狀態價值計算的;蒙特卡洛方法是model-free的,不需要知道狀態的轉換概率,某個狀態的價值是根據從該狀態開始到軌跡結束的折扣獎勵來計算的。本章的時序差分方法是對動態規劃方法和蒙特卡洛方法的結合,跟蒙特卡洛方法一樣,也是根據經驗來學習,而不需要知道狀態的轉換概率,跟動態規劃方法類似的,價值的更新不需要等到完成的軌跡走完,而是根據已獲得的獎勵和後續狀態的估計獎勵來計算。

時序差分法 Temporal-Difference Learning,簡稱TD
蒙特卡洛方法 Monte Carlo Methods, 簡稱MC

1. TD預測

TD和MC一樣,都是從經驗中學習,回想MC方法在計算狀態價值時的迭代公式:
V(St)=V(St)+1N(St)(GtV(St))V(S_t) = V(S_t) + \frac{1}{N(S_t)}(G_t - V(S_t))

在MC方法中,GtG_t的計算公式爲:
Gt=Rt+1+γRt+2+γ2Rt+3++γT1RTG_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots + \gamma^{T-1} R_{T}

即在一個完成的軌跡結束之後,更新該軌跡中出現的所有狀態的價值。

但在TD方法中,不再等到軌跡結束之後更新價值,而是走一步就可以更新。當前時刻tt的獎勵GtG_t可以表示爲:
Gt=Rt+1+γV(St+1)G_t = R_{t+1} + \gamma V(S_{t+1})

上式表示,時刻tt的狀態StS_t得到的獎勵等於做某個動作得到的即時獎勵Rt+1R_{t+1}以及下一個狀態的估計價值乘以折扣因子的和。這裏的GtG_t我們成爲目標價值。

所以,TD中,價值更新式爲:
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)]

其中的α\alpha表示每次從目標價值和估計價值的差距中學習多少來更新V(St)V(S_t)

這種方法稱爲TD(0),也叫做one-step TD,即走一步就更新價值。

下面給出TD(0)的更新價值的代碼描述:
在這裏插入圖片描述
上面的代碼對於輸入的策略π\pi進行評估,即得到各個狀態的價值。算法具體步驟爲:初始化價值V(s)V(s)和更新步長α\alpha。在一個episode中,初始化所在狀態SS,根據策略選擇一個動作AA,執行該動作,得到即使獎勵RR和下一個狀態SS',然後利用上面講到的更新公式,更新狀態SS的價值。接着對下一個狀態SS'執行相同的操作。直至達到終止狀態,再進行下一個episode。

這裏稱TD方法是bootstrapping(利用後繼狀態的值函數估計當前值函數)的,像DP一樣。

TD methods combine the sampling of MC with the bootstrapping of DP.

2. 例子:MC和TD的區別

假設我們有以下8個軌跡序列:
A,0,B,0B,1B,1B,1B,1B,1B,1B,0A, 0, B, 0 \quad \quad \quad \quad B, 1 \\ B, 1 \quad \quad \quad \quad \quad \quad B, 1\\ B, 1 \quad \quad \quad \quad \quad \quad B, 1\\ B, 1\quad \quad \quad \quad \quad \quad B, 0

我們分別利用MC和TD方法計算狀態AA和狀態BB的價值。設折扣因子γ\gamma =1。

MC方法:
包含狀態AA的軌跡序列只有一個,所以AA的價值就是該軌跡的折扣獎勵。
V(A)=RA+γRB=0+10=0V(A) = R_A + \gamma * R_B = 0 + 1*0 = 0

包含狀態BB的軌跡序列有8個,且BB都是終止狀態,所以V(B)V(B)應該是各個RBR_B的平均值。
V(B)=61+208=34V(B) = \frac{6*1 + 2 * 0}{8} = \frac{3}4{}

TD方法:
對於狀態BB,因爲它沒有後續狀態,所以它的價值就等於各個即時獎勵的平均值。
V(B)=61+208=34V(B) = \frac{6*1 + 2 * 0}{8} = \frac{3}4{}

但對於狀態AA,它的後續狀態爲BB,所以價值計算爲:
V(A)=RA+γV(B)=0+134=34V(A) = R_{A} + \gamma * V(B) = 0 + 1 * \frac{3}{4} = \frac{3}{4}

從上面兩個方法的計算過程,我們可以知道MC和TD的區別:

  • MC是在一個軌跡序列結束之後才更新其中的狀態價值;TD(0)是從某狀態走一步就可以直接更新該狀態的價值。所以TD(0)可以在沒有最終結果的時候進行學習。
  • TD是根據即時獎勵和後續狀態的估計價值作爲目標價值的,所以這個估計是有偏的。而MC使用的是真實的獎勵,是無偏估計。
  • TD估計的方差一般要比MC小很多。因爲TD的目標價值計算涉及到的中間狀態少,變化幅度不大。而MC需要一條完整的軌跡序列,中間會經理衆多隨機態,方差較大。

3. Sarsa: On-policy TD 控制

On-policy控制是採樣軌跡和我們要評估的策略是一樣的。這裏我們學習的不是狀態價值函數,而是動作價值函數,即Q(s,a)Q(s, a)。更新該值的方法跟更新狀態價值V(s)V(s)的方式一致:
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)]

每個轉換對應的是一個五元組:(St,At,Rt+1,St+1,At+1)(S_t, A_t, R_{t+1}, S_{t+1}, A_{t+1}),這也是sarsa名字的由來。

有了更新公式,我們就可以得到sarsa算法的僞代碼描述。在這裏插入圖片描述

可以看出,上面的代碼描述與第一節中給出的更新狀態價值函數的代碼基本一致,只有將狀態價值的更新變爲了動作價值函數的更新。得到了每個狀態下執行每個動作的價值,我們就可以很容易的確定策略了。

on-policy體現在採樣的策略爲ϵ\epsilon-greedy,更新價值函數的時候使用的策略也是ϵ\epsilon-greedy。

4. Q-learning: Off-policy TD 控制

off-policy控制是指我們使用兩個策略,一個策略用來採樣軌跡,稱爲“行爲策略”,另一個策略用於更新價值函數,稱爲“目標策略”。

採樣策略一般更具探索性,比如:ϵ\epsilon-greedy。目標策略一般採取貪心策略。

基於此,我們可以得到Q-learning算法中動作價值函數的更新公式:
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)]

公式中的目標價值表示爲Rt+1+γmaxaQ(St+1,a)R_{t+1} + \gamma \max_{a} Q(S_{t+1}, a),指即時獎勵和下一個狀態下所有動作價值中的最大價值的和。這裏就說明更新價值函數時採用的是貪心策略。

由此,我們可以得到Q-learning的僞代碼描述:
在這裏插入圖片描述
off-policy體現在:採樣策略爲ϵ\epsilon-greedy,更新價值函數時採樣的貪心策略。

5. 總結

本章主要講了TD(0)方法用於評估策略的思想,即使用即時獎勵和後續狀態的價值估計來評估當前狀態的價值。在策略控制中,主要是估計動作價值函數,以此來確定最優策略。並且,根據on-policy和off-policy的區別,提出了兩個對應的算法sarsa和q-learning。這兩個算法思想一致,只有在更新動作價值函數時有不同。

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