前面的演算法都是基於價值來算的,但是當處理連續動作的問題時,就顯得力不從心了,因為我們需要求的q錶太大,根本無法滿足我們的需要。前面我們在演算法分類的時候也講過,我們可以按基於價值和基於策略的方式來給rl分類,所以這篇部落格就是用基於策略演算法來求解強化學習問題。
值函式近似法:在值函式近似法中,動作選擇的策略是不變的,如固定使用ϵ−貪婪法作為策略選擇方法。即在時間步t的狀態下,選擇動作的方式是固定的。
策略梯度法:在策略梯度法中,個體會學習不同的策略。即在某個時間步t的狀態下,根據狀態的概率分布進行選擇,且該動作概率分布可能會不斷的調整。可以用下面這個例子來體會一下。
下面這個圖是gridworld環境,目標是使得個體能夠從格仔s走到格仔g,其中,格仔x為陷阱,格仔o是可行走區域。從圖中可以看出值函式近似法只能夠得到一條從s到g的路徑,但是策略梯度法卻可以得到三條。所以值函式近似法的策略是固定的,而策略梯度法的策略能讓個體學習多種策略。
前面講到基於價值的演算法中,我們迭代計算的是值函式,然後根據值函式對策略進行改進;相比基於策略的方法,基於價值的決策部分更為肯定,就選價值最高的,但是也比基於策略的演算法多走了一步。而在策略搜尋方法中,我們直接對策略進行迭代計算,也就是迭代更新引數值,直到累積回報的期望最大,此時的引數所對應的策略為最優策略。
當然,乙個演算法肯定是有優點和缺點的,我們先看看基於策略的演算法與基於價值的演算法相比有哪些優缺點。
優點:
前面我們已經知道策略是乙個概率,並不能直接用來迭代,我們要想辦法把它變成函式才可以進行迭代,而函式肯定是有引數的,這裡我們用θ來表示這個引數。這時候策略就可以用乙個關於θ的函式來表示了。這裡的θ和前面我們講的w作用相同,使用不同的符號是為了區分前者作用域基於策略的強化學習任務,後者基於價值的強化學習任務,其實就是用乙個函式來逼近我們的策略。
策略函式為確定時間步t的狀態下採取任何可能動作的具體概率,因此可以將π
θπ_θ
πθ當做概率密度函式。在實際採取策略動作時可以按該概率分布取樣。其中θ決定了概率分布的形態。
現在我們已經知道我們現在的工作就是優化我們的策略函式了,但是怎麼去評判我們優化了的策略函式的好壞呢?我們至少得明白往哪方面優化吧,這時就需要乙個優化的目標函式,朝著讓這個目標函式值最大的方向去優化。目標函式的主要作用是用來衡量策略的好壞程度。
我們的優化目標有幾種:
最簡單的優化目標就是初始狀態收穫的期望,即優化目標為:
但是有的問題是沒有明確的初始狀態的,那麼我們的優化目標可以定義平均價值,即:
其中,dπθ
(s)d_(s)
dπθ(s
)是基於策略π
θπ_θ
πθ生成的馬爾科夫鏈關於狀態的靜態分布。
或者定義為每一時間步的平均獎勵,即:
這樣就相當於我們量化了我們評價指標。
我們一般常用的優化方法就是梯度上公升法,梯度下降法在深度學習裡面主要用於尋找損失函式的區域性最小值,它的方向是沿著梯度的反方向進行下降的,所以我們的梯度上公升法就是按著梯度的正方向進行搜尋。
目標函式j(θ)關於引數θ的梯度∇θj
(θ)∇_θj(θ)
∇θj(θ
)是目標函式上公升最快的方向。對於最大化優化問題,只需要將引數θ沿著梯度方向前進乙個步長,就可以實現目標函式的下降。這個步長又稱為學習速率 α。引數更新公式如下:
θ←θ+δθ
現在的問題就是怎麼求這個梯度∇θj
(θ)∇_θj(θ)
∇θj(θ
),根據大牛的**可知:
無論我們是採用j1,
javv
j_1,j_
j1,ja
vv還是jav
rj_javr
來表示優化目標,最終對θ求導的梯度都可以表示為:
現在我們已經知道對策略函式怎麼優化了,但是從上面的式子可以發現,我們策略函式還沒有明確的表示式,現在我們就要設計策略函式讓它能夠真正的運用上面的演算法進行優化。
回顧我們前面關於rl的演算法分類講的關於基於策略的rl的描述, 他能通過感官分析所處的環境,輸出下一步要採取的各種動作的概率,根據概率採取行動,所以每種動作都有可能被選中,只是概率不同。仔細分析這句話「要輸出下一步要採取的各種動作的概率」,發現和神經網路中的softmax函式的功能一樣。
這個函式主要應用於離散空間中,softmax策略使用描述狀態和行為的特徵ϕ(s,a) 與引數θ的線性組合來權衡乙個行為發生的機率,即:
則通過求導很容易求出對應的評價函式為:
與離散型強化學習任務不同,連續性的強化學習任務通常是和動作或者狀態相關的。如自動駕駛的方向和速度必須是相同的,即上一時刻的方向和速度與下一時刻息息相關。所以這時我們採取高斯策略。
這裡直接給出高斯策略函式對應的對數梯度為:
通過以上方法,就可以求出最優策略。
通過學習我們發現基於策略和基於價值的演算法都有自己的有缺點,能不能把他們的優點結合起來創造一種更好的方法呢?答案是有:actor-critic方法。
參考文章:
一 強化學習 RL 基礎
1.初探強化學習 1.什麼是強化學習?2.強化學習可以解決什麼問題?強化學習如何解決這些問題?2.強化學習 監督學習和非監督學習1.監督學習解決的是什麼問題?監督學習如何解決這些問題?2.強化學習與監督學習的差異 3.強化學習與非監督學習的差異 3.強化學習基礎理論 3.1.強化學習模型 ta t ...
強化學習RL實戰篇
執行一維一級倒立擺環境 import gym env gym.make cartpole v0 env.reset for in range 1000 env.render env.step env.action space.sample 乙個典型的agent environment loop 的實...
最新 強化學習庫 RL庫
近日,為了讓工業界能更好地使用前沿強化學習演算法,帝國理工和普林斯頓 強化學習團隊發布了專門面向工業界的整套強化學習基線演算法庫 rlzoo。rlzoo 專案與目前大多數專案不同,是以面向非rl研究者設計的。該庫目前同時支援 openai gym,deepmind control suite 以及其...