机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)
Actor-Critic
概述
MC策略梯度方法使用了收獲作為狀態價值的估計,它雖然是無偏的,但是噪聲卻比較大,也就是變異性(方差)較高。如果我們能夠相對準確地估計狀態價值,用它來指導策略更新,那么是不是會有更好的學習效果呢?這就是Actor-Critic策略梯度的主要思想。
Actor-Critic的字面意思是“演員-評論”,相當于演員在演戲的同時,有評論家指點,繼而演員演得越來越好。即使用Critic來估計行為價值:
Qw(s,a)≈Qπθ(s,a)Q_w(s,a)\approx Q^{\pi_\theta}(s,a)Qw?(s,a)≈Qπθ?(s,a)
基于Actor-Critic策略梯度學習分為兩部分內容:
1.Critic:更新action-value函數的參數w。
2.Actor:按照Critic得到的價值,引導策略函數參數θ\thetaθ的更新。
?θJ(θ)≈Eπθ[?θlog?πθ(s,a)Qw(s,a)]\nabla_\theta J(\theta)\approx E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)]?θ?J(θ)≈Eπθ??[?θ?logπθ?(s,a)Qw?(s,a)]
Δθ=α?θlog?πθ(s,a)Qw(s,a)\Delta \theta = \alpha \nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)Δθ=α?θ?logπθ?(s,a)Qw?(s,a)
可以看出,Critic做的事情其實是我們已經見過的:策略評估,他要告訴個體,在由參數θ\thetaθ確定的策略πθ\pi_\thetaπθ?到底表現得怎么樣。
Compatible Function Approximation
近似策略梯度的方法引入了Bias,從而得到的策略梯度不一定能最后找到較好的解決方案,例如當近似價值函數引起狀態重名的特征時。
幸運的是,如果我們小心設計近似函數,是可以避免引入bias的。該近似函數需要滿足下面兩個條件:
- 近似價值函數的梯度完全等同于策略函數對數的梯度,即不存在重名情況:
?wQw(s,a)=?θlog?πθ(s,a)\nabla_w Q_w(s,a)=\nabla_\theta \log \pi_\theta(s,a)?w?Qw?(s,a)=?θ?logπθ?(s,a)
- 價值函數參數w使得均方差最小:
?=Eπθ[(Qπθ(s,a)?Qw(s,a))2]\epsilon = E_{\pi_\theta}[(Q^{\pi_\theta}(s,a)-Q_w(s,a))^2]?=Eπθ??[(Qπθ?(s,a)?Qw?(s,a))2]
符合這兩個條件,則認為策略梯度是準確的,即:
?θJ(θ)=Eπθ[?θlog?πθ(s,a)Qw(s,a)]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)]?θ?J(θ)=Eπθ??[?θ?logπθ?(s,a)Qw?(s,a)]
Reducing Variance Using Baseline
除了bias之外,variance也是需要考慮的方面。
我們從策略梯度里抽出一個基準函數B(s),要求這一函數僅與狀態有關,而與行為無關,因而不改變梯度本身。
Eπθ[?θlog?πθ(s,a)B(s)]=∑s∈Sdπθ(s)∑a∈A?θπθ(s,a)B(s)=∑s∈Sdπθ(s)B(s)?θ∑a∈Aπθ(s,a)=0E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)B(s)] = \sum_{s\in S} d^{\pi_\theta}(s)\sum_{a\in 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) = 0Eπθ??[?θ?logπθ?(s,a)B(s)]=s∈S∑?dπθ?(s)a∈A∑??θ?πθ?(s,a)B(s)=s∈S∑?dπθ?(s)B(s)?θ?a∈A∑?πθ?(s,a)=0
由于B(s)與行為無關,可以將其從針對行為a的求和中提出來,同時我們也可以把梯度從求和符號中提出來,而最后一個求和項:策略函數針對所有行為的求和,根據策略函數的定義,這里的結果肯定是1。而常數的梯度是0,因此總的結果等于0。
原則上,和行為無關的函數都可以作為B(s)。一個很好的B(s)就是基于當前狀態的狀態價值函數:Vπθ(s)V^{\pi_\theta}(s)Vπθ?(s)。
所以,我們可以用一個advantage function來改寫策略梯度:
Aπθ(s,a)=Qπθ(s,a)?Vπθ(s)A^{\pi_\theta}(s,a)=Q^{\pi_\theta}(s,a)-V^{\pi_\theta}(s)Aπθ?(s,a)=Qπθ?(s,a)?Vπθ?(s)
上式的現實意義在于評估當個體采取行為a離開s狀態時,究竟比該狀態s總體平均價值要好多少?
?θJ(θ)=Eπθ[?θlog?πθ(s,a)Aπθ(s,a)]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)A^{\pi_\theta}(s,a)]?θ?J(θ)=Eπθ??[?θ?logπθ?(s,a)Aπθ?(s,a)]
advantage function可以明顯減少狀態價值的variance。(通俗的說法就是A的值有正有負,不像Q和V都是正值。)
因此,現在Critic的任務就改為估計advantage function。
在這種情況下,我們需要兩個近似函數也就是兩套參數,一套用來近似狀態價值函數,一套用來近似行為價值函數。即:
Vv(s)≈Vπθ(s)V_v(s)\approx V^{\pi_\theta}(s)Vv?(s)≈Vπθ?(s)
Qw(s,a)≈Qπθ(s,a)Q_w(s,a)\approx Q^{\pi_\theta}(s,a)Qw?(s,a)≈Qπθ?(s,a)
A(s,a)=Qw(s,a)?Vv(s)A(s,a) = Q_w(s,a) - V_v(s)A(s,a)=Qw?(s,a)?Vv?(s)
不過實際操作時,我們并不需要計算兩個近似函數。這里以TD學習為例說明一下。
根據定義,TD誤差δπθ\delta^{\pi_\theta}δπθ?可以根據真實的狀態價值函數Vπθ(s)V^{\pi_\theta}(s)Vπθ?(s)算出:
δπθ=r+γVπθ(s′)?Vπθ(s)\delta^{\pi_\theta} = r + \gamma V^{\pi_\theta}(s') - V^{\pi_\theta}(s)δπθ?=r+γVπθ?(s′)?Vπθ?(s)
因為:
Eπθ[δπθ∣s,a]=Eπθ[r+γVπθ(s′)∣s,a]?Vπθ(s)=Qπθ(s,a)?Vπθ(s)=Aπθ(s,a)E_{\pi_\theta}[\delta^{\pi_\theta} | s,a] = E_{\pi_\theta}[r + \gamma V^{\pi_\theta}(s') | s,a] - V^{\pi_\theta}(s)= Q^{\pi_\theta}(s,a) - V^{\pi_\theta}(s) = A^{\pi_\theta}(s,a)Eπθ??[δπθ?∣s,a]=Eπθ??[r+γVπθ?(s′)∣s,a]?Vπθ?(s)=Qπθ?(s,a)?Vπθ?(s)=Aπθ?(s,a)
可見δπθ\delta^{\pi_\theta}δπθ?就是Aπθ(s,a)A^{\pi_\theta}(s,a)Aπθ?(s,a)的一個無偏估計。
因此,我們就可以使用TD誤差來計算策略梯度:
?θJ(θ)=Eπθ[?θlog?πθ(s,a)δπθ]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)\delta^{\pi_\theta}]?θ?J(θ)=Eπθ??[?θ?logπθ?(s,a)δπθ?]
實際運用時,我們使用一個近似的TD誤差,即用狀態函數的近似函數來代替實際的狀態函數:
δv=r+γVv(s′)?Vv(s)\delta_v = r + \gamma V_v(s') - V_v(s)δv?=r+γVv?(s′)?Vv?(s)
這也就是說,我們只需要一套參數描述狀態價值函數,而不再需要行為價值函數了。
上述方法不僅可用于TD方法,還可用于MC方法等,以下不加討論的給出如下結論:
KaTeX parse error: No such environment: align at position 7: \begin{?a?l?i?g?n?}? \nabla_\theta …
參考
https://zhuanlan.zhihu.com/p/51652845
強化學習這都學不會的話,咳咳,你過來下!
https://mp.weixin.qq.com/s/ce9W3FbLdsqAEyvw6px_RA
Actor Critic——一個融合基于策略梯度和基于值優點的強化學習算法
Integrating Learning and Planning
前面的章節主要介紹了Model-Free RL,下面將講一下Model-Based RL,主要包括如下內容:
-
如何從經歷中直接學習Model。
-
如何基于模型來進行Planning(規劃)。
-
如何將“學習”和“規劃”整合起來。
|
上面兩圖形象的說明了Model-Free RL(左圖)和Model-Based RL(右圖)的差別。
Model-Based RL
上圖比較好的說明了模型學習在整個RL學習中的位置和作用。
我們首先看一下Model的定義:Model是一個參數化(參數為η\etaη)的MDP<S, A, P, R>,其中假定:狀態空間S和行為空間A是已知的,則M=<Pη,Rη>M=<P_\eta, R_\eta>M=<Pη?,Rη?>,其中Pη≈P,Rη≈RP_\eta \approx P, R_\eta \approx RPη?≈P,Rη?≈R。則:
St+1~Pη(St+1∣St,At)S_{t+1} \sim P_\eta (S_{t+1} | S_t, A_t)St+1?~Pη?(St+1?∣St?,At?)
Rt+1=Rη(Rt+1∣St,At)R_{t+1} = R_\eta (R_{t+1} | S_t, A_t)Rt+1?=Rη?(Rt+1?∣St?,At?)
通常我們需要如下的假設,即狀態轉移函數和獎勵函數是條件獨立的:
P[St+1,Rt+1∣St,At]=P[St+1∣St,At]P[Rt+1∣St,At]P[S_{t+1}, R_{t+1} | S_t, A_t] = P[S_{t+1} | S_t, A_t] P[R_{t+1} | S_t, A_t]P[St+1?,Rt+1?∣St?,At?]=P[St+1?∣St?,At?]P[Rt+1?∣St?,At?]
Model Learning
所謂Model Learning是指:從experience{S1,A1,R2,…,ST}\{S_1, A_1, R_2, \dots, S_T\}{S1?,A1?,R2?,…,ST?},學習
S1,A1→R2,S2S_1, A_1\to R_2,S_2S1?,A1?→R2?,S2?
S2,A2→R3,S3S_2, A_2\to R_3,S_3S2?,A2?→R3?,S3?
…\dots…
ST?1,AT?1→RT,STS_{T-1}, A_{T-1}\to R_T,S_TST?1?,AT?1?→RT?,ST?
這實際上是一個監督學習的問題。其中,s,a→rs,a\to rs,a→r是一個回歸問題(regression problem),而s,a→s′s,a\to s's,a→s′是一個密度估計問題(density estimation problem)。
選擇一個損失函數,比如均方差,KL散度等,優化參數η\etaη來最小化經驗損失(empirical loss)。所有監督學習相關的算法都可以用來解決上述兩個問題。
根據使用的算法不同,可以有如下多種模型:查表式(Table lookup Model)、線性期望模型(Linear Expectation Model)、線性高斯模型(Linear Gaussian Model)、高斯決策模型(Gaussian Process Model)、和深信度神經網絡模型(Deep Belief Network Model)等。
這里主要以查表模型來解釋模型的構建。
總結
以上是生活随笔為你收集整理的机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(三十四)——策略梯度
- 下一篇: 机器学习(三十六)——Integrati