我们要学习强化学习相关知识,仅仅通过看书肯定是远远不够的,必须要自己动手写一些代码,这样对相关内容的了解才能更全面,我们的知识也能够真正落地。因此,本篇主要是让大家了解一下基础环境的搭建。
Python、Anaconda、PyCharm
- Python
我们要进行强化学习实践,首推还是使用Python来搭建基础编程环境。如果对Python还不熟,推荐这个Python基础教程。
- Anaconda
在开发环境配置方面,推荐大家使用Anaconda,通过它可以搭建虚拟环境。你可以把它构建的虚拟环境视为一个封闭的独立空间,里面可以按照你的需求配置不同的Python开发包。同时,你也可以使用Anaconda配置多个虚拟环境,这些环境之间互不影响。具体,推荐大家看这个Anaconda入门简介。
- PyCharm
要进行具体的代码调试和编辑,还需要一个较好的IDE。我们这里还是推荐PyCharm。在PyCharm中,可以在其setting中设置具体由Anaconda配置的虚拟环境作为解释器,如下图:
PyCharm的相关安装等,可参见相关教程。
以上三个部分,在百度上都可以搜索到相关详细介绍的文章,在这里就不再赘述。
Gym–开发与对比强化学习算法的工具集
这是OpenAI专门为强化学习开发的标准工具集,也可以称其为标准环境。它提供了非常多的小游戏,可以进行相关强化学习算法的训练;同时,它还提供了标准化的接口和函数,可以非常方便的进行强化学习算法的开发。
Gym的介绍,可以参见其官方网站。
基本函数
- 初始化函数----生成一个环境对象
env = gym.make('游戏名称')
- 重置环境函数----返回一个初始状态 s t a t e state state
state = env.reset()
- 推进游戏函数----使用action将游戏向前推进一个step
obervation, reward, done, info = env.step(action)
其中obervation与前面的state一样,表示的是环境状态;reward是执行action后环境的实时奖励;done是游戏是否结束的标志;info是用来调试的一些信息,这个在实际强化学习算法中是不允许被使用的。
4. 渲染函数----显示游戏窗口及实时情况
env.render()
一般Gym的代码示例
import gym
env = gym.make('CartPole-v0') #导入CartPole-v0游戏
for episode in range(Episodes): #跑Episodes幕,一幕相当于一次完整游戏
observation = env.reset() #初始化环境,得到第一步状态
for step in range(STEPS): #每一局游戏至多跑STEPS步
action = methonThatgiveAction(observation) #强化学习算法,根据状态生成行动
obervation, reward, done, info = env.step(action) #根据action将游戏向前推进
if done: #如果游戏结束,则跳出step循环,进入下一episode;否则,继续step
break
env.close() #结束游戏,关闭环境
上面就是Gym在调用时的一般代码,这种简单的方式,使得我们具体需要关注的,就是强化学习算法本身了。
更多Gym的二次开发,推荐天津包子馅儿的博文。