前言: 本次筆記對《強化學習(第二版)》第十章進行概括性描述。
以下概括都是基於我個人的理解,可能有誤,歡迎交流:[email protected]。
正文
很短的一章,是對於第九章的延續。
第九章中,我們用函數逼近
的方法爲V(S)估值,而第十章中,我們用同樣的思想爲qπ(s,a)估值。但是具體內容上,又是大不同的。
10.1 - 10.2
這兩節內容爲:
- 10.1 分幕式半梯度控制
- 10.2 半梯度 n 步 Sarsa
這兩節是第9章內容延續,沒有什麼好說的。在程序實現
中,值得強調的有兩點:
- 從第9章開始,我們假設了w與目標向量v或q間是
線性關係
,因此可以把w理解成“權重”
,尋找最優動作時,找權重最大的就可以了;
瓦片編碼
,在第9章中,我們對狀態s瓦片編碼,而第10章中,我們對[s,q]進行瓦片編碼。如此,就與表格有所不同。換句話說,如果不進行瓦片編碼,那麼將面臨這個大問題:
單純對(s,a)進行聚合,與表格型求解無差別,(s,a)間是解耦。因此,使用瓦片編碼,使(s,a)間耦合。
以上,是我看了很久 Shantong Zhang (Sutton 學生,官方認可的代碼)的代碼後得出的結論。
瓦片編碼採用了哈希方法,由 Sutton 本人制作 python3
文件:http://incompleteideas.net/tiles/tiles3.py-remove
我對代碼進行了一點標註,見:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/Mountain-Car-Acess-Control.ipynb
10.3 - 10.5
這三節內容爲:
- 10.3 平均收益:持續性任務中的新的問題設定
- 10.4 棄用折扣
- 10.5 差分半梯度 n 步 Sarsa
爲了解決持續性問題的控制問題,10.3與10.4 引出了平均收益
、差分回報
與差分價值函數
的概念,並且在數學上證明了:持續性問題中折扣的無用性。 這個證明是基於MDP的便利性假設的。
與權重w同,平均收益雖然客觀存在,但是不可知。因此平均收益也是需要更新的,這個過程也需要定義步長。
對練習題解的補充
練習10.6很有趣。解答參見:https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/tree/master/resources中的RL-An Introdction exercises Solution.pdf
。
tip: 我知道了什麼叫同餘方程
。
這裏解釋一下,爲什麼 V(A)=−R+V(B)。
我的理解是這樣的:
t→0limδt=0
而
δt=Rt+1−Rt+1+v^(St+1,wt)−v^(St,wt)
結合例題中的情況則是:
0=0−31+V(B)−V(A)
有關V(C)的式子同理。
練習10.7同樣很有趣。但是 Bryn Elesedy 提供的答案中,有處筆誤
。
原文如下:
Now to compute the differential state values we write
V(S;γ)=h→∞limt=0∑hγt(E[Rt+1∣S0=s]−Rˉ)
then
V(A;γ)V(A;γ)=1−Rˉ+γV(A;γ)=−Rˉ+γV(B;γ)
so
V(A;γ)=21(1−γ)−γ2V(A;γ)
我對其的修改與解釋如下:
在例題的情況中,因爲原差分回報公式Gt(formula10.9)的定義不使用,因此對於狀態的價值,本題中採用:
V(S;γ)=h→∞limt=0∑hγt(E[Rt+1∣S0=S]−Rˉ)
那麼,由上式,可得:
V(B;γ)V(A;γ)=h→∞limt=0∑hγt(E[Rt+1∣S0=B]−Rˉ)=h→∞limγ0(E[R1∣S0=B]−Rˉ)+h→∞limt=1∑hγt(E[Rt+1∣S0=B]−Rˉ)=1−Rˉ+γV(A;γ)=−Rˉ+γV(B;γ)
解二元一次方程組:
V(A;γ)=21(1−γ)−γ2V(A;γ)
練習10.8很生動、巧妙地告訴我們,使用書上式子10.10對Rˉ進行更新,“Once Rˉ
gets to the correct value it never leaves”。