深度强化学习入门难?这份资料手把手教会你
机器之心整理
参与:一鸣
深度强化学习在机器学习领域的热度一直很高。最近,GitHub 开源了一份深度强化学习的教程,总结了从 DQN 到彩虹模型的理论和代码实现。读者朋友可以根据需要学习研究。教程代码基于 PyTorch,可在 Colab 中运行。
深度强化学习是强化学习中的重要研究领域。这一技术使用深度神经网络,提升智能体在训练中的表现。而目前深度强化学习教程较为零散,使得入门这一领域较为困难。近日,两位来自韩国的机器学习研究员整理了深度强化学习的相关教程和代码,并在 GitHub 上开源。代码基于 PyTorch,用户可以在 Colab 中运行。这一项目在 Reddit 上获得高赞。
教程地址:https://github.com/Curt-Park/rainbow-is-all-you-need
教程里有什么
根据 GitHub 页面的介绍,教程总共分为八个章节,从 DQN 开始,逐渐深入,最终一章为彩虹模型。每个章节都包括理论介绍和面向对象的实现。
以第一章的 DQN 代码为例:
1. 定义一个由三个全连接层组成的网络,将这一网络作为智能体的主体:
class Network(nn.Module):????def?__init__(self,?in_dim:?int,?out_dim:?int):????????????"""Initialization."""
????????????super(Network,?self).__init__()????????????self.layers?=?nn.Sequential(
????????????????nn.Linear(in_dim,?128),?
????????????????nn.ReLU(),
????????????????nn.Linear(128,?128),?
??????????? ????nn.ReLU(),?
????????????????nn.Linear(128,?out_dim)
????????????????)????def?forward(self,?x:?torch.Tensor)?->?torch.Tensor:
????????????"""Forward?method?implementation."""
????????????return?self.layers(x)
2. 定义智能体等,其中「select_action」函数定义选择策略的方式,「step」定义每一步智能体和环境交互获得的 reward,「update_model」定义梯度下降的方法。
class DQNAgent:????????def?select_action(self,?state:?np.ndarray)?->?np.ndarray:????????????????"""Select?an?action?from?the?input?state."""
????????????????#?epsilon?greedy?policy????????????????if?self.epsilon?>?np.random.random():
????????????????????selected_action?=?self.env.action_space.sample()
????????????????else:
????????????????????selected_action?=?self.dqn(
????????????????????torch.FloatTensor(state).to(self.device)).argmax()
????????????????????selected_action?=?selected_action.detach().cpu().numpy()
????????????????if?not?self.is_test:
????????????????????self.transition?=?[state,?selected_action]
????????????????return?selected_action????????def?step(self,?action:?np.ndarray)?->?Tuple[np.ndarray,?np.float64,?bool]:
????????????"""Take?an?action?and?return?the?response?of?the?env."""????????????next_state,?reward,?done,?_?=?self.env.step(action)
????????????if?not?self.is_test:
????????????????self.transition?+=?[reward,?next_state,?done]
????????????????self.memory.store(*self.transition)
????????????return?next_state,?reward,?done????????def?update_model(self)?->?torch.Tensor:
????????????"""Update?the?model?by?gradient?descent."""????????????samples?=?self.memory.sample_batch()
????????????loss?=?self._compute_dqn_loss(samples)
????????????self.optimizer.zero_grad()
????????????loss.backward()
????????????#?gradient?clipping
????????????#?https://pytorch.org/docs/stable/nn.html#torch.nn.utils.clip_grad_norm_
????????????clip_grad_norm_(self.dqn.parameters(),?1.0,?norm_type=1)
????????????self.optimizer.step()
????????????return?loss.item()
教程目录
1. DQN
2. DoubleDQN
3. 优先经验回放(PrioritizedExperienceReplay)
4. DuelingNet
5. NoisyNet
6. CategoricalDQN
7. N-步学习(N-stepsLearning)
8. 彩虹模型(Rainbow)
安装方法
怎样使用这份教程呢?首先,用户需要从 GitHub 克隆代码并进入项目目录:
git clone https://github.com/Curt-Park/raibow-is-all-you-need.git
cd rainbow-is-all-you-need
接下来安装项目依赖即可:
make dep
本文为机器之心整理,转载请联系本公众号获得授权。
?------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 中共中央召开党外人士座谈会 7904526
- 2 日本附近海域发生7.5级地震 7808978
- 3 日本发布警报:预计将出现最高3米海啸 7712761
- 4 全国首艘氢电拖轮作业亮点多 7619290
- 5 课本上明太祖画像换了 7520225
- 6 高铁商务座一擦全是黑印 12306回应 7424948
- 7 净网:网民造谣汽车造成8杀被查处 7331204
- 8 1岁多女童吊环上“开挂” 7238425
- 9 最高13万元一只!实验猴价格暴涨 7139561
- 10 “人造太阳”何以照进现实 7048919







机器之心
