【深度強化學習 一】Q-Learning初識(1)(李宏毅老師學習視頻筆記)

首先放視頻鏈接:李宏毅老師深度強化學習課程——Q-Learning

Q-Learning簡介

Q-Learning是一種value-based的方法,在這種方法中,不是直接學習policy,而是利用值函數評價現在行爲的好壞,即AC算法中的critic。比如state value functionV^{\pi}(s),表示在當前策略\pi下,到了某一狀態s,之後能獲得的累計收益。

兩種更新方法(MC和TD)

  • Monte-Carlo方法

讓actor和環境交互,計算狀態後的累計收益,需要episode結束後才能計算。現在的DRL融合了深度神經網絡,所以不需要每個s都經歷過,也能給出大概的V值。

  • Temporal-difference方法

這種方法不需要遊戲玩到結束。只要獲得某一個transition,s_{t}, a_{t}, r_{t}, s_{t+1},就可以根據公式$V^{\pi}\left(s_{t}\right)=V^{\pi}\left(s_{t+1}\right)+r_{t}$進行更新。其實就是兩個state之間相差一個r_t。也就是V^{\pi}\left(s_{t}\right)-V^{\pi}\left(s_{t+1}\right)r_t的差可以作爲loss。

  • MC和TD的優缺點

MC需要推演完整個episode,而且由於V^{\pi}(s)直接計算的累計收益G_a,由於隨機性,不同時候得到的G_a可能會有很大差別,這樣的隨機變量方差很大。TD方法的隨機性在於r_t,所以方差會小。但是V值本身可能不準,所以是有偏估計。

接下來放一個示例,Sutton課程裏採用的,能後比較好的理解MC和TD

由狀態值函數到動作值函數

state-action value function Q^\pi(s,a),表示狀態s時採取動作a後的累計收益。

接下來是Q-Learning的更新原理,爲什麼Q值能夠變大。

                               $\pi^{\prime}(s)=\arg \max _{a} Q^{\pi}(s, a)$ $\quad V^{\pi^{\prime}}(s) \geq V^{\pi}(s), for all state s

                               $V^{\pi}(s)=Q^{\pi}(s, \pi(s))$ $\leq \max _{a} Q^{\pi}(s, a)=Q^{\pi}\left(s, \pi^{\prime}(s)\right)$

                               $$\begin{array}{l} V^{\pi}(s) \leq Q^{\pi}\left(s, \pi^{\prime}(s)\right) \\ =E\left[r_{t+1}+V^{\pi}\left(s_{t+1}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ \leq E\left[r_{t+1}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ =E\left[r_{t+1}+r_{t+2}+V^{\pi}\left(s_{t+2}\right) | \ldots\right] \\ \leq E\left[r_{t+1}+r_{t+2}+Q^{\pi}\left(s_{t+2}, \pi^{\prime}\left(s_{t+2}\right)\right) | \ldots\right] \ldots \leq V^{\pi^{\prime}}(s) \end{array}$$

感覺不需要太多關注上面的式子,只需要直觀的去理解一下就好。

DRL框架設計(target network好神奇的想法)

loss的設計和之前一樣,只不過targe network delay了一下,牛批。

explore 問題

  • epsilon greedy (\epsilon的概率隨機,隨着訓練進行而遞減)

                                       $$a=\left\{\begin{array}{cl} \arg \max _{a} Q(s, a), & \text { with probability } 1-\varepsilon \\ \text {random,} & \text {otherwise } \end{array}\right.$$

  • ​​​​​​​​​​​​​​Boltzmann exploration(指數後求概率)

​​​​​​​                                        $$P(a | s)=\frac{\exp \left(Q(s, a)\right)}{\sum_{a} \exp (Q(s, a))}$$

Replay buffer

簡單來講就是把過程中的transition存到replay buffer中,然後每次取出一個batch,取出的transition其實是不同policy下的。這種方法和深度學習中常見技巧比較類似。這裏有一個問題,mc的方法可以用replay buffer嗎?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章