[Reinforcement Learning] Policy Gradient Methods 2019-04-14

上一篇博文的內容整理了我們如何去近似價值函數或者是動作價值函數的方法:[V_{heta}(s)approx V^{pi}(s) \Q_{heta}(s)approx Q^{pi}(s, a)]通過機器學習的方法我們一旦近似了價值函數或者是動作價值函數就可以通過一些策略進行控制,比如 (epsilon)-greedy。

那么我們簡單回顧下 RL 的學習目標:通過 agent 與環境進行交互,獲取累計回報最大化。既然我們最終要學習如何與環境交互的策略,那么我們可以直接學習策略嗎,而之前先近似價值函數,再通過貪婪策略控制的思路更像是"曲線救國"。這就是本篇文章的內容,我們如何直接來學習策略,用數學的形式表達就是:[pi_{heta}(s, a) = P[a | s, heta]]

這就是被稱為策略梯度(Policy Gradient,簡稱PG)算法。

當然,本篇內容同樣的是針對 model-free 的強化學習。

Value-Based vs. Policy-Based RL

Value-Based:

學習價值函數Implicit policy,比如 (epsilon)-greedy

Policy-Based:

沒有價值函數直接學習策略

Actor-Critic:

學習價值函數學習策略

三者的關系可以形式化地表示如下:

認識到 Value-Based 與 Policy-Based 區別后,我們再來討論下 Policy-Based RL 的優缺點:

優點:

收斂性更好對于具有高維或者連續動作空間的問題更加有效可以學習隨機策略

缺點:

絕大多數情況下收斂到局部最優點,而非全局最優評估一個策略一般情況下低效且存在較高的方差

Policy Search

我們首先定義下目標函數。

Policy Objective Functions

目標:給定一個帶有參數 (heta) 的策略 (pi_{heta}(s, a)),找到最優的參數 (heta)但是我們如何評估不同參數下策略 (pi_{heta}(s, a)) 的優劣呢?

對于episode 任務來說,我們可以使用start value:[J_1(heta)=V^{pi_{heta}}(s_1)=E_{pi_{heta}}[v_1]]對于連續性任務來說,我們可以使用 average value:[J_{avV}(heta)=sum_{s}d^{pi_{heta}}(s)V^{pi_{heta}}(s)]或者每一步的平均回報:[J_{avR}(heta)=sum_{s}d^{pi_{heta}}(s)sum_{a}pi_{heta}(s, a)R_s^a]其中 (d^{pi_{heta}}(s)) 是馬爾卡夫鏈在 (pi_{heta}) 下的靜態分布。

Policy Optimisation

在明確目標以后,我們再來看基于策略的 RL 為一個典型的優化問題:找出 (heta) 最大化 (J(heta))最優化的方法有很多,比如不依賴梯度(gradient-free)的算法:

爬山算法模擬退火進化算法...

但是一般來說,如果我們能在問題中獲得梯度的話,基于梯度的最優化方法具有比較好的效果:

梯度下降共軛梯度擬牛頓法...

我們本篇討論梯度下降的方法。

策略梯度定理

假設策略 (pi_{heta}) 為零的時候可微,并且已知梯度 (riangledown_{heta}pi_{heta}(s, a)),定義 (riangledown_{heta}logpi_{heta}(s, a)) 為得分函數(score function)。二者關系如下:[riangledown_{heta}pi_{heta}(s, a) = riangledown_{heta}pi_{heta}(s, a) frac{riangledown_{heta}pi_{heta}(s, a)}{pi_{heta}(s, a)}=pi_{heta}(s, a)riangledown_{heta}logpi_{heta}(s, a)]接下來我們考慮一個只走一步的MDP,對它使用策略梯度下降。(pi_{heta}(s, a)) 表示關于參數 (heta) 的函數,映射是 (p(a|s,heta))。它在狀態 (s) 向前走一步,獲得獎勵(r=R_{s, a})。那么選擇行動 (a) 的獎勵為 (pi_{heta}(s, a)R_{s, a}),在狀態 (s) 的加權獎勵為 (sum_{ain A}pi_{heta}(s, a)R_{s, a}),應用策略所能獲得的獎勵期望及梯度為:[J(heta)=E_{pi_{heta}}[r] = sum_{sin S}d(s)sum_{ain A}pi_{heta}(s, a)R_{s, a}\riangledown_{heta}J(heta) = color{Red}{sum_{sin S}d(s)sum_{ain A}pi_{heta}(s, a)}riangledown_{heta}logpi_{heta}(s, a)R_{s, a}=E_{pi_{heta}}[riangledown_{heta}logpi_{heta}(s, a)r]]

再考慮走了多步的MDP,使用 (Q^{pi_{heta}}(s, a)) 代替獎勵值 (r),對于任意可微的策略,策略梯度為:[riangledown_{heta}J(heta) = E_{pi_{heta}}[riangledown_{heta}logpi_{heta}(s, a)Q^{pi_{heta}}(s, a)]]

策略梯度定理

對于任意可微策略 (pi_{heta}(s, a)),任意策略目標方程 (J = J_1, J_{avR}, ...),策略梯度:[riangledown_{heta}J(heta) = E_{pi_{heta}}[riangledown_{heta}logpi_{heta}(s, a)Q^{pi_{heta}}(s, a)]]

蒙特卡洛策略梯度算法(REINFORCE)

Monte-Carlo策略梯度算法,即REINFORCE:

通過采樣episode來更新參數:;使用隨機梯度上升法更新參數;使用return (v_t) 作為 (Q^{pi_{heta}}(s_t, a_t)) 的無偏估計

(Deltaheta_t = alpha riangledown_{heta}logpi_{heta}(s_t, a_t)v_t),具體如下:

Actir-Critic 策略梯度算法

Monte-Carlo策略梯度的方差較高,因此放棄用return來估計行動-價值函數Q,而是使用 critic 來估計Q:[Q_w(s, a)approx Q^{pi_{heta}}(s, a)]這就是大名鼎鼎的 Actor-Critic 算法,它有兩套參數:

Critic:更新動作價值函數參數 (w)Actor: 朝著 Critic 方向更新策略參數 (heta)

Actor-Critic 算法是一個近似的策略梯度算法:[riangledown_heta J(heta)approx E_{pi_{heta}}[riangledown_{heta}log pi_{heta}(s, a)Q_w(s, a)]\Deltaheta = alphariangledown_hetalogpi_{heta}(s,a)Q_w(s,a)]

Critic 本質就是在進行策略評估:How good is policy (pi_{heta}) for current parameters (heta).策略評估我們之前介紹過MC、TD、TD((lambda)),以及價值函數近似方法。如下所示,簡單的 Actir-Critic 算法 Critic 為動作價值函數近似,使用最為簡單的線性方程,即:(Q_w(s, a) = phi(s, a)^T w),具體的偽代碼如下所示:

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

價值函數的估計值沒有和策略相違背,即:(riangledown_w Q_w(s,a) = riangledown_hetalogpi_{heta}(s,a))價值函數的參數w能夠最小化誤差,即:(epsilon = E_{pi_{heta}}[(Q^{pi_{heta}}(s, a) - Q_w(s,a))^2])

優勢函數

另外,我們可以通過將策略梯度減去一個基線函數(baseline funtion)B(s),可以在不改變期望的情況下降低方差(variance)。證明不改變期望,就是證明相加和為0:[egin{align}E_{pi_{heta}}[riangledown_hetalogpi_{heta}(s,a)B(s)]&=sum_{sin S}d^{pi_{heta}}(s)sum_a riangledown_hetapi_{heta}(s, a)B(s)\&=sum_{sin S}d^{pi_{heta}}(s)B(s)riangledown_hetasum_{ain A}pi_{heta}(s,a )\&= 0end{align}]

狀態價值函數 (V^{pi_{heta}}(s)) 是一個好的基線。因此可以通過使用優勢函數(Advantage function)(A^{pi_{heta}}(s,a)) 來重寫價值梯度函數。[A^{pi_{heta}}(s,a)=Q^{pi_{heta}}(s,a)-V^{pi_{heta}}(s)\riangledown_heta J(heta)=E_{pi_{heta}}[riangledown_hetalogpi_{heta}(s,a)A^{pi_{heta}}(s,a)]]

(V^{pi_{heta}}(s)) 是真實的價值函數,TD算法利用bellman方程來逼近真實值,誤差為 (delta^{pi_{heta}}=r+gamma V^{pi_{heta}}(s") - V^{pi_{heta}}(s))。該誤差是優勢函數的無偏估計。因此我們可以使用該誤差計算策略梯度:[riangledown_heta J(heta)=E_{pi_{heta}}[riangledown_hetalogpi_{heta}(s,a)delta^{pi_{heta}}]]該方法只需要critic,不需要actor。更多關于 Advantage Function 的可以看這里。

最后總結一下策略梯度算法:

Reference

[1] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018[2] David Silver"s Homepage[3] Advantage Learning

Copyright ? 2019 九州ju111net備用網址 All Rights Reserved
疏成
地址:安徽省安慶市潛山縣經濟開發區南環路0018號
全國統一熱線:15109195631
捕鱼来了工作室项目 重庆时时彩人工计划网页版 最好的vr赛车游戏 2019年的试机号中奖号 帮别人买重庆时时犯法吗 黑龙江福彩手机官方app下载 重庆时时彩开奖官网 财神捕鱼为什么一直输 谁有极速时时计划 七乐彩500走势 重庆时时彩官方开奖查询 重庆时时开奖延迟 北京一分赛车开奖结果 浙江15选5走势图2 大佬彩票下载 好运来pk10破解版 快乐赛车开奖纪录