1、“無模型學習”的基本概念
在前一章中提到的基於動態規划的策略迭代和值迭代求解強化學習都屬於“有模型學習”,都是在需要知道狀態轉移概率矩陣的前提下才能適用的算法。然而在現實很多場景中,我們無法獲得環境信息,也就是狀態轉移概率矩陣未知。此時我們無法再利用策略迭代和值迭代算法來求解,需要提出新的方法來求解強化學習問題。
首先來回顧下強化學習自身的特點:不斷試錯,也就是通過嘗試與環境交互來解決策略評估的問題。實際上,這個不斷嘗試的思路和人類的一些學習方式比較接近,我們可以列出新算法的答題思路:
1)確定一個初始策略(這個和策略迭代的算法一致)。
2)在當前狀態下用這個策略在選擇動作,得到一條狀態-動作系列。
3)重復第 2)步得到一定數目的狀態-動作系列,當這個數目達到一定的程度,根據大數定理,就可以認為這些序列能代表當前策略和環境交互的表現,將這些序列聚合起來,去這些序列動作價值的均值作為當前狀態的動作價值。
4)得到了價值函數,就相當於完成了策略評估的過程,之后就可以按照策略迭代的方法來更新策略。
5)依次迭代上面的步驟,直至價值函數和策略收斂到最優。
根據上面的答題思路,“無模型學習” 和 “有模型學習” 的區別主要在於策略評估過程,針對上面的思路,最關鍵的兩點就是:
1)在沒有狀態轉移概率矩陣的情況下如何獲得這些序列。
2)獲得了這些序列之后如何來評估當前的策略,也就是怎么得到當前策略的價值函數。
2、蒙特卡洛方法求解
蒙特卡洛方法是一種基於隨機采樣來估計期望值的方法,在MCMC算法中利用蒙特卡洛方法采樣其實就相當於構建了一個狀態轉移概率矩陣。狀態與狀態之間通過采樣的形式轉移。
在已知狀態轉移概率矩陣時,通過貝爾曼公式可以得到狀態-動作價值函數:
$q_{\pi}(s_t,a_t) = \sum\limits_{s_{t+1}\;\in S}p(s_{t+1}|s_t, a_t)(r_{t+1} + v_{\pi}(s_{t+1}))$
然后通過值函數進行策略改進,在“無模型學習” 中,狀態轉移概率矩陣未知。於是我們需要把公式轉變成:
$q_{\pi}(s_t,a_t) = \mathbb{E}_{s_{t+1} ~ p, \pi}[\sum\limits_{k=0}\gamma^kr_{t+k}]$
看到上式等號右邊的期望,就可以聯想到用蒙特卡洛方法。假設在時刻 $t$ 通過一些方法,從狀態 $s$ 和動作 $a$ 開始不斷地與環境交互,得到大量的樣本序列
$ {[s_t, a_t, s_{t+1}^i, a_{t+1}^i, ......]_{i=1}^N}$
上面通過蒙特卡洛采樣得到的序列對應的回報為
${[r_t, r_{t+1}^i, r_{t+2}^i, ......]_{i=1}^N}$
我們可以通過這些樣本序列逼近真實的期望值,那么狀態-動作價值函數就可以近似等於:
$q_{\pi}(s_t,a_t) \simeq \frac{1}{N}\sum\limits_{i=1}^N\sum\limits_{k=0}\gamma^kr_{t+k} $
如果這個序列是有限的,采樣的結果一般是有限的。
$q_{\pi}(s_t,a_t) \simeq \frac{1}{N}\sum\limits_{i=1}^N[r_1^i + r_2^i + ......] $
通過上面的方法就可以得到策略評估的結果,具體算法的流程如下:
1)首先基於蒙特卡洛方法采樣得到一定量的交互序列。
2)通過序列計算出每一時刻的價值。
3)將這些價值累積到值函數中進行更新。
4)根據更新的值更新策略。
3、探索與利用
在上一章的策略迭代和值迭代算法中,我們都會遍歷所有的狀態,更新所有狀態的價值函數。在這里我們沒有遍歷所有狀態的這一步操作,我們在上面假設了采樣后的序列的價值是可以代替當前時刻的價值函數,然而在實際中卻往往達不到這樣的效果,在實際問題中在每一個狀態下,都是通過策略得到最優的動作去執行,然而這種情況可能會導致有些動作或狀態無法被遍歷到,那為了在采樣的過程中讓所有的狀態都參與進行,我們需要引入一個隨機性的策略來采樣(注:策略可以分為確定性策略和隨機性策略。確定性策略:一個狀態對應一個動作;隨機性策略:一個狀態對應一個動作的概率分布),期望這樣能遍歷到所有的動作-狀態對。
在這里引入$ \epsilon - greedy$ 算法:
1)首先隨機生成一個 $0 - 1$ 之間的數。
2)判斷這個隨機數和 $\epsilon$ 之間的大小,如果 隨機數大於 $\epsilon$,則選擇當前的最優策略產生的動作;如果隨機數小於 $\epsilon$,則以同等概率隨機選擇一個動作。
通過引入 $\epsilon$ 值,以保證能遍歷到所有的狀態-動作對。在這里將上述兩種選擇稱為探索和利用。
探索:不拘泥於當前的表現,隨機選擇一些不同於當前策略的動作。
利用:持續使用當前的最優策略,盡可能地獲得更多的回報。
4、蒙特卡洛的方差問題
蒙特卡洛方法的成功是基於大數定理的,大數定理只說明了統計量的收斂性,並沒有說明收斂的速度。很顯然,如果采樣集合的方差比較大,那么想讓均值收斂就需要更長的時間;如果采樣序列的方差較小,那么收斂的速度也會相應地加快。
而蒙特卡洛方法每次采樣的序列都比較長,那么序列之間的差異性就較大,因此最后得到的序列估計得方差也較大。而且蒙特卡洛方法在估計價值上的特點就是無偏差但方差較高。
此外在蒙特卡洛方法中也有兩種計算序列價值的方法:
1)first-visit。僅把狀態序列中第一次出現該狀態時的回報納入到回報平均值的計算中。
2)every-visit。針對一個狀態序列中每次出現的該狀態,都計算對應的回報值並納入到回報平均值的計算中。
總的來說,第一種計算方法計算量小,且方差要更小(但是不會太明顯),第二種方法的計算量要大,方差也會更大些,但是在完整的樣本序列較少時比較適用。
事實上,在強化學習中也會牽涉到方差-偏差問題,蒙特卡洛方法的方差較大,而偏差很小。
