《深度强化学习实战》第一章学习及gym代码验证
[复制链接]
本帖最后由 lospring 于 2023-11-9 22:27 编辑
深度强化学习是机器学习的一个子领域,它将深度学习模型应用于强化学习任务中。书中以图像分类开说明如何深度学习模型来进行:通常只需要某种类型的函数,用于接收一幅图像并返回一个类别标签,将参数模型的参数初始化为随机值,为输入图像生成随机类别标签,然后利用训练过程对参数进行调整使该函数在正确分类图像的任务上表现得越来越好。
深度神经网络之所以如此流行,是因为在很多情况下,它们都是特定任务下准确率最高的参数化机器学习模型,这很大程度上归因于它们的数据表示方式即深度神经网络包含很多层,这种分层表示是一种组合形式,复杂的数据可以用更基本的组件组合表示而这些组件可以进一步分解成更简单的组件。就如一本书由章节组成,章节由段落组成,直到最后分解成一个文字。
深度学习与机器学习,强化学习间的关系如下图所示:
深度学习是机器学习的一个子领域,可以为强化学习解决控制任务提供支持。
图像分类属于监督学习,我们通过给出正确的答案来训练,所以需要事先知道正确答案是什么。如果要训练一个深度学习算法,比如正确分类不同的植物,就需要先获取万千上万的图像,然后手动关联图像与类别标签。这个工作量是非常巨大的。
而强化学习中我们并不知道在每一步中正确的做法是什么,只需要知道最终目标是什么以及要避免做什么。比如无人驾驶,定下目标是不发生碰撞的情况下从A到B,如果完成任务就奖励,失败就惩罚。强化学习算法只有一个目标,就是最大化其奖励。
之后是动态规划和蒙特卡洛法,动态规划其实就是目标分解,而蒙特卡洛法则是随机试错。
强化学习算法框架如下图:
Agent表示智能体,简单说就是智能体在环境中采取一个动作,然后更新环境,每个动作会有一个奖励(可正可负),强化学习算法以最大化长期奖励为目标不断重复该过程。
书上给了个gym的例程,但是报错了
需要修改成CarRacing-v2,修改后依然报错
安装后还是没成功,网上查下了运行如下代码成功。
conda install -c conda-forge box2d-py
试用代码如下:
import gym
env = gym.make("CarRacing-v2", render_mode="human")
observation, info = env.reset() # 重置环境获得观察(observation)和信息(info)参数
while True:
action = env.action_space.sample() # 使用观察和信息的代理策略
# 执行动作(action)返回观察(observation)、奖励(reward)、终止(terminated)、截断(truncated)
observation, reward, terminated, truncated, info = env.step(action)
# 如果终止或者截断,则重置环境
if terminated or truncated:
observation, info = env.reset()
env.close() # 关闭环境
|