Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

魚羊 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

炎炎夏日,燥熱難耐,不如學學深度學習冷靜一下?

這裡有一份乾貨教程,手把手帶你入門深度強化學習(Deep Reiforcement Learning),背景理論、代碼實現全都有,在線領取無需安裝喲!

廢話不多說,趕緊領取教程看看裡頭具體都有哪些寶藏知識吧~

步步深入RL

這份Pytorch強化學習教程一共有八章,從DQN(Deep Q-Learning)開始,步步深入,最後向你展示Rainbow到底是什麼。

不僅有Jupyter Notebook,作者還在Colab上配置好了代碼,無需安裝,你就能直觀地感受到算法的效果,甚至還可以直接在手機上進行學習!

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

1. DQN

DeepRL入門第一步,當先瞭解DQN(Deep Q-Learning)。這是DeepMind提出的一種算法,2015年登上Nuture。它首次將深度神經網絡與強化學習進行了結合,實現了從感知到動作的端到端學習,在多種雅達利遊戲當中達到了超人水平。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/01.dqn.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/01.dqn.ipynb#scrollTo=nEcnUNg8Sn3I

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

Colab在線訓練

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

2. Double DQN

Double DQN(DDQN)是DQN的一種改進。在DDQN之前,基本所有的目標Q值都是通過貪婪法得到的,而這往往會造成過度估計(overestimations)的問題。DDQN將目標Q值的最大動作分解成動作選擇和動作評估兩步,有效解決了這個問題。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/02.double_q.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/02.double_q.ipynb

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

3.Prioritized Experience Replay

該算法的核心在於抽取經驗池中過往經驗樣本時,引入了優先級的概念。也就是說,優先級的大小會影響樣本被採樣的概率。

採用這種方法,重要經驗被回放的概率會增大,算法會更容易收斂,學習效率也就相應提高了。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/03.per.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/03.per.ipynb

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼


4. Dueling Networks

Dueling DQN是通過優化神經網絡的結構來優化算法的。Dueling Networks用兩個子網絡來分別估計狀態值和每個動作的優勢。

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/04.dueling.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/04.dueling.ipynb

5. Noisy Network

NoisyNet通過學習網絡權重的擾動來推動探索。其關鍵在於,對權重向量的單一更改可以在多個時間步驟中引發一致的,可能非常複雜的狀態相關的策略更改。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/05.noisy_net.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/05.noisy_net.ipynb

6. Categorical DQN(C51)

Categorical DQN是一種採用分佈視角來設計的算法,它建模的是狀態-動作價值Q的分佈,這樣學習的結果會更加準確。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/06.categorical_dqn.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/06.categorical_dqn.ipynb

7. N-step Learning

DQN使用當前的即時獎勵和下一時刻的價值估計作為目標價值,學習速度可能相對較慢。而使用前視多步驟目標實際上也是可行的。N-step Learning通過調整多步驟目標n來加快學習速度。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/07.n_step_learning.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/07.n_step_learning.ipynb

8. Rainbow

有了前七章的鋪墊,現在你就能瞭解到Rainbow的真意了。

Rainbow是結合了DQN多種擴展算法的一種新算法,在數據效率和最終性能方面,該方法表現出了驚人的效果。

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

然而,整合並非一件簡單的事情,針對這一點,教程也做出了討論。

Pytorch Jupyter Notebook:

https://nbviewer.jupyter.org/github/Curt-Park/rainbow-is-all-you-need/blob/master/08.rainbow.ipynb

Colab:

https://colab.research.google.com/github/Curt-Park/rainbow-is-all-you-need/blob/master/08.rainbow.ipynb#scrollTo=ougv5VEKX1d1

系統學習是個非常不錯的選擇,當然作者也說了,以上知識點,你也可以選擇想學哪裡點哪裡。

學習小技巧

如果你想在本地運行這些代碼,那麼這裡有些小技巧請拿好。

首先是運行環境:

$ conda create -n rainbow_is_all_you_need python=3.6.1
$ conda activate rainbow_is_all_you_need

進入安裝環節,首先,克隆存儲庫:

Pytorch深度學習實用教程:手把手教你從DQN到Rainbow | 在線代碼

其次,安裝執行代碼所需的包,這很簡單:

make dep

那麼,快開始學習吧~

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態

相關推薦

推薦中...