# 李宏毅_ATDL_DRL Lecture 5 ###### tags: `Hung-yi Lee` `NTU` `Deep Reinforcement Learning` [課程撥放清單](https://www.youtube.com/playlist?list=PLJV_el3uVTsODxQFgzMzPLa16h6B8kWM_) ## DRL Lecture 5: Q-learning (Continuous Action) [課程連結](https://www.youtube.com/watch?v=tnPVcec22cg&list=PLJV_el3uVTsODxQFgzMzPLa16h6B8kWM_&index=5) 沒幾個遊戲是用Policy Gradient可以玩的起來的,Q-learning相較效果較好,也較穩定。 ### Continuous Actions ![](https://i.imgur.com/VOyJIcs.png) 雖然課程有提過,只要能夠估測出Q-value就可以找出一個更好的Policy,因為這是一個簡單的regression的問題。但Q-learning對於continuous actions比較不是那麼好處理。 Continuous actions,像是自駕車,要決定方向盤左、右轉幾度,或是機器人,每一個action對應身上的關節的角度。因此,這類的action並不是discrete,而是vector,vector內的每一個dimension都對應一個value都是real number。 $a=arg \max_a Q(s, a)$: 我們提過,估測出Q-function之後,要找到一個$a$,讓$Q(s, a)$最大,這在discrete的情況下可以窮舉所有action,但在continuous情況下卻無法窮舉所有action來確認那一個action可以讓Q最大,針對這問題幾種解法: 1. sample大N個action來計算,但這可能不是那麼精確 2. 用gradient ascent來解這個問題,將action-$a$視為parameter,找一組$a$來maximize Q-function * 並不一定能找到最佳結果,可能是區域最佳解 * 運算量很大 ### Continuous Actions ![](https://i.imgur.com/lwql6SU.png) 第三種解法比較神奇,利用`nn`架構來讓argmax的問題變容易: * input state(image, vector, matrix) * output * $\mu(s)$:vector * $\Sigma(s)$:matrix * $V(s)$:scalar 要注意到,目前為止只有input state-$s$,action-$a$是在得到三個output之後才加入計算得到Q-value: * $Q(s, a)=-(a-\mu(s))^T \Sigma(s)(a-\mu(s)) + V(s)$ * 這邊的action-$a$是一個continuous action,每一個dimension都對應一個數值。(如果是機器人的話可能就對應機器人關節的角度) * $(a-\mu(s))^T \Sigma(s)(a-\mu(s))$一定為正,因此這一個項目愈小,最終的Q-value就越大,讓這個項目的值最小,就直接讓$a=\mu(s)$,讓項目歸零,那它的值就最小,也代表Q-value最大 * 這邊假設$\Sigma(s)$是正定(Positive Definite)的,論文中的作法並不是直接output $\Sigma$,它不見得是positive definite,而是output一個matrix,再將這個matrix與另一個matrix做transpose相乘以確保它是positive definite ### Continuous Actions Demo ![](https://i.imgur.com/wCwkZOn.png) [影片連結](https://www.youtube.com/watch?v=ZhsEKTo7V04) ### Continuous Actions ![](https://i.imgur.com/PMQvJUX.png) 第四種解決方法,就是不要用Q-learning