本文主要內容: 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)Ras ,其中 dπθ(s) 是策略 πθ 的馬爾科夫鏈的平穩分布(也就是當應用策略 πθ ,達到收斂的分布)。
通常使用梯度下降法通過最大化 J(θ) 來確定 θ 的取值。定義策略梯度為:
∇θJ(θ)=⎛⎝⎜⎜⎜⎜⎜⎜∂J(θ)∂θ1⋮∂J(θ)∂θn⎞⎠⎟⎟⎟⎟⎟⎟
假設策略 πθ 為零的時候可微,並且已知梯度 ∇θπθ(s,a) ,定義 ∇θlogπθ(s,a) 為得分函數(score function)。二者關係如下:
∇θπθ(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∈Sd(s)∑a∈Aπθ(s,a)Rs,a∇θJ(θ)=∑s∈Sd(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∈Sdπθ(s)∑a∇θπθ(s,a)B(s)=∑s∈Sdπθ(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。
最後總結一下策略梯度演算法: