【强化学习】Actor-Critic
目錄
- Actor-Critic算法
- 概述
- 可選形式
- 算法流程
- 小結
強化學習筆記,內容來自 劉建平老師的博客
?
Actor-Critic算法
概述
? Actor-Critic包括兩部分:演員(Actor)、評價者(Critic)。其中Actor使用策略函數,負責生成動作(Action)并和環境交互,而Critic使用價值函數,負責評估Actor的表現,并指導Actor下一階段的動作。在Policy-Gradient中,策略函數就是Actor,但是那里沒有Critic,當時使用了蒙特卡羅法來計算每一步的價值部分從而替代了Critic的功能,但是場景比較受限。因此現在使用類似DQN中用的價值函數來替代蒙特卡羅法,作為一個比較通用的Critic。
? 所以Actor-Critic算法中做了兩組近似:
? 策略函數的近似:
?
? 價值函數的近似:
?
? 也就是說,蒙特卡羅reinforce算法參數的參數更新公式(如下)中,vt的求取不再用蒙特卡羅法那樣采樣平均而是用近似價值函數求取。而分值函數部分?θlogπθ(s,a)不變。
?
? 通常使用Q網絡來近似價值函數,所以匯總來說,就是Critic通過Q網絡計算狀態的最優價值vt,而Actor利用vt這個最優價值迭代更新策略函數的參數θ,進而選擇動作,并得到反饋和新的狀態,Critic使用反饋和新的狀態更新Q網絡參數w,在后面Critic會使用新的網絡參數w來幫Actor計算狀態的最優價值vt。
?
?
可選形式
? Critic的評估點有多種選擇:
? a)基于狀態價值,這是上面使用的評估點,其策略函數參數更新的算法公式是:
?
? b)基于動作價值,在DQN中,一般使用的都是動作價值函數Q來做價值評估,其策略函數參數更新的算法公式是:
?
? c)基于TD誤差,δ(t)=Rt+1+γV(St+1)?V(St)或者δ(t)=Rt+1+γQ(St+1,At+1)?Q(St,At),其策略函數參數更新的算法公式是:
?
? d)基于優勢函數,A(S,A,w,β)=Q(S,A,w,α,β)?V(S,w,α),其策略函數參數更新的算法公式是:
?
? e)基于TD(λ)誤差,一般都是基于后向TD(λ)誤差δ(t)E(t),其策略函數參數更新的算法公式是:
?
? 對于Critic本身的模型參數w,一般都是使用均方誤差損失函數來做迭代更新,類似DQN系列中的迭代方法。
?
?
算法流程
(評估點基于TD誤差,Critic使用神經網絡來計算TD誤差并更新網絡參數,Actor也使用神經網絡來更新網絡參數)
輸入:迭代輪數T、狀態特征維度n、動作集A、步長α、β、衰減因子γ、探索率?、Critic網絡結構、Actor網絡結構
輸出:Actor網絡參數θ、Critic網絡參數w
? 1. 隨機初始化所有的狀態和動作對應的價值Q
? 2 .for i in [ 1, T ]:
? a)初始化S為當前狀態序列的第一個狀態,拿到其特征向量Φ(S)
? b)把Φ(S)輸入Actor網絡,得到輸出動作A,并由環境獲得新狀態S’、獎勵R
? c)把Φ(S)、Φ(S‘ )分別輸入Critic網絡,分別得到輸出的Q值V(S)、V(S’ )
? d)計算TD誤差 δ = R + γV(S′ ) ? V(S)
? e)計算均方差損失函數 ∑(R+γV(S′)?V(S,w))^2,梯度反向傳播更新Critic網絡參數w
? f)更新Actor網絡參數:
?
? (這里以TD誤差為評估點, 分值函數?θlogπθ(St,A)可以選擇softmax或者高斯分值函數 )
?
?
小結
? 基本版的Actor-Critic算法已經是一個很好的算法框架,但是離實際應用還比較遠。主要原因是這里有兩個神經網絡,都需要梯度更新,而且互相依賴,所以難以收斂。
? 目前改進的比較好的有兩個經典算法,一個是DDPG算法,使用了雙Actor神經網絡和雙Critic神經網絡的方法來改善收斂性。這個方法在從DQN到Nature DQN的過程中用過。另一個是A3C算法,使用了多線程的方式,一個主線程負責更新Actor和Critic的參數,多個輔線程負責分別和環境交互,得到梯度更新值,匯總更新主線程的參數。而所有的輔線程會定期從主線程更新網絡參數。這些輔線程起到了類似DQN中經驗回放的作用,但是效果更好。
總結
以上是生活随笔為你收集整理的【强化学习】Actor-Critic的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【强化学习】策略梯度Policy-Gra
- 下一篇: 【强化学习】DDPG