深度增強學習David Silver(七)——Policy Gradient

本文主要內容:

  • Finite Difference Policy Gradient
  • Monte-Carlo Policy Gradient

上節課我們使用參數估計了價值函數和行動-價值函數,而當講到策略時,我們只提到ϵ\epsilon-greedy。在這節課,我們將會直接參數化策略πθ(s,a)=P(as,θ)\pi_\theta(s,a)=\sf{P}(a|s,\theta)

增強學習可分爲Value-Based、Policy-Based以及二者結合的Actor-Critic。Value-Based的增強學習的策略(比如ϵ\epsilon-greedy)是不變的,即在某個狀態,選擇哪種行動是固定的。Policy-Based的增強學習會學習不同的策略,即在某個狀態下多少的概率怎麼做,這個概率可能會不斷地調整。policy-based和value-based如下圖所示:
這裏寫圖片描述

Policy-Based的增強學習優點有:

  • 能收斂到能達到的最優解
  • 在高維空間或連續的行爲空間中高效
  • 能學習隨機策略

缺點:

  • 通常收斂到局部最優而非全局最優
  • 評估一個策略通常低效(這個過程可能慢,但是具有更高的可變性,其中也會出現很多並不有效的嘗試),而且方差高

那麼給定一個具有參數θ\theta的策略πθ(s,a)\pi_\theta(s,a),判斷這個策略的優劣?通常有三種方法:

  • 使用初始價值來判斷:J1(θ)=Vπθ(s1)=Eπθ[v1]J_1(\theta)=V^{\pi_\theta}(s_1)=\sf{E}_{\pi_\theta}[v_1]
  • 使用平均價值JavV(θ)=sdπθ(s)Vπθ(s)J_{avV}(\theta)=\sum_sd^{\pi_\theta}(s)V^{\pi_\theta}(s)
  • 使用每次time-step的平均獎勵JavR(θ)=sdπθ(s)aπθ(s,a)RsaJ_{avR}(\theta)=\sum_sd^{\pi_\theta}(s)\sum_a\pi_\theta(s,a)R_s^a,其中dπθ(s)d_{\pi_\theta}(s)是策略πθ\pi_\theta的馬爾科夫鏈的平穩分佈(也就是當應用策略πθ\pi_\theta,達到收斂的分佈)。

通常使用梯度下降法通過最大化J(θ)J(\theta)來確定θ\theta的取值。定義策略梯度爲:
θJ(θ)=(J(θ)θ1J(θ)θn)\nabla_\theta J(\theta)=\begin{pmatrix} \frac{\partial J(\theta)}{\partial \theta_1} \\ \vdots \\ \frac{\partial J(\theta)}{\partial \theta_n} \end{pmatrix}

假設策略πθ\pi_\theta爲零的時候可微,並且已知梯度θπθ(s,a)\nabla_\theta \pi_\theta(s,a),定義θlogπθ(s,a)\nabla_\theta log \pi_\theta(s,a)爲得分函數(score function)。二者關係如下:
因爲θlogπθ(s,a)=θπθ(s,a)πθ(s,a)\nabla_\theta log \pi_\theta(s,a)=\frac{\nabla_\theta \pi_\theta(s,a)}{\pi_\theta(s,a)}
所以
θπθ(s,a)=πθ(s,a)θπθ(s,a)πθ(s,a)=πθ(s,a)θlogπθ(s,a)\nabla_\theta \pi_\theta(s,a)=\pi_\theta(s,a) \frac{\nabla_\theta \pi_\theta(s,a)}{\pi_\theta(s,a)}=\pi_\theta(s,a) \nabla_\theta log \pi_\theta(s,a)

接下來我們考慮一個只走一步的MDP,對它使用策略梯度下降。πθ(s,a)\pi_\theta(s,a)表示關於參數θ\theta的函數,映射是p(as,θ)p(a|s,\theta)。它在狀態s向前走一步,獲得獎勵r=Rs,ar=R_{s,a}。那麼選擇行動a的獎勵爲πθ(s,a)Rs,a\pi_\theta (s,a)R_{s,a},在狀態s的加權獎勵爲aAπθ(s,a)Rs,a\sum_{a \in A} \pi_\theta(s,a) R_{s,a},應用策略所能獲得的獎勵期望及梯度爲:
J(θ)=Eπθ[r]=sSd(s)aAπθ(s,a)Rs,aθJ(θ)=sSd(s)aAπθ(s,a)θlogπθ(s,a)Rs,a=Eπθ[θlogπθ(s,a)r]J(\theta)=\mathbb{E}_{\pi_\theta}[r]=\sum_{s \in S}d(s)\sum_{a \in A} \pi_\theta(s,a) R_{s,a} \\ \nabla_\theta J(\theta)=\color{red}{\sum_{s \in S}d(s)\sum_{a \in A} \pi_\theta(s,a)} \nabla_\theta log \pi_\theta(s,a) R_{s,a}=\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a)r]

再考慮走了多步的MDP,使用Qπ(s,a)Q^\pi(s,a)代替獎勵值r,對於任意可微的策略,策略梯度爲:
θJ(θ)=Eπθ[θlogπθ(s,a)Qπθ(s,a)]\nabla_\theta J(\theta)=\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a)Q^{\pi_\theta}(s,a)]

Monte-Carlo策略梯度通過採樣episode來更新參數:
使用隨機梯度上升法更新參數;使用策略梯度法;使用return vtv_t作爲Qπθ(st,at)Q^{\pi_\theta}(s_t,a_t)的無偏估計。則Δθt=αθlogπθ(st,at)vt\Delta \theta_t=\alpha \nabla_\theta log \pi_\theta(s_t,a_t)v_t,具體如下:
這裏寫圖片描述

Monte-Carlo策略梯度的方差較高,因此放棄用return來估計行動-價值函數Q,而是使用critic來估計Q。Qπθ(s,a)Qw(s,a)Q^{\pi_\theta}(s,a) \approx Q_w(s,a)。這是一個名爲actor-critic的算法,具有兩套參數。(1)critic的參數爲w。(2)actor的參數爲θ\theta,根據critic建議的方向更新。

critic其實就是在評估策略。假設Q約爲特徵的線性組合:Qw(s,a)=ϕ(s,a)TwQ_w(s,a)=\phi(s,a)^T w。critic根據線性TD(0)來更新w,actor通過策略梯度來更新θ\theta
這裏寫圖片描述

在actor-critic算法中,對策略進行了估計,這會產生誤差,但是當滿足以下兩個條件時,策略梯度是準確的

  1. 價值函數的估計值沒有和策略相違背。wQw(s,a)=θlogπθ(s,a)\nabla _w Q_w(s,a)=\nabla_\theta log \pi_\theta(s,a)
  2. 價值函數的參數w能夠最小化誤差:ϵ=Eπθ[(Qπθ(s,a)Qw(s,a))2]\epsilon = \mathbb{E}_{\pi_\theta}[(Q^{\pi_\theta}(s,a)-Q_w(s,a))^2]

另外,通過將策略梯度減去一個基線函數B(s),可以在不改變期望的情況下,降低方差。證明不改變期望,就是證明相加和爲0。
Eπθ[θlogπθ(s,a)B(s)]=sSdπθ(s)aθπθ(s,a)B(s)=sSdπθ(s)B(s)θaAπθ(s,a)=0\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a)B(s)]=\sum_{s \in S}d^{\pi_\theta}(s)\sum_a \nabla_\theta \pi_\theta(s,a)B(s)\\ =\sum_{s \in S}d^{\pi_\theta}(s)B(s) \nabla_\theta \sum_{a \in A} \pi_\theta(s,a)=0

狀態價值函數Vπθ(s)V^{\pi_\theta}(s)是一個好的基線。因此可以通過使用優勢函數**(advantage function)**Aπθ(s,a)A^{\pi_\theta}(s,a)重寫價值梯度函數。
Aπθ(s,a)=Qπθ(s,a)Vπθ(s)θJ(θ)=Eπθ[θlogπθ(s,a)Aπθ(s,a)]A^{\pi_\theta}(s,a)=Q^{\pi_\theta}(s,a)-V^{\pi_\theta}(s)\\ \nabla_\theta J(\theta)=\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a)A^{\pi_\theta}(s,a)]

Vπθ(s)V^{\pi_\theta}(s)是真實的價值函數,TD算法利用bellman方程來逼近真實值,誤差爲δπθ=r+γVπθ(s)Vπθ(s)\delta^{\pi_\theta}=r+\gamma V^{\pi_\theta}(s')-V^{\pi_\theta}(s)。該誤差是優勢函數的無偏估計。因此我們可以使用該誤差計算策略梯度:
θJ(θ)=Eπθ[θlogπθ(s,a)δπθ]\nabla_\theta J(\theta)=\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a) \delta^{\pi_\theta}]
該方法只需要critic,不需要actor。

最後總結一下策略梯度算法:
這裏寫圖片描述

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