1. 程式人生 > >Policy Gradient Methods

Policy Gradient Methods

一.前言

  之前我們討論的所有問題都是先學習action value,再根據action value 來選擇action(無論是根據greedy policy選擇使得action value 最大的action,還是根據ε-greedy policy以1-ε的概率選擇使得action value 最大的action,action 的選擇都離不開action value 的計算)。即沒有action value的估計值就無法進行action選擇,也就沒有Policy,這類方法被稱為 value-based methods.其實我們可以直接產生不依賴於action value 的polcy ,這類直接生成action的方法就叫policy-based methods.他們關係如下:

  value-based方法,需要計算價值函式(value function),根據自己認為的高價值選擇行(action)的方法,如Q Learning。
  policy-based方法,不需要根據value function選擇action,可以直接得出policy的方法。
  圖中第三類方法(Actor critic)結合了上述兩者,即計算value function,但不直接根據value function選擇action,action 由policy-based方法得到。

二. Advantages of Policy-Based RL  

Policy-Based RL 的優勢:

  1)有著更好的收斂性質。Value_Based 方法需要對值函式進行更新,然後才能反映到策略中,而值函式中的一些小小改變可能會使得策略發生較大改變,從而收斂性較差。當然,我們在模型無關的控制(model free)當中說過,如果將探索因子epsilon設定位1/k,則得到的Monte-carlo Contorl是符合GLIE條件的,此時該方法對應的致函蘇將收斂於最優致函數。Value-Based方法收斂性較差只得是較容易震盪而難以收斂,而後面說的將收斂於最優值函式是指“最終”將收斂於最優致函數。我們並不知道“最終”是多久,所以,Policy-Based在這個問題上更具有優勢。

  2)在高緯度和連續動作空間上有著逢高的效率。畢竟Value-Based 方法需要計算

如果動作集很大,那麼這個max操作的計算量就很大,而Policy-Based RL方法就不存在這種問題。

  3)可以學習隨機性策略。Value-Based 方法是隱式地對策略進行表示,需要用greedy 方法得到策略,所以學習單的是確定性策略。

  Policy-Based 的缺點:

  1)通常是收斂到極限;

  2)評估策略是低效,高差異的;

  舉例:

  

在上面的這個格子世界中,兩個灰色方格對於智慧體而言並沒有什麼區別。如果使用一個確定性策略,那麼在灰色方格處的決策要麼都向左,要麼都向右,不管是向左還是向右,都有可能卡住,如下圖:

當然,Value-Based方法也可以學習一個near-deterministic策略,比如說epsilon-greedy,這樣的方法雖然不會一直卡住,但是一般需要較長時間才能結束這一episode。課程中有這麼一句話:Whenever stochastic policy occurs, a stochastic policy can do better than a deterministic policy。也就是說,一般而言,只要出現隨機性策略的時候,一般都會比確定性策略要好

下面來看一下常用的幾個目標函式:

        1)episodic環境中,我們使用start value:

2)continuing環境中,我們使用average value:

 

 3)continuing環境中,也可以使用average reward per time-step:

其中d為利用對應策略生成的馬爾可夫鏈的穩態分佈。1)中為從某個狀態開始,後面將得到的獎勵;2)中為continuing環境,所以並沒有一個所謂的初始狀態,也沒有一個結束狀態;3)中表示平穩狀態分佈下單步的獎勵。

 三. Score Function

也即策略梯度可以等價地表示為策略乘以一個似然函式的倒數,這個與極大似然操作形式一致的式子叫做Score Function ,表示為:

 

下面通過兩個例子說明score function:

  1)softmax policy

首先假設使用線性特徵組合對動作進行加權:

此時,score function為:

同理,我們可以得到服從的高斯分佈的score function:

 

四.one-step MDP

考慮完策略的導數之後,接著我們討論獎勵函式的導數。首先考慮一個簡單的one-step MDP:

 推導獎勵函式的梯度:

我們通過這個簡單的one-step MDP可知,獎勵函式的導數等於socre function乘以reward在策略下的期望,也即:

        策略梯度定理正是這一簡單情形的拓展:

與上面的one-step MDP的情形相比,這裡將其拓展到了multi-step MDP,並且將即時獎勵r替換為了long-term值函式,這一定理非常重要。我們知道,我們對於策略引數的更新都是沿著極大化獎勵函式的方向進行的,所以由上式我們可以對引數進行更新。

接下來將將該定理結合model-free情形進行使用,得到REINFORCE演算法:

五.Monte-Carlo Policy Gradient (REINFORCE)

其想法非常簡單,就是將獎勵函式的梯度中的期望換為取樣,在一個episode結束之後,利用該episode中的每一個step對引數進行更新。不過這個演算法中對於的估計使用的是回報(return),這是一個無偏估計,但是卻有著較大的方差,所以,我們考慮換成其他方法對值函式進行逼近,比如說利用神經網路或其他引數化方法,記引數為w(此處可回想DDPG演算法形式):

 

  我們稱之為Critic,並將上面的引數化策略稱為Actor,將這二者結合起來,叫做Actor-Critic演算法:

對於引數w的更新,我們可以將回報(return)或者TD target作為目標,最小化當前值函式與目標的平方。此外,在Actor-Critic演算法中,我們可以在每個step對策略進行更新,而不用像REINFORCE一樣,只能在每個episode執行完成之後進行更新。因為這裡每個step我們可以使用對獎勵進行估計,然後代入上面的式子,對策略進行更新,而REINFORCE使用回報(return)決定了它不能實時更新。當然,在這裡使用的是單樣本更新,我們也可以將其換為least-squares方法,也即replay buffer方法。

        Actor-Critic演算法雖然降低了方差,但是一般來說是有偏的,因為在approximating的時候引入了bias。那是否能夠通過恰當地選擇值函式估計器來避免引入bias呢?這是可以的。由此我們引出相容函式估計(Compatible Function Approximation)

 考慮條件1中提到的式子,用語言表述為:“score function = the gradient of Critic”,將其代入到中,可得:

 比方說,在某個狀態s和動作a下,假設為正,則沿著的梯度方向進行更新,且越大,越大,如果為負,則朝著與的梯度相反的方向更新。換句話說,我們這裡的朝著大的方向更新,

 

其中最左邊一幅圖表示score function向量,其實就是朝著使p(x)增大的方向;中間的圖則是表示一個加權函式f,比方說我們的 等(值得注意的是,圖中標示的score function並不是我們這裡的score function,只是因為f作為一個加權,所以這樣叫罷了),這個函式在除了三個小圓圈範圍內的其他區域的值均為-1,小圓圈內的值為+1;最右邊的圖則是表明,除了在小圓圈中的區域外,其他區域對於引數的更新是與score function相反的,所以分佈p(x)進行了相應更新。

        前面我們說過,為了降低REINFORCE演算法的方差,我們引入了Critic,現在,我們進一步使用Baseline來降低RL中的方差。首先我們可以推匯出如下式子:

該式表明,對於某一個與動作a無關的基準函式B(s),它乘以score function之後,計算在策略下的期望,結果為0。換句話說,我們可以在獎勵函式的梯度的基礎上任意的增減一個這樣的式子,而保持梯度不變。一個不錯的Baseline函式就是值函式是,在原獎勵函式梯度的計算式上減去該值,得到:

我們稱為優勢函式,用其表示獎勵函式的梯度為:

  優勢函式的意義是,在動作值函式的基礎上減去了對應狀態擁有的基準值,使之變為動作帶來的增益,因而降低了方差(降低了由於狀態基準值的抖動引起的方差)。當然,這樣做也有缺點(筆者觀點),那就是相當於將不同狀態下的動作帶來的獎勵放在同一水平考慮,實質上是應該結合狀態進行考慮的,關於獎勵函式,我們可以結合Dueling Network進行理解與深思(提示:Dueling Network中使用雙流結構,考慮了優勢函式以及狀態值函式,從二者的作用來看,狀態值函式那一項也是有意義的)。

        現在我們給出的計算優勢函式的公式是理論上的,或者說是策略對應的真實優勢函式,但實際上,我們並不知道該函式,因而只能對其進行估計,就像我們前面估計狀態值函式和動作值函式一樣:

我們可以不斷地更新以及,比方說利用TD方法進行更新,然後通過計算得到。不過令人感到不開心的是,這裡我們需要維持兩個逼近器,有沒有方法能夠讓我們用一個逼近器就能夠給出優勢函式的估計呢?有的,具體見下面的PPT:

其中最為重要的結論是:“如果我們使用真實的狀態值函式來計算TD error,則TD error為優勢函式的一個無偏估計”。並且,在這種方法中,我們僅需一組引數就能夠對優勢函式進行估計。

        關於不同Time-Scales下的Critics、Actors以及考慮資格跡的策略梯度,鑑於其重要性,因而直接給出課程PPT如下:

自然策略梯度也即直接對原始策略梯度進行修正,乘以一個Fisher資訊陣的逆。這樣做有什麼用處呢?它使得策略梯度變成parametrisation無關的了。舉個例子,對於一個softmax策略,我們增大其中所有動作的score,此時各個動作的概率並不會發生改變,這可以通過其score function來考慮:

        比方說,我們反過來想,成比例的增大策略中各個動作對應的分子,也即,因為softmax策略中的分母也會成比例的增大,所以最終各個動作的概率並沒有發生改變。如果這裡我們是通過增加來增加分子的值的,所以上面的score function也可能會隨之增大,這樣的話,雖然該策略各個動作對應的概率沒有變,但是下一步對於策略的改進卻發生了改變(想想對於策略引數的更新公式),這並不是我們想看到的。而自然策略梯度可以很好地解決這一問題,對於剛剛提及的這種情形,Fisher資訊陣也將增大,從而使得下一步對於策略的改進與reparametrisation無關,就很開心了。
 將自然策略梯度與Actor-Critic結合,得到Natural Actor-Critic如下:

在上面的推導中,我們可以將compatible function approximation積分代入對於獎勵函式的求導中,得到最終的獎勵函式的自然梯度,發現它就等於Critic的引數w,這並不是巧合,當我們結合natural policy gradient + compatible function approximation之後,就可以推到得到這一結論:對Actor引數的更新就等於Critic的引數。

總結: 

本章闡述了value-based methods和policy-based methods的優缺點,引入了效能函式J(θ) J(\mathbf \theta)J(θ),介紹了PG定理,並詳細介紹了episode case下的PG方法:REINFORCE 、REINFORCE-with-baseline(減小偏差,但方差較大)。介紹了結合PG 和value-based methods的Actor{Critic Methods,以及 continuing case下的PG。