深度強化學習之策略梯度(Policy Gradient)
前言
本文算是對于策略梯度做一個簡單介紹,因為敲公式巨麻煩,所以也不想寫得太長,如果以后有機會(當我說這句話的時候,就代表大概率沒有)做相關(guān)的視頻的話,會更加詳細的說明其中的細節(jié)。
注意:本文中會出現(xiàn)很多英文術(shù)語。

一、什么是策略梯度
首先,策略梯度是一種所謂的policy based learning,即我們的對象是我們的策略(policy),而非某個value function(雖然我們可能會間接地用到value function)。
在這種policy based learning下,我們用θ參數(shù)化(parameterize)我們的策略,換言之,我們希望用某些參數(shù)θ來控制我們的
。比方說——我們可以用一個神經(jīng)網(wǎng)絡(luò)來參數(shù)化我們的
。我們給模型輸入某個state?
,然后模型輸出對應的action
。
確立模型之后,我們還需要一個衡量標準,即我們的objective,這個標準可以是我們的Reward的期望值(expected reward):
這里的代表我們的路徑。
這個objective的意義很明確——我們希望我們的策略π能夠給出高return.
當我們明確了我們的objective以后,自然我們就用gradient ascent來更新我們的參數(shù)θ,讓我們的參數(shù)向高處爬:
但是問題是,如果我們想要用gradient ascent,我們首先需要計算我們的.
我們知道期望的計算是,這里的
對應我們的
,
對應我們的
.
在將變形之后(這里省略過程),我們得到:
*公式在不同的地方可能會有不同的版本。

二、REINFORCE
REINFORCE(所有字母都是大寫)是用total reward (這里先不考慮γ)來估測
:
將這個轉(zhuǎn)變?yōu)槲覀兊膐bjective:
(注意這里有一個負號)

三、Actor-Critic
相比REINFOECE,actor-critic有兩個參數(shù)化的模型——Actor和Critic,Actor是策略,Critic是一個用
參數(shù)化的value function
,你可以用另一個神經(jīng)網(wǎng)絡(luò)來代表這個
,這個神經(jīng)網(wǎng)絡(luò)我們輸入state
,輸出我們的state value
.
所以在訓練的時候,我們既更新我們的θ,也更新我們的w:
傳統(tǒng)的Actor-Critic用TD Learning來確立objective:
Actor-Critic下面衍生出了很多個版本,如A2C,A3C,還有Unity用戶熟悉的SAC和PPO。

后記
策略梯度的方法和我們平時常見的supervised learning形式不太一樣,所以剛接觸會有點不適應。多看幾下就習慣了(?)
參考資料:
Richard S. Sutton, Andrew G Barto - Reinforcement Learning: An Introduction
Zihan Ding, Yanhua Huang, Hang Yuan, and Hao Dong - Introduction to Reinforcement Learning

THE END.