Pytorch深度学习实用教程:手把手教你从DQN到Rainbow | 在线代码
鱼羊 发自 凹非寺
量子位 报道 | 公众号 QbitAI
炎炎夏日,燥热难耐,不如学学深度学习冷静一下?
这里有一份干货教程,手把手带你入门深度强化学习(Deep Reiforcement Learning),背景理论、代码实现全都有,在线领取无需安装哟!
废话不多说,赶紧领取教程看看里头具体都有哪些宝藏知识吧~
步步深入RL
这份Pytorch强化学习教程一共有八章,从DQN(Deep Q-Learning)开始,步步深入,最后向你展示Rainbow到底是什么。
不仅有Jupyter Notebook,作者还在Colab上配置好了代码,无需安装,你就能直观地感受到算法的效果,甚至还可以直接在手机上进行学习!
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
△Colab在线训练
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
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
4. Dueling Networks
Dueling DQN是通过优化神经网络的结构来优化算法的。Dueling Networks用两个子网络来分别估计状态值和每个动作的优势。
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 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
进入安装环节,首先,克隆存储库:
其次,安装执行代码所需的包,这很简单:
make dep
那么,快开始学习吧~
— 完 —
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ’ᴗ’ ի 追踪AI技术和产品新动态