1. 程式人生 > >機器學習(周志華) 參考答案 第十六章 強化學習

機器學習(周志華) 參考答案 第十六章 強化學習

機器學習(周志華西瓜書) 參考答案 總目錄

    是時候讓自己的機器更強大一些了,順便完結撒花

1.用於K-搖臂賭博機的UCB方法每次選擇Q(k)+UC(k)的最大的搖臂,其中Q(k)為搖臂k當前的平均獎賞,UC(k)為置信區間。例如Q(k)+2lnnnk,其中n為已執行的總次數,nk為已執行搖臂k的次數。試比較UCB方法與ϵ-貪心法和Softmax方法的異同。

相同點:都能實現探索和利用的折中選取。
不同點:
1.UCB方法並沒有引數,不需要對引數進行初始估計和調整。
2.UCB方法中的UC(k)一項,nk初始值為0,作為分母會導致每個搖臂的值為無窮大。那麼可以看出U

CB方法會先將每一個搖臂都嘗試一次,也就相當於一次”全探索”。
3.UCB方法中搖臂選取全部由前面選擇的搖臂的獎賞值決定,而不是概率。

2.借鑑圖16.7,試寫出基於γ折扣獎賞函式的策略評估演算法。

其實就是將式16.8替換圖16.7中演算法過程第三行,並更改結束條件
|——————————————————————————————————————–|
輸入:
MDP四元組E=<X,A,P,R>;
被評估的策略π;
過程:
1:xX:V(x)=0;
2:fort=1,2,...do
3:xX:V(x)=aAπ(x,a)x

XPaxx(Raxx+γVπγ(x))
4:\qquad if(max_{x \in X}|V(x)-V'(x))| < \theta)
5:\qquad\qquad break;
6:\qquad else
7:\qquad\qquad V=V';
8:\qquad end if
9:end for
輸出:
狀態值函式V
|——————————————————————————————————————–|

3.借鑑圖16.8,試寫出基於\gamma折扣獎賞函式的策略迭代演算法。

不知道是不是錯了,感覺和上一題完全一樣。
|——————————————————————————————————————–|
輸入:
MDP四元組E=<X,A,P,R>

;
過程:
1:\forall x \in X:V(x)=0,\pi(x,a)=\frac{1}{|A(x)|};
2:loop
3:\qquad for\ t=1,2,... do
4:\qquad\qquad\forall x \in X:V'(x)=\sum_{a \in A}{\pi(x,a)}\sum_{x' \in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a+\gamma V_{\gamma}^{\pi}(x'))
5:\qquad\qquad if(max_{x \in X}|V(x)-V'(x))| < \theta)
6:\qquad\qquad\qquad break;
7:\qquad\qquad else
8:\qquad\qquad\qquad V=V';
9:\qquad\qquad end\ if
10:\qquad end\ for
11:\qquad \forall x \in X:\pi'(x)=argmax_{a \in A}Q(x,a);
12:\qquad if\ \forall x:\pi(x)=\pi(x)\ then
13:\qquad\qquad break;
14:\qquad else
15:\qquad\qquad \pi=\pi'
16:\qquad end\ if
17:end loop
輸出:
最優策略\pi
|——————————————————————————————————————–|

4.在沒有MDP模型時,可以先學習出MDP模型,然後再使用有模型強化的學習方法。試述該方法與免模型強化學習方法的優缺點。

若沒有MDP模型,根據取樣的方式學習出它的P和R,但是有限的樣本無法得出精確的PR值,而且不同的取樣也會有不同的值,導致最終強化學習的結果不同。
蒙特卡羅強化方法考慮取樣軌跡,但每次都要取樣一個軌跡才能更新策略的估計值,效率很低。

5.試推匯出Sarsa演算法更新公式(16.31)。

第一句要理解的話,就是:在實踐中經常令\alpha_t為一個較小的正數\alpha,若將Q_t^{\pi}(x,a)展開為每步累計獎賞之和,則可看出係數和為1,更新步長\alpha越大,則越靠後的累計獎賞越重要。
由式16.29可得:
Q_{t+1}^{\pi}(x,a)=\alpha r_{t+1} + (1-\alpha)Q_t^{\pi}(x,a)=\alpha r_{t+1} + \alpha(1-\alpha)r_t+ (1-\alpha)^2Q_{t-1}^{\pi}(x,a)
….依此類推得:
Q_{t}^{\pi}(x,a)=\alpha\sum_{i=1}^t(1-\alpha)^{t-i}r_{i}
顯然係數之和等於\alpha\frac{1}{1-(1-\alpha)}=1,且若\alpha越大,則越靠後的獎賞係數就越大,那麼越靠後的累計獎賞越重要。

根據式16.30 ,Q^{\pi}(x,a)=\sum_{x' \in X}P^a_{x \rightarrow x'}(R^a_{x \rightarrow x'}+\gamma\sum_{a' \in A}\pi(x',a')Q^{\pi}(x',a'))
由於這時沒有P和R,所以不能通過全概率來求出當前的期望值Q^{\pi}(x,a),那麼此時進行新的取樣,得到r_{t+1}=Q^{\pi}(x^*,a^*)=R^{a}_{x \rightarrow x^*}+\gamma Q^{\pi}(x*,a*)
其中x^*是前一次狀態x通過動作a後轉移到的狀態,a^*是策略\pi在x’上選擇的動作。
此時不再需要計算P和\pi,而是將16.30式中與x^*,y^*相關的概率標記為1,其他標記為0。
將上式r_{t+1}帶入16.29式,並將\frac{1}{t+1}替換為\alpha,即得到公式16.31。

6.試借鑑圖16.14給出線性值函式近似Q-學習演算法。

Q-學習演算法與Sarsa演算法的區別僅在於Q-學習演算法評估步驟用的是\epsilon-貪心法,執行策略是原始策略,與Sarsa演算法相反。所以只需要根據式16.13和式16.12的不同修改式16.14即可,就不再寫了。

7.線性值函式近似在實踐中往往有較大誤差。試結合BP神經網路,將線性值函式近似Sarsa演算法推廣為使用神經網路近似的Sarsa演算法。

圖16.14中用的梯度下降法求解線性函式的Sarsa演算法,那麼僅需將線性函式初始化以及優化步驟改為神經網路的初始化和BP演算法即可。
輸入層用(x;a)項數個神經元,a表示每個動作是否被選取,輸出1個神經元,選取使輸出y最大的一個a作為新的動作(最後一層不設閥值)。
|——————————————————————————————————————–|
輸入:
環境 E;
動作空間 A;
起始狀態 x_0
獎賞折扣 \gamma
更新步長 \alpha
過程:
1:初始化神經網路所有連線權和閥值
2:根據初值和x_0得到輸出y_a
3:x=x_0,a=\pi(x)=argmax_{a''}(y(x;a''))
4:for\ t=1,2,... do
5:\qquad r,x'在E中執行動作a產生的獎賞與轉譯的狀態
6:\qquad a'=\pi^\epsilon(x');
7:\qquad 用a'構造出y',其中與a'對應的動作位置為1,其餘為0。
8:\qquad 使用x',y'一組樣本使用BP演算法訓練神經網路,得到新的權值和閥值;
9:\qquad \pi(x)=argmax_{a''}(y(x;a''))
10:\qquad x=x',a=a'
11:end for
輸出:
最優策略\pi
|——————————————————————————————————————–|
由於每次只有一組樣本,這樣的結果會好嗎?還是記錄每一次樣本,生成一個新樣本就加入樣本集合?

8.試結合核方法,將線性值函式近似Sarsa演算法推廣為使用核函式的非線性值函式近似Sarsa演算法。

將圖16.14中的線性方法改為核方法
由於每次的樣本只有一個,那麼基於屬性差的核方法就不能用了,而基於x^Tx的核方法,與書上設計(x;a)的又衝突,因為每次a只有一個是1,那麼x^Tx對所有的a都相等。
直接用1,2,3,4來表示a,即(x;a),其中a是一個整數,表示某一種特定動作,這樣只會選擇首尾兩種動作,因為這個函式是單調的。
那麼先僅使用x,構造φ(x_i),然後構造(φ(x_i),a)作為新的樣本輸入。此時的\theta引數數目是1加上動作a的個數。之後按照圖16.14進行。不過要注意第6行計算梯度時,要根據設定的核函式來計算梯度。
這裡不再重複寫演算法虛擬碼,幾乎就是一樣的。

9.對於目標驅動的強化學習任務,目標是達到某一狀態,例如將汽車駕駛到預定位置。為這樣的任務設定獎賞函式,並討論獎賞函式的作用。

不知道stanford那個汽車自動駕駛是不是和這個目標驅動的強化學習有關,以後遇到相關問題再補。

10.與傳統監督學習不同,直接模仿學習在不同時刻所面臨的資料分佈可能不同。設計一個考慮不同時刻資料分佈變化的模仿學習演算法。

從書391頁並沒有看出不同的資料分佈對策略學習的影響,以後遇到相關論文回來更新。