深度学习(四十)——深度强化学习(3)Deep Q-learning Network(2), DQN进化史
Deep Q-learning Network(續)
Nature DQN
DQN最早發表于NIPS 2013,該版本的DQN,也被稱為NIPS DQN。NIPS DQN除了提出DQN的基本概念之外,還使用了《機器學習(三十三)》中提到的Experience Replay技術。
2015年初,Deepmind在Nature上提出了改進版本,是為Nature DQN。它改進了Loss函數:
L=(r+γmax?a′Q(s′,a′,w?)?Q(s,a,w))2L=(\color{blue}{r+\gamma \max_{a'}Q(s',a',w^-)}-Q(s,a,w))^2L=(r+γa′max?Q(s′,a′,w?)?Q(s,a,w))2
上式中,計算目標Q值的網絡使用的參數是w?w^-w?,而不是w。也就是說,原來NIPS DQN的target Q網絡是動態變化的,跟著Q網絡的更新而變化,這樣不利于計算目標Q值,導致目標Q值和當前的Q值相關性較大。
因此,Deepmind提出可以單獨使用一個目標Q網絡。那么目標Q網絡的參數如何來呢?還是從Q網絡中來,只不過是延遲更新。也就是每次等訓練了一段時間再將當前Q網絡的參數值復制給目標Q網絡。
個人理解這里的機制類似于進化算法。變異既可以是進化,也可以是退化,只有進化的Q網絡才值得保留下來。
這在下文介紹的Leela Zero項目的訓練過程中體現的很明顯:一開始我們只訓練一個簡單的AI,然后逐漸加深加大網絡,淘汰廢物AI,得到更優秀的AI。
為了使進化生效,在一段時間內保持目標Q網絡不變就是很顯然的了——你過不了我這關,就沒資格繼續下去了。
參考
https://zhuanlan.zhihu.com/p/21262246
DQN從入門到放棄1 DQN與增強學習
https://zhuanlan.zhihu.com/p/21292697
DQN從入門到放棄2 增強學習與MDP
https://zhuanlan.zhihu.com/p/21340755
DQN從入門到放棄3 價值函數與Bellman方程
https://zhuanlan.zhihu.com/p/21378532
DQN從入門到放棄4 動態規劃與Q-Learning
https://zhuanlan.zhihu.com/p/21421729
DQN從入門到放棄5 深度解讀DQN算法
https://zhuanlan.zhihu.com/p/21547911
DQN從入門到放棄6 DQN的各種改進
https://zhuanlan.zhihu.com/p/21609472
DQN從入門到放棄7 連續控制DQN算法-NAF
https://zhuanlan.zhihu.com/p/56023723
通過Q-learning深入理解強化學習(上)
https://mp.weixin.qq.com/s/0HukwNmg3k-rBrIBByLhnQ
深度Q學習:一步步實現能玩《毀滅戰士》的智能體
https://mp.weixin.qq.com/s/x-qCA0TzoVUtZ8VAf8ey0A
深度Q學習介紹
https://mp.weixin.qq.com/s/SqU74jYBrjtp9L-bnBuboA
教你完美實現深度強化學習算法DQN
https://mp.weixin.qq.com/s/Vdt5h8APAFoeVxFYKlywpg
用DeepMind的DQN解數學題,準確率提升15%
https://mp.weixin.qq.com/s/RH4ifA46njdC7fyRI9kVMg
深度Q網絡與視覺格斗類游戲
https://mp.weixin.qq.com/s/uymKtR_7IgMpfXcekfkCDg
從強化學習基本概念到Q學習的實現,打造自己的迷宮智能體
https://mp.weixin.qq.com/s/9ZvaZQ1yumhr75okBxNyeA
優化強化學習Q-learning算法進行股市交易
https://mp.weixin.qq.com/s/QkRdv0xMoqwaXsNAMAHR0A
一圖盡展視頻游戲AI技術,DQN無愧眾算法之鼻祖
https://zhuanlan.zhihu.com/p/35882937
強化學習——從Q-Learning到DQN到底發生了什么?
DQN進化史
上圖引用自論文:
《Deep Learning for Video Game Playing》
該論文最早發表于2017年,但是作者每年都會更新論文的內容。
在Nature DQN出來之后,肯定很多人在思考如何改進它。那么DQN有什么問題呢?
-
目標Q值的計算準確嗎?全部通過max Q來計算有沒有問題?
-
隨機采樣的方法好嗎?按道理不同樣本的重要性是不一樣的Q值代表狀態,動作的價值,那么單獨動作價值的評估會不會更準確?
-
DQN中使用?\epsilon?-greedy的方法來探索狀態空間,有沒有更好的做法?
-
使用卷積神經網絡的結構是否有局限?加入RNN呢?
-
DQN無法解決一些高難度的Atari游戲比如《Montezuma’s Revenge》,如何處理這些游戲?
-
DQN訓練時間太慢了,跑一個游戲要好幾天,有沒有辦法更快?
-
DQN訓練是單獨的,也就是一個游戲弄一個網絡進行訓練,有沒有辦法弄一個網絡同時掌握多個游戲,或者訓練某一個游戲后將知識遷移到新的游戲?
-
DQN能否用在連續動作輸出問題?
Double DQN
L=(r+γQ(s′,arg?max?a′Q(s′,a′,w),w?)?Q(s,a,w))2L=\left(\color{blue}{r+\gamma Q(s',\color{red}{\mathop{\arg\max}_{a'}Q(s',a',w)},w^-)}-Q(s,a,w)\right)^2L=(r+γQ(s′,argmaxa′?Q(s′,a′,w),w?)?Q(s,a,w))2
Nature DQN的兩個Q網絡分離的還不夠徹底,Double DQN用當前的Q網絡來選擇動作(公式中紅色部分所示),而用目標Q網絡來計算目標Q。
參考:
https://mp.weixin.qq.com/s/NkWj1bV7uMjACxAvxhPJXw
DQN系列(1):Double Q-learning
https://mp.weixin.qq.com/s/WGxodXAxcgsz61VnuSF5aQ
DQN系列(2): Double DQN算法原理與實現
Prioritised replay
采樣優先級采用目標Q值與當前Q值的差值來表示:
∣r+γmax?a′Q(s′,a′,w?)?Q(s,a,w)∣| \color{blue}{r+\gamma \max_{a'}Q(s',a',w^-)}-Q(s,a,w) |∣r+γa′max?Q(s′,a′,w?)?Q(s,a,w)∣
優先級越高,那么采樣的概率就越高。
Dueling Network
Dueling Network將Q網絡分成了兩個通道:
-
Action無關的值函數:V(s,v)V(s,v)V(s,v)
-
Action相關的值函數:A(s,a,w)A(s,a,w)A(s,a,w)
Q(s,a)=V(s,v)+A(s,a,w)Q(s,a)=V(s,v)+A(s,a,w)Q(s,a)=V(s,v)+A(s,a,w)
NAF
傳統RL任務:低維輸入,低維離散輸出。
Atari游戲:高維輸入,低維離散輸出。
通常的控制系統,除了離散控制之外,還有連續控制,然而DQN并不能直接用于連續域:因為它根本就沒辦法窮舉每一個動作,也就無法計算最大的Q值對應的動作。
論文:
《Continuous Deep Q-Learning with Model-based Acceleration》
對于連續控制,由于我們已經無法選擇動作,因此只能設計一種方法,使得我們輸入狀態,然后能夠輸出動作,并且保證輸出動作對應的Q值是最大值。
這個時候,我們有兩種選擇:
-
弄兩個神經網絡,一個是Policy網絡,輸入狀態,輸出動作,另一個是Q網絡,輸入狀態,輸出Q值。這種做法其實就是Actor-Critic算法。
-
只弄一個神經網絡,既能輸出動作也能輸出Q值。這就是本節所要使用的方法。
在《機器學習(三十五)》中,我們已經指出advantage function不改變策略梯度,但能有效約束variance。這里沿用了A函數定義:
A(s,a)=Q(s,a)?V(s)A(s,a)=Q(s,a)-V(s)A(s,a)=Q(s,a)?V(s)
作者設計了如下A函數:
A(x,μ∣θA)=?12(u?μ(x∣θμ))TP(x∣θP)(u?μ(x∣θμ))A(x,\mu | \theta^A)=-\frac{1}{2}(u-\mu(x | \theta^\mu))^T P(x | \theta^P)(u-\mu(x | \theta^\mu))A(x,μ∣θA)=?21?(u?μ(x∣θμ))TP(x∣θP)(u?μ(x∣θμ))
其中x是狀態,u是動作,μ\muμ是神經網絡的輸出動作。
它的一階矩陣形式等價于:A(a)=?P(a?x)2A(a)=-P(a-x)^2A(a)=?P(a?x)2
因此,這是一個正定二次型的相反數,即A≤0A\le 0A≤0。
我們的目標就是優化A函數,使之盡可能最大(即等于0)。這時A函數對應的動作即為最優動作。
以下是具體的網絡結構圖。
其流程如下:
-
狀態經過兩層MLP之后(注意:第2層沒有RELU),生成三個tensor:V、μ\muμ、L0。
-
將L0轉化為L。也就是將一個列向量轉換為下三角矩陣,就是從新排列,然后把對角線的數exp對數化。
-
使用Cholesky分解構建P。
若A為n階對稱正定矩陣,則存在唯一的主對角線元素都是正數的下三角陣L,使得A=LLTA=LL^TA=LLT,此分解式稱為正定矩陣的喬列斯基(Cholesky)分解。
- 按照上圖的步驟,依此構建A和Q。其中的Q正好可用于DQN的訓練。
綜上,NAF既可以輸出action,也可產生Q值,而Q值可用于DQN訓練,從而使算法可以進行下去。
這里的構造邏輯和VAE很相似,都是假定構造方法成立,然后再用神經網絡擬合構造所需的各要素,最后通過訓練以達成構造的效果。
Distributional DQN
Distributional DQN也叫做Categorical DQN。
cumulated reward(累計獎勵)是一個孤立的值,它無法完全反映reward的全貌,比如上圖中的兩個reward,其累計值完全相同,但分布卻有很大的差異。這一定程度上會對策略的選擇產生影響。
傳統DQN最后一層輸出的是一個N維的向量,表示N個動作對應的價值,Categorical DQN輸出的是N×M維的向量,表示的是N個動作在M個價值分布的支撐上的概率。(以上圖為例,N=3,M=5。)
總結一下就是:傳統價值函數的目標是近似地估計價值的期望,而Distributional RL的目標是近似地估計價值的分布(概率密度函數)。
Distributional RL不僅可用于DQN,亦可應用于Actor-Critic,這也就是D4PG的主要idea了。
參考:
https://zhang-yi-chi.github.io/2018/09/19/DistributionalRL/
Distributional Reinforcement Learning
Rainbow
論文:
《Rainbow: Combining Improvements in Deep Reinforcement Learning》
Rainbow算是2017年比較火的一篇DRL方面的論文了。它沒有提出新方法,而只是整合了6種DQN算法的變種,達到了SOTA的效果。
這6種DQN算法是:
- Double DQN
- Prioritized Experience Replay
- DuelingNet
- NoisyNet
- Distributional DQN(Categorical DQN)
- N-step Learning
參考:
https://mp.weixin.qq.com/s/SZHMyWOXHM8T3zp_aUt-6A
DeepMind提出Rainbow:整合DQN算法中的六種變體
https://github.com/Curt-Park/rainbow-is-all-you-need
手把手教你從DQN到Rainbow
https://zhuanlan.zhihu.com/p/36375292
最前沿:當我們以為Rainbow就是Atari游戲的巔峰時,Ape-X出來把Rainbow秒成了渣!
參考
https://mp.weixin.qq.com/s/o27U97Y7BmMUXe3zAToHSQ
強化學習DQN初探之2048
https://mp.weixin.qq.com/s/SJd-3qH4W4GMMLZSmvFk1w
利用DQN玩吃豆人(Pacman)小游戲
https://mp.weixin.qq.com/s/snNvN4FFP0VEZwDA0TAp1w
強化學習訓練Chrome小恐龍Dino Run:最高超過4000分
總結
以上是生活随笔為你收集整理的深度学习(四十)——深度强化学习(3)Deep Q-learning Network(2), DQN进化史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(三十九)——深度强化学习(2)
- 下一篇: 深度学习(四十二)——深度强化学习(5)