使用PyTorch Lightning构建轻量化强化学习DQN
本文旨在探究将PyTorch Lightning应用于激动人心的强化学习(RL)领域。在这里,我们将使用经典的倒立摆gym环境来构建一个标准的深度Q网络(DQN)模型,以说明如何开始使用Lightning来构建RL模型。
- 在本文中,我们将讨论:
- 什么是lighting以及为什么要将它应用于RL
- 标准DQN模型简介
- 使用Lightning构建DQN的步骤
- 结果和结论
如果您想直接跳转到代码,可以在Pythorch Lightning示例页面中找到示例,或者通过单击下面的colab图标查看交互式colab笔记本!
什么是lighting?
Lightning是一个最近发布的Pythorch库,它可以清晰地抽象和自动化ML模型所附带的所有日常样板代码,允许您专注于实际的ML部分(这些也往往是最有趣的部分)。
除了自动化样板代码外,Lightning还可以作为一种样式指南,用于构建干净且可复制的ML系统。
这非常吸引人,原因如下:
- 通过抽象出样板工程代码,可以更容易地识别和理解ML代码。
- Lightning的统一结构使得在现有项目的基础上进行构建和理解变得非常容易。
- Lightning 自动化的代码是用经过全面测试、定期维护并遵循ML最佳实践的高质量代码构建的。
DQN
在我们进入代码之前,让我们快速回顾一下DQN的功能。DQN通过学习在特定状态下执行每个操作的值来学习给定环境的最佳策略。这些值称为Q值。
最初,智能体对其环境的理解非常差,因为它没有太多的经验。因此,它的Q值将非常不准确。然而,随着时间的推移,当智能体探索其环境时,它会学习到更精确的Q值,然后可以做出正确的决策。这允许它进一步改进,直到它最终收敛到一个最优策略(理想情况下)。
我们感兴趣的大多数环境,如现代电子游戏和模拟环境,都过于复杂和庞大,无法存储每个状态/动作对的值。这就是为什么我们使用深度神经网络来近似这些值。
智能体的一般生命周期如下所述:
- 智能体获取环境的当前状态并将其通过网络进行运算。然后,网络输出给定状态的每个动作的Q值。
- 接下来,我们决定是使用由网络给出智能体所认为的最优操作,还是采取随机操作,以便进一步探索。
- 这个动作被传递到环境中并得到反馈,告诉智能体它处于的下一个状态是什么,在上一个状态中执行上一个动作所得到的奖励,以及该步骤中的事件是否完成。
- 我们以元组(状态, 行为, 奖励, 下一状态, 已经完成的事件)的形式获取在最后一步中获得的经验,并将其存储在智能体内存中。
- 最后,我们从智能体内存中抽取一小批重复经验,并使用这些过去的经验计算智能体的损失。
这是DQN功能的一个高度概述。
轻量化DQN
启蒙时代是一场支配思想世界的智力和哲学运动,让我们看看构成我们的DQN的组成部分
模型:用来逼近Q值的神经网络
重播缓冲区:这是我们智能体的内存,用于存储以前的经验
智能体:智能体本身就是与环境和重播缓冲区交互的东西
Lightning模块:处理智能体的所有训练
完整文章请访问 https://imba.deephub.ai/p/bb3d7380786811ea90cd05de3860c663
或关注公众账号