9. 基於模型的強化學習與Dyna2


在前面我們討論了基於價值的強化學習(Value Based RL)和基於策略的強化學習模型(Policy Based RL),本篇我們討論最后一種強化學習流派,基於模型的強化學習(Model Based RL),以及基於模型的強化學習算法框架Dyna。

基於價值的強化學習模型和基於策略的強化學習模型都不是基於模型的,它們從價值函數,策略函數中直接去學習。

而基於模型的強化學習則會嘗試從環境的模型去學習,一般是下面兩個相互獨立的模型:一個是狀態轉化預測模型,輸入當前狀態s和動作a,預測下一個狀態s′。另一個是獎勵預測模型,輸入當前狀態s和動作a,預測環境的獎勵r。即模型可以描述為下面兩個式子,

\[\begin{array}{l}
{S_{t + 1}} \sim P\left( {{S_{t + 1}}|{S_t},{A_t}} \right)\\
{R_{t + 1}} \sim P\left( {{R_{t + 1}}|{S_t},{A_t}} \right)
\end{array}\]

如果模型P,R可以准確的描述真正的環境的轉化模型,那么我們就可以基於模型來預測,當有一個新的狀態S和動作A到來時,我們可以直接基於模型預測得到新的狀態和動作獎勵,不需要和環境交互。當然如果我們的模型不好,那么基於模型預測的新狀態和動作獎勵可能錯的離譜。

從上面的描述我們可以看出基於模型的強化學習和不基於模型的強化學習的主要區別:即基於模型的強化學習是從模型中學習,而不基於模型的強化學習是從和環境交互的經歷去學習。

假設訓練數據是$S_1,A_1,R_2,S_2,A_2,R_2,...,S_T$,我們可以轉換成T-1組訓練樣本,

\[\begin{array}{*{20}{l}}
{{S_1},{A_1} \to {S_2}}&{{S_1},{A_1} \to {R_2}}\\
{{S_2},{A_2} \to {S_3}}&{{S_2},{A_2} \to {R_3}}\\
{{S_{T - 1}},{A_{T - 1}} \to {S_T}}&{{S_{T - 1}},{A_{T - 1}} \to {R_T}}
\end{array}\]

左邊的訓練樣本一起組成了一個分類模型或密度估計模型訓練集,輸入狀態和動作,輸出下一個狀態。右邊的訓練樣本一起組成了一個回歸模型訓練集,輸入狀態和動作,輸出動作獎勵值。至此我們的強化學習求解過程和傳統的監督學習算法沒有太多區別了,可以使用傳統的監督學習算法來求解這兩個模型。當然還可以更簡單,即通過對訓練樣本進行查表法進行統計$P(S_{t+1}|S_t,A_t)$概率和$R(R_{t+1}|S_t,A_t)$平均值,這樣就可以直接預測,比使用模型簡單。

雖然基於模型的強化學習思路很清晰,而且還有不要和環境持續交互優化的優點,但是用於實際產品還是有很多差距的。主要是我們的模型絕大多數時候不能准確的描述真正的環境的轉化模型,那么使用基於模型的強化學習算法得到的解大多數時候也不是很實用。那么是不是基於模型的強化學習就不能用了呢?也不是,我們可以將基於模型的強化學習和不基於模型的強化學習集合起來,取長補短,這樣做最常見的就是Dyna算法框架。

Dyna算法框架並不是一個具體的強化學習算法,而是一類算法框架的總稱。Dyna將基於模型的強化學習和不基於模型的強化學習集合起來,既從模型中學習,也從和環境交互的經歷去學習,從而更新價值函數和(或)策略函數。

Dyna算法框架和不同的具體的不基於模型的強化學習一起,可以得到具體的不同算法。如果我們使用基於價值函數的Q-Learning,那么我們就得到了Dyna-Q算法。我們基於Dyna-Q來看看Dyna算法框架的一般流程。

1. 初始化價值函數$Q(s,a)$、獎勵模型$R(s,a)$和狀態模型$P(s,a)$

2. for i to 最大迭代次數T

A.  當前狀態s,以$\varepsilon-greddy$策略依據當前的Q函數選擇動作a

B.  執行動作a,得到下一狀態s'和獎勵r

C.  更新價值函數Q

\[Q(S,A) = Q(S,A) + \alpha [R + \gamma {\max _a}Q(S',a) - Q(S,A)]\]

D.  使用樣本$s,a \to s'$更新狀態模型$P(s,a)$,使用樣本$s,a \to r$更新獎勵模型$R(s,a)$

E.  for j=1 to 最大次數n:

a).    隨機選擇一個之前出現過的狀態s, 在狀態s上出現過的動作中隨機選擇一個動作a

b).    基於模型P(S,A)得到S′, 基於模型R(S,A)得到R

c).    更新價值函數Q

\[Q(S,A) = Q(S,A) + \alpha [R + \gamma {\max _a}Q(S',a) - Q(S,A)]\]

從上面的流程可以看出,Dyna框架在每個迭代輪中,會先和環境交互,並更新價值函數和(或)策略函數,接着進行n次模型的預測,同樣更新價值函數和(或)策略函數。這樣同時利用上了和環境交互的經歷以及模型的預測。

基於模型的強化學習一般不單獨使用,而是和不基於模型的強化學習結合起來,因此使用Dyna算法框架是常用的做法。對於模型部分,我們可以用查表法和監督學習法等方法,預測或者采樣得到模擬的經歷。而對於非模型部分,使用前面的Q-Learning系列的價值函數近似,或者基於Actor-Critic的策略函數的近似都是可以的。

 

轉載來自:

https://www.cnblogs.com/pinard/p/10384424.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM