1. 程式人生 > >【李巨集毅深度強化學習2018】P3 Q-learning(Basic Idea)

【李巨集毅深度強化學習2018】P3 Q-learning(Basic Idea)

                             第三講 Q-learning(Basic Idea)

視訊地址:https://www.bilibili.com/video/av24724071?t=1121&p=3

PPT地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2018/Lecture/QLearning%20(v2).pdf

第一講整理:【李巨集毅深度強化學習2018】P1 Policy Gradient(Review)

第二講整理:【李巨集毅深度強化學習2018】P2 Proximal Policy Optimization (PPO)

 

 

Q-learning 是 value base 的方法,在這種方法中我們不是要學習一個 policy網路,而是要學一個 critic網路。critic 並不採取行為,只是針對現有的 actor \pi,評價它的好壞。

critic 給出了一個 value function V^\pi(s),代表在遇到遊戲的某個 state 後,採取策略 \pi  一直玩到遊戲結束

,所能得到的 reward 之和。

所以 V^\pi(s)(即critic)是個函式,一個網路(前兩講提到 actor 同樣是個網路)。它的輸入是某個state,輸出是一個scalar標量。上圖遊戲畫面中左邊的 V^\pi(s) 很大,因為當前怪物比較多,防護罩也沒被摧毀,從此時玩到遊戲結束得到的 reward 就會比較多;而相對的右邊的 V^\pi(s) 就比較小。綜上 critic 的輸出取決於兩點:1是 state,2是 actor 的策略 \pi

 

怎麼評價一個 critic 的好壞呢?

基於蒙特卡洛 Monte-Carlo(MC)based 的評價方法:

由於 critic 就是一個網路,所以我們可以訓練它,訓練的方法是,給定一個策略 \pi,在 S_a 的情況下,網路輸出為 V^\pi(S_a)(代表預測的 reward);實際得到的 reward 為 G_a 。我們的目標就是讓 V^\pi(S_a) 和 G_a 儘可能接近,這其實和 regression problem 很相似。

 

基於時序差分Temporal-difference base 的方法評價方法:

MC base 的策略需要在某個 state 後一直玩到遊戲結束,但遊戲若太長,這樣就不合理。

TD base 只需要從 S_t 玩到 S_{t+1} 就行。因為 V^\pi(S_t)=V^\pi(S_{t+1})+r_t ,即 :

S_t 狀態下采取策略 \pi 玩完遊戲得到的 value   =  S_{t+1} 狀態下采取策略 \pi 玩完遊戲得到的 value  +  執行動作 a_t 得到的單步 r_t

所以我們比較 V^\pi(S_t)-V^\pi(S_{t+1}) 和 r_t 間的接近程度即可。

 

MC base 和TD base方法的比較

MC 方法的問題在於最後得到的 G_a 的方差很大(回顧一下, G_a 在 S_a 的情況下根據策略 \pi進行遊戲得到的實際 reward. 其實是一個隨機變數,因為遊戲是有隨機性的,每一次得到 G_a 是不一樣的)。

因為 G_a 是很多步 reward 的求和,而根據公式 Var[kX]=k^2Var[X]每一步 reward 的方差累加後的方差會乘上 k^2。所以最後 G_a 的方差很大,即每次算出來的  V^\pi(S_a) 都會相差很多。

而用 TD base 中有隨機性的部分是 r,它的方差比較小。但 TD 的問題在於 V^\pi(S_{t+1}) 可能很不準確。以下舉例說明:

現在假如我們玩了8個 episode 的遊戲,每一行對應一個episode,得到以下結果:

我們可以很直觀的計算出 V^\pi(S_b)=3/4(6/8)(不論用 MC 方法還是 TD 方法)。但是根據 MC base 和 TD base 方法算出的 V^\pi(S_a) 是不一樣的(可能是 3/4 或 0):

MC 方法的計算過程是,由於 S_a 只在第一個 episode 中出現,出現後根據策略 \pi 得到的 reward 是0,所以 V^\pi(S_a) =0

TD 方法的計算過程是,由於 S_a 只在第一個 episode 中出現,而 S_a 出現後跳到了 S_b ,所以 V^\pi(S_a)=V^\pi(S_b)+r=3/4+0=3/4.

MC 考慮的想法是 S_a 是一個非常不好的 state,出現 S_a 後 S_b 被影響只得到 0 的 reward,所以認為 V^\pi(S_a) 為0.

但TD考慮的想法是 S_a 後 S_b 得到 reward 為 0 只是一個巧合,與 S_a 無關,大部分情況下 S_b 還是會得到 3/4 的 reward,所以認為 V^\pi(S_a) 為3/4。(因為Sb在Sa之後)

 

另一種 critic 模型

 

而現在討論的 Q function 的輸入是一個 (s, a) 的 pair。這樣相當於Q function 假設 state 下強制採取 action a

假設你的 action 是無法窮舉的,那隻能用上圖左邊的方法,把(s, a)一同作為輸入;但若 action 有限,可以採用上圖右邊的方法,只輸入s,然後分別輸出在不同 action 情況下的輸出值。

critic 看上去只能評價某個 action 的好壞,但是實際上可以直接用它來做 reinforcement learning(Q-learning)。方法是隻要學到一個 \pi 的 Q function Q^\pi(s,a) ,就能有辦法找到一個更好的 actor \pi',這樣就能不斷更新policy  \pi

什麼叫 \pi'​​​​​​​ 比 π 好呢?

就是說面對所有 state s 時,使用策略 \pi'​​​​​​​ 得到的 value 一定比使用策略 \pi 得到的 value 大,即:V^{\pi'}(s)\geqslant V^\pi(s)

找 \pi'​​​​​​​ 的方法是,對於已經學到的 Q function  Q^\pi(s,a),在某個給定的 state 下,分別帶入可能的 action,看看哪一個 action 使得函式值最大,把使得函式值最大的 a,作為以後面對該 state 時採取的 action

上圖證明了 V^{\pi'}(s)\geqslant V^\pi(s)TODO