回覆列表
  • 1 # 機器之心Pro

    1. 入門

    定義:

    Advantage (A): A(s, a) = Q(s, a)- V(s)

    但是我們為什麼需要 advantage?Q 值不夠嗎?

    我將用一個例子說明 advantage 的概念(https://datascience.stackexchange.com/questions/15423/understanding-advantage-functions)。

    你有沒有玩過一個叫「Catch」的遊戲?在遊戲中,水果將從螢幕頂部落下。你需要將籃子向右或向左移動才能抓住它們。

    上圖顯示了該遊戲的草圖。頂部的圓圈代表一個水果,下面的小矩形代表籃子。有三個動作:a1、a2 和 a3。顯然,最好的動作是 a2,根本不需要移動,因為水果將直接落入籃子中。現在,假設任何動作都沒有負獎勵。在這種情況下,智慧體沒有動力去選擇最佳的動作,即上述場景中的 a2。為什麼?讓我們用 Q*(s, a) 來表示狀態 s 和動作 a 的最優 Q 值。那麼我們將有:

    假設折扣因子 只比 1 小一點。我們可以得到:

    由於沒有負獎勵,r(a3) 和 r(a1) 都大於或等於 0,這意味著 Q*(s, a3) and Q*(s, a2) 沒有太大差別。因此,在這種情況下,智慧體對 a2 和 a3 幾乎沒有偏好。

    為了解決這個問題,我們可以將每個動作的 Q 值與它們的平均值進行比較,這樣我們就知道相對於其他動作,一個動作的優劣。回想上一篇部落格中提到的,狀態的 Q 值被定義為 Value (V)。本質上,我們建立一個名為 advantage*** ***的新運算元,該運算元的定義是:用狀態的值減去每個動作的 Q 值。

    2. 演算法說明

    2.1 置信域策略最佳化(TRPO)

    上篇部落格中提到深度確定性策略梯度(DDPG)是一個突破,它允許智慧體在保持效能下降的同時在連續空間中行動。但是,DDPG 的主要問題在於需要選擇合適範圍的步長。如果太小,訓練過程將非常緩慢。相反,如果太大,它往往會被噪聲壓倒,導致效能非常糟糕。回想一下計算時間差分(TD)誤差的符號:

    TD 誤差的符號

    如果步長選擇不當,從網路或函式估算器中得到的符號 y_i 不會很好,導致得到更差的樣本和更差的函式估計值。

    因此,我們需要的是更新引數以保證策略改進的方法。即,我們希望「期望折扣長期回報 η」總是增加。

    期望折扣長期回報(https://arxiv.org/pdf/1509.02971.pdf)

    與 DDPG 相似,TRPO 也屬於策略梯度範疇。它採用 actor-critic架構,但是修改了 actor 策略引數的更新方式。

    對於一個新策略 π』,η(π’) 可以看作是策略 π’ 與舊策略 π 相比的 advantage 期望回報。(為方便寫作,本文中π’指

    新策略 π’ 的 η(https://arxiv.org/pdf/1509.02971.pdf)

    你可能想知道為什麼要使用 advantage。直觀上,你可以把它理解為衡量新策略與舊策略平均性相比的優秀程度。新策略的 η 可以重寫成以下形式,其中 ⍴ 是「折扣訪問頻率」(discounted visitation frequency)。

    然而,上述公式很難最佳化,因為 ⍴ 高度依賴於新策略 π』。因此,這篇論文引入了 η(π) 的近似 Lπ(π):

    η 的近似(https://arxiv.org/pdf/1509.02971.pdf)

    請注意,假設狀態訪問頻率對於新舊策略沒有太大差別,那麼我們用 ⍴π』 代替 ⍴π。有了這個等式,我們可以結合常見的策略更新方法:

    CPI (https://arxiv.org/pdf/1509.02971.pdf)

    此處,π_{old} 是當前的策略,而 π』 是最大化 L_{πold} 的策略的引數。然後我們將得到下面的定理。

    定理 1(https://arxiv.org/pdf/1509.02971.pdf)

    C 代表懲罰係數,而 D^{max}_{KL} 代表每個狀態的兩個引數的最大 KL 散度。KL 散度的概念起源於資訊理論,用來描述資訊損失。簡而言之,你可以把它看成是這兩個引數(π 和 π’)之前的區別。

    上面的公示意味著只要右面的項最大化,期望的長期回報 η 就會單調上升。為什麼?讓我們把不等式的右邊項定義為 M_{i}。

    那麼我們就可以證明下面的不等式:

    第一行可以透過簡單地將 M_{i} 的定義置入定理 1 獲得。第二行成立,因為 π_{i} 和 π_{i} 之間的 KL 散度是 0。結合第一行和第二行,我們會得到第三行。這表明,只要 M_{i} 在每次迭代中被最大化,目標函式 η 總是在改善。(我認為在第三行末尾的最後一項應該是 M_i 而不是 M。我不確定這是否是一個錯字)。因此,我們現在要解決的複雜問題可以歸結為最大化 M_i*。*即

    目標函式 1(https://arxiv.org/pdf/1509.02971.pdf)

    實際上,如果懲罰係數包含在目標函式中,步長將會非常小,導致訓練時間較長。因此,對 KL 散度新增約束條件,以允許更大的步長,同時保證穩健的效能。

    目標函式 2(https://arxiv.org/pdf/1509.02971.pdf)

    狀態空間中的每一個狀態都有 KL 散度約束,其最大值應該小於一個小的數字 。而且,這是無法解決的,因為這裡有無數的狀態。這篇論文提出了一個解決方案,它提供了一個對狀態期望 KL 散度的啟發式近似,而不是找到最大的 KL 散度。

    用狀態訪問頻率 ⍴ 表示 KL 散度(https://arxiv.org/pdf/1509.02971.pdf)

    現在,當我們展開第一行時,目標函式如下所示:

    目標函式 3(https://arxiv.org/pdf/1509.02971.pdf)

    用期望代替狀態的 Σ,用重要性取樣估算器代替動作的 Σ(如果採用單一路徑方法就和舊策略一樣),我們可以將上式重寫為:

    最終目標函式(https://arxiv.org/pdf/1509.02971.pdf)

    目標函式也被稱為「代理」(surrogate)目標函式,因為它包含了當前策略與下一策略之間的機率比。TPRO 成功地解決了 DDPG 帶來的問題,即由於引入約束,效能無法單調提升。透過選擇在 KL 散度約束條件下最大化期望值的新策略引數,保證期望長期回報 η 的下限。這也意味著你不需要過度擔心 TRPO 的步長。

    2.2 近端策略最佳化(PPO,OpenAI 版本)

    雖然 TPRO 已經取得了良好、一貫的高效能,但它的計算和實現是極其複雜的。在 TRPO 中,對代理目標函式施加的約束是新舊策略之間的 KL 散度。KL 散度可以用泰勒展開式來表示:

    KL 散度

    TRPO 論文采用共軛梯度演算法來解決約束最佳化問題。這將導致計算多個二階矩陣,這需要大量的計算。

    PPO 擺脫了約束最佳化所產生的計算,因為它提出了一個削減的代理目標函式。

    讓 rt() 表示新舊策略之間的比率。用於近似 TPRO 長期回報 η 的代理目標函式如下所示。注意,上標是 TRPO 基於的保守策略迭代(CPI)方法。

    TRPO 目標函式(https://arxiv.org/pdf/1707.06347.pdf)

    TRPO 約束的理念是不允許改變太多的策略。因此,PPO 並沒有新增約束,而是稍微修改了 TRPO 的目標函式,為其增添了一個策略更新太大時的懲罰。

    削減的目標函式(https://arxiv.org/pdf/1707.06347.pdf)

    情況 1:當 advantage Ȃ_t 大於 0 時。

    如果 Ȃ_t 大於 0,這意味著該動作優於該狀態下所有動作的平均。因此,應該透過增加 r_t() 鼓勵該動作,以使該動作有更大的機率被採納。既然 r_t() 的分母是恆定的,那麼舊策略增加 r_t() 也就意味著增加新策略 π(a, s)。也就是說,增加在給定狀態下采取這一動作的機率。然而,由於削減,r_t() 最多增加到 1+。

    情況 2:當 advantage Ȃ_t 小於 0 時。

    相比之下,如果 Ȃ_t 小於 0,則這個動作不被鼓勵。因此,r_t() 應該減小。同樣,因為削減,rt() 將只會減少到 1-。

    縮減圖示(https://arxiv.org/pdf/1707.06347.pdf)

    本質上,它限制了新策略與舊策略之間的區別,從而消除了機率比 r_t() 在區間外移動的誘因。

    實際上,在執行過程中也應該向下面的式子一樣,考慮損失函式誤差和 entropy bonus。但是,我不打算繼續深入下去,因為最具創新性和重要意義的部分仍然是削減的目標函式。

    PPO 目標函式(https://arxiv.org/pdf/1707.06347.pdf)

    比較目標函式 L^{CPI} 和 L^{CLIP},我們可以看出 L^{CLIP} 實際上是前者的下限。它還取消了 KL 散度約束。因此,最佳化這個 PPO 目標函式的計算量比 TRPO 要少很多。實驗證明 PPO 的效能比 TRPO 好。實際上,由於它輕便和易於實現的特性,PPO 已經成為 OpenAI 的預設 RL 演算法(參考:業界 | OpenAI 提出強化學習近端策略最佳化,可替代策略梯度法)。

    3. 演算法對比

    所有討論過的 RL 演算法都是無模型的,也就是說,它們都沒有嘗試估計目標函式。相反,它們根據反覆試驗來更新知識。其中,只有 SARSA 是在策略演算法,基於當前的動作學習價值。DQN 是一個從離散觀察空間到連續空間的巨大改進,使智慧體能夠處理未見過的狀態。DDPG 是另一個突破,它使智慧體使用策略梯度執行連續動作,將 RL 的應用擴充套件到更多的任務上(如控制)。TRPO 改善了 DDPG 的效能,因為它引入了一個代理目標函式和 KL 散度約束,保證了長期回報不減少。PPO 透過修改代理目標函式進一步優化了 TRPO,它提高了效能,同時降低了實現和計算的複雜度。

  • 中秋節和大豐收的關聯?
  • 如何評價「尼科-科瓦奇將在賽季後接任拜仁主帥」?