強化學習基礎篇(三十)策略梯度(二)MC策略梯度算法

強化學習基礎篇(三十)策略梯度(二)MC策略梯度算法

1、Score Function

假設策略\pi_{\theta}是可微分的,并且在任何時候都不為0,我們可以使用下面的小技巧去轉換為從\nabla_{\theta} \pi_{\theta}(s, a)\nabla_{\theta} \log \pi_{\theta}(s, a)的求解。
\begin{aligned} \nabla_{\theta} \pi_{\theta}(s, a) &=\pi_{\theta}(s, a) \frac{\nabla_{\theta} \pi_{\theta}(s, a)}{\pi_{\theta}(s, a)} \\ &=\pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a) \end{aligned}
其中\nabla_{\theta} \log \pi_{\theta}(s, a)也叫作score function。

2、Score Function方式的優勢

這種轉換為對score function的優勢可以通過下面兩種策略的形式體現出來:

一是、當策略\pi_{\theta}是softmax函數,其形式是,\pi_{\theta}(s, a) \propto e^{\phi(s, a)^{\top} \theta},則score function則可以有著非常簡潔的如下形式:
\nabla_{\theta} \log \pi_{\theta}(s, a)=\phi(s, a)-\mathbb{E}_{\pi_{\theta}}[\phi(s, \cdot)]
二是、當策略\pi_{\theta}是高斯函數,a \sim \mathcal{N}\left(\mu(s), \sigma^{2}\right),其中均值\mu(s)=\phi(s)^{\top} \theta,方差假設為固定值\sigma^2(也可以對\sigma進行參數化),其score function為:
\nabla_{\theta} \log \pi_{\theta}(s, a)=\frac{(a-\mu(s)) \phi(s)}{\sigma^{2}}
這兩個例子可以看到Score Function在某些時候是比原來的形式更加容易進行計算。

3、一步MDP的策略梯度

如果我們考慮一個簡單的MDP場景,只需要一個動作步就會結束,初始狀態會從一個分布中產生s \sim d(s),從初始狀態開始只需要經過一個時間步就結束,并得到獎勵r=R_{s,a}。這個場景里直接使用最大似然方法計算策略梯度。
\begin{aligned} J(\theta) &=\mathbb{E}_{\pi_{\theta}}[r] \\ &=\sum_{s \in \mathcal{S}} d(s) \sum_{a \in \mathcal{A}} \pi_{\theta}(s, a) \mathcal{R}_{s, a} \end{aligned}
然后對目標函數進行梯度計算,計算過程中使用了score function的技巧。
\begin{aligned} \nabla_{\theta} J(\theta) &=\sum_{s \in \mathcal{S}} d(s) \sum_{a \in \mathcal{A}} \pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a) \mathcal{R}_{s, a} \\ &=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) r\right] \end{aligned}

4、多步MDP的策略梯度

將前面簡單的one-step的MDP,擴展到多步的MDP的情況:

  • (a) 定義在一個episode中,我們采集的軌跡記為\tau
    \tau=\left(s_{0}, a_{0}, r_{1}, \ldots s_{T-1}, a_{T-1}, r_{T}, s_{T}\right) \sim\left(\pi_{\theta}, P\left(s_{t+1} \mid s_{t}, a_{t}\right)\right)

  • (b) 定義軌跡\tau的獎勵之和為:R(\tau)=\sum_{t=0}^{T-1} R\left(s_{t}, a_{t}\right)

  • (c) 策略的目標函數定義為:
    J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\sum_{t=0}^{T-1} R\left(s_{t}, a_{t}\right)\right]=\sum_{\tau} P(\tau ; \theta) R(\tau)
    這里的P(\tau ; \theta)=\mu\left(s_{0}\right) \prod_{t=0}^{T-1} \pi_{\theta}\left(a_{t} \mid s_{t}\right) p\left(s_{t+1} \mid s_{t}, a_{t}\right)表示在執行策略\pi_{\theta}的的時候軌跡\tau的概率。

  • (d) 然后我們目標就是找到最優的參數\theta可以極大化目標函數J(\theta)
    \theta^{*}=\underset{\theta}{\arg \max } J(\theta)=\underset{\theta}{\arg \max } \sum_{\tau} P(\tau ; \theta) R(\tau)

  • (d) 其SGD的優化方法是要計算目標函數的梯度\nabla_{\theta} J(\theta)
    \begin{aligned} \nabla_{\theta} J(\theta) &=\nabla_{\theta} \sum_{\tau} P(\tau ; \theta) R(\tau) \\ &=\sum_{\tau} \nabla_{\theta} P(\tau ; \theta) R(\tau) \\ &=\sum_{\tau} \frac{P(\tau ; \theta)}{P(\tau ; \theta)} \nabla_{\theta} P(\tau ; \theta) R(\tau) \\ &=\sum_{\tau} P(\tau ; \theta) R(\tau) \frac{\nabla_{\theta} P(\tau ; \theta)}{P(\tau ; \theta)} \\ &=\sum_{\tau} P(\tau ; \theta) R(\tau) \nabla_{\theta} \log P(\tau ; \theta) \end{aligned}
    在這一步中對P(\tau ; \theta)的估計可以使用m次采樣的方法進行,即:
    \nabla_{\theta} J(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} R\left(\tau_{i}\right) \nabla_{\theta} \log P\left(\tau_{i} ; \theta\right)
    這里繼續對\nabla_{\theta} \log P(\tau ; \theta)進行分解,分解過程中將消去所有與\theta無關的部分:
    \begin{aligned} \nabla_{\theta} \log P(\tau ; \theta) &=\nabla_{\theta} \log \left[\mu\left(s_{0}\right) \prod_{t=0}^{T-1} \pi_{\theta}\left(a_{t} \mid s_{t}\right) p\left(s_{t+1} \mid s_{t}, a_{t}\right)\right] \\ &=\nabla_{\theta}\left[\log \mu\left(s_{0}\right)+\sum_{t=0}^{T-1} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)+\log p\left(s_{t+1} \mid s_{t}, a_{t}\right)\right] \\ &=\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \end{aligned}
    這里的結果很感人,將軌跡的概率梯度轉換為了求策略的梯度:
    \begin{aligned} \nabla_{\theta} \log P(\tau ; \theta) =\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \end{aligned}
    最終目標函數的梯度\nabla_{\theta} J(\theta)可以轉換為:
    \nabla_{\theta} J(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} R\left(\tau_{i}\right) \sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t}^{i} \mid s_{t}^{i}\right)
    最終我們優化目標函數的時候就完全不需要了解模型的動態參數。

5、理解Score Function Gradient估計

我們的策略函數優化的目標函數是E_{\tau \sim \pi_{\theta}}[R(\tau)],其中\theta是參數,軌跡\tau是由采樣產生。如果我們將其重新為更加廣義的形式,通過函數f(x)替換獎勵R(\tau)
\begin{aligned} \nabla_{\theta} \mathbb{E}_{p(x ; \theta)}[f(x)] &=\mathbb{E}_{p(x ; \theta)}\left[f(x) \nabla_{\theta} \log p(x ; \theta)\right] \\ & \approx \frac{1}{S} \sum_{s=1}^{S} f\left(x_{s}\right) \nabla_{\theta} \log p\left(x_{s} ; \theta\right), \text { where } x_{s} \sim p(x ; \theta) \end{aligned}
其中函數f(x)x由參數化的分布p(x;\theta)采樣產生,需要優化參數\theta使得f(x)的期望盡可能大。其中與策略函數優化的方式一樣使用了score function的技巧,然后對p(x;\theta)進行采樣。這個過程可以通過下面這個圖理解下:

image.png

圖里面每個樣本是從p(x)采樣產生,我希望采樣產生出來的x能夠使得f(x)盡量得大,\nabla_{\theta} \log p(x)的優化過程即在優化函數的形狀,第一張圖的每個藍色箭頭表示 \nabla_{\theta} \log p(x),中間的各種圈是函數f(x),將p(x)分布采樣出的值給與一定的權重就得到中間圖,綠色的點是權重為正的值,紅色為權重為負的值。

然后我們需要使得p(x)的分布盡量往綠色的區域移動擬合,其擬合后的f(x)如最右側的圖,將使得f(x)能夠在后續采樣出的值盡可能有更大的可能性。

Policy Gradient估計 vs 最大似然估計

如果我們將Policy Gradient估計與最大似然估計進行對比:

Policy Gradient估計的形式為:
\nabla_{\theta} J(\theta) \approx \frac{1}{M} \sum_{m=1}^{M}\left(\sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t, m} \mid s_{t, m}\right)\right)\left(\sum_{t=1}^{T} r\left(s_{t, m}, a_{t, m}\right)\right)
最大似然估計形式為:
\nabla_{\theta} J_{M L}(\theta) \approx \frac{1}{M} \sum_{m=1}^{M}\left(\sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t, m} \mid s_{t, m}\right)\right)
這兩者是比較類似的,除了Policy Gradient估計的形式是包含了reward函數,reward函數對likelihood的結果進行加權。即Policy Gradient估計可以看做加權后的極大似然估計。這里目標是在策略優化過程中,鼓勵策略能夠進入到能夠產出盡可能多獎勵的區域中。比如下圖中,優化過程中希望軌跡的分布向著紅色更高獎勵的區域移動。

image.png

6、策略梯度的問題

我們策略梯度更新為:
\nabla_{\theta} J(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} R\left(\tau_{i}\right) \sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t}^{i} \mid s_{t}^{i}\right)
其中存在的問題在于其軌跡為相當于MC方法產生出,雖然是unbiased,但是其方差(variance)很大。比如在采樣不同的軌跡\tau可能差異特別大,有些時候無獎勵,有些時候獎勵特別大。

降低方差將是更加高級的強化學習算法的核心,降低方差即可保障學習過程更加穩定。

一般有兩種改進辦法,一是引入時序的因果關系,二是使用baseline。

7、利用時序的因果關系(Causality)降低方差

我們已經推導得出的Policy gradient形式為:
\nabla_{\theta} \mathbb{E}_{\tau}[R]=\mathbb{E}_{\tau}\left[\left(\sum_{t=0}^{T-1} r_{t}\right)\left(\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right)\right]
其由兩部分的sum構成,一個是對reward的累加,另一個是對score function的累加。

我們可以引入時序的因果關系(Causality)使得第一個加和的reward更小,我們在t'時間之前做的似然估計并不會對后續得到獎勵造成影響,

對于一個單個獎勵的梯度形式是:
\nabla_{\theta} \mathbb{E}_{\tau}\left[r_{t^{\prime}}\right]=\mathbb{E}_{\tau}\left[r_{t^{\prime}} \sum_{t=0}^{t^{\prime}} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]
若將所有時間步進行累加,經過推導可以得到簡化后的Policy gradient形式:
\begin{aligned} \nabla_{\theta} J(\theta)=\nabla_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}}[R] &=\mathbb{E}_{\tau}\left[\sum_{t^{\prime}=0}^{T-1} r_{t^{\prime}} \sum_{t=0}^{t^{\prime}} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right] \\ &=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \sum_{t^{\prime}=t}^{T-1} r_{t^{\prime}}\right] \\ &=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right] \end{aligned}
其中G_{t}=\sum_{t^{\prime}=t}^{T-1} r_{t^{\prime}}。這里是通過因果性去掉沒有必要的獎勵部分,在時間t'的策略不會影響t<t'部分的獎勵。最后得到的采樣形式是:
\nabla_{\theta} \mathbb{E}[R] \approx \frac{1}{m} \sum_{i=1}^{m} \sum_{t=0}^{T-1} G_{t}^{(i)} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t}^{i} \mid s_{t}^{i}\right)
通過這種方式可以得到經典的REINFORCE算法:

image.png
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370