本文主要內容:
- Finite Difference Policy Gradient
- Monte-Carlo Policy Gradient
上節課我們使用參數估計了價值函數和行動-價值函數,而當講到策略時,我們只提到ϵ-greedy。在這節課,我們將會直接參數化策略πθ(s,a)=P(a∣s,θ)。
增強學習可分爲Value-Based、Policy-Based以及二者結合的Actor-Critic。Value-Based的增強學習的策略(比如ϵ-greedy)是不變的,即在某個狀態,選擇哪種行動是固定的。Policy-Based的增強學習會學習不同的策略,即在某個狀態下多少的概率怎麼做,這個概率可能會不斷地調整。policy-based和value-based如下圖所示:
Policy-Based的增強學習優點有:
- 能收斂到能達到的最優解
- 在高維空間或連續的行爲空間中高效
- 能學習隨機策略
缺點:
- 通常收斂到局部最優而非全局最優
- 評估一個策略通常低效(這個過程可能慢,但是具有更高的可變性,其中也會出現很多並不有效的嘗試),而且方差高
那麼給定一個具有參數θ的策略πθ(s,a),判斷這個策略的優劣?通常有三種方法:
- 使用初始價值來判斷:J1(θ)=Vπθ(s1)=Eπθ[v1]
- 使用平均價值:JavV(θ)=∑sdπθ(s)Vπθ(s)
- 使用每次time-step的平均獎勵:JavR(θ)=∑sdπθ(s)∑aπθ(s,a)Rsa,其中dπθ(s)是策略πθ的馬爾科夫鏈的平穩分佈(也就是當應用策略πθ,達到收斂的分佈)。
通常使用梯度下降法通過最大化J(θ)來確定θ的取值。定義策略梯度爲:
∇θJ(θ)=⎝⎜⎜⎛∂θ1∂J(θ)⋮∂θn∂J(θ)⎠⎟⎟⎞
假設策略πθ爲零的時候可微,並且已知梯度∇θπθ(s,a),定義∇θlogπθ(s,a)爲得分函數(score function)。二者關係如下:
因爲∇θlogπθ(s,a)=πθ(s,a)∇θπθ(s,a)
所以
∇θπθ(s,a)=πθ(s,a)πθ(s,a)∇θπθ(s,a)=πθ(s,a)∇θlogπθ(s,a)
接下來我們考慮一個只走一步的MDP,對它使用策略梯度下降。πθ(s,a)表示關於參數θ的函數,映射是p(a∣s,θ)。它在狀態s向前走一步,獲得獎勵r=Rs,a。那麼選擇行動a的獎勵爲πθ(s,a)Rs,a,在狀態s的加權獎勵爲∑a∈Aπθ(s,a)Rs,a,應用策略所能獲得的獎勵期望及梯度爲:
J(θ)=Eπθ[r]=s∈S∑d(s)a∈A∑πθ(s,a)Rs,a∇θJ(θ)=s∈S∑d(s)a∈A∑πθ(s,a)∇θlogπθ(s,a)Rs,a=Eπθ[∇θlogπθ(s,a)r]
再考慮走了多步的MDP,使用Qπ(s,a)代替獎勵值r,對於任意可微的策略,策略梯度爲:
∇θJ(θ)=Eπθ[∇θlogπθ(s,a)Qπθ(s,a)]
Monte-Carlo策略梯度通過採樣episode來更新參數:
使用隨機梯度上升法更新參數;使用策略梯度法;使用return vt作爲Qπθ(st,at)的無偏估計。則Δθt=α∇θlogπθ(st,at)vt,具體如下:
Monte-Carlo策略梯度的方差較高,因此放棄用return來估計行動-價值函數Q,而是使用critic來估計Q。Qπθ(s,a)≈Qw(s,a)。這是一個名爲actor-critic的算法,具有兩套參數。(1)critic的參數爲w。(2)actor的參數爲θ,根據critic建議的方向更新。
critic其實就是在評估策略。假設Q約爲特徵的線性組合:Qw(s,a)=ϕ(s,a)Tw。critic根據線性TD(0)來更新w,actor通過策略梯度來更新θ。
在actor-critic算法中,對策略進行了估計,這會產生誤差,但是當滿足以下兩個條件時,策略梯度是準確的
- 價值函數的估計值沒有和策略相違背。∇wQw(s,a)=∇θlogπθ(s,a)
- 價值函數的參數w能夠最小化誤差:ϵ=Eπθ[(Qπθ(s,a)−Qw(s,a))2]
另外,通過將策略梯度減去一個基線函數B(s),可以在不改變期望的情況下,降低方差。證明不改變期望,就是證明相加和爲0。
Eπθ[∇θlogπθ(s,a)B(s)]=s∈S∑dπθ(s)a∑∇θπθ(s,a)B(s)=s∈S∑dπθ(s)B(s)∇θa∈A∑πθ(s,a)=0
狀態價值函數Vπθ(s)是一個好的基線。因此可以通過使用優勢函數**(advantage function)**Aπθ(s,a)重寫價值梯度函數。
Aπθ(s,a)=Qπθ(s,a)−Vπθ(s)∇θJ(θ)=Eπθ[∇θlogπθ(s,a)Aπθ(s,a)]
設Vπθ(s)是真實的價值函數,TD算法利用bellman方程來逼近真實值,誤差爲δπθ=r+γVπθ(s′)−Vπθ(s)。該誤差是優勢函數的無偏估計。因此我們可以使用該誤差計算策略梯度:
∇θJ(θ)=Eπθ[∇θlogπθ(s,a)δπθ]
該方法只需要critic,不需要actor。
最後總結一下策略梯度算法: