---
# System prepended metadata

title: 李宏毅_ATDL_DRL Lecture 5
tags: [NTU, Hung-yi Lee, Deep Reinforcement Learning]

---

# 李宏毅_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
