強化學習-價值迭代

1. 前言

策略迭代最後咱們發現策略迭代的收斂過程比較慢,那咱們就會想有沒更好更快的迭代方法,今天咱們介紹的價值迭代就是另外一種尋找最優策略的解決方案。html

2. 動態規劃

價值迭代須要用到動態規劃的思想,那咱們簡單的回顧下動態規劃的特色。算法

  1. 最優子結構:是指一個子問題的最優解是能夠獲得的。對應蛇棋的問題,能夠理解爲是「從某個位置出發行走一步可以得到的最大獎勵」的問題,因爲只走一步,這個問題很容易計算。
  2. 重複子結構:是指一個更大的問題是由一些小問題組成的,而求解不一樣的大問題時可能會用上同一個子問題,子問題被重複利用,計算量也就減小了。對應蛇棋的問題,能夠理解爲是「從某個位置出發行走兩步可以得到的最大獎勵」的大問題,利用前面已經獲得的子問題,這個大問題能夠用僞代碼表示:函數

    「某個位置走兩步的最大獎勵」=max([這一步的獎勵+從這個位置出發走一步得到的最大獎勵 for 走法 in 可能的走法])優化

3. 價值迭代原理

理解價值迭代原理的思路,能夠從策略迭代的缺點出發。spa

  1. 策略迭代的策略評估須要值函數徹底收斂才進行策略提高的步驟,能不能對策略評估的要求放低,這樣若是能夠實現的話,速度會有所提高。
  2. 咱們在策略迭代中關注的是最優的策略,若是說咱們找到一種方法,讓最優值函數和最優策略同時收斂,那樣咱們就能夠只關注值函數的收斂過程,只要值函數達到最優,那策略也達到最優,值函數沒有最優,策略也尚未最優。這樣能簡化了迭代步驟。

價值函數就是經過以上2點優化思路開發出來的,具體證實讀者能夠本身搜索。3d

3.1 價值迭代公式

咱們繼續先回顧策略迭代的公式htm

  • 策略評估
    \[ v^T_{\pi}(s_t)=\sum_{a_t}\pi^{T-1}(a_t|s_t)\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v^{T-1}_{\pi}(s_{t+1})]\;\;\;\;\;\;(1) \]
  • 策略提高
    \[ q^T_{\pi}(s_t,a_t)=\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v^T_{\pi}(s_{t+1})]\;\;\;\;\;\;(2) \]
    \[ \pi^{T+1}(s) = argmax_aq^T_{\pi}(s,a)\;\;\;\;\;\;(3) \]

經過(2)(3)咱們獲得
\[ \pi^{T+1}(s) =argmax_{a} \sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v^T_{\pi}(s_{t+1})]\;\;\;\;\;\;(4) \]blog

有由於值函數和策略時同步提高的,這時候(4)就能夠替換爲
\[ v^{T+1}(s) =max_{a} \sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v^T_{\pi}(s_{t+1})]\;\;\;\;\;\;(5) \]開發

公式(5)就是咱們價值迭代的推導公式。get

價值迭代的大概過程:

image

4. 廣義策略迭代

  • 策略迭代法的中心是策略函數,它經過反覆執行「策略評估+策略提高」兩個步驟使策略變得愈來愈好;
  • 價值迭代法的中心是值函數,它經過利用動態規劃的方法迭代更新值函數,並最終求出策略函數。由此能夠看出二者有以下特色。
  1. 兩個方法最終都求出策略函數和值函數。
  2. 最優的策略函數都是由收斂的值函數獲得的。
  3. 值函數經過Bellman公式收斂。

由此發現一個關鍵:二者都須要訓練和更新策略函數和值函數,只是側重點不一樣。策略迭代的核心是策略,爲了提高策略,值函數能夠求解得準確,也能夠求解得不那麼準確;價值迭代的核心是價值,算法的核心部分根本沒有出現與策略有關的內容,直到算法最後經過值函數求出策略

兩種方法都十分看重本身關心的那部分,能夠選擇忽略另外一部分,所以能夠看出兩個方法都比較極端。既然找到了兩個極端的方法,可不能夠找到兩種方法的中間地帶呢?固然能夠,這就是本小節要介紹的廣義策略迭代法。

廣義策略迭代法:就是定義一個迭代算法族,其中的算法都是由策略迭代和價值迭代算法組合而成的。組合的方法有不少,能夠造成的方法也有不少,而前面提到的兩種算法是廣義策略迭代法的一種特例。因爲其中的算法不少,這些算法中頗有可能存在一些比前面兩種算法速度更快的方法。

相關文章
相關標籤/搜索